#archived-modding-development
1 messages · Page 219 of 1
if only it was that good
How do you walk circles in 2d?
so how much do I hate my life by trying to mod this game?
google translate just says compass
what did you mean with "that only makes it worse then"?
vertical circles
here call it "harppi"
eww
@mellow elbow are you having any issues overall?
no idea what the english translation is
Haha poo
and it kinda does have a similar shape to a harp
@weary stream dunno, just finished installing the modding api and opened VS
also, Wyvern, I meant that having the "pointing-north" compass and the "circle-drawing" compass be name the same thing is so confusing
also the eagle-women are harpies
haha xD
do they sound similar btw?
harppi and harpy?
or is it a case of words that are written one way, but sound completely different when spoken?
about the modding thingy i recommend you start checking other's github projects and dnspy to check how things work
well the pins have a list of all mods created by the people here
also, Csstform - quick: what's your favorite weather condition?
in a single handy google drive folder
which beautifully leaks the real names of all the modders 
it doesn't leak mine tho
obv snow
I don't use my personal acc there
although I don't like the cold soooooooooo
they should make new weather conditions only as an excuse to make new castform forms
acid rain 😩
I was wondering what you were talking about until i remembered that castform is a pokemon
<_<
I'd laugh if I ever saw someone main castform
a team consisting of only castforms
one of each form
yes
add radioactive and acid rain

radioactive is what happens when you drop a nuclear bomb my dude
acid rain is just a byproduct of polution
acid rain is just the aftermath of said bomb
not necessarily
now where'd I put my copy of dnspy

urg I forgot how painful it is to slog through this stuff
nah, it's useful
Maybe I'm just crap at it
which wouldn't be suprising
I've been spoiled with easy xml modding
nah
do you have any experience with modding or c#?
yeah i kinda used it, there is also another fsm viewer that works with the fsm dumps which is the one i'm using to check some stuff tho
@weary stream yes and yes
it cant load json
right?
it crashed when i tried to use it with the dumped fsm
if you have both then you will be totally fine xD
I'm rusty so really it's just a matter of how long will it take me to remember how to do things
you mean nes' viewer?
It just reads from the resources
yup
Imma pin it
FSM Viewer by nes
Load resources.assets and choose your fsm from the list.
https://cdn.discordapp.com/attachments/410556310787063828/484837002051846145/Release.zip
oh i think i just used it on levels and it was a bit chaotic
you use the scene editor to open the levels
scene editor??
like I said, nes was working on one
how might i be able to edit the color of soul so that it's sand-yellow instead of white
but it's not quite finished
PA: you can edit the sprite-sheets directly
OR you can use your own sprites, loading them using a mod
you can probably get the tksprite from the hud (probably attached to GameCameras.CameraHud) and change its color from there
if i edit the sprite sheets directly, how would i incorporate that into the mod
OR you can make a mod that changes the colour of the gameobject and try to make it work like that
you can change its material color instead
yup
but not sure what kind of renderer uses the tk sprites
but that's kinda finnicky
you can also load the sprite and recolor it once
the original sprite
but you need the path for that xD
best solutions are loading your own sprites OR recoloring it using a mod
how do i recolor using a mod
what wyvern said
you need to find the gameobject for the soul meter
then get its tk2dSpriteRenderer or MeshRenderer
one of those
I'm not sure which
and then get the material of that
and change its color
so, here's a suggestion
i'm pretty sure it has to be attached to the hudcamera
dafuck
you do gameObject.PrintSceneHierarchyTree("file.txt");
do you realize how many steps i had to do to get the monobehaviours and stuff from the gamemap hierarchy because i didnt know of that? <_<
and it prints the whole tree of object gameObject to file file.txt in Mods
does it print the components the gameobjects have?
thats so useful
modcommon is already a resource for the mod
but gameObject.PrintSceneHierarchyTree("file.txt"); is flagged
well, you need to do that with an actual gameObject
i think i will read the sprite, if thats what changes
the hard part is figuring out which object is the hud
but i dont have flames on my save so i dont have a way to test it
the name 'gameObject.PrintSceneHierarchyTree' does not exist in the current context
are you kidding:
--PFSM StateNames
----PFSM StateName: Idle
----PFSM ---- Transitions for state: Transition on HeroCtrl-HeroDamaged to state Flower?
----PFSM ---- Transitions for state: Transition on HeroCtrl-LeftGround to state Left Ground
----PFSM ---- Transitions for state: Transition on HeroCtrl-FocusCompleted to state Focus Completed
----PFSM ---- Transitions for state: Transition on HeroCtrl-LeavingScene to state Leaving Scene
fsm too?
everything is fsm my dude
kdt made a custom boss tho
is it possible to replace the fsm with actual classes?
btw idk if i need to add [UsedImplicitly] before the mod class but ive been doing that for every mod to date and it hasnt had an issue
idk if i need it tho
if you make the classes, how do you replace the fsm then?
there's a function in modcommon for deleting an fsm's state
do that for every state of that fsm
you've basically disabled it
why would you do that when you can remove the monobehaviour and add the new one that is a class?
wdym
the question is how do you hook it so the fsm doesnt initialize
what if you have a gameobject that is loaded before everything else in execution time?
"script execution order"
wdym Wyvern?
what is wdym
what do you mean
what do you mean
oh
jynx
well, i worked with execution order before
jinx? jynx?
hah hah no typing for you
ive seen both before but idk which is which
and you can actually execute code before other monobehaviours load them
because they are loaded in an order
pretty sure thats hardcoded tho
idk if you can execute code before the fsms are loaded tho
if you do it from unity you can, but you have to set up playmaker fsms after your monobehaviour
hook from gamemanager update to remove the fsms from every monobehaviour, gamemanager should be executed before fsm i think
not sure the hooks tho
cant we just hook playmaker?
you can, there's On. hooks for playmaker
What? There's more than one flame on the map
maybe they are childs of the actual object?
yeah but the gamemap says its only one object
which makes me think that the other pins are also childs
this will be bullshit :/
I think it's like the SD Trail gameobject for the superdash effect
it's actually the hero gameobject
but it's only used for that animation
this is clearly 3 gameobjects
yeah
my guess is that they are parent of the flamepin
but maybe they're copies of the same object
so e very other pin is works the same way
SD Trail and Hero are different objects, but they're "the same" - have the same components, children, position etc.
also, are you using the viewer I pinned?
56 fixed some variables missnamings
yeah i used it to check the flame pins
because i need to update them in the minimap
and the pins aswell
i might have to download it again, i had it before you pinned it
I'm not sure tbh
try getting those gameObjects in game
(also, notice that they are FSMGameObjects)
see if they're different
yeah, i might need to remove every fsm component from them
well, i think the only fsm object is the flame pin, not the childs
// Flames
tk2dSprite[] flame_sprites = pins["FlamePin"].GetComponentsInChildren<tk2dSprite>();
tk2dSprite[] updated_flame_sprites = map.flamePins.GetComponentsInChildren<tk2dSprite>();
for (int i = 0; i < flame_sprites.Length; i++)
{
flame_sprites[i].SetSprite(updated_flame_sprites[i].spriteId);
flame_sprites[i].transform.position = updated_flame_sprites[i].transform.position;
}```
this should do the trick right?
they only change between on and off (spritesheet) and position right?
i need a savefile with grimm fires :/
i will check
Modding Idea
Replace Cornifer with Homer Simpson
p sure that's canon by now
Here enjoy this cursed image
is this modding staff
oh
it is

Wow spoiling the shitpost immediately
You gotta wait a bit
Like this is fine to post since it's been a week
NO
Really makes you think
clearly they age like fine wine
u don't get modder
presumably you can dash between the two platforms without jumping
and moving left/right
it means we be wrong
It means the platforms in the final phase of Absolute Radiance have the perfect distance for Sharp Shadow.
u
lame
sharp shadow is like dashmaster but worse
To make everything into an egg machine you load a scene that has one and cache it
yes
first of all, youre wrong, 2nd of all, youre wrong
ascended levels of terrible
and youre ascended levels of wrong
that’s good

also we’re getting god tier runtime IL manipulation
have any of you seen 0x0ade’s new example
gif pls
I’ll rebuild the api with it in a bit
do you know what's causing it tho?
nope
I'd have worked on it earlier but I have no controller that doesn't work to test with
except my controller that just doesn't work with HK at all

⌨
but what if it works
u die
understandable
real shit what are the biggest shit that il manip can do
anything
modify any value in any function that isn't super small because super small stuff gets inlined
Delete all of it and make a new function in IL
wokest
🤔
also in that context, you could modify it without giving a shit about the access modifiers so to say
yes
nice
I'm trying to make a shitpost but it won't compile
Someone tell me how this is invalid IL
stloc.0
ldloc.0
add
stloc.0
ldloc.0
ldc.14.s 69
blt.s 2
ldloc.0
ret```
That's actually kinda neat
ye
if the IL is invalid will that function or line whatever just downright not work, weird shit starts happening, or does your game just die
Probably just causes an error idk
Trying to run code that wouldn't compile normally is weird
when i tried invalid il in terraria it crashed the game
wokest
i found some really sketchy link to an IL IDE
0 => store as var => onto eval stack => add => store ??? as var => onto eval stack => int 69 => if 69 < 2 branch somewhere? => onto eval stack => ret?
what
extreme confusion
because idk what it's supposed to store
what are you adding tho
Adds two values and pushes the result onto the evaluation stack.
Lame
Out of topic whats the best question to ask when developing a software for a client
nice
lmao
oh i get it
0 => store as var => onto eval stack => add 1 => store result as same var => onto eval stack => int 69 => if var < 69 branch to 2 => onto eval stack => ret stack
I guess the first store is unnecessary
No wait it's not it needs to be that way for the loop to work out
What do I need to include (using) to have GameObject defined?
unity engine?
do you have UnityEngine.CoreModule reffed
Is adding an event on key press a modhook?
no
adding an event?
you can check Input.GetKeyDown in a monobehaviour update or heroupdatehook
Ok, thanks.
skip to save creation from credits
yeah
dew eet then
ok
or should i not auto-skip the ending and just leave it instantly skippable
wow ok
it ate my hook
either works for me
did you catch a honker
what i just read, Input.GetKeyDown, lol
?
that is a function that exists yes
if you want to use input make sure that you get the correct input events @slate owl, specially if the keys are binded and people can play with gamepad too, i'm sure there is a class for them in hollow knight
Input.GetKeyDown(KeyCode.B); syntax I believe
in control
there's an input handler on the game manager
that's actually how they lock cutscene skipping
they disable the keys
is that in the source code? i'm pretty sure hollow knight has key bindings and that wouldnt work for them or gamepad
what
in that case, Wyvern, just do HeroController.instance.inputHandler.jump.isPressed; etc.
this will listen for jump, no matter the key
i love how dreamers now give me a white screen of death
just double checked the binding thing, guys if you want to use input for final purposes (debug is fine) use the events
inputhandler works for both right?
yeah
keyboard only bindings stay woke
i had issues when working on my game's input until i realized i needed an inputhandler
to be able to bind keys and use gamepad xD
add use of a keyboard is highly recommended screen to QoL thanks
thats wrong too, it could even give an error
?
what
Input.getbuttondown is different for each gamepad, xbox and ps controllers have different bindings
yeah
that's not an error
the best way i know is with xinput
eww
?
@rain cedar did dreamer cutscenes used to be fully skippable
cause when i skip them super early i get a black scren
Yes
yeah i was talking about raw input handling xD
but if you wanna make your own bindings, like Debug, Input.GetKeyDown is perfectly fine
if you do so you need to check gamepad aswell
or you can just ignore gamepad
if you want it to be used with the gamepad
too much effort
i play with gamepad what if you bind your mod keys to only keyboard? :<
I mostly bind keys to test stuff
where is your binding
testing is the only reason i've ever checked inputs
Input.GetKeyDown is an action not a bind
xD
eeee
e
thats why i dont like those kind of input events
yeah debugging is fine as i said
but what if you want it to be used ingame
like a new ability
then you add a new hero action
then it'll be on dash or spell or something
but you dont use Input.GetKeyDown
no i hook fsms
why do dreamer cutscenes have terrible
without custom fsms*
but if you only wanna trigger something real quick (which is what rainingchain is doing), input.getkeydown seems like the best option
oh
he just wants to disable all overlays/vignettes/etc from each scene with a button press
what was he doing?
so he can screenshot them and make a map
no need to bind that to an action, since it's not a mod that's meant to be played
it suffices for him to know which key to press
I didnt know what was he doing xD
What .NET version can I use for mods?
3.5
^
i mean you can use 4.7 but shit will randomly break
c#4 aswell i think
c#7
c#7 is not allowed in unity
MonoMod fucks unity
I mean, don't you have to call orig(self); even after self.Skip()?
how
i tried to use c# 7 in the past with unity and i always failed xD
monomod is god
runtime detours
runtime il manipulation
fna/xna one binary
c# 7 in unity
etc
damn
Log("Got here lol - 1");
I know you want to
ee
what the fuck
On.InputHandler.SetSkipMode += OnSetSkip;
}
private static void OnSetSkip(On.InputHandler.orig_SetSkipMode orig, InputHandler self, SkipPromptMode newmode)
{
orig(self, SkipPromptMode.SKIP_INSTANT);
}
just this breaks dreamers
why
public static void DoHornetHappy()
{
HeroController.instance.MakeWhatYouHaveToDo();
}```
ups not meant to write that 😃
🤔
it was NOT_SKIPPABLE then NOT_SKIPPABLE then infinite load scenes
thank u dark souls
skip_prompt?
i made it SKIP_INSTANT instead
wheremst
gm
i c
analyze is bae
also this
tried that
e
is there any place where i can read what each mod from mod installer is?
like some kind of description
thanks : )
! ❤
e
?
i just need to make one of these never play in the first place
and it's not stag travel
or opening cutscene
First try at infinite hardmode grimm was just shy of 5000! That's pretty damn fun.
On.CutsceneHelper.Start += don't;
that thing doesn't even do anything of value tbh
can you see the caller of a method
i dont see a description for "arts" mod
i mean like from a hook
oh
in python you could inspect the frame
idk
doesn't the cutscene fsm hold the next scene to transition to? just capture that and load that scene manually @copper nacelle ???
fuck u ur on windows you have all the beautiful fsm tools
you should have no problems doing it
eeeeee
also hard coding dreamers is terrible
also i tried to do the dnail => back to where you were thing and it ignored my request to load a scene
big meme
well there's only 3 of them
i'll try the load scene thing ig
(i mean you could hardcode the scene names too if you don't wanna touch fsms)
that's the plan
if i can't do this i'll just dnail => skip dreamer thing entirely
=> back to where you were
except i'm just gonna hardcode the prefix
why does nothing ever call before scene load
except this one terrible broken thing
oh i think it doesn't actually skip the video so the video just stays black on top
great


i'm going to destroy everything in the scene and nothing can stop me
are you papers?
yes because it didn't work
u
i hate blankers
they ruin everything
ahh
i think i know how to fix my code but now i've deleted it
how do i eat a blanker
thanks
this is the exact same issue dream respawner had and it's the worst
thinking
considering
how do i die irl
cut off your central nervous system
how do i get a nuke
ask veru
what about ten egg
🍴 
you need to RegainControl
because
it's a scene transition it should do it itself 
the SkipCutscene thingies take control
i skipped the entire scene
u
u
this issue happened with dream respawner
on all door dream returns
it was terrible
ayy
i fixed it
and in a less terrible way than before
by like one line
it makes it so much better
it looks buggy as fuck

but it's not and it works fine
you ever just yield return a coroutine then yield return a wait then yield return another wait
after an if statement which yield returns a coroutine then yield break
X
🤢
What doesn't work?
setting health to 0 won't kill you will it
56 may i be acq'd yet another invite to frog's dream world
mp doesn't drain, knight doesnt die when mp hits 0, sitting at a bench doesnt fill mp
you did?
thanks
I sent it to someone
Idk I thought it was you
where do i get a never expiring invite
don't think so
literally that one
oh
yes
just pin it here imo
if setting health to 0 wont kill, what wil
56 for shame
That might work
PlayerData probably doesn't have checks for negative soul in addmp
isn't there a mp take
Yeah TakeMP
play splice kuro
q u i c k
no splicing runs is illegal
do 1.75x pure vessel no movement upgrades old nail radiant
die the die
does it count if i did pure vessel old nail radiant
no
ok
play icono
eat 10 egg
is this sean's alt
Radiant kills only count with a minion build
wait where is bratWhy

📳
it's not in frogs
yes i know
It's not listed in the emote list server so idk
yes i know
do u
i joined it like 5 hours earlier
refresh
we did it


idk
you can do it
it shouldn't be hard
@cunning lagoon https://streamable.com/oktph
it doesn't respawn the enemies
how would i make it kill the player if soul reaches zero
cause setting health to 0 doesnt work
the enemies don't deserve to be respawned
HeroController.instance.Die();
wokest
me irl
yeah that's not a thing but thanks
HeroController.instance.StartCoroutine(Die());
oh, it's private
heh, good luck
you can always dnspy and take a look what's that do, and do the same in your code
yeah the coroutine thing obvi doesnt work cause its private
you can just do
HeroController.instance.health = 0;
HeroController.instance.TakeDamage(int.MaxValue);
nice
so it sets the health to zero and then makes him take damage?
inb4 underflow
i think glass soul does that but 999
this.playerData.disablePause = true;
this.boundsChecking = false;
this.StopTilemapTest();
this.cState.onConveyor = false;
this.cState.onConveyorV = false;
this.rb2d.velocity = new Vector2(0f, 0f);
this.CancelRecoilHorizontal();
string mapZone = this.gm.GetCurrentMapZone();
if (mapZone == "DREAM_WORLD" || mapZone == "GODS_GLORY")
{
this.RelinquishControl();
this.StopAnimationControl();
this.AffectedByGravity(false);
this.playerData.isInvincible = true;
this.ResetHardLandingTimer();
this.renderer.enabled = false;
this.heroDeathPrefab.SetActive(true);
}
else
{
if (this.playerData.permadeathMode == 1)
{
this.playerData.permadeathMode = 2;
}
this.AffectedByGravity(false);
HeroBox.inactive = true;
this.rb2d.isKinematic = true;
this.SetState(ActorStates.no_input);
this.cState.dead = true;
this.ResetMotion();
this.ResetHardLandingTimer();
this.renderer.enabled = false;
this.gameObject.layer = 2;
this.heroDeathPrefab.SetActive(true);
yield return null;
this.StartCoroutine(this.gm.PlayerDead(this.DEATH_WAIT));
}```
this be code
copy it
and be happy
also
I'll bet you like 99% of those fields are private
take damage int.MaxValue cmm
Take random damage while hp > 0
00f
is this chaos mode
No chaos mode random hp never kills you
PA: pass the HeroController.instance as the gameobject
collisionSide, just choose whatever
kill yourself with yourself
and hazardType = 0
hazard type = (HazardType) int.MaxValue
you can do that with binding flags
btw
and it'll work
How high does the score need to go in IG to get the final unique clear message?
I feel dirty
15k iirc
over 9000
oh
jk
oh
it took me a second to get it
also if you play one hit mode or timed without the other and beat my score like that u have the big gay
15k on hardmode for the ultimate unique message. I don't think anyone has done it on the modern one but I may be wrong.
I don't think I'm going to rest until at LEAST that 15k benchmark though
oh boi
also I forgot if the modern one has a different 15k message from the old one
I remember when dlk first came in this channel
asking about ngg
saying he would beat it
and we were all like
"nah you won't m8"
lmao
Has to be timed, one hit, hardmode
^^
Nothing else counts :p
and then u were the first one to do it wtf.
I gave up on NGG because phase two makes me sick to even think about
seriously how are you this gud at video games
tbh it should be only phase 2
Hardmode is just that
fuck the last phase
What's DLK's timed 1-hit score even?
I won't even touch that
10k
I have the lowest IG score, proudly
https://docs.google.com/spreadsheets/d/1jkQTyfuLmCdygWcG44fEcDtVsYrsQhwkOi-UB5CcmYA/edit?usp=sharing
I got 1200 on it last night. I might start trying NGG hardmode now
See how high I can get
show me what you're doing
I may as well try NGG again just to take number 3 on the board
I see that 1200 score and I'm like
yes kick 56 out of the top 3
"pssh, what a baby."
no exaltation though 
Yeah, it's disabled.
also DL I decided to give you two trophies by your name instead of one on your NGG score. one that anyone can get by doing over 3200 dmg and one for being the first one ever to do it @cunning lagoon
well, you're not using HeroController.instance as the object at all
If I'm showing my epeen I ain't cheating
nice
is this the smartest man alive
I'll also give a trophy to anyone who gets 15k on hardmode
HeroController.instance.TakeDamage(HeroController.instance, CollisionSide.right, 9999, 0);
ive been modding for a week max, i dont understand half of what y'all say to do
Brb then, let's knock out 56
vanilla hardmode is surprisingly hard
dude i tried that and it flagged HeroController.instance in parentheses
show
you dont have fury and he gets hella fast
Yes 56 has no right to an NGG score
that was the first thing i tried and it got all fussy

oops
Kick him off
yea good idea
HeroController.instance.gameObject
there we go
@copper nacelle this is a call for you to kill ngg already

bye

whymst am i being kicked off
I thought the 2 trophies were because he did both versions
bc milky is gonna get a higher score than you
But being first is better anyway
eeeeeeeeee
@vapid cape die
i need to start my homework
ree
can u like don't
nah he only had one before but once you got 3200 I figured I'd give you one as well but I wanted to give him an extra one just because the guy was the only one to have killed ngg for the longest time.
well i guess ill try to get 3.3k today
no promises
56 should i disable qol if im going to be fighting ig/ngg?
{
PlayerData.instance.MPCharge = PlayerData.instance.maxMP;
}
what's wrong with this
or does it work with it
Dude it can be done. If I didn't totally fuck up the third balloon I would have a higher score
it makes the game not wanna start
I had full HP going into final balloon, 3 masks at the end of it... Lol
and i have a less shit way of doing it now
i saw you mention something about taking 4 masks of damage
Yeah
and 56 also complained about that the other day
It bugged
I mean since I'm basically stuck waiting on kdt to help me then yeah sure you might as well 56
so angle it might be worth looking into that
{
PlayerData.instance.MPCharge = PlayerData.instance.maxMP;
}
private void Instance_NewGameHook()
{
PlayerData.instance.MPCharge = PlayerData.instance.maxMP;
}
this makes the game not wanna start when i open a new game
ok will look into
dunno why
is playerdata.instance not null when you set that?
IG is similar to Godmaster with the one hit mode and things to change it up
aren't modhooks caught anyways now
tc stealing ideas from angle confirmed
gg TC stealing my content /s
Sue them
suing tc for mantis gods
DMCA them like .... Someone else did
oof
Not true actually they DMCA us
Kein actually made the first infinite grimm
Lol imagine trying to do it to TC
for version 1.1
eh godmaster is a pretty rad name anyway
I voted for Godstrider
But Strider is a capcom thing and they might go mental about it. Copyright is a weird thing
yeah i get frame drops with every set of spikes going up
on the old one
i think
it's the one you made for the race
yo so if you get into a dream fight can you even leave
quit out
does falling out work
no
wow
Lifeblood patch probably helps a bit too. Man I played an old patch recently. Its so bad compared
i was gonna add transitions and make new doors but like effort
yeah it's a noticeable difference
old NGG has two instances of the crowd, heart, etc.
Well, I just took number 3 for ngg, but I'm gonna try for better a few times to see if I can go past 1.4k
also every frame it did about 30 string compares
lifeblood and godmaster drop way more inputs than 1.1.1.8 ever has for me
and generated ~60 random numbers
mine generates 30 random numbers ever 5 seconds and does 0 string compares
i haven't had the game eat inputs in the new patches
but it does happen sometimes on 1221
does anyone have my wk pic
haha cdash
@vapid cape watch my vid
yeah there we go
I found 2 spots to heal
that's on 1221
Is one of them under the double-bat?
Quick focus needed tho


