#archived-modding-development
1 messages ยท Page 132 of 1
Huh
normal behavior, it literally uses the change in your knight's "tranform" while dashing which is the actual distance that the knight is physically moving
Does it do weird things when you dash onto an elevator?
no
sure let me install debugmod really quick
my theory is that it's caused by some really weird and bad collision code
not from elevators in particular
Well the elevators are awful
although maybe
All around
Had a theory that it's teleporting your hurt box way far away then back to simulate the I frames
no it doesn't actually do that believe it or not
ok need to walk back to CoT give me a sec
But then it'd do that on ground too
Which it's not
So
Weird. If we could stop the movement oob for elevators.....
That could skip WKs
Chances are it has something to do with the code that bumps you upward when you dash into ledges
yeah that's what I was thinking
let me check
ok for comparison the knight moves about 7 units when dashing. it's supposed to be 6.5ish I think but as KDT accurately pointed out dash length will always be slightly above it because really shitty time code
[INFO]:[Redwing] currentPos is (-0.3, 1.7) and init position is (-0.3, 1.7)
[INFO]:[Redwing] void knight moved 0 units total
[INFO]:[Redwing] currentPos is (0.3, 1.7) and init position is (-0.3, 1.7)
[INFO]:[Redwing] void knight moved 0.5600014 units total
[a few more 0.5ish unit timesteps cutout...]
[INFO]:[Redwing] currentPos is (1.9, 1.7) and init position is (1.4, 1.7)
[INFO]:[Redwing] void knight moved 2.240005 units total
[INFO]:[Redwing] currentPos is (1.9, 1.7) and init position is (1.9, 1.7)
[INFO]:[Redwing] void knight moved 2.240005 units total
[INFO]:[Redwing] currentPos is (2.5, 1.7) and init position is (1.9, 1.7)
[INFO]:[Redwing] void knight moved 2.800017 units total
[INFO]:[Redwing] currentPos is (38.0, 20.4) and init position is (2.5, 1.7)
[INFO]:[Redwing] void knight moved 42.9509 units total
[INFO]:[Redwing] currentPos is (38.0, 20.4) and init position is (38.0, 20.4)
[INFO]:[Redwing] void knight moved 42.9509 units total
[INFO]:[Redwing] currentPos is (38.6, 20.4) and init position is (38.0, 20.4)
[INFO]:[Redwing] void knight moved 43.51091 units total
so uh for one my method runs faster than the game does its physics calculation
so sometimes the knight won't move at all in between timesteps
but
here's what's interesting. The knight transform got moved very far to the right and very high in the air
this being off the dirtmouth elevator dashing to the right
and more interesting
it kept its trasnform
until the end of the dash
and guess what, it still has that crazy transform
so how is the knight still in bounds
nope
now here's where the shenanigans gets even more crazy
stepping on an elevator, and only doing that, resets the position to something normal
but when you dash over an elevator, you avoid stepping on it and keep your weird transform
or do you actually I'm not quite sure
omg no I figured it out I was actually wrong it's nothing to do with ledges and everything to do with what seanpr said
and
also
that's how elevator storage works
when you step on an elevator, you become a child to that elevator
and you lose it on stepping off
so your position goes crazy as a result
good code
and that's why
you can hit an elevator and ride up
while off the elevator with elevator storage
ok
does transform.position always give me absolute position?
with respect to the scene
?
I don't think so
well at least I found a speedrunning trick the hard way
transform.position should be worldPos
ok
I was using localPosition and I thought it didn't matter because the knight had no parents
This is where a tas tool would be sick to see if we can use that crazy position and go there
but
im a meme
and apparently elevator parents
this game still confuses me
ok it works thanks that's one of my most major bugs gone
I should make all the jellyfish in fog canyon say "monomod" when dreamnailed
hey I bet y'all have never heard that one before
haha monomon
fuck steam crashed
whenever steam crashes I have to quit my game because the game will freeze on trying to save
ok so uh I need a really hacky solution to the very major problem of THK not having a hitbox like at all
should I just slap on a BoxCollider2D to him and call it a day?
There's gotta be something there already for hit/damage detection
yes but not a BoxCollider2D which is what I'm using for literally every other enemy
well all but 4 which also for some reason lack hitboxes
but they don't matter enough and I really wanna ship this thing
Are they using a polygon collider for him?
no regular unity collider at all or it would work with my thing
I'm just using normal unity collision
Weird
here's what's on him:
\--Component: MeshRenderer
\--Component: MeshFilter
\--Component: tk2dSprite
\--Component: Rigidbody2D
\--Component: tk2dSpriteAnimator
\--Component: PlayMakerFixedUpdate
\--Component: SpriteFlash
\--Component: PlayMakerFSM
\--Component: PlayMakerFSM
\--Component: InfectedEnemyEffects
\--Component: EnemyDeathEffects
\--Component: HealthManager
\--Component: ExtraDamageable
\--Component: DamageHero
literally the same as the fool eater in this case
well not literally the same
but the same behavior
I'ma look into if ExtraDamageable is a thing I can use
but if not I'm so willing to make a redwing_hacky_workarounds class
that literally adds a collider to thk
Maybe his collider is added some time after load by an FSM
There's just no way that fight would work with no colliders
...maybe but here's the facts. if THK has a standard collider at all it should work with my stuff
and by standard I mean UNITY collider
not like a special weird playmaker or custom coded collider
I doubt they made their own custom collider
what if playmaker did
Also doubt it but maybe
oh crap I know why this is happening and I have no idea how to fix this
the colliders are on the children of THK
I bet the fool eater is the same way
so here's the issue the children have the correct layer and all that
but no healthmanager
so I just need to check if healthmanager is null or something and then get component in their parents
except
I need the component in the parent twice removed
for thk
Also now this modcommon function has become more than useless, but actually counterproductive otherCollider.gameObject.IsGameEnemy()
Should be pretty easy to make a recursive parent component finder
T GetComponentInParent<T>(GameObject obj, int maxRecursion = 5, int currentRecursion = 0) : where T : Component
{
if (currentRecursion > maxRecursion) return null;
T component = obj.GetComponent<T>();
if (component != null) return component;
if (obj.transform.parent == null) return null;
return GetComponentInParent<T>(obj.transform.parent, maxRecursion, currentRecursion + 1);
}```
I just wrote this in notepad++ so idk if it works
private static HealthManager getHealthManagerRecursive(GameObject target)
{
HealthManager targetHP = null;
while (target != null && targetHP == null)
{
targetHP = target.GetComponent<HealthManager>();
target = target.transform.parent.gameObject;
}
return targetHP;
}
``` this is the crappy thing I wrote lul
Oh right transform.parent is another transform
Mine won't work without at least that being changed
idk if mine would work either tbh
Not sure if it's possible to have recursive parenting
Or why you'd even want that
But yours will break if that's a thing
I don't think that's in the game
Boss Control\Hollow Knight Boss\Colliders\Head
I hope not
I could add an iterator
private static HealthManager getHealthManagerRecursive(GameObject target)
{
HealthManager targetHP = null;
int i = 30;
while (target != null && targetHP == null && i > 0)
{
targetHP = target.GetComponent<HealthManager>();
target = target.transform.parent.gameObject;
i--;
}
return targetHP;
}```
ok
that should't break then
I hope
I'll log i to see how long it takes I guess
Should be fine, it's only going a couple parents up
yes
it works
i is 27 which tells me it went up 2 steps
cuz im a bad coder
tbh
I'm so glad the me from 18 hours ago decided to rewrite and simplify my damage enemies function
thanks for the help
ima wait until tomorrow to release it but now there's only one known redwing bug and it's so small it might as well not exist
Cool
well I shouldn't lie: there's actually 2. both graphical, both only apply to a very small section of the game. but one of them I intend on fixing in CP1 and one of them is so tiny I bet nobody will even find it
What does CP1 mean other than content pack 1 (Hidden Dreams)?
Because that makes no sense
it means redwing content pack 1
Wow fancy
Codename: radiation conjurer for obvious reasons
it will bring in bug fixes, possibly effects on spells, and lore
Can't wait for the in depth lore explanation videos
between then and now I also wanna do one patch, which will make hardmode harder and fix any bugs people find in the meantime
my only deadline is pre GnG. if I release after GnG then my "early 2018" joke will be more sad than funny
gng please release tomorrow thanks
If TC's estimate is true then dont worry Angle you still have like 5 months left to work on it
more like
heh
delayed again
wrong
mid 2018
before noon July 1st
well not by their standards
The flow of time in Australia is convoluted
december 20th is early 2018 in australia
Wtf dnspy
You can go to #archived-modding-help
hey can someone who runs the modding api change the version to 44?
there's some stuff that got changed in the hooks
DashPressedHook got changed to a bool
I need to wait for the modding api version number change to release redwing because otherwise it will break with people running modding api 43, the old 43 that is.
no it's really memey to use reflection to ensure they have the right modding api
oh lol the modding api zip needs to be rebuilt anyway
Hey before I accidentally break everything can someone confirm that this modding API I built works 100% on more than just my own computer? https://drive.google.com/open?id=1GMsLO1z7U6XiDJchM2sGDx911XTOpFbZ
or at least that it launches and all the vanilla stuff still mostly works
idk i'm in new york
new york?
what
are you doing in new york?
don't you dare not enjoy your time
and if I catch you feeling down it'll be your demise
doesn't 56 live in new york?
i thought 56 was an ai placed in a remote location
it might be
ok ima play through the game on steel soul and if nobody finds any problems with that modding api by the time I'm done I'm gonna assume it works perfectly
unless you confirm it works on debianOS you can't share that potentially faulty api
that's the one OS I can confirm it works on :P
tbh someone should make a mod that unit tests the api
just forces every hook with a bunch of inputs and checks the output
but the purpose of updating the modding api is to change/improve the modding hooks
it would fail on the DashVectorPressed test and the DashPressedHook one too
I'm more interested that this assembly works on windows
since I can't test it on windows
I wanna update the modlinks to use this binary but I don't want to if it has any problems at all on other OSes
- because this binary is new and up to date
- because splitting the modding api into mac, linux, and windows versions probably isn't needed anymroe
oh and 3) because I need this new API for redwing
Obviously only microsoft systems can handle high res textures
Salt & Sanctuary
I don't really know the differences tbh
It could very well be MonoGame
All I know is that MonoGame is newer
maybe so. monogame is a clone of xna 4 and it's open source
and it's actively developed
xna is a dead engine that is closed source
I meant functional differences
for example I think Owlboy is using xna because they started development really really long ago
oh none
it's a clone
but
I guess it runs better
and it is designed to work on more OSes
like the PS4 for example
It's probably monogame then since it's on PS4 and vita
probably. I'm surprised they wouldn't update that line description though
so like what are the odds of, if not now then ever, of being able to alter the knights appearance even if it's via a charm? (read: can we play as the tiny version of the hollow knight at some point?)
That's possible
ScaleMod 
im modding retarded so i need a lot of hand holding. i have the mod installer and use lightbringer and sometimes turn on the health bars but aside from that i have no idea what im doing or what most of the mods do.
what IS scale mod.
It changes your scale
kinda like the shell charm making you 25% smaller in lightbringer?
Sounds similar
coolcool
i also am not sure if i had instigated some confusion with my original statement--- the protagonist-sized hollow knight from the scene when you're obtaining the void heart is what i was referencing.

if you're saying you want to resprite player character to young THK that's way too much work
don't have enough sprites to replace all animations and you'd probably have to replace them manually
that was why i asked if it was possible or if it would be in the future. modding of certain games become easier overtime and was not sure how it worked for this one.
you'd probably need to hand draw thousands of sprites to do that
ah then that's a bit much. thanks for the answer.
that is actually the hardest part tbh
im not doubting someone will be willing to do resprites in the future but from the sounds of it even if one was to do so it would be absolutely frustrating to wade through it all.
either way thanks again. i always tend to get good help when i come here. love the community for this game.
well if you're respriting one enemy you could use a tool like asprite or something to make animation easier
but this isn't something that will ever get easier over time I don't think. the bulk of the work is in the art itself
that makes sense. thats also why i asked or suggested altering the visuals via a charm as some can have an effect overlay like the glass soul making you flicker and the defenders crest giving you the cloud.
kdt may or may not at some point been working on splitting the knight into various chunks that you could recolor separately
outside of that you can change the color of the knight as a whole
and the code for that is pretty easy
and color includes opacity
so you can make the knight flicker
or if you're clever you could have the knight be semi-transparent and draw something directly behind it
id like to dabble but like most modding its almost always going to involve some sort of coding and i just absolutely dont know anything about that quite yet. which is why im more or less stuck with asking questions for the time being.
If you pull your weight in some other way (art), people might be willing to do the code part instead of you
ooh. that makes sense. team effort. i like that idea.
Hey y'all. Happy to announce that Redwing is officially out and on the Google Drive, as well as in the mod installer.
it be ya own nibbas
It's the exact opposite of the kind of mod I'd have made if I made it only by asking speedrunners for suggestions, but nevertheless I'm still very happy with the results.
veru it's because I can't embed images in the google drive readme
the zip has a real readme
Now the question is... how many days did I beat the launch of GnG by
6
beta api dll version 44 for those who don't want to downgrade. Built for 1.3.3.7
I play and mod HK on the beta branch and haven't run into any bugs from using this version yet but no promises that it's as stable as the non-beta version.
https://cdn.discordapp.com/attachments/455231776248299520/462804221234905109/Assembly-CSharp.dll
hey sean can you do me a favor and update in the source code (the binaries are already good) the modding api to say version 44 instead of 43?
Alright
wow unity 420 iq outsmarted me
the unscaledDeltaTime apparently isn't used to calculate the deltaTime
debug mod?
don't think I have any mawleks alive
I don't have nosk alive
````KDT - 01-07-2018 17:15 | #modding`

idk what mod this is for kdt but wow
tas
oh right lol
Load Cheat Engine and Hollow Knight [Current Patch]
Open Process... Select Hollow Knight
Middle Left there is "Memory View" click it to open a new window
Press Ctrl+G
Go to "hollow_knight.exe+3DEAA9"
There should be an instruction that says "movss [esi+68],xmm0"
Right click the instruction > Find out what Address this instruction accesses
Double Click on the only item in the list in the new window that opened
Select Stop on this window and close it
Right click the instruction > Replace with code that does nothing
Then just set the value to whatever in the address list
here you go
"mod"
hollow_knight.exe+3DE97C is for unscaledDeltaTime
hmmmm
nice to see u workn on nightmare god grimm again
so this is just from it running the unscaledDeltaTime functions way more times than it should? or is it from unscaledDeltaTime always reporting a value of 0, infinity, or some other number?
is that other number the actual time that passed
yeah
so what controls the animation speeds then?
deltaTime
no but cuz like those balls and stuff were moving normal speed
and I'm not quite sure if that means that at low fps grimm is objectively harder
oh
its basically saying if the game lagged so it only ran one frame every 2 seconds
this is what it'd look like
if speed up to 60fps
not really, because if the game ran one fram every 2 seconds it would run 100 fixed time updates in between both frames, right?
depends
fixedupdate gets called when the mainloop has free time
which it probably doesn't if its lagging to one frame every 2 seconds
afaik fixedupdate only gets ran at the beginning of update
So it's impossible to make a TAS that's both consistent and perfectly matches real world behavior then
and will do X updates to match how many it should have done
but it's ok, because TASes are like 80% theater anyway
so at low fps it skips them and does them all at once, and at high fps its no different
It's worth noting that if the game is running at a slow frame rate, there will be numerous physics updates between each visible frame render. Conversely, if the game is running at a very high frame rate, there may be no physics steps at all between some of the frame renders, because the time elapsed since the last rendered frame has not yet exceeded the time period of a single physics step.
I think it may be possible to fix that though tbh
by having a var say how many fixed updates it should do on this frame
yeah that might not match 100% real world behavior but it would make the TAS at least look realistic
or actually
I can probably nop the function that sets the total time elapsed
and increment it by the custom deltaTime
that's good and not the worst idea but don't do that
it wouldn't visually match if it lagged
because floats get inaccurate to the point where it matters after like 20 minutes or so
but it should emulate the same mechanics
you probably want to track the total amount of time that passes but do so in a way that your floats aren't exceeding like 50 seconds or so. or use doubles.
doubles and floats are aids in asm
you're writing this in ASM?!?!!
yes
...why?
I need to replace internal unity features
theres no way to override Unities Time.deltaTime afaik
or the fixedDeltaTime
what if you removed those functions from the unity DLL and then rewrote them or something?
I believe the engine does physics and collision based on its internal variables
so Id have to completely rewrite that
c++ > mono > code
its like an onion
but I know more about asm than I do about hacking c++ exes
to load arbitrary code
what can't you use LD_PRELOAD?
LD_PRELOAD="mybinary" ./hollow_knight
LD_PRELOAD
A list of additional, user-specified, ELF shared objects to be loaded before all others. The items of
the list can be separated by spaces or colons. This can be used to selectively override functions in
other shared objects. The objects are searched for using the rules given under DESCRIPTION.```
This can be used to selectively override functions in other shared objects.
what am I going to override
who knows where or how thats implemented in c++
it doesn't matter, if you find the function in ASM you can override that
by using the asm name
I have no idea where to start on LD_PRELOAD
apparently I need to know the class name and function prototype
I don't think it'll even be a function it'll probably be a field
well for one I think it's only for hooking external function calls IIRC
so what you can do is hook on its external call to glibc or whatever where it gets the system time or something. and access whatever memory it has as that point or run the original function.
its
winmm.GetTime
this
well on windows anyway
actually let me try to write a testcase because I'm on the OS where this kind of stuff is actually a lot easier
so uh what do you use to dump the assembly
ok well let me install ltrace and see what I can do
also doing it this way will probably still require some asm somewhere
as I doubt this will fix the fixedDeltaTime anim/movement stuff
actually it might
I guess I'd have to see
alright I'm just gonna make a very simple override and use gdb or something to view what memory I can access
directly in code
truth be told I've never tried this but I heard about it and I wanna see how feasable it is
I know it updates the right amount if you replace the system time
as thats how CE speedhack works
and it updates the right amount
but it might still have sync issues
ugh I wish I didn't have to run steam to do this
right now wishing I had a gog binary
if it starts on like half way through a fixed update cycle
so the frames that would have a fixedupdate or 2 instead of none or 1
being able to directly say THIS FRAME WILL HAVE 3 FIXED UPDATES
will be probably the only way to get it to sync
on linux it's calling gettimeofday from <sys/time.h>
but tbh once this is done all I have to do is figure out loading being random and prng I hope anyway
besides you know playing inputs back from a file
aaaaaaaaaa
ok
the steam drm is getting in my way
fuck
but I don't wanna buy the game again on gog
ughhhh
well it works but I'm a big meme and I called my function recursively
which caused a segfault
aha it worked now to figure out why it's returning weird values
would recommend
#include <dlfcn.h>
#include <stdio.h>
#include <sys/time.h>
#include <iostream>
typedef int (*orig_gettimeofday)(struct timeval *tv, struct timezone *tz);
int gettimeofday(struct timeval *tv, struct timezone *tz) {
orig_gettimeofday origFunction = (orig_gettimeofday) dlsym(RTLD_NEXT, "gettimeofday");
int memeTime = (int)orig_gettimeofday(tv, tz);
std::cout << "the int returned by gtod is " << memeTime << " and tv_usec is " << tv->tv_usec;
return memeTime;
}
here's my current code which doesn't actually work
well it works
but it's returning weird shit
ArgumentOutOfRangeException: Value 5940458702234077184 is outside the valid range [0,3155378975999999999].
Parameter name: ticks
at System.DateTime..ctor (Int64 ticks) [0x00000] in <filename unknown>:0
at System.DateTime.get_Now () [0x00000] in <filename unknown>:0
at UnityEngine.GUI..cctor () [0x00000] in <filename unknown>:0
Rethrow as TypeInitializationException: An exception was thrown by the type initializer for UnityEngine.GUI
at OnScreenDebugInfo+<Start>c__Iterator0.MoveNext () [0x00000] in <filename unknown>:0
at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00000] in <filena$
in player.log
good code
also cout doesn't print to the terminal for some reason
ok so uh unity discards cout
and cerr
what should I do to log stuff
write to a file maybe
^
ok now figure out what calls fixed update
it does matter
imagine you start your code after 1100 ms and fixed update is every 1000ms
compared to starting it at 1900ms
in one case you'd get a fixed update after 100m
and the other after 900
meaning you wouldn't get the amount of fixed updates per frame
no what I mean is this is the low level way that it gets the time
like you'd get the same amount of updates overall
for both of these
but it won't sync
imagine the first frame you expect to fixed updates on a frame that took 25ms
that can only happen if fixed update was 5 frames away from proccing
unless we make sure no updates besides what are necessary run
and even then it'd only work running from a fresh game load
I'm not sure what you mean but what I can say is this. I can use this to make code that forces the game to run at a fixed framerate
basically make it into celeste kinda
idk
so fixedupdate runs once per x milliseconds that pass
if your frametime isnt a perfect multiple of this
its effectively how fixedupdates you'll get per frame
this would sync from a powered on state
but fixed update only runs at the start of update
so the code looks something like this
Update(){
while(FixedTime < currentTime){
FixedTime += fixedDeltaTime;
FixedUpdate();
}
//stuff
}
except here's the catch. I can tell the game how many milliseconds pass.
well it doesn't matter
and this would apply to both fixed update and regular update
because you don't want to run this from start
you'll be rerunning scripts repeatedly
post launch
making FixedTime random
at the start of your TAS
except for a full game TAS
so it'd make say doing the THK fight to test one move
you'd have to do the entire TAS from the start
wew setting it to 100us makes the game really slow
setting it too high causes the game to not load
the "problem" is as you said it can't distinguish between the various kinds of updates
so if unity internally is expecting 1ms to pass between calls for one thing and 10ms to pass between them for another it will get messed up
I didn't have a problem with it not loading
looks real smooth
I think the easiest way tbh
its running great in game
unsmooth
amazing-56
is make sure time elapsed is always a factor of fixedTimeStep
so 1/50, 1/100 or 1/150 of a second etc
can you replace functions in the Random class
oh LoL
I just killed NGG2
nice
yeah ur right this isn't that useful
memes
very large spread in difference in times between calls:
0.000166 since last call.
3.7e-05 since last call.
6.4e-05 since last call.
3.1e-05 since last call.
3.2e-05 since last call.
1.6e-05 since last call.
1.6e-05 since last call.
0.000233 since last call.
2.6e-05 since last call.
1.6e-05 since last call.
1.4e-05 since last call.
8.2e-05 since last call.
2.4e-05 since last call.
1.6e-05 since last call.
1.4e-05 since last call.
8.5e-05 since last call.
2.1e-05 since last call.
1.6e-05 since last call.
1.4e-05 since last call.
3.6e-05 since last call.
0.000103 since last call.
2.7e-05 since last call.
1.4e-05 since last call.
1.4e-05 since last call.
3.5e-05 since last call.
0.00085 since last call.
3.5e-05 since last call.
2.3e-05 since last call.
2.1e-05 since last call.
0.000109 since last call.
maybe it's possible to only run if the function that calls this function has a certain name or something
im just going to make it so deltaTime is equal to fixedDeltaTime
ok probably the smarter move
and then fps cap at 50
so it plays back at a close to realistic rate
now all I need is to write a mod
that checks game state / sets inputs from a file
and make rng deterministic
I don't think unity uses Random internally
so just replacing all instances of it in the assembly with a custom function
should work
can you access any variables outside that
preferably how many milliseconds its been running
well your program will have that right
so if you seed the rand with that
it should always return the same data
is there like a doc that explains what all the mods do?
The Readme that comes with each
I could
yes
or I could
const int totallyRandomNumber = 0;
int rand() {
return 4;
}```
I dunno if that will work good
wouldn't that make stuff like
do the same attack 400 times in a row
enemies would constantly repeat attacks
unless they have triggers + random
which is why I said to use the current time running
preferably the time spent in the room
so you can just start a section outside a room and it'd sync in a full game tas
ok so overriding rand works but it only runs it once to seed its actual random number generator
which is internal
unhelpful
as its likely the order things ask for random for is random
or atleast undeterministic
I don't trust unity to load stuff in order
why not just set the seed to 4
see above
ah
it needs to be seeded per request and the seed needs to be frame based
so everything that requests random will get the same value every run through
but if the seed is just set once, and then A asks for rand then B once, but next time B asks before A
wow desync'd nice
actually setting the seed to a static number using this isn't the worst idea imo
the boop mod doesn't have a readme, what does it do?
replaces sounds with boop
Makes noise
B O O P

Boop. Extended Version: https://youtu.be/Yz41E9FDeQQ Original Video: https://www.youtube.com/watch?v=Og5-Pm4HNlI Group: http://steamcommunity.com/groups/bjor...
@compact sedge is hardmode a global setting var
yes
yes
cool
Is there a place with like, descriptions for what mods are
All I can find is that list of them in pins
Any reason to use HPBar and Enemy HPBar at the same time
Oh I see
Thanks guys
Probably in some kind of faq but if I'm modding will I still get steam achievements
Yes
ive been using both hp bars oops lol
old one won't do anything post lifeblood
it uses an old class
that doesn't exist anymore
oh cool then it wasnt doing anything anyway
is the randomizer mod supposed to skip vengeful spirit?
what
its just a pickup then you walk into the mound
there are a lot of ways to enter gpath
can you get to queen's gardens from deepnest with just wall jump and dash?
because if so you could climb to greenpath from there I think
Go through howling cliffs
pfft that's the easy way
And yeah. There's like 10 things you can use to get into greenpath.
what does howling cliffs require
to get to greenpath from there I mean
I know you need wall jumping but anything else?
dang
With the Hollow Knight Randomizer, is there any way to manually customise which items are obtained where? Say if I want to change the progression path, I'd like to manually replace Vengeful Spirit with the Monarch Wings at the Ancestral Mound?
No
Would have to find the specific seed that does that
Or just write your own mod xml
hollow knight custom mod when
Can someone explain what this randomizer helper does then, because I have no clue what anything on this page means. https://rainingchain.com/hollowknight/randomizer
Randomizer Helper for the game Hollow Knight.
I don't know if this is for generating a custom seed or for explaining what a seed I am using will do.
shows you items you can get with what you have
Tells you what item locations are reachable with your current equipment
Oh ok
It doesn't interact with randomizer in any way
Just helps the player with game knowledge
Is anyone working on a custom randomizer tool that creates a .xml where you can choose where and what items you find? Something akin to the Universal Pokemon Randomizer?
No
you do it
๐
U no
I'm a beginner of C# and that's it, I don't believe I have the sufficient knowledge required to do that. But I would love to if I could. ๐
best way to learn is doing imo
All true
Thought you were given green name for a minute
Stack Overflow is my bible.
Then realized it was just 56 memeing
how's redwing hardmode btw
Do you mean like a plando or just custom logic?
Plando I think
the only boss that killed me on redwing hardmode was the crystal guardian stage 2
who I fought with a +1 nail upgrade
and 5 hp
what does hardmode do
1 damage for everything but fire attacks
does that launch out fireballs
but it makes it so you can actually kill balders
the pity one launches 1 fireball
the normal one launches 4
nice
I didn't want to have the blackmoth problem of unkillable enemies before you unlock spells
How can there be a balder when everything in the game is already bald?

it like a baldur but for people who are angles instead of angels
should i stream hardmode meme
Stream low% nsoob
also why are there like 90 settings
because I made absolutely everything configurable
cause it's aa
@compact sedge Could you give me a quick summary of what is changed in Redwing? I have it downloaded but I haven't tried it out yet.
Yoshi?
yum
why does mobile correct r to e
big yes
Redwing hasn't changed for you if you've. Never tried it. 
doesn't do anything yet tho

I don't get it. 
lore isn't coming until CP1 or at least my first patch.
also I have a setting to override blackmoth cloak color and that doesn't make sense because blackmoth doesn't change your cloak color yet
Do you like fire? Do you like balls? If so, you'll like redwing
is there a hardmode bool or do you just set each thing manually
A small video showing some of the effects from my new Hollow Knight mod, Redwing. Coming early 2018, this mod adds several new fire and light based effects t...
i mean what
whomst
handicapAllNonFireAttacks

So a bunch of fiery meatball attacks, good.
yeah I guess. It doesn't affect save files you could could download it and try it out on an existing one if you really wanted to. but it's designed for new games
Cool, well thanks for chat, got to go, see you.


tbh it's not that hard tho... not yet. there will definitely be more options to make it harder in the future.
wow it works https://www.twitch.tv/verulean314
@compact sedge
EventInfo hi = ModHooks.Instance.GetType().GetEvent("HitInstanceHook", BindingFlags.Instance | BindingFlags.Public);
isHitInstance = !Equals(hi, null);
if (isHitInstance)
{
Log("HitInstanceHook found!");
Delegate handler = Delegate.CreateDelegate(hi.EventHandlerType, this, "SetDamages");
hi.AddEventHandler(ModHooks.Instance, handler);
}
else
{
Log("HitInstanceHook not found! Using older methods.");
ModHooks.Instance.HeroUpdateHook += OldSetDamages;
ModHooks.Instance.OnGetEventSenderHook += DashSoul;
}
mono straight up crashed when I used monomod hooks with blackmoth
Why is it red?
diff
Ok but how do you even get color formatting into discord?
```diff
- red
- green
```
Cool
@compact sedge are you sure that you're using the newest version of MonoMod?
probably not tbh
uhh well all I know is it compiled successfully and broke in runtime
and also
I used the precompiled binary and it broke too
precompiled binary from where?
and the source from https://github.com/0x0ade/MonoMod/ ?
^
yeah uh
oh no
13 commits behind
all I know is just having the hook in blackmoth caused it to fail for some reason. possibly because of that
i'll go update it
also
that one was prone to cause SIGSEGVs all over the place
but only on Mono, not the .NET Framework
it was a sigabrt
ah
let me see if I have the coredump
wow 0x0ade instantly here when someone mentions monomod breaking
no I don't have the coredump anymore it got deleted beause it's kinda old
well, if you somehow remember if you had a stack trace related to that
and if it in any way mentioned getting the param info,
it's that
unrelated question: can i use reference monomod utils and then merge monomod utils w/ the dll and use them
otherwise, if it's just seemingly random memory corruption,
it's the lack of 64-bit jumps when they were required
because I've been told that code will never be separated more than 2 GB from each other 
thanks Linux
linux not believing in ACE
all I know is I got a black screen after the mods loaded and then the game crashed and there were like no useful debug symbols in either mono or unity.
and because I'm dumb I don't have any of my system libraries built with debugging either
let's just hope that the recent commits will fix your issues :)
@copper nacelle you should be? Depends on where and how you're refering to either of them
was gonna use the fast delegate maker thingy
if you refer to MonoMod.Utils.dll from one of the assemblies which will be merged, you should be fine
if you want to refer to MonoMod.Utils.dll from outside, f.e. a runtime loaded mod, you'll need to refer to the merged assembly instead
unless you want to "relink" mods before loading them, redirecting their references from MM.Utils.dll to the merged .dll
which is a thing, because I need to relink Celeste mods from FNA to XNA before loading them on the fly, depending on what version of Celeste is installed
doing the first one so it should all be good
Tip: if you just need the merged .dll to build your mods against them but don't want to redistribute any of the original code,
mono-cil-strip is your friend :)
theres no code anyone would want to steal anyway
switch (cardinalDirection)
{
case 0:
{
int num = this.invincibleFromDirection;
switch (num)
{
case 5:
case 8:
case 10:
break;
default:
if (num != 1)
{
return false;
}
break;
}
return true;
}
case 1:
switch (this.invincibleFromDirection)
{
case 2:
case 5:
case 6:
case 7:
case 8:
case 9:
return true;
}
return false;
case 2:
{
int num2 = this.invincibleFromDirection;
switch (num2)
{
case 3:
case 6:
break;
default:
switch (num2)
{
case 9:
case 11:
return true;
}
return false;
}
return true;
}
case 3:
switch (this.invincibleFromDirection)
{
case 4:
case 7:
case 8:
case 9:
case 10:
case 11:
return true;
}
return false;
default:
return false;
}
figure that one out
Are there any const ints remotely related to that?
don't ask me why they didn't do return cardinalDirection & invulnDirections and made the data line up nicely
and no
there isn't
they are pretty much random
no I'm not 0xd4d, even though we both maintain C#-modding-related projects 
0xd4d is much cooler than me
but I picked my name before I even heard of him D:
no, the question is,
why can't it just be "do thing I want"
why is Unity's mono so gay :^)
and the question extends to Unity itself as well - I've been told that their asset formats use both little and big endian in the same file
I wouldn't worry about anything unity does
you'll leave with more questions than you entered with
like Color.black
you'd think that'd be black
but you're wrong
all 4 values are 0
so its actually transparent
420iq
oh god I haven't heard of that one before
and am dying of laughter in my chair right now
thanks
let's just hope everything will become better with ECS and their upc~ who am I kidding, everything's going to be worse than ever once the first ECS games get released
oh its not color.black its this https://docs.unity3d.com/ScriptReference/Texture2D-blackTexture.html @bronze temple
truly next level
I mean, they're right, if you ignore blending :^)
incase you're wondering how I have this knowledge
do all the other colors have an alpha of 1?
yes
wow
420iq
nice game engine design
unity is my favorite game
the game is trying to figure out how it works
do they even perform dogfooding other than those cinematic tech demos?
dogfooding
unity doesn't make games
besides a few imo subpar examples
tbh at least unreal makes games
cs go

The game that got it all started
wow
Half-Life 2 showcasing Source is nothing compared to this 
half-life 2 is just a rip off of quake 3 arena
unity is an original character I mean engine
source is just goldsrc which is just id Tech 3
Unity is a bad Game Maker clone, even relying on you to bring your own code editor because it lacks its own
it has monodevelop
I mean it crashed 80% of the time it tries to load any file
but its there
strictly speaking, it's not even their own, but true
this seem useful?
was gonna mod furi
checked and it was unity and c# and stuff which is nice
extreme pain
I knew this was gonna happen
What if it's everything?
tbh
it looks like it is everything
there's like
nothing
in the assembly
i thought hk was all fsm but this looks like it's even more fsm
how is there nothing in there but it's 3MB
Probably all the playmaker actions
til fsm mod can edit fsms
somehow this is more insane than me trying to disassemble unity.
idk how i missed that you can just put stuff in hack_fsm and have it be edited
wut
oh
reading readmes is a myth
apparently so
To modify FSMs, just copy the relevant file, keeping the same file name, into another folder in the application data directory called 'hack_fsm'. PlayMaker will look for the existence of that file and load it replacing the normal data.
idk how i missed it
so does that mean we almost have a working enemy serializer then
cuz if so then maybe enemyrando will actuall run on normal computers
No not really
well what can't we serialize
we can dump fsms, and health managers and sprites and audio
what's missing
Idk ask kerr how far he got
about to die
wow it doesn't have as many fsms as i thought
found a bunch more assembly stuff too
almost through the first phase of one of the bosses
this thing has like
no fsms
this is great
useful and good fsm
they're all just TriggerEvents
nothing of actual value
Where's state 1, though?
the void
i don't think any of these have more than like 3 or 4 states
they've got a bunch of non PlaymakerFSMs
fsms but not terrible
who needs piracy
heck
lol
Wow does it actually have the content for it?
yeah i think so
what if you just replace it with return DLCState.INSTALLED
Free DLC I guess
bunch of hashed clip state thingies
Sourcecode is worthless to like 95% of all computer users, and only especially valuable to <1%
speaking of source code. I need y'alls suggestions I need a break from working on redwing so which of these should I do first?
(try to) Port the gradow mod installer to non-windows platforms 
Fix the numerous problems with grimmchild upgrades 
Start working on a monobehavior for easily speeding up/slowing enemies and infinite enemies 
extreme pain
might as well be a playmaker fsm
literally an action in a state machine
fix the formatting and it's totally doable
yeah
even has time values to modify super easily
but still
pain
all code no assets except art when
all code no assets art only%
Anyone made a fun and op mod yetM
IDK if they're fun or not but redwing makes you pretty strong
as does blackmoth
and heck even lightbringer if you think about it
debug mod is pretty broken
because older version?
because you can't be killed
ugh you'd think they'd balance it. I heard you can just increase your nail damage infinitely
who would think that's a good idea
/s
alright starting work on the mod installer port thingy
as with crossroads. no promises. But I have a feeling that up-to-date mono is a little better than unity mono for these kinds of programs
wait
lemme push this little change I just made
:x
done
something broke when it didn't find the default paths
for some reason form.Show(); was opening and closing the form in the same frame
so I changed it to Application.Run(form());
aaa now I have to update my remote repo
ok are you pushing more changes or should I update my repo now
ok should I stick with the master branch or the test one
pull me baby
I should really squash these last few commits
but I like how they're like art
good lord either do it now or do it after I'm done with my PR
they tell a story
I won't do it
it beats 56's commits

I have no chance of competing against 56
I'll just change the download link and go to sleep
1:50am bois
is there supposed to be no close button on this window
meme
:)
unfortunately your hacky renderer doesn't render properly at all but on the plus side
it does launch
it does crash trying to install mods but easy fix
this works surprisingly well with very little porting effort on my part.
although I'm not looking forward to fixing that right side menu UI
very nice
and, yeah, the renderer is somewhat hacky
but shhh no one else needs to know
:x
it's a mild problem because the right scrollbar doesn't scroll the mods on the left
and shouldn't even exist
first thing tho is trying to get your program to scale so it shows the close button
ok I have 0 clue why the Maximize box in the top right is appearing which is pushing the close button off the screen

alright fixed it

