#archived-modding-development

1 messages · Page 87 of 1

rain cedar
#

Yeah maybe

compact sedge
#

So I guess I'm supposed to put a status update after the pictures I posted yesterday. I got Crossroads mostly working on Linux (and my changes should help it work on mac as well), while leaving the program also working on Windows just as it used to (I tested it a little bit in a VM). but I've run into a minor problem. I'm having some trouble getting Windows Forms working. On windows the official folder and file selection dialogs just won't appear- this is ok because there's a 3rd party library that works around this. On Linux any windows form, from alert boxes (which the program uses quite a few of) to file selection dialogs won't disappear on pressing "ok". You have to spawn another form of any type to hide the last one, so I guess I could make a 1x1 blank window but that seems kinda hacky.

It's possible this is a Unity bug since it warns me that System.Windows.Forms is not fully supported when I try to compile.

I know most of y'all are c# devs so if anyone here knows a non-hacky fix to this please let me know. I'm not sure I should publish it with this kind of bug.

solemn rivet
#

Eh, sorry, can't help you there

#

Even tho my installer is winforms, it is all thanks to google-fu

compact sedge
#

Oh well, well the program works it just looks kinda bad because of it.

#

clicking x on that window does nothing, moving another window over it causes it to not re-render looking kinda glitchy, this is after clicking ok like I'm supposed to. I copied much of my windows forms code from CKAN and that program has working forms so IDK what's what.

#

it doesn't try redrawing anything so it shows whatever was on it last.

flat forum
#

Hey

#

I can't find the dark thing mod

leaden hedge
#

its not in the drive

#

because its hella meme

#

tbh it should be in the drive

#

but w/e

flat forum
#

thanks

compact sedge
#

Alright unless someone pings me next time I post in this channel I'm gonna have made my own mod (or at least tried)

What mod? IDK yet I have some ideas but I need to figure out the process first so I can learn what's possible

flat forum
#

what mod?

pearl sentinel
#

@compact sedge feel free to use or contribute to modcommon to help with your mod

#

Or just as a repo to copy snippets from

compact sedge
#

Thank you this is just the kind of thing I need :)

#

do you have any documentation for it?

copper nacelle
#

c o m m e n t s

pearl sentinel
#

The modding api provides the hooks and some more helpers; this is just something I've been trying to use to consolidate things I reuse into one place so it's not copy pasted over many mods. And hopefully welcome others to add to it

#

So far I've commented some things thoroughly, like the template state machine

#

And others not yet (just a time constraint thing)

compact sedge
#

ok well that's sorta helpful, and definitely better than nothing, and since you're providing the code for free I can't exactly complain

pearl sentinel
#

But tag me in any questions and I can answer

compact sedge
#

alright hopefully I don't need to

rain cedar
#

Using Hornet as the black egg gatekeeper if you've got any of the restrictions enabled

#

Very conveniently placed NPC

pearl sentinel
#

While it kinda lacks comments it should be fairly straight forward

rain cedar
#

for(; ; )

#

So you're one of those people, then?

pearl sentinel
#

?

rain cedar
#

I just think that looks a lot messier than while (true) is all

#

Not really a big deal

pearl sentinel
#

Oh

#

I agree, actually

#

But I Remember reading the for (;;) optimizes better or something.

rain cedar
#

Odd

compact sedge
#

I'd say it doesn't matter but this isn't c++ so it might matter

pearl sentinel
#

Eh, looks like that was a c++ ism

#

That isn't true in c#

compact sedge
#

It's not true with gcc in c/c++ at least

pearl sentinel
#

Soooo guess I'll be switching

rain cedar
#

Yeah, looks like only foreach is worse performance

#

Which makes sense

pearl sentinel
#

For each was worse

rain cedar
#

But foreach is great so I'm gonna use it everywhere anyway

pearl sentinel
#

But that got fixed in newer unity versions afaik

#

I think 5.3 they fixed it

rain cedar
#

Cool

#

All bosses restriction was probably a bad idea

#

I need to do a lot of shit to make that work

#

Like preventing troupe banishment and zote death

compact sedge
#

plus you can't get the first ending I don't think with that restriction

rain cedar
#

That doesn't really matter

#

It's an optional restriction

pearl sentinel
#

Why not just not count the final grim fight and just set the player data books manually

#

Bools

rain cedar
#

I don't get what you mean by that

pearl sentinel
#

Like, set the bool so grey prince is available

#

So zote can die or w/e

rain cedar
#

Yeah, maybe

#

For grimm I was just gonna get rid of brumm in the lantern room

#

I think that's where he shows up

pearl sentinel
#

Yeah, good option. Or if there's a player data bool for "has talked to brum in deepnest" maybe just force it to stay off

rain cedar
#

There's a gotBrummsFlame bool but that might have some bad side effects

#

Like making it impossible to get his flame or letting you get it infinite times

#

Depending on how its implemented

pearl sentinel
#

Hmm

rain cedar
#

It's really pretty easy to mess with NPCs on scene load

#

This is all I'm doing for hornet

GameObject hornet = GameObject.Find("Hornet Black Egg NPC");
hornet.SetActive(true);
FsmState activeCheck = FSMUtility.LocateFSM(hornet, "Conversation Control").GetState("Active?");
activeCheck.RemoveActionsOfType<IntCompare>();
activeCheck.RemoveActionsOfType<PlayerDataBoolTest>();```
pearl sentinel
#

Would it be possible to add a randomized start location (bench) to randomizer without too much headache?

rain cedar
#

Probably not

#

Start location completely changes what items need to be where

pearl sentinel
#

Yeah, suppose that's true

#

Will have to wait until room randomizer is working, if ever

rain cedar
#

Yeah

#

Getting all the requirements for it is just super time consuming and not fun at all

#
if (GameManager.instance.GetSceneNameString() == "Cliffs_06" && Settings.allBosses) Object.Destroy(GameObject.Find("Brumm Lantern NPV"));```
#

Should be as simple as that

#

So there's one problem solved

#

Also yes it is NPV, that's not my typo

pearl sentinel
#

Yeah, I guess it's not important if the object is deactivated. Find doesn't locate inactive game objects

#

Which is why I wrote some extensions to do a find that would

rain cedar
#

Alright

#

Object.Destroy isn't gonna throw an exception if I pass it null, right?

#

If Find doesn't work on inactive shit

#

Ah well he's probably active all the time at scene load, anyway

#

Then some FSM turns him off

pearl sentinel
#

It will

#

Destroy a null throws a nullref iirc

#

If you pass null

rain cedar
#

I'll just do a null check, I don't think I need that

#

But thanks

pearl sentinel
oblique shuttle
#

so does lightbringer not work anymore?

exotic venture
#

nope it's dead, jim

oblique shuttle
#

😦

#

anything similar to it?

exotic venture
#

nothing to its likes will ever be seen for a long time i'm afraid

oblique shuttle
#

okay thanks

rain cedar
#

56 was messing around with putting lightbringer code in with MonoMod hooks

oblique shuttle
#

another quick question, should I use the enemy health bars or just the hp bar

#

oh nice, I didnt play back then so lightbringer would be fun to try

#

not sure if both the hp bar mods are compatable

exotic venture
#

they are

oblique shuttle
#

okay thanks

exotic venture
#

well

#

the old one isn't with the newest version iirc

#

that one still uses health as FSM i think

#

the enemy hp bars by gradow and kdt is the proper one

oblique shuttle
#

okay i thought so, thanks for confirming

#

cant find any info on what the boss rush mod does

rain cedar
#

Nothing

#

It's broken

oblique shuttle
#

lol okay, thanks

rain cedar
#

KDT is waiting to see if gng adds boss rush

solid wagon
#

@rain cedar playing around with your randomizer for the first time, curious if there's a record of the kind of stuff the randomizer expects you to be able to do (for instance I'm in Crystal Peak and I think the only ways forward are manuevering a dark room without the lantern or doing crazy spike pogos up walls)

rain cedar
#

Yeah, rainingchain made a helper

#

It's bound to be on his site somewhere

solid wagon
rain cedar
#

Nah but it looks like that has a link to the thing I meant

solid wagon
#

oh cool this will be useful, thanks

#

i think I AM stuck though unless i maneuever the dark room

#

shouldn't have sat in that bench

rain cedar
#

What's stopping you from leaving peak towards crossroads?

solid wagon
#

Isn't that a dark room with a gate?

rain cedar
#

Yeah, you can buy the gate

#

Not being able to open tolls in the dark is stupid

#

So randomizer makes it so you can

solid wagon
#

Oh ok

#

Didn't know that

#

Then yeah I can leave that way

#

Is there a list of stuff you changed like that?

#

I know that the Baldur in the Ancestral Mound can be killed without Vengeful Spirit for starters

rain cedar
#

Mostly stuff that doesn't matter too much

#

Like removing benches that would soft lock you

solid wagon
#

on my first attempt I locked myself at Lake of Unn but I did a ctrl-f and found that it had already been brought up

rain cedar
#

Yeah, there's a couple benches that can still cause problems

#

I'll fix those when I release it for lifeblood

solid wagon
#

right on

#

really cool that this is a thing

#

i got turned on to randomizers by the LTTP randomizer race at AGDQ

#

and after i had played through that with my friends a bunch of times i was like 'i wonder if there's a hollow knight randomizer'

rain cedar
#

It's made really sloppily, I'm trying to do better with lifeblood

#

Just remaking the mod entirely instead of updating what's there

solid wagon
rain cedar
#

That actually is part of what can be required on hard

solid wagon
#

nice

rain cedar
#

But yeah not easy

exotic venture
#

this is a good one tbh

#

i really like that skip

solid wagon
#

yeah it was fun

#

i got to this part and was like "shit i can't proceed without the claw.... or can I?"

#

and i remembered my training

#

from the white palace

sturdy jetty
#

Is it just me or is there a glitch with the More Saves Mod?

#

When I press "[" and "]" to scroll through the pages of save files, it does not move.

solemn rivet
#

there might be

#

KDT isn't working on it atm, so there's no way to know

leaden hedge
#

TC added a check, that does nothing but break more saves

solemn rivet
#

kek

leaden hedge
#

Checks if save no is between 1 or 4 otherwise returns save no mod 4

#

Nothing I can do on my end

#

Api has to remove that pointless check

young walrus
#

And people wonder if TC hates us..... thinkgrub

copper nacelle
#

could you use the monomod hooks

hollow pier
#

monomon haha

copper nacelle
leaden hedge
#

Its in the middle of the save function

#

Just delete it tbqh

solemn rivet
#

oh, yeah

#

here, KDT

#
Error while loading save file for slot 3 Exception: System.ArgumentException: JSON parse error: Missing a closing quotation mark in string.
  at (wrapper managed-to-native) UnityEngine.JsonUtility:FromJson (string,System.Type)
  at UnityEngine.JsonUtility.FromJson[SaveGameData] (System.String json) [0x00000] in <filename unknown>:0 
  at GameManager.GetSaveStatsForSlot (Int32 saveSlot) [0x00000] in <filename unknown>:0 
 
(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)```
#

what outputlog says about the save file edited with HKSM

leaden hedge
#

weird

solemn rivet
#

it says that for every file edited, btw

leaden hedge
#

can you dump it with the other one to json

#

and see if theres actually a missing quotation mark

solemn rivet
#

which one? RainingChain's?

leaden hedge
#

yes

solemn rivet
#

sure lemme just find it rq

#

there's one too many closing brackets

#

wtf

leaden hedge
#

nice random issue

solemn rivet
#

"LoadedMods":{"keys":["EnemyHPBar"],"values":["0.0.1"]},"Name":"}}

#

that's at the end

#

and Code is telling me that last bracket is unpaired

#

removed it, loading game to test

leaden hedge
#

looks like name is also wrong

#

"name":"}}

solemn rivet
#

yeah

#

maybe it's missing {"

#

that would fix the matching brackets

#

yup

#

"Name":""} works

leaden hedge
#

check the uneditted version

solemn rivet
#

"Name":""}

leaden hedge
#

dunno why that is happening

solemn rivet
#

it's turning that last " into a }

#

for some reason

leaden hedge
#

iirc java's json reader/writer expects something different

solemn rivet
#

also

#

I just checked

#

it overwrote all my saves with the edited save

#

now I have 4 identical save files

#

nice

#

nbd tbh

#

I can just edit them

leaden hedge
#
jsonString = jsonString.substring(0, jsonString.length()-2)+"}}"; ```
#

java doesn't expect the outer }} in its json

#

so I have to remove them to read it

#

and at it back

#

but I think saves with modded data add different stuff at the end

#

can you give me the entire save file as json?

#

uneditted

solemn rivet
#

sure

leaden hedge
#

isnt this the editted one?

#

ends in "name":"}}

solemn rivet
#

oh, by 'uneditted' I thought you meant that I didn't open and edit it by hand

#

sorry

leaden hedge
#

nah i just meant a working moddata one

solemn rivet
#

yeah

leaden hedge
#

hmu with a working modded .dat

solemn rivet
leaden hedge
#

test that works

solemn rivet
leaden hedge
#

about the moresaves thing

public static bool Platform.IsSaveSlotIndexValid(int slotIndex)

always needs to return true, or add a hook asking for a max value w/e I don't care

#

I dunno who actually actively maintains api atm

solemn rivet
#

you can use that monomod "hook-on-demand" thingie and bypass that tho

leaden hedge
solid wagon
#

@rain cedar have you thought about working Mask Shards and Vessel Fragments into the randomizer pool? is this feasible?

solemn rivet
#

I'll give it a try KDT

#

just a sec

#

it works

copper nacelle
solemn rivet
#

when I edited my files before, even the save editor wouldn't be able to open them

leaden hedge
#

ok cool, I released it like 2 hours ago so I don't have to unrelease it

copper nacelle
#

what'd you change

solemn rivet
#

but now it is able to open them again, both modded and unmodded save files

#

lemme just open them in-game to be safe

leaden hedge
#
    jsonString = jsonString.substring(0, jsonString.length()-2)+"}}";

to

if(json.has("modData"))
    jsonString = jsonString.substring(0, jsonString.length()-2)+"\"}";
else
    jsonString = jsonString.substring(0, jsonString.length()-2)+"}}";
solemn rivet
#

kek

#

best solution

#

not even kidding

copper nacelle
#

lol

solemn rivet
#

wut

#

HK is killing my user2.dat on load

#

wtf

leaden hedge
#

hacked

#

it knows

solemn rivet
#

not even hacked tho

#

I got a 106% from discussion

#

fucking steam auto-backups

#

it's overwriting my folder with old saves ffs

compact sedge
#

copy the save over while the game is running

#

but in the mainmenu

solemn rivet
#

yup just did that

solemn rivet
#

omg

#

I'm looking through some fsms

#

so the Knight has a Charm Effects child

#

and it has some fsms...

#

this one is "Set Spell Cost"

#

it's basically "if soulTwister equipped, cost = 24, else cost = 33"

#

why make it fsm tho

#

also, I'm not exaggerating btw

exotic venture
#

you should check the achievement for all charms

#

it checks

solemn rivet
exotic venture
#

for every

#

single

#

charm

solemn rivet
#

it's literally a "if else"

exotic venture
#

it's such a meme

#

there's 3 million checks for everything

#

falling velocity is another good one

#

instead of just having a max velocity it checks if:
-you're not in acid
-you're not in water
-you're not dashing
-you're not using descending dark

#

and in the end it is overridden by inventory because it doesn't check when that is open so it never reaches a max velocity

#

tc good at coding

solemn rivet
#

looking at nail range fsm

copper nacelle
#

why is that an fsm

#

wtf

#

isn't nail range a vector

solemn rivet
#

it's literally csharp if (longnail.equipped) increase nail range; if (mop.equipped) increase nail range;

#

once again, not even kidding

copper nacelle
#

wasn't that not an fsm tho

solemn rivet
compact sedge
#

but if you equip both doesn't your range not increase as much?

copper nacelle
#

wtf

#

I saw the exact same thing

#

in the NailSlash method

solemn rivet
#

it's applied multiplicatively, AA, not additively

#

yeah, 56

#

it's also in there

copper nacelle
solemn rivet
#

but this is for the animation

#

(I can only assume)

compact sedge
#

oh god so the animation doesn't match the actual hitbox?

solemn rivet
#

I think it does

#

but for some reason the hitbox is not attached to the actual animation

#

they have to set the two independently

copper nacelle
#

w h y

void tree
#

i can anecdotally say that the hitbox is bigger than the animation

compact sedge
#

good that's how it should be

solemn rivet
#
if (this.mantis && this.longnail)
{
  base.transform.localScale = new Vector3(this.scale.x * 1.4f, this.scale.y * 1.4f, this.scale.z);
  this.anim.Play(this.animName + " M");
}
else if (this.mantis)
{
  base.transform.localScale = new Vector3(this.scale.x * 1.25f, this.scale.y * 1.25f, this.scale.z);
  this.anim.Play(this.animName + " M");
}
else if (this.longnail)
{
  base.transform.localScale = new Vector3(this.scale.x * 1.15f, this.scale.y * 1.15f, this.scale.z);
  this.anim.Play(this.animName);
}
else
{
  base.transform.localScale = this.scale;
  this.anim.Play(this.animName);
}```here be NailSlash
#

so animation scales multiplicatively

compact sedge
#

uh that looks additively

solemn rivet
#

but hitbox does not

#

1.25 x 1.15 = 1.4375

compact sedge
#

with one it's +25% with another it's +15% with both it's +40%

solemn rivet
#

yeah, that's for the hitbox

compact sedge
#

huh

solemn rivet
#

but animation is controlled by that fsm from earlier

#

it first applies the range from longnail

#

after that it checks and applies it for mop

compact sedge
#

so animation is 144% but the actual range is 140%?

solemn rivet
#

so it has to be multiplicative

#

or maybe not

#

hm...

exotic venture
#

i think it just goes for 1.4 if it has both

#

and ignores the other two

solemn rivet
#

it just sends a message

rain cedar
#

That's like half the game right there

solemn rivet
#

that's all of the states, btw

rain cedar
#

FSMs that only exist to trigger other FSMs

solemn rivet
#

it has one state to check for longnail and one for mop, and that's all

#

that up there is the state if check for longnail returns true

#

I assume all it's doing is setting a bool somewhere else

#

also, now I think I know what causes sharp shadow to randomly break

exotic venture
#

it's fsms spawning fsms right

solemn rivet
#

this is the whole fsm "Control" for "Sharp Shadow Impact" gameObject

#
Transitions
FINISHED => Recycle
Actions
GetOwner(0)
RandomFloat(pÁ,pA,Rotation)
SetRotation(NULL,3.402823669209385e+38,,,,Rotation,0,FALSE,FALSE)
ActivateAllChildren(0,TRUE)
Wait(€?,FINISHED,FALSE)```
exotic venture
#

recycle?

solemn rivet
#
Transitions
Actions
RecycleSelf)```
copper nacelle
#

destroy itself probably

solemn rivet
#

I figure something is preventing the "FINISHED" event from being sent

#

so it never "recycles"

#

maybe the ActivateAllChildren is returning an nre or something

#

the thing is, I can't reliably test this hypothesis

#

I can force it to send the FINISHED event, sure, but since the bug is kinda random...

#

no way to know if the fix actually works

exotic venture
#

can you replace the recycle altogether maybe?

solemn rivet
#
[Tooltip("Recycles the Owner of the Fsm. Useful for Object Pool spawned Prefabs that need to kill themselves, e.g., a projectile that explodes on impact.")]
[ActionCategory("Object Pool")]
public class RecycleSelf : FsmStateAction
{
  // Token: 0x06000F23 RID: 3875 RVA: 0x000557AB File Offset: 0x000539AB
  public override void OnEnter()
  {
    if (base.Owner != null)
    {
      base.Owner.Recycle();
    }
    base.Finish();
  }
}```
#

such use

#

much needed

#
ObjectPool.isRecycling = true;
if (obj != null && prefab != null)
{
  ObjectPool.instance.pooledObjects[prefab].Add(obj);
  ObjectPool.instance.spawnedObjects.Remove(obj);
  obj.transform.parent = ObjectPool.instance.transform;
  if (obj.GetComponent<ActiveRecycler>() != null)
  {
    obj.transform.SetPosition2D(ObjectPool.activeStashLocation);
    FSMUtility.SendEventToGameObject(obj, "A RECYCLE", false);
  }
  else
  {
    obj.SetActive(false);
  }
  ObjectPoolAuditor.RecordDespawned(obj, true);
}
ObjectPool.isRecycling = false;```
#

lemme see if I can bypass that...

wide crown
#

@pearl sentinel is there a new update for 1.3.1.8 api?

copper nacelle
#

@wind mesa rando isn't updated yet

#

being updated tho

#

looks really neat

wind mesa
#

rando?

copper nacelle
#

randomizer

wind mesa
#

ok yea

copper nacelle
#

if you want to play rando rn you can downpatch to 1.2.2.1

wind mesa
#

of course, ill only try it when i actually finish the game

wide crown
#

hi meant just the api

#

not the individual ones

vagrant leaf
#

api is updated

wide crown
#

in the drive i see .5 no .8

copper nacelle
#

try not being on beta ez

wide crown
#

oh :/

rain cedar
#

Does beta even have benefits right now?

warped sinew
#

Not really

#

Most fixes after 5 are Linux stuff

#

A few small bugs but nothing major

rain cedar
#

Yeah, thought so

compact sedge
#

This is a dumb question but which version of Unity does Hollow Knight use?

rain cedar
#

No idea, but it's .net 3.5 if that helps

compact sedge
#

turns out it doesn't matter to dnSpy

#

I'm gonna try to decompile it in my vm and then copy it back to my host system

pearl sentinel
#

5.6

compact sedge
#

ooh I think that's the last version before they moved to year based versions

pearl sentinel
#

Yep

vagrant leaf
#

oh wait @pearl sentinel

#

is false knight in enemy rando pools

pearl sentinel
#

Nope. He's too complicated to try spawning

glacial panther
#

can you spawn him in greenath

pearl sentinel
#

See previous statement

copper nacelle
#

meme imo

glacial panther
#

I know I was doing a shitty meme

pearl sentinel
#

O

#

So, I don't wanna speak too soon. But I started on something after having an epiphany this weekend

glacial panther
#

my computer doesn't want me to run crossroads loader

#

am I good

copper nacelle
#

you can use gradow's then

#

imo post error tho

glacial panther
#

No I mean it has a safety warning

pearl sentinel
#

But I think I might be able to save and load hollow knight enemies from/to file with what I'm working on

vagrant leaf
pearl sentinel
#

And really any playmaker fsm game objects in general

copper nacelle
#

unrelated: did you ever find out how to load the enemy pre-fabs

solemn rivet
#

so, I was working with that sharp shadow impact fsm thingie

#

turns out it's actually 2 impacts

#
[INFO]:[OneHP] - Sharp Shadow Impact found - Impact 1. Parent - Sharp Shadow Impact(Clone)```
pearl sentinel
#

So, what I figured out about prefab stuff

#

The enemies are prefabs, pretty sure, but, they aren't stored in the /Resources folder in their unity project

copper nacelle
#

🤢

#

why

pearl sentinel
#

This means, they're only "loaded" when a scene that needs them is loaded

#

Like, as far as unity goes, this is a good thing

glacial panther
#

start boss rush mod

#

immediately clip into the ground

pearl sentinel
#

This is also part of the motivation behind what I'm doing tho

copper nacelle
#

groversoup plz

pearl sentinel
#

If I can get the data saved to a file, then the enemy or whatever could be created at runtime

glacial panther
#

oops

pearl sentinel
#

Also, you could then edit that data if you wanted to mod an fsm

copper nacelle
#

that'd be super convenient

pearl sentinel
#

Basically, the way I'm doing it is inspired by that reflection fsm data getter I told you about before

#

I took that concept and expanded it to serialization for saving and loading

solemn rivet
#

wait

#

56 did you make that monomod hook thingie work with playmaker?

hollow pier
#

monomon haha

copper nacelle
#

yea

solemn rivet
#

hm... Might try something

#

do you have a handy link? Or should I just search for it?

copper nacelle
#

i can grab it real fast

glacial panther
#

is there a way to make grimm's tent graphic respawn using debug

copper nacelle
solemn rivet
#

I like the name

#

QoL

copper nacelle
#

just throwing random qol stuff in there

#

rn it's just skip all cutscenes including credits and endings and menu drop + storage re-enabled

solemn rivet
#

just add qol to references in VS, right?

copper nacelle
#

there should be an api in the zip w/ the mod

solemn rivet
#

yup

#

oh, should I use that api instead?

copper nacelle
#

yea

#

or you can use the hooks dll

solemn rivet
#

k

copper nacelle
#

whatever works

solemn rivet
#

wtf

#

why can't I hit anything

#

my game is broke af

#

omg

copper nacelle
#

wtf

#

api was working for me

wide crown
#

inb4 collision disabled

copper nacelle
#

didn't test hooks.dll tbh

solemn rivet
#

I only added the hooks.dll

#

both to references and to Mods

#

lemme show you

wide crown
#

what's the reference folder?

solemn rivet
#

oh, I figured it out

wide crown
#

i could test it too for you

solemn rivet
#

but still, worth showing

#

look at this masterpiece

#

with a single line of code I broke all FSMs at once

#

beautiful

wide crown
#

LOOOOOOOOOOOOOOOOOOOOOOOOL we saw menderbug at work too there 😮

solemn rivet
#

(I hooked to PlayMakerFsm.Awake and forgot to call orig at the end)

floral furnace
#

menderbug just fucking froze

copper nacelle
#

lol

#

x2

floral furnace
#

shitmodst 2 confirmed?

buoyant obsidian
#

I have been outdone

wide crown
#

menderbug: "well i'm done now i'll just awkwardly stop working bye"

copper nacelle
#

semi-related

#

have you tried the mono mod hooks

buoyant obsidian
#

I've heard that word a bunch, what's mono mod?

copper nacelle
#

MonoMod is what the API uses to patch assembly-csharp

#

to like replace the methods so they can add hooks

#

recently it got a runtime detour hook generator

#

which lets you replace any function or add stuff before/after it

#

which is how i did the lightbringer api thing

buoyant obsidian
#

interesting

copper nacelle
#

because w/ it there's nothing you can't change

#

except protected and internal and final and const stuff

buoyant obsidian
#

field access modifiers?

solemn rivet
#

you can reflect those imo

#

at least private ones

copper nacelle
#

you can reflect internals?

solemn rivet
#

p r i v 8

#

not internal or final, afaik

#

but you can change and access a lot of code with monomod, is the point

buoyant obsidian
#

private is enough for me, I'm sold

copper nacelle
#

according to a random stackoverflow thing you can get internals

#

you still have to use reflection for privates but you can change all the methods super easily

buoyant obsidian
#

oh god I left comments in it?

copper nacelle
#

yeah

#

the nope comment is mine tho

#

i was trying to get the

this.anim.PlayFromFrame(0);
        this.stepCounter = 0;
        this.polyCounter = 0;
        this.poly.enabled = false;
        this.clashTinkPoly.enabled = false;
        this.animCompleted = false;
        this.anim.AnimationCompleted = new Action<tk2dSpriteAnimator, tk2dSpriteAnimationClip>(this.Disable);
        this.slashing = true;
        this.mesh.enabled = true;
#

stuff to work

#

then i realized why bother when you can just call orig

#

which does it for you

buoyant obsidian
#

what was wrong with the boss fights btw?

#

probably the fact that I declared static variables, right?

copper nacelle
#

makes everything super simple

#

no it was just that everything in herocontroller was private

#

and annoying to modify

#

all the mod vars ended up being easier than I thought

#

i just made them all class vars

#

didn't get text to work tho

buoyant obsidian
#

tbh I barely got text to work

#

this looks a lot simpler than the API, would this be a replacement to it?

#

of sorts

copper nacelle
#

you would use it w/ the api

#

so you just make a mod like normal

#

and have the monomod hooks in the mod

#

if my pr gets merged then it would be part of the api

#

otherwise you'd just add a ref to the hooks dll

buoyant obsidian
#

I see

copper nacelle
buoyant obsidian
#

interesting

#

and with the API it's basically one giant class where I can put all my methods?

copper nacelle
#

yeah

buoyant obsidian
#

and they'll be written to wherever they need

copper nacelle
#

it just runs the hooks before/after/instead of the methods but basically yea

buoyant obsidian
#

instead of is an option too

#

alright good

solemn rivet
#

but "instead of" is not recommended

#

for reasons

buoyant obsidian
#

Those reasons being?

#

aside from new versions screwing stuff up

copper nacelle
#

with monomod hooks you can't have multiple mods doing instead of

#

i mean you can

solemn rivet
#

^

copper nacelle
#

but only one will run

buoyant obsidian
#

oh good point

copper nacelle
#

but for the most part you can just call the function before/after with modified args

buoyant obsidian
#

Yeah, not a huge deal

copper nacelle
#

or just call it and then override everything it does

#

like i did w/ the nailslash

solemn rivet
#

oh

buoyant obsidian
#

I'll have to get back into Hollow Knight modding this summer if I'm not too busy with moving

#

but I need to survive these next 4 days first

#

I have 3 exams tomorrow

copper nacelle
#

oof

buoyant obsidian
#

C programming, Prolog / Smalltalk programming, and Statistics

solemn rivet
#

o+o=f

floral furnace
#

is Text an object or something cuz from all the tutorials ive seen online it works to make something like Text text but for my case it seems to declare that it doesnt exist in this context or whatev (also i pretty much tested using/importing most of hte libraries to see if thats the problem still persists tho)

copper nacelle
#

imo missing reference

buoyant obsidian
#

Text is usually a component in Unity if I'm understanding you right

floral furnace
#

ye

copper nacelle
#

you need a ref to UnityEngine.UI

floral furnace
#

weird

copper nacelle
#

and a using ofc

solemn rivet
#

ok, so I have a potential fix to sharp shadow breaking bug using monomod hooks

#

I'm forcing it to recycle itself every time it gets called

#

ttacco - using canvas?

#

or imgui?

floral furnace
#

yeah im trying to use canvas

solemn rivet
#
using Modding;
using UnityEngine;
using UnityEngine.UI;```
#

this what enemyhpbar uses

floral furnace
#

still weird though, im already using UnityEngine.UI but Text text basically still declares it "type Text could not be found" or something

copper nacelle
#

you have the assembly reference too, right?

#

cause UnityEngine.UI is its own dll

floral furnace
#

oh goddamn

#

it aint putting out an error like "could not find reference" like that so i assumed it was part of UnityEngine in itself

solemn rivet
#

Text text = new Text(); dis not work

floral furnace
#

aight its working now, my Java instinct is still there, like "why import a specific part of System when you can just import the entirety of System in itself"

copper nacelle
#

text = gameObject.AddComponent<Text>();

#

except gameobject was gamemanager or something

#

iirc

solemn rivet
#

yeah, I figured

#

just being stupid

buoyant obsidian
#

maybe try something like ESPbase.AddComponent<TextMesh>(); TextMesh textComponent = ESPbase.GetComponent<TextMesh>();

copper nacelle
#

what's ESPbase

buoyant obsidian
#

that's for another game

#

it's just a gameobject

copper nacelle
#

o

#

you can do x y = gameObject.AddComponent<x>(); too

#

no need for the get component

solemn rivet
#

^

#

I do that alot in hpbar

buoyant obsidian
#

yeah I know, I really should clean up my code a bit more

copper nacelle
#

do you guys use ReSharper?

leaden hedge
#

No

#

My code is already muy bueno por favor no say es bad

pearl sentinel
#

I should at home. I do at work. It's pretty nice

copper nacelle
#

everything is yellow now

pearl sentinel
#

Change your style rules?

copper nacelle
#

yea did that now

leaden hedge
#

Var lul nice joke

copper nacelle
#

wow this is nice

leaden hedge
#

What is this js

pearl sentinel
#

The thing I always wanted and had to get a little helper script for was a hot key combo to put curly braces around a highlighted block

leaden hedge
#

I wonder if I can get it for my c# code for free 🤔

#

All my code is open source and actively maintained 🤔

copper nacelle
#

til conditional access with ? exists

floral furnace
#

h o w

copper nacelle
#

high school

#

.edu email

leaden hedge
#

Hella gay

compact sedge
#

reasons to not drop out number 1

pearl sentinel
#

Ah I remember the days of edu freebies

compact sedge
#

I still have my old high school email

#

hopefully forever

copper nacelle
#

nice

floral furnace
#

CSharper more like its a crutch use a real IDE use notepad /s

copper nacelle
#

hoping i keep mine

leaden hedge
#

I've not been in uni for 4 years it only got cancelled last year

pearl sentinel
#

Now I just snag dem "work benefits"

leaden hedge
#

Reaharper isn't an ide

#

Its a VS extension

floral furnace
#

i know, just saying using tools to make youre life easier, when you can just go hardcore with a shitty notepad

copper nacelle
leaden hedge
#

Writing in HL languages

#

Peasants

floral furnace
#

Notepad > IDE > IDE with tools/extensions

pearl sentinel
#

Static code analysis tools = amazing

leaden hedge
#

Write everything in asm binary only

pearl sentinel
#

Write everything in fsm only

floral furnace
#

srsly just starting here, not knowing anything about fsm a what not, but are they really that bad? (FSMs i mean)

pearl sentinel
#

Fsms aren't bad

#

But, the particular thing used for hollow knight creates visual fsms that one uses to do visual scripting

#

This isn't inherently bad, but it's not something that is easy to modify in code

#

And it's used for about 75% of hollow knight

solemn rivet
#

Earlier today I posted an example of the spell twister charm fsm

#

Just ctrl+f it to see for yourself

leaden hedge
#

Its not even the visual parts, the problem is each action is a class with memory for everything it needs, and they pretty much use single lines of code per action

#

Whereas something like hearthstone uses hundreds per action

#

So there's way less shit everywhere

solemn rivet
#

Some are harmless and quirky, and some are just... Godawful

#

Like fsms all the way down

pearl sentinel
#

The thing is, playmaker is mostly targeted at non-programming

#

So a people who can't code can make something

leaden hedge
#

But its not supposed to be used by non programmers completely

pearl sentinel
#

Like, it's not flexible and it most certainly doesn't scale

leaden hedge
#

The usecase is, programmer makes complicated action designer glues a few actions together and they have a quick prototype

pearl sentinel
#

It's great if you wanna prototype

leaden hedge
#

If you can't program actions into you just end up with insane bloat

pearl sentinel
#

Like hollow knight has like 3 versions of some deceleration action, decelerate, decelleratev2, and deceleratev3

flat forum
#

Soo...

#

I went to the mantis Lords with the Mantis Gods mod installed

pearl sentinel
#

I have no idea what the difference was

flat forum
#

and the HPBars one

#

and no matter how much I attack them HP Bars won't appear

#

so I'm either dealing no damage

#

or the HPBars mod is broken

leaden hedge
#

You can read the fsms code to figure it out assuming there is a difference

#

Hpbars is broken on lifeblood

flat forum
#

the Gradow and Niko one?

pearl sentinel
#

There is, and I did when porting hornet

#

Just saying

floral furnace
#

Folding this is the old HP bar, not the new one?

flat forum
#

the Gradow and HollowNiko one

floral furnace
#

does it work for all the other enemies tho?

flat forum
#

all other enemies up to now were fine

#

only Mantis Lords

pearl sentinel
#

Naming classes like that is akin to calling your classes Foo, Foo2, and Foo3

floral furnace
#

probably something was modified with Mantis God that prevents the hp bar from seeing their healths probably?

leaden hedge
#

It at least tells you its decelerating something

flat forum
#

Maybe the mantis lords got an HP Buff and it won't appear until their HP reaches the intended one

#

I'll go test this

floral furnace
#

or some verbs or variables and what not were modified in Mantis Gods, and the HP bar cant find it, just a guess

pearl sentinel
#

Though that happens in the real world too. When I started here our games used this main game class to inherit from called BaseGame2

#

When I asked about BaseGame instead of 2 they told me oh idk, but don't use it it's old and broken probably

copper nacelle
#

@flat forum yeah it doesn't show up until it reaches intended

pearl sentinel
leaden hedge
#

Use BaseGame3 its better

flat forum
#

Just set damage to 100 it it showed up after a bit yeah

#

why does that happen, can it be fixed?

leaden hedge
#

Shitmod I fixed that in hpbars

flat forum
#

So I should also download Shitmod?

leaden hedge
#

No

copper nacelle
leaden hedge
#

No its correct

#

Instance could be null

pearl sentinel
#

Are your binding flags correct?

#

Also that

copper nacelle
flat forum
#

Is there a mod that replaces the bosses with their Dream Versions?

copper nacelle
#

no

flat forum
#

False Knight - Failed Champ

#

Oh..

floral furnace
#

Nail 0 Failed Champ

#

with no dash

flat forum
#

Why? I want one

#

and it shouldn't be too hard

leaden hedge
#

Aren't you supposed to cache fieldinfo

pearl sentinel
#

Maybe bc it could be null but you're casting it to a non nullable type?

copper nacelle
#

i should be but also this was just me copy pasting lightbringer

pearl sentinel
#

So a possible exception?

copper nacelle
#

oh

#

you were correct

#

happygrub thanks

pearl sentinel
#

Np

copper nacelle
#

also x? is god

floral furnace
#

wait are you trying on making a Lightbringer revived edition?

copper nacelle
#

it was just a test of lightbringer w/ monomod hooks

#

might fix it later

floral furnace
#

i see

leaden hedge
#

u won't

copper nacelle
#

ree

pearl sentinel
#
public static void Parse<T,U>(T output, U data)
        {
            FieldInfo[] fields = data.GetType().GetFields(bflags);
            Type outputType = output.GetType();
​
            //use the field names to assgin all the input data
            foreach(FieldInfo f in fields)
            {
                if(f.Name.Contains("parseIgnore_"))
                    continue;
​
                Type fType = f.FieldType;
​
                if(fType.BaseType.IsGenericType || (fType.IsArray && (f.GetValue(data) as Array).GetValue(0).GetType().BaseType.IsGenericType))
                {
                    MethodInfo parseXMLMethod = null;
                    Type invokeType = fType;
​
                    object parsedData = null;
​
                    if(fType.IsArray)
                    {
                        invokeType = (f.GetValue(data) as Array).GetValue(0).GetType();
                        parseXMLMethod = invokeType.GetMethod("ParseXMLDataArray", new Type[] { fType });
​
                        object[] rawData = (object[])f.GetValue(data);
                        parsedData = parseXMLMethod.Invoke(rawData[0], new object[] { rawData });
                    }
                    else
                    {
                        parseXMLMethod = fType.GetMethod("ParseXMLData", new Type[] { fType });
​
                        object rawData = f.GetValue(data);
                        parsedData = parseXMLMethod.Invoke(rawData, new object[] { rawData });
                    }
​
                    outputType.GetField(f.Name, bflags).SetValue(output, parsedData);
                }
                else
                {
                    outputType.GetField(f.Name, bflags).SetValue(output, f.GetValue(data));
                }
            }
        }
#

That's the snippet I was proud of today

copper nacelle
#

is this for the fsm serialization?

pearl sentinel
#
public class FsmStateData : CustomXMLElement<FsmState, FsmStateData>
    {
        public override FsmState ParseXMLData(FsmStateData data)
        {
            FsmState state = new FsmState(Globals.currentFsm);
            Reflector.Parse<FsmState, FsmStateData>(state, data);
            return state;
        }
​
        public override FsmState[] ParseXMLDataArray(FsmStateData[] data)
        {
            FsmState[] output = new FsmState[data.Length];
            for(int i = 0; i < data.Length; ++i)
            {
                output[i] = ParseXMLData(data[i]);
            }
            return output;
        }
#

Example

leaden hedge
#

Did you dump animations and audio

pearl sentinel
#

That's gonna be next. Was tackling the harder stuff first

#

It'll likely use this code too

leaden hedge
#

Unity doesn't really like you reading its textures or spritesheet data iirc

rain cedar
#

For that you can write the texture onto a new one fairly easily

leaden hedge
#

You've gotta render the texture to a render texture then convert that back just to read them iirc

pearl sentinel
#

I did my masters work with computer graphics stuff and do shader shinangans at work so I'm not too worried there. I just need to poke around with 2k toolkit and see how it's put together. Some googling last night showed me it wouldn't be too bad

leaden hedge
#

2d tk only has the individual sprites

#

AFAIK you can't get spritesheet data out

pearl sentinel
#

The biggest hurdles are managing prefabs and fsms/game object references right now

#

Since you can't really save a game object reference to a file

#

I should probably work on anything else, but this has apparently grabbed my interest for now

slender stump
#

seanpr speedrun mods

#

no modding

#

conrad mod

#

no modding

compact sedge
#

can confirm fsms are annoying me.

slender stump
#

kerr is modding

#

no mods

compact sedge
#

tbh not 100% sure how to read them

slender stump
#

thanks

#

wyza killer of joy modder

#

flaavor savior

#

is art mod

compact sedge
#

weren't you muted yesterday?

slender stump
#

ikr

compact sedge
#

aww screw it I'll just ask.

Where's data on specific enemy stats stored (like health and stuff)? I'm unable to find it in the assembly file, but I'm also not sure how to read data from resources.assets.

pearl sentinel
#

Hp is in the health manager component

#

Probably a good way to see how things translate is to look at my text dump of hornet and the code rewrite of her fsms that I produced from that

#

That's most of hornet

slender stump
#

kerr

#

it like car

compact sedge
#

that's formatted kinda awkwardly not gonna lie

#

This is all pretty new to me tbh

pearl sentinel
royal ridge
#

He's muted now

pearl sentinel
#

That's the resulting code from the fsms that I figured out

#

If you look at the text dump, you can see the PFSM state unit and those actions

#

Each action is a .cs class

#

So in my state machine rewrite I created an Init () state, and you can see the function doing those actions, but as normal code instead of playmaker objects

#

Oh whoops, that text dump is missing hornet ' fsm. Her corpse would probably be better then

compact sedge
#

so I can see where health for example is defined in healthmanager, and how its used in your script, but I do not see where the value, say 700 for hornet 2, is set.

rain cedar
#

Unity sets things in the background by magic

#

Because editor

compact sedge
#

maybe I'm just stupid but I've never done unity modding before

pearl sentinel
#

You mean, how is the max hp defined?

compact sedge
#

yeah like where the value is actually assigned to a given mob

pearl sentinel
#

It's just hard coded in the inspector

#

They made the component with an "hp" field

#

Then typed in 200 or w/e

#

Then you can use that whole thing like a template, and copy/paste the object

compact sedge
#

Wait so I can actually like edit the game with the unity inspector?

#

or no

pearl sentinel
#

Not for us

compact sedge
#

because I've just been poking around for the last 3 hours in the disassembler.

pearl sentinel
#

That's how tc does it

#

For us, we spawn an enemy, like hornet or whatever then check the hp

#

Then that's how we know the max

compact sedge
#

it seems like there's a lot of things y'all potentially cannot do, like create custom levels then.

#

maybe I'm wrong

pearl sentinel
#

Well levels are just art + colliders

#

Nothing special

#

You could make them in unity and import an asset bundle

compact sedge
#

ahh true

pearl sentinel
#

Or you can save game object references at runtime and spawn copies or move them around etc

#

I've done both

compact sedge
#

wait I probably shouldn't just be editing stuff with the disassembler should I because that will make it incompatible with other mods

pearl sentinel
#

Right

#

Use the modding api

compact sedge
#

thanks for the help, I'm new to a lot of this stuff so I'm sorry for any silly or dumb questions. I think I'll figure this out, I figured out c++ and I'll damn well figure out c# too

pearl sentinel
#

Just look at our various mods and things will start to click. Debug mod is a good one and it might sound silly, but my boop sound mod is really simple but shows how you can change a few things in fsms

#

Anyway, past my bedtime. Good luck!

compact sedge
#

thanks will do my best

compact sedge
#

ok your modcommon rocks. Everything is sorta starting to make sense to me now... sorta.

#

but I was able to quickly copy some real enemy code, remove the redundant parts done by EnemySM, and now I can modify this enemy AI however I want.

#

(I hope I'm doing it right)

narrow night
#

where can i find the charms stats information in the files ?

knotty shoal
floral furnace
#

dunno, sometimes when i download directly it still says it

#

also boss rush doesnt work on lifeblood

knotty shoal
#

sad

#

what works rn?

#

didnt mod anything yet

floral furnace
#

well you added boss rush right?

knotty shoal
#

yeah

#

didnt work

floral furnace
#

according to the dev it wont be worked on until GnG cuz you never if Boss Rush is actually gonna be the new game mode

jolly latch
#

hm so it doesnt show my little icon on the map...could it be a mod?

solid wagon
#

NOTE TO SELF

#

don't examine the Dreamer monument in Resting Grounds in randomizer if you already have the Dream Nail

#

locked my game

floral furnace
#

how so? you cant pick up the item at the end of the dream sequence?

solid wagon
#

huh

#

well i reloaded

#

went past the monument instead and went and talked to the moth

#

then i backtracked and examined the monument again

#

and this time it didn't lock my game

#

so idk!

#

but the lock was my game literally just froze up instead of it initiating the dream sequence

solid wagon
#

completed my first randomizer run on easy. 3 hours on the dot. really cool, looking forward to trying Hard after the update

trim nimbus
#

yo can you do item randomizer on CP?

young walrus
#

No

trim nimbus
#

alright thanks

#

I guess I'll downpatch if I wanna do it

#

but it does make sense since a lot of glitches are rip

young walrus
#

You can't do it because it's being rewritten

#

Glitches have nothing to do with it

trim nimbus
#

oh

#

my bad

#

thanks for the info Mick

copper nacelle
#

paraheristo

#

how much natural talent do you have

trim nimbus
#

I did SL1 NG+7 soul of cinder no rolling and iirc I'm the person who spent the least amount of time attempting it

hollow pier
#

so none

copper nacelle
#

imo sl1 NG+7 SoC no sprint

#

beat aura to it

#

also no roll makes me want to die whenever I try it

hexed vale
#

is there a mod that stops the humming while sat at bench?

young walrus
#

what humming

hexed vale
#

saluba's charm humminh

young walrus
#

yeah. it's called pressing a button

#

stand next to the bench

hollow pier
#

it's called the mute button

solid wagon
#

i'm not downpatched and i used the randomizer fine

#

🤔

solemn rivet
#

it might work

#

but sean is working on a new ver

#

so it's most certainly worth the wait

#

@copper nacelle can I distribute the hooks dll with blackmoth?

solemn rivet
#

wait, so hook.dll requires .NET v4.0?

bronze temple
#

@solemn rivet it shouldn't - it should require the same runtime that the input assembly requires

solemn rivet
#

weird

copper nacelle
#

sure but probably better to add it as a mod dependency

solemn rivet
#

I tried compiling blackmoth with it as a reference and it didn't work

copper nacelle
#

because then I can add QoL and such

solemn rivet
#

but when I changed blackmoth's .net version, it started compiling with no issues

bronze temple
#

Who has generated the hook.dll and can you please send me a copy of it?

solemn rivet
#

56

#

but it's nbd

#

game runs fine even with it

bronze temple
#

Because in the worst case, you should be just fine with modifying the .dll's target framework in dnSpy or something else

#

the generated .dll doesn't require any .NET 4.0 features

#

so it's just the metadata

solemn rivet
#

I figure it's just a simple task of changing the target framework in VS

#

yeah

copper nacelle
#

wait

#

Are any of the monomod dlls .net 4

#

bc I merged them all with the hooks dll using IlMerge so that it's easier to use

solemn rivet
#

lemme revert back and show you all the error I was getting

#

hooks depends on .net v4.0 confirmed

#

lore implications

copper nacelle
solemn rivet
#

also, resharper is lit

#

thank god I work in uni

copper nacelle
#

high school ez

solemn rivet
#

I like how resharper suggested I delete my mod's main class

#

"it's useless", it says

compact sedge
#

savage

copper nacelle
#

that happened to me too

#

unused class

solemn rivet
#

I'm like

#

I know my mod's useless m8, there's no need to tell me that again

copper nacelle
solemn rivet
#

I have a dream

#

a dream where I can play as A2 in HK

hollow burrow
#

what is a2

solemn rivet
#

it's paper size you dungo

hollow burrow
#

A2 milk is cow's milk that mostly lacks a form of β-casein proteins called A1 and instead has mostly the A2 form. Milk like this was brought to market by The a2 Milk Company and is sold mostly in Australia, New Zealand, China, United States and ...

solid wagon
#

a2, brute?

hollow burrow
#

does anyone sell a-1 paper

solemn rivet
#

Many paper size standards conventions have existed at different times and in different countries. Today, the A and B series of ISO 216, which includes the commonly used A4 size, are the international standard used by almost every country. However...

hollow burrow
#

i know what it is u green man

#

square root of 2 big meme

copper nacelle
#

no u

solemn rivet
#

also, awful memes, Winrar

hollow burrow
#

ur a number

solemn rivet
#

awful, just awful

hollow burrow
#

a2ful

solid wagon
#

a2 with fury of the fallen active, would be pretty fitting

solemn rivet
#

and change the behaviour of FotF to actively drain your health

solid wagon
#

who's gonna draw her in the artstyle tho

solemn rivet
#

another idea would be to make a charm that behaves like her offensive heal combo

#

so you can counteract the fotf

hollow burrow
#

oh is a2 a person

copper nacelle
#

nier i think

solemn rivet
copper nacelle
#

tbf just googling a2 doesn't help

#

unless you look down

#

which is clearly too difficult

solemn rivet
#

point taken

copper nacelle
#

tbh i missed it the first time

#

which is why i googled a2 character

solemn rivet
#

maybe my pc is biased

#

she's literally all that showed up for me

hollow burrow
#

gradow how much time have you spent looking at a2 on google images

copper nacelle
solemn rivet
#

images m8

copper nacelle
#

mostly cars

solemn rivet
#

elmer - I'm not legally allowed to answer that without my lawyer

hollow burrow
#

call me glue

hollow pier
#

but i dont look at a2 all day thinkgrub

vagrant leaf
hollow pier
#

modding is just general for modders

copper nacelle
#

google images does that

#

just tried it

solemn rivet
#

it is modding, we talking about adding her as a character

#

possibly

#

maybe

#

probably

#

in the distant distant future

#

...?

copper nacelle
#

replace all resources painfully ez

solemn rivet
#

seriously tho

#

if I can, in the near-ish future, make a menu option so that the user can choose between diff hpbar styles (and possibly even add their own)

#

maybe I'll look more into asset replacement

hollow burrow
#

aren't there like hundreds of character sprites though

solemn rivet
#

yeah

#

but if you could simply import/export sprite sheets...

#

I mean, technically you can do that rn

#

but with serious restrictions

#

each sprite has to be a very specific size

#

if you go a few pixels off, it screws everything

solid wagon
#

pc is a little short to swap in a2

#

Maybe wait for hornet dlc

delicate ether
#

is there new dlc coing?

#

coming

solemn rivet
#

cp3

#

and hornet dlc

delicate ether
#

i dont know what cp3 means

solemn rivet
#

content pack

#

gods n glory

delicate ether
#

whoa they are still working on hollow knight? thats cool

solemn rivet
#

yeah, they sure are

delicate ether
#

is there like a dev blog or something?

#

also, how hard would a new game + mode be to impliment

copper nacelle
delicate ether
#

something similar to darksouls

copper nacelle
#

just more enemy health?

delicate ether
#

keep certain things but everything is harder

copper nacelle
#

ez

solemn rivet
#

yup

#

ezpz

delicate ether
#

as a nasis sure, but maybe new eneies and such one day

#

basis*

copper nacelle
#

just enemy health is easy af

delicate ether
#

it would be cool if certain things persisted in the world after you beat it, encouraging new playthroughs

solid wagon
#

new enemy placement

solemn rivet
#

retain some items is also easy

copper nacelle
#

PlayerData.resetdata or whatever imo

solid wagon
#

picture enemies from queen's garden showing up in greenpath

#

and the like

copper nacelle
#

just play enemy rando ez

delicate ether
#

maybe the player keeps the charms they have equiped, their geo, and looses everything else

solemn rivet
#

you could just hook on setupnewplayerdata and add the relevant items

delicate ether
#

everything in the world resets, except maybe you keep pale ores and keys

solemn rivet
#

hook on resetdata and save current items to a file, hook on setupnewplayerdata and re-add them

#

keys, eww

delicate ether
#

lol

solemn rivet
#

the thing is, there's nothing really worth keeping, is it?

delicate ether
#

indeed thats the thing

#

exploring and finding items is the fun of the gae

solemn rivet
#

movement/damage upgrades would break the game

#

same with spells

delicate ether
#

keeping ites reduces the fun of the next playthrough

#

but i feel like the player should keep something

solemn rivet
#

a nice expansion would be to keep charms (some)

delicate ether
#

maybe their nail upgrade

solemn rivet
#

and add the option to "upgrade" them

delicate ether
#

and 4 new levels get unlocked