#archived-modding-development

1 messages · Page 83 of 1

solemn rivet
#

gave it a few tries, and noped outta there

hollow pier
#

ax2u hates himself he could try it

copper nacelle
pearl sentinel
fair rampart
#

Does the KDT boss rush mod still work?

#

Seemed to glitch in my game

copper nacelle
#

no

scenic slate
#

I wanna play boss rush but im too lazy to push my game back an update cause im too lazy ;w;

copper nacelle
#

ree

#

you can still kinda play

#

just get debug

#

and noclip yourself out of the ground

solemn rivet
#

^

buoyant obsidian
#

...what is this?

copper nacelle
#

api

buoyant obsidian
#

reeeeeeee

copper nacelle
#

legit just copy pasted all the code

buoyant obsidian
#

when summer rolls around if I have time I'll remake it

copper nacelle
#

and changed a bunch of stuff to reflection

hollow pier
#

make shitmodst 2 instead

copper nacelle
#

the only things not working in there are muzznik & lost kin w/ 753 geo

solemn rivet
#

tbh all I cared about that vid was

copper nacelle
#

and sprites ofc

solemn rivet
#

baklava, baklava booptis

buoyant obsidian
#

wowzers

copper nacelle
#

when i tried to get muzznik to work going into the scene made it so i couldn't move

#

¯_(ツ)_/¯

solemn rivet
#

also, nice 56!

#

naisu

copper nacelle
#

thanks

buoyant obsidian
#

you'll have to teach me the API magic at some point

copper nacelle
#

it's like 99% monomod new hook stuff

#

literally just

solemn rivet
#

oh, you're using that

copper nacelle
#

On.HeroController.Attack += Attack;

hollow pier
#

monomon haha

copper nacelle
#

and a copy paste of attack

#

with a bunch of shit changed to reflection and such

solemn rivet
#

that's cheating

copper nacelle
#

tbh I don't think you could do this w/out the hook stuff

#

also hooks can just be loaded as a normal assembly

#

so you just throw Testing.dll and the hooks dll into Mods and it works

solemn rivet
#

that's very neat

copper nacelle
#

oh yeah that also has menu drop force enabled because fuck lifeblood menu drop

summer marlin
#

@rain cedar I dont mind either way, the stuff youve already done is amazing, but are you planning on working on the ultrawide fix more? or are you interested in other things at this time

copper nacelle
#

if you were to add replaced sprites, it would just be missing muzznik and kin i think

solemn rivet
#

does the API have a nice way to handle asset replacements?

copper nacelle
#

i think you can modify some fsm action

rain cedar
#

I'll improve it more later, but probably the next thing I'll do for modding this is remake my randomizer for lifeblood update

copper nacelle
#

but not sure

solemn rivet
#

are assets loaded via fsm?

#

actual ree

summer marlin
#

oh you did the randomizer

copper nacelle
#

i remember sean saying to change audio

summer marlin
#

no thats way morei mportent then the ultrawide fix

#

def do that

copper nacelle
#

you could change AudioPlayOneShot or something

rain cedar
#

Yeah, that and AudioPlayOneShotSingle handle audio mostly

solemn rivet
#

hmm

copper nacelle
#

the testing.zip file has the mod w/ the source and stuff

#

if anyone wants to look at it

pearl sentinel
copper nacelle
#

ty

pearl sentinel
#

boop mod changes all of the nail slash sounds, the nail art sounds, and the dream nail sound

#

i made a bunch of helpers in mod common for dealing with FSM actions. i'm still adding onto and improving those helpers too every time I do more fsm rewrite stuff

#

basically you call "GetDataFromAction" and have the return type be a struct with fields with names of the values you want to pull out of the action, example output:


        public struct SpawnRandomObjectsV2Data
        {
            public GameObject gameObject;
            public GameObject spawnPoint;
            public Vector3? position;
            public int? spawnMin;
            public int? spawnMax;
            public float? speedMin;
            public float? speedMax;
            public float? angleMin;
            public float? angleMax;
            public float? originVariationX;
            public float? originVariationY;
}
#

then it uses reflection to check for the names of all those variables in an FSM Action and fills in the struct for you

copper nacelle
#

wtf amazing

#

why is it int?

pearl sentinel
#

because the FSMActions tend to have those weird reference types like this

#

FSMInt

#

so it could be null

#

in which case then it'll can set the value to null if needed

copper nacelle
#

neat

pearl sentinel
#

but yeah, using that struct I just pulled out the FSMAction code and made it use the struct

#

so doing a process like that you can basically port an FSM to code fairly easily

solemn rivet
#

so it's basically what we were talking about that other day?

#

about making a script that somewhat creates the gamestatemachine from the fsm?

pearl sentinel
#

this GetData method is just something that lets you get more than one value from an action

#

which makes porting to code a bit more direct

solemn rivet
#

oh, gotcha

pearl sentinel
#

since you could like, make one struct for the particular action, and then one method to do w/e that action originally did

solemn rivet
#

oh, btw kerr

#

what's the default return value for OnReceiveDeathEventHandler?

#
private bool Instance_OnRecieveDeathEventHook(EnemyDeathEffects enemyDeathEffects, bool eventAlreadyRecieved, ref float? attackDirection, ref bool resetDeathEvent, ref bool spellBurn, ref bool isWatery)```
#

eventAlreadyReceived?

rain cedar
#

i before e except after c

solemn rivet
#

I hate that rule btw

rain cedar
#

Yeah it doesn't even work for most words

#

But it does for receive

solemn rivet
#

yup

pearl sentinel
#

oh, that's a typo

#

it should be void

#

i think

#

        private event OnRecieveDeathEventHandler _OnRecieveDeathEventHook;

        /// <summary>
        /// Called when an enemy recieves a death event. It looks like this event may be called multiple times on an enemy, so check "eventAlreadyRecieved" to see if the event has been fired more than once.
        /// </summary>
        /// <remarks>EnemyDeathEffects.RecieveDeathEvent</remarks>
        internal void OnRecieveDeathEvent( EnemyDeathEffects enemyDeathEffects, bool eventAlreadyRecieved, ref float? attackDirection, ref bool resetDeathEvent, ref bool spellBurn, ref bool isWatery )
        {
            Logger.LogFine( "[API] - OnRecieveDeathEvent Invoked" );

            if( _OnRecieveDeathEventHook == null ) return;

            Delegate[] invocationList = _OnRecieveDeathEventHook.GetInvocationList();
            foreach( Delegate toInvoke in invocationList )
            {
                try
                {
                    toInvoke.DynamicInvoke( enemyDeathEffects, eventAlreadyRecieved, attackDirection, resetDeathEvent, spellBurn, isWatery );
                }
                catch( Exception ex )
                {
                    Logger.LogError( "[API] - " + ex );
                }
            }
        }
#

yeah

#

should be void

#

same with OnRecord

#

whoops

rain cedar
#

Should fix the spelling of recieve too

#

Before the hook gets used too much

solemn rivet
#

^

pearl sentinel
#

it's in the main mod api now

#

if i have time tomorrow i could make a pull request

#

or someone with permissions on the modding api could just fix it rq

rain cedar
#

Oh wait

#

It's misspelled in the actual TC code

summer marlin
#

can you modify existing rooms in the game at this point?

rain cedar
#

Maybe we should leave it, then

#

Yeah Batby

summer marlin
#

is it difficult?

rain cedar
#

Somewhat, but not too terrible

#

The big problem is we don't really have a visual editor

#

Just have to place objects in code

summer marlin
#

Ah

#

someone should make that

#

i know thats alot easier to say

rain cedar
#

Yeah

#

The best way to do that would probably be to make the editor as a mod of the game so the rendering doesn't have to be remade

#

Just hide the player and pause everything always

summer marlin
#

in theory

#

would extending a room cause any issue?

#

with regards to rooms next to it

rain cedar
#

No, the rooms are all unique scenes

summer marlin
#

nice

#

i could extend/modify the few small rooms in the game so they look nice in 21:9

rain cedar
#

That seems like more effort than it's worth

summer marlin
#

I dont think theres many id have to fix.

#

i doubt theres more than 10 or so

rain cedar
#

Well, if you want to put in the effort

summer marlin
#

At some point i do

#

tbh

#

team cherry should just add native 21:9

rain cedar
#

They should

#

It is a very simple change to fix the camera

#

They've just gone out of their way to force it into 16:9 always

#

Probably because of things like the inventory screen looking janky

summer marlin
#

would your fix break if someone used 1440p ultrawide?

rain cedar
#

Is that still 21:9?

summer marlin
#

yes

#

just a higher res

rain cedar
#

Then no it's fine

#

As long as it is 21:9

#

Otherwise the camera locking won't work properly because I hard coded values instead of calculating off of screen size

#

Which really I should do, it shouldn't be that bad

pearl sentinel
#

hmm, oh yeah, the params spelling. when I make hooks I usually try to copy TC's params exactly

#

I opened the pull request to change those 'bool' return types to 'void'

#

The return values from those two handlers aren't used for anything in the meantime anyway

empty meadow
#

Has anyone here used monomod ?

#

Enter the Gungeon modding Devs use it

copper nacelle
#

modding api is monomod

floral furnace
#

hooks are basically stuff that calls a method whenever said hook is triggered right?

empty meadow
#

It's like modifying an existing method to call an another method https://en.m.wikipedia.org/wiki/Hooking @floral furnace

In computer programming, the term hooking covers a range of techniques used to alter or augment the behavior of an operating system, of applications, or of other software components by intercepting function calls or messages or events passed betw...

#

@copper nacelle is there like an example code or repo to get started on modding?

floral furnace
#

ahh ty, ill look into it

copper nacelle
#

some hooks don't replace anything

#

e.g scenechanged or whatever it was called

#

@empty meadow HollowKnight.Modding.Api on GitHub iirc

#

but a lot of the API hooks are used to override stuff

floral furnace
#

ye, was just planning on hooking heroupdatehook to my regenStamina method so id regain it per second

copper nacelle
#

isn't that per frame

floral furnace
#

oh yeah, that would basically give me super fast stamina

#

🤔

copper nacelle
#

use Time.timeDelta

#

iirc

floral furnace
#

but i can still use the same hook right

copper nacelle
#

yes

floral furnace
#

aight

copper nacelle
#

time delta gives time in seconds between loads

#

iirc

pearl sentinel
#

Learn how unity coroutines work and look into using those

#

For what you want (stamina regeneration) you shouldn't need any hooks really

floral furnace
#

wouldnt i need it for hooking dash and slash so i cna call my methods of reducing my stamina tho?

pearl sentinel
#

Possibly. I was speaking to regeneration

floral furnace
#

unless you mean regeneration in itself, then yeall ill look into coroutines

pearl sentinel
#

Both dash and slash are mod hooks that you could indeed use to set a variable and/or kick off a coroutine

#

However, nail arts and dream nail have zero in-game code to hook into

#

So you have a problem right there. Also, super dash has no code.

#

Basically, any action outside something standard is controlled by a PlaymakerFSM.

floral furnace
#

Never thought of those, but i wasnt planning on adding superdash and dreamnail cuz theyre not really invovled in combat that much, as for nail arts, while its unfortunate i cant tweak those, i am just startin C# still, so those limitations are bound to happen (until what, that i start getting more familiar with the language) so i think limiting it to dash and slash is ok at least for now

#

Plus im doing this thing more of a learning experience to C# and programming (AND modding other C# games like Rimworld or something)in general tbh

pearl sentinel
#

The best thing then would be to just find an api mod, download it, get it to build and run, then change one small thing at a time.

floral furnace
#

yeah that would make sense

pearl sentinel
#

Also, by looking at several mods you'll be able to piecemeal together most of what you want

#

For example, boop mod modifies the sounds of all the nail attacks and plays a custom (boop) sound on attacking

#

So just by looking at that mod you have half the setup for what you want to do with stamina on attack.

#

Then look at blackmoth which heavily modifies dashing

floral furnace
#

ye been reading HPBar and Bonfire, while i can understand the stuff in general, some other concepts are still a bit alien for me

#

and yeah i took your example mod as reference to the "do this on attack" logic

paper skiff
#

I don't know if this is the right place to ask this; not really a modding question.

I bought Hollow Knight on GOG, and they have yet to release the Lifeblood update for Linux... So I ported the Mac release to Linux. It actually works perfectly; the only thing is that achievements are broken. Some register automatically when loading a save, but others which were previously tied to the old save have to be triggered again by going to a location (the Hope achievement is the only one I lost which I was able to get back, and it was by visiting Stag Nest). I was testing the port with the unity dev console, and it gives some errors about online subsystems being packaged. I recalled seeing this topic on the forums:

https://www.gog.com/forum/hollow_knight/drm_free

Does anyone here know if Hollow Knight uses Steam api to validate achievements or something? I'm trying to see if there's any way to fix this issue before I post a script on the forums to port the game from the mac installer.

exotic venture
#

vot, GoG doesn't have a release for linux?

paper skiff
#

Nope

#

GoG Linux build is still on 1.2.2.1

exotic venture
#

that's an indication of hold the bloody phone since that's not supposed to be the case

#

think TC needs to still send em the build for linux then

#

since it's already out on steam iirc

summer marlin
#

prolly an oversight

paper skiff
#

I'm pretty sure TC has done everything they're supposed to, GOG officially said "the Linux update will come at a later date" on their lifeblood post

#

TC's lifeblood announcement said builds were going up

#

I think it's a matter of GOG being too lazy to repackage it

exotic venture
#

well they're gonna have to actually do it or people will just shift over to steam for it

paper skiff
exotic venture
#

yeah might just be best to, like, wait for a few days i suppose for the actual build to get released

vale crater
#

.-.

floral furnace
#

PlayerData.instance.nailDamage is the current nail damage right?

#

cuz for some reason damage overall is still the same

#

ie husk still takes hit, even if i coded it a way that everytime i swing my instance.nailDamage gets multiplied by 2

#

Debug is showing it as Naildmg 5 (Flat 2005345, x1.0) or something like that

copper nacelle
#

gotta broadcast the event if you're just changing it

#

@floral furnace PlayMakerFSM.BroadCastEvent("UPDATE NAIL DAMAGE");

#

do this after changing it

floral furnace
#

as well as the revert damage when get hit command?

#

cuz i got 2 methods, scaleDamageOnHit and resetDamageWhenTakingDamage along the lines

copper nacelle
#

is revert just changing it back

floral furnace
#

initialization() has int originalDamage = Player.instance.nailDamage,

which if i get hit, i set call the method
Player.instance.nailDamage = originalDamage

#

so yes, it just reverts it to the original damage

copper nacelle
#

whenever you set nail damage broadcast the event

#

so yea

floral furnace
#

oh wait what is PlayerMakerFSM referencing?

copper nacelle
#

type?

#

oh

#

Playmaker.dll

#

iirc

#

in game files managed folder

floral furnace
#

ok ok, again sorry if i ask too much i hope im not being annoying lmao

copper nacelle
#

no it's fine

#

lol

solemn rivet
#

TTacco - there's a new method, OnHitInstanceHook or smth that gets called whenever something tries to hit something else

#

With that, it's easier to set damages to anything

#

Just do hit.damageDealt = value;

floral furnace
#

what are the parameters? the one doing the attackin and the one receiving it?

#

might check it out in dnspy later

solemn rivet
#

There are two params. Fsm is the fsm of the object that's hitting, and hit is the hitinstance created by that object

#

If you add that hook and let VS autocomplete hit. you'll see all the different values you can set to an attack

copper nacelle
#

alt enter

#

enter

solemn rivet
#

Look at blackmoth SetDamages and bonfire

#

Should give you an idea of how those work

#

Better than changing pd.nailDamage imo

#

And you have way more control over it

floral furnace
#

alright ill check those out

#

"Fsm hitter" is the origin of the attack, and the "HitInstance hit" is the type of "attack" if im understanding this correctly? which could either be slash, fireball etc etc? (also kinda an idiot since you just explained that)

#

and object HitInstance has several different attributes? such as multiplier etc etc

#

yeah ill toy with these thanks again

solemn rivet
#

Not exactly

#

Every object that hits something has an fsm named "damages_eneny", "damages_hero" or smth like that

#

When those fsms do get called, the game creates a hitinstance which is basically a list of properties telling the game how the hit should be dealt (using the HealthManager component)

#

So this hook gives you both of these

#

If you swing, the fsmHitter would be "damagesEnemy" and would be attached to the nailSlash object, while the hit would be a list of all the relevant values the game needs to calculate how much damage the enemy will receive

#

If you do hitter.gameObject and hit.source, they should be equal

#

And that's the game object that's hitting

floral furnace
#

AHHH ok ok now i actually got it

#

so nailSlash is gonna be of course the slash object, and there would be other objects for stuff like the fireball right?

solemn rivet
#

Yup

#

In bonfire I deal with all slashes and spells

floral furnace
#

Oh yeah

solemn rivet
#

In blackmoth I deal with sharpshadow and superdash

#

Btw, you can find the sources for those mods on my github

#

So you don't have to decompile them

#

Dnspy can be somewhat weird when decompiling

floral furnace
#

wdym

solemn rivet
#

If you're checking their code, might be better to look at github rather than opening the dll in dnspy

floral furnace
#

yeah ill do that, again huge thanks, hopefully im not being a bother here, cuz i really want to get in modding but im kinda amateurish when it comes to it and understanding some functions and objects

#

(and the fact that hk doesnt really have any documentation that ive heard off, so knowing each objects etc etc can be confusing)

solemn rivet
#

Don't worry, I get you. Before I made the first blackmoth version, I had quite literally 0 coding experience

bronze temple
solemn rivet
#

I really need to take a look at that

#

Seems very useful

pearl sentinel
#

Oh @solemn rivet I think they might be moving to replace the damages_x fsms like healthmanager. One of the last few updates added a component for damaging enemies and did a bit of bug fixings to it. So I wouldn't be surprised to see it go in the g&g update

solemn rivet
#

that's absolutely amazing

solemn rivet
#

small fix to the mod. Waits for bars to completely drain before destroying them

#

I'll have to update it when the pull request gets accepted tho, cause it uses the EnemyDeathReceivedHook

pearl sentinel
#

You should be able to use the hook now

#

The book return value isn't used

#

Bool*

solemn rivet
#

yeah, I'm just returning anything atm

#

but when it gets patched to void, I'll have to remove the return line

pearl sentinel
#

Gotcha

pearl sentinel
pearl sentinel
#

Panda express, more like exception

wild wharf
#

Uh-huh.
Hi, guys.. can someone help me out a bit with Seanpr modding API thing?
I'm trying to build an example, I refferenced Modding namespace, but can't seem to find GlobalEnums anywhere..

solemn rivet
#

are you using VS?

copper nacelle
#

^

rain cedar
#

GlobalEnums is part of the TC code, it's not in modding

wild wharf
#

Yeah, vs ofc.
Hm.

copper nacelle
#

you have a reference to assembly-csharp?

solemn rivet
#

the API one

wild wharf
#

Yeah.

solemn rivet
#

if so, like sean said, that should be it

copper nacelle
#

yea

wild wharf
#

Hmm... Strange.

solemn rivet
#

tell us more about your issue?

wild wharf
#

I'm trying to grasp more.
After I added the assembly-csharp - namescape modding got hooked, but the globalenum didnt

Uhh.. what is TC exactly?

copper nacelle
#

team cherry

wild wharf
#

Ah..

rain cedar
#

What's your code and the exact error?

wild wharf
#

That the globalenum namespace is not defined.
Well, not found.

copper nacelle
#

pic

wild wharf
#

Hoold on, I'm gonna try more stuff first. It for some reason still says assembly csharp is not refferenced v:

copper nacelle
wild wharf
#

I'm dum xP

I refferenced wrong .dll

Well, no, VS automatically refferenced the assembly csharp from Assembly-csharp/obj/debug
Not sure why, maybe I shouldn't have opened everything in one instance.

Anyway, thanks.

#

Uh, one more question though.
Is there any sort of documentation for class types and what hooks are available? In some form?

copper nacelle
#

Assembly-CSharp.xml

wild wharf
#

Ah. I see. Thanks xP

solemn rivet
#

56 about that "port" of lightbringer you made

#

do you have a mwe to how those "hook on-demand" thingies work?

copper nacelle
#

mwe?

hollow pier
#

man what ever

solemn rivet
#

minimal working example

copper nacelle
#

yea

#

lemme find it

hollow pier
#

close enough

copper nacelle
#
    public class TestMod : Mod
    {
        public override void Initialize()
        {
            On.HeroController.CanOpenInventory += Yes;
        }

        private bool Yes(On.HeroController.orig_CanOpenInventory orig, HeroController self)
        {
            return true;
        }
    }
#

orig is a delegate for the original function

#

so you can call it after doing any changes or before doing any changes

#

and self is just the object you hook on

#

so you could have a GameManager self and stuff too

#

can just use HeroController.instance instead of self in this case tho

solemn rivet
#

do you literally do nothing but reference those dlls for that to work?

copper nacelle
#

you just need to ref the hooks dll

#

and throw it in Mods

solemn rivet
#

that's

#

lit

copper nacelle
#

should i try and submit a pr for it to be part of the api

solemn rivet
#

don't ask me imo

#

kerr and wyza

copper nacelle
#

alright

#

but yeah, it's amazing

solemn rivet
#

that almost sounds like magic tbf

copper nacelle
#

no need to make hooks when there are hooks for everything

#

I think you could even hook healthmanager

solemn rivet
#

maybe not the component, but each method

#

that's what I plan to do

copper nacelle
#

yea

solemn rivet
#

not... Entirely

#

hitInstanceHook happens at the end of the method

copper nacelle
solemn rivet
#

kek

#

it's literally right before your Hit hook

copper nacelle
#

lol

solemn rivet
#

(and for some reason it's defaulted to repeat it 3 times /frame)

#

idk

#

don't ask me, it was like that when I found it

copper nacelle
solemn rivet
#

so orig is the original method?

copper nacelle
#

yeah

solemn rivet
#

how would you pass parameters to it?

#

just orig(whatever 1, whatever 2)?

copper nacelle
#

you just pass the params given to you

#

usually

#

but you can just pass params as normal

#

so for like

#

the OnEnemyHit one

solemn rivet
#

it takes 3 parameters

#

target, hitinstance and recursion level

copper nacelle
#

oof

#

mine was for the healthmanager hit func

solemn rivet
#

oh, nice

copper nacelle
#

so you can just do orig(targetGameObject, damageInstance, recursionDepth);

solemn rivet
#

so it gives you the parameters

copper nacelle
#

yeah

solemn rivet
#

that's very very good

copper nacelle
#

yea

#

you can also modify the params and pass modified stuff ofc

solemn rivet
#

ofc

#

or you can just override the orig entirely

copper nacelle
#

yeah

solemn rivet
#

well

#

only issue I can see happening with that is that we get no invoke list

#

so, if two mods override the same method... Would they clash?

#

as it is in the api, they are added to a list and run in order

copper nacelle
#

hmm

#

i could test rn

solemn rivet
#

but since this overrides the method by default...

#

we could still do that, I think

#

or maybe the dll does it for us?

copper nacelle
#

could ask 0x0ade

#

i'll test it rn

solemn rivet
#

if you get issues, I'll tag them

copper nacelle
#

ok made 2 mods

#

overriding add geo

#

one adds 200, one adds 300

solemn rivet
#

intensity intensifies

copper nacelle
#

got like 7 geo

#

and now have 1274

#

it only adds 200

solemn rivet
#

wouldn't it be better to have each one log a different thing?

copper nacelle
#

oof

#

yeah

solemn rivet
#

then you can be sure nothing is happening in a frame-by-frame basis

copper nacelle
#

actually just the same mod but built twice w/ different class names

solemn rivet
#

best mods

#

can you send me the dll again? I want to give it a few tests as well

copper nacelle
#

need to remake it because of the thing 0x0ade was saying tho

#

some bug with .NET that doesn't affect unity but still should remake

solemn rivet
#

thanks

copper nacelle
#

yw

#

ech

#

they both say init for 1

#

might just be because same solution

#

ok made a new solution, testing now

solemn rivet
#

I added a hook to AddGeo to EnemyHPBars and Blackmoth that simply logs the mod name

copper nacelle
#

both work

vagrant leaf
#

got over here kthx

solemn rivet
#

nice!

#

that's great then

copper nacelle
#

yeah

solemn rivet
copper nacelle
#

huh

#

i used these and it worked

#

maybe it's cause I called orig?

solemn rivet
copper nacelle
#

and the same thing on blackmoth, right?

solemn rivet
#

am I not seeing something?

copper nacelle
#

I called orig() in both of mine

#

maybe that's it?

#

testing again w/out orig rn

#

yeah it was calling orig which made it work

solemn rivet
#

makes sense tho

#

when you call orig, the hook is triggered again

#

which calls the next one

#

it doesn't make perfect sense

#

because, by that logic, the same method would be called indefinitely

#

so

copper nacelle
#

maybe orig also blocks the same method from calling itself

solemn rivet
#

@bronze temple help us?

copper nacelle
#

idk why it doesn't call indefinitely with two

#

unless it makes some kind of list

#

in which case it only working for 1 is kinda wtf

solemn rivet
#

yeah...

#

but having to call the original method at the end kinda ruins the whole override purpose...

copper nacelle
#

yeah

vagrant leaf
#

wow MonoHookOrderTest is my favorite hk mod

solemn rivet
#

holy shit

copper nacelle
#

?

solemn rivet
#

this.inventoryFSM = this.gameCams.gameObject.transform.Find("HudCamera").gameObject.transform.Find("Inventory").gameObject.GetComponent<PlayMakerFSM>();

#

this in GameManager.SetupGameRefs

#

eww

copper nacelle
#

wtf

#

that's

#

why

solemn rivet
#

now I can make bonfire work again

#

"yay"

fiery sequoia
#

you can noclip into that area

#

not that big but may i ask why does this happen

solemn rivet
#

Idk if I actually published this version, but current version of blackmoth lets you noclip any and everywhere

#

That's what Shadow Cloak does

#

Open your inventory and read its description

fiery sequoia
#

hm

solemn rivet
#

Also send screenshot plz

fiery sequoia
solemn rivet
#

Just dash through the same wall to get back out

#

Nbd

fiery sequoia
#

would be nice if there was some way to disable it

solemn rivet
#

This is an experimental feature btw

#

Might be moved to a charm, or removed entirely

#

Why disable it?

fiery sequoia
#

i keep getting stuck in walls and i dont see it being of any value

solemn rivet
#

I like going oob tbh

young walrus
#

So dash out?

solemn rivet
#

It's very fun to sneak up on enemies

fiery sequoia
#

yoiu have to dash out of the same wall though?

solemn rivet
#

Not necessarily

#

Any wall

fiery sequoia
#

alright its growing on me but even then id still personally prefer it to be added to a charm

solemn rivet
#

I mean, if people don't like it, I can remove it... But I think it's quite nice, not only mechanically but thematically as well

#

In vanilla, shadow cloak lets you dash through what you couldn't before

#

The same happens here

fiery sequoia
#

i can see the reasoning for that

#

but id still like it added to a charm
still up to you tho
also can i ask

solemn rivet
#

Blackmoth ascend

fiery sequoia
#

why does the omnidirectional dash down not use the one from uh

#

the dashmaster charmn i think it is

solemn rivet
#

For consistency

#

There's no up/diagonal dash animation

#

So it'd be weird if only downdash had an animation

#

That was actually an issue in older versions

#

Before the 8 dir dash, you had only updash

#

But it had no animation, while downdash still had the vanilla animation

fiery sequoia
#

ah alright

solemn rivet
#

Until we can easily add animations into the game and I get someone to draw me some directional dashes, no deal

#

Btw, how did you like Dashmaster?

fiery sequoia
#

really liked it

solemn rivet
#

That's good to hear

fiery sequoia
#

made mobility so much nicer

#

quick dash being infinite is nutworthy

solemn rivet
#

I had a really tough time deciding what to do with dashmaster

#

Quickdash is real good yeah

#

Hint - grab grubberfly

fiery sequoia
#

i think speedmaster (sprintmaster + dashmaster) maybe should affect length of dashes?
also fuck id have to get all the grubs GWvertiPeepoSadMan

solemn rivet
#

Not gonna spoil it

#

But people seem to enjoy it a lot

#

Specially now that we have 8 dir dashes

#

About speedmaster, that's a nice idea

#

I might add that in future versions

copper nacelle
#

get grubberfly big dungo

fiery sequoia
#

ive been enjoying blackmoth as a mod so far
loved how the things affect the nail, liked the shade cloak pickup being slightly different (still not 100% on board with the going oob being not a charm)

solemn rivet
#

Heh that's still experimental tho

#

So your input is greatly appreciated

fiery sequoia
#

oops just glitched the game
went OOB under the elevator from CoT-Crossroads

#

lead to a black screen

solemn rivet
#

and it didn't respawn you?

#

it usually respawns you if you go too oob

solemn rivet
#

I'll change shade cloak tomorrow

#

I've got a better idea

pearl sentinel
#

woo. i did it

#

hornet 1 rewrite is done and it all works

#

there's one small bug with her needle's sprite being flipped the wrong way sometimes, but everything works from the intro cutscene, the battle, all the way to the outro/her escape and the cutscene

copper nacelle
pearl sentinel
#

i also started on hard mode hornet

#

she now throws her needle at you

#

actually, she uses your velocity to lead the throw

#

and it's fucking deadly

#

it's also faster

#

and hits for 2 damage

#

man this is fun, i hope i have more time to work on it soon

copper nacelle
#

can't wait to play it

pearl sentinel
#

it's so easy to mod too

open delta
#

Cave Story ♡

pearl sentinel
#

he's referring to my avatar

copper nacelle
#

o

pearl sentinel
#

but yeah, so far i've basically removed the cooldown on her jumping back evade dodge

#

increased her hp (800-1200 randomly to keep you on your toes)

#

made her backward dodge and other moves faster

#

going to have all the moves be about 2x faster

#

made her throw aim at you and randomly aim a bit ahead of you

#

going to add some more reactive moves to her too

summer marlin
#

Imo random hp is bad

pearl sentinel
#

like, i want her to jump when you attack with the spell

summer marlin
#

Imagine if she hooked your shade soul and redirected it

pearl sentinel
#

so, right now, her design is to not choose the throwing attack if it will hit a wall

#

i'm going to modify that so that she'll still do it, but the attack will grapple her to the wall

#

the hornet outro actually caused me to already write that grapple pull code in the Yank() function

#

so yeah, gonna be really fun

copper nacelle
flat forum
#

with 1.3.1.7 they fixed a glitch of Cloth not leaving Dirtmouth

#

I want a mod for that glitch in order to preserve Cloth f o r e v e r

open delta
#

Cloth leaves?

flat forum
#

She's supposed to leave

#

after visitng dirtmouth

#

I don't want Cloth to die TnT

young walrus
#

wow, don't even want the good ending to her quest

#

want her to die without a purpose in the wastes

flat forum
#

It wasn't on purpose

#

I fought the Traitor lord before managing to finish her quest

#

And now I want her to stay in Dirtmouth

flat forum
#

can someone add a line of code allowing Flukemarm to spawn not 2, but 5 little flying... things at a time

summer marlin
#

@rain cedar unsure if you want to be tagged for things like this, but thought id mention the overlay used when you get a new upgrade fills the entire screen

rain cedar
#

Alright

slender stump
#

modding

#

yeah

flat forum
#

yes?

floral furnace
#

uhh can you like, post source code stuff to see where im doing wrong here?

#
         //boolean doesnt do anything for now, but I will be using this so the increase 
         //will ONLY happen during slash damage
            bool attackIsSlash = hit.Source.name.Contains("lash"); 

        //Increase buildup damage by 2 everytime you successfully hit something
             buildUp += 2; 

       //Apply buildup damage to the attack
            hit.DamageDealt = buildUp; 

            PlayMakerFSM.BroadcastEvent("UPDATE NAIL DAMAGE - INCREASE");
            return hit;
        } 
#

sorry for the horrible formatting

#

so far ive manage to get the entire "everytime you hit something your damage increases, but when you your player damaged, the attack reverts back and the player receives extra damage on how much damage you stacked up" part of the mod

#

only weird part is, even after having a small buildup, ie like about 4 attacks, the damage ramps up really high

#

i think ive killed a husk guard in one hit (also could be a miscalculation at my part)

#

also anyway to do those in game debug logs i keep seeing you guys have? like theres a console that announces stuff like "ENEMY HIT" or something

open delta
#

Like hit indicator?

floral furnace
#

well not exclusively but yeah, i need it also for stuff like "X method has been activated" log that i can put inbetween my method so that i know the game passed through it

#

so basically, like putting random "System.out.println("Did my code pass through here")" debugging in Java lol

bronze temple
#

@solemn rivet @copper nacelle sorry for the late reply, timezones are a thing 😅

#

You also need to ship MonoMod.RuntimeDetour.dll and MonoMod.Utils.dll, as the HookGen-erated .dll uses those

#

You don't need to ship anything else from MonoMod though, as it's separate from the core patcher

#

Regarding multiple hooks on the same method:

#

If both ModA and ModB hook DoSomething,

  • the hook order is important
  • the last hook, in this case ModB, is the "detour target" (detouring is the process going on behind the scene, hence MonoMod.RuntimeDetour)
  • when ModB calls orig, it actually calls the previous hook, thus ModA
  • when ModA calls orig, it doesn't have a previous hook and calls the original method*
  • when ModA -=s their hook, ModB's "orig" now calls the original method*
#

*: the orig delegate is actually a "trampoline" (proper term), which gets updated behind the scenes

solemn rivet
#

TTacco, the hitinstance is called something between 3 and 8 times per frame, that's why it's ramping up so quickly

#

Also, the reason it's also working for enemies is because your code is increasing damage for literally everything. You should filter it to only increase damage done by slash

#

@bronze temple so there's no way to override or change a method using this?

#

@floral furnace ^

floral furnace
#

ahh yeah i knew the "anything you do is ramping your damage" up part, hence i prepared a boolean to check if its slash, what i didnt know is the frame check

#

didnt know it actually called it 3-8 times

#

also the "get hit for more damage" part is intentional, i have another method of "whenigetdamaged" that i increase the damage i take for every 40+ damage i stack up, to basically make it a "Kill fast, Die fast" type of mod

solemn rivet
#

For the debug console, you can edit your modding api settings (it's in your saves folder) and turn it on

#

So then you can just add Log("whatever");

floral furnace
#

alright thanks

bronze temple
#

@solemn rivet what do you mean with "override or change a method"?

#

you pretty much "override" the method that way (just not in the "virtual method override" sense)

#

and how exactly do you want to "change" the method?

solemn rivet
#

Well, my thinking is that since you still have to call the orig at the end to make the hook work across multiple mods, then you're virtually not overriding the method at all, you're simply "doing stuff before the method" - or at best "changing the method's parameters before calling it "

bronze temple
#

you don't need to call the orig at the end to make it work across multiple mods

#

you decide whenever, if at all, you want to call the orig method

#

from a hook standpoint, you shouldn't care about mod compatibility 😅

#

if a mod wants to forcibly return whatever it wants, not giving a crap about the "original" value, be it the actual original value or just the previous one,

#

it doesn't need to call the orig method

#

on the other hand,

#

if you depend on the result of the original method, or the result of the previous mod, you need to call orig

#

and that doesn't need to happen at the end of the method

#

again, you can hide it in an if-branch, 10 layers down

#

and run it 10 times in a for loop

solemn rivet
#

Yeah the "end" was more of a "in the end, you still have to call the orig"

#

But I think I getcha

#

Still, what about the test that 56 and I ran? We both setup 2 different mods to hook onto the same method, but he called orig in his mods and I didn't. The result was that one of my mods worked, and the other didn't, while both of his worked together

bronze temple
#

That's to be expected, and it's a sad side effect. I'm wondering on how to improve it, though

#

after all, you're still responsible to call orig - and by avoiding it, your mod forcibly overrides everything else

solemn rivet
#

That's what I thought...

bronze temple
#

Just to give a quick example from Celeste / Everest, because I have that open right now 😅

solemn rivet
#

Btw, thanks for your time 0x0ade

bronze temple
#

No problem, I love to help :)

#

This hook changes the player's hair color

#

you see that I call orig very early on and return it later

#

actually,

#

let me simplify this

#
            On.Celeste.PlayerHair.GetHairColor += (orig, self, index) => {
                if (!(self is Ghost))
                    return orig(self, index);
                return CustomGhostColor;
            };
#

in this case, compatibility with other mods is still given

solemn rivet
#

Yeah

#

So in cases where we want to completely override a method, it might not be the best idea to use this

#

But, still, this is very very powerful!

#

I like it very much

bronze temple
#

yeah, in cases where two mods want to completely override a method, there's going to be a conflict 😅

#

do you have an idea on how we could solve this the best? I'm open for ideas

solemn rivet
#

In the api, the hook subscriptions are pooled, and invoked one at a time, regardless of what they do

#

But you can't feasibly do that for every possible method in the assembly

solemn rivet
#

now that I think of it, even that won't "work" with overrides

solemn rivet
river tiger
#

Behaviour meaning?

#

The annoying vinilla bug is gone?

last patrol
#

is the 1.2 bonfire version compatible with the latest update, or should wait for it to be updated?

river tiger
#

It's compatible

#

Once you're running the latest API

#

@last patrol

last patrol
#

alright thanks

solemn rivet
#

69 - I didn't fix the vanilla bug (yet)

#

I just changed what having the shadow cloak does

river tiger
#

What did you change?

solemn rivet
#

I don't want to spoil it

#

if you want, install the mod and check the shade cloak description

river tiger
#

Ehhh...

#

Okay.

#

I'll give it a whirl.

river tiger
#

@solemn rivet What does the charm notch mod do ?

solemn rivet
#

removes the need to buy notches from salubra once you meet the requirements

fiery sequoia
#

hm

#

ill check it out once im home

#

accidentally cleared my blackmoth save though, hopefully the backup will work

river tiger
#

@solemn rivet Shit! I accidentally updated my game

#

Now the mods aren't working

#

Sigh

solemn rivet
#

just reinstall the API

#

also

river tiger
#

Ah

#

Thanks, Radow.

#

My screen turned black for some reason

#

:/

solemn rivet
#

which version are you using? Which API did you install?

river tiger
#

The API from ModInstaller

#

I'm using the latest version of the game

#

Public beta

solemn rivet
#

public beta?

river tiger
#

Yup.

solemn rivet
#

modinstaller version of the api was not up-to-date

#

did you update the installer?

river tiger
#

Update the installer?

#

No...

#

I didn't know I had to update it.

solemn rivet
#

I have to update the api link, since it changes

river tiger
#

Could you pin that?

solemn rivet
#

it's pinned tho

river tiger
#

I downloaded the ModInstaller from the pin tho

solemn rivet
#

I'll recode the installer to get the links directly from the xml

#

but for now I have to update it manually

river tiger
#

Ah.

#

I feel like a test dummy.

#

Ah. It's working now.

#

Thanks.

#

The dashing in blockmoth feels somewhat more fluid..

#

@solemn rivet Is this what you meant when you said you changed the behaviour?

solemn rivet
#

no

river tiger
#

.... no?

solemn rivet
#

I only changed the shadow cloak

#

not the whole dashing mechanic

#

once again, hornetping

river tiger
#

@solemn rivet You can't dash through certain enemies?

solemn rivet
#

which version number are you on?

#

game

river tiger
#

1.3.17

#

Public Beta's latest version.

solemn rivet
#

then TC screwed something up

river tiger
#

I tried dashing through that big guy on the very far right

solemn rivet
#

because that was an issue with the first few lifeblood patches, but was fixed later on

river tiger
#

When you now start the game.

#

I can't dash through him

solemn rivet
#

yeah, TC made some enemies unable to be dashed through, for some reason

#

and then fixed with a later patch

#

but it seems they reverted back to it

river tiger
#

;v;

solemn rivet
#

I think the stable release was working fine

river tiger
#

aaaaaaaaa

solemn rivet
#

try 1.3.1.5

river tiger
#

How do I degrade game versions?

solemn rivet
#

there's actually no reason to keep on playing the public beta now that lifeblood is actually released

river tiger
#

Btw... some enemies just "stand" there when I attack them with my nail.

solemn rivet
#

just opt out of beta

river tiger
#

Like... they'd run in place and not move.

solemn rivet
#

blackmoth doesn't even touch enemy behaviour

#

prolly a beta issue

#

why are you even on beta

river tiger
#

because updates are good...

solemn rivet
#

yeah, clearly

river tiger
#

Lol

#

Okay.

#

So if I opt out of beta my game will return to standard Lifeblood?

#

1.3.15?

solemn rivet
#

yup

#

1.3.1.5

river tiger
#

Gotcha.

solemn rivet
#

seriously tho

river tiger
#

?

solemn rivet
#

there's 0 reason to play on beta rn

river tiger
#

Well... I thought the updates were performance wise...

solemn rivet
#

if they were, we'd see a bigger change

#

like from TGT to lifeblood

#

went from 1.2.2.1 to 1.3.1.1

river tiger
#

lol

#

True

solemn rivet
#

otherwise it's just small tweaks and unstable changes, probably

river tiger
#

Ok.

#

I opt out of beta

#

Hope that fixes things.

#

Do I have to reinstall API and etc?

#

Or is that just it?...

solemn rivet
#

yeah, reinstall

#

also, I think it works on 1.3.1.5

#

people haven't complained about that issue since... 1.3.1.2 or 1.3.1.3

river tiger
#

It'd be nice if we could get public-beta changelogs

#

I have no idea what they change in public beta..

#

So I just had it opted.

solemn rivet
#

so if it wasn't working on 1.3.1.5 I'm pretty sure someone would have complained by now

river tiger
#

Ah.

solemn rivet
#

like, I'm pretty sure Mooselim is playing on 1.3.1.5

river tiger
#

Steam also doesn't tell you the version of the game you're running

young walrus
solemn rivet
#

and they haven't said anything about un-dashable enemies

river tiger
#

Sigh

#

I swear.

young walrus
#

thinkgrub patch notes

river tiger
#

Didn't even know that existed @young walrus

solemn rivet
#

hey mick

#

see that?

young walrus
#

it's linked to HK announcements here

solemn rivet
#

the demon of hornetping

young walrus
#

"minor bug fixes and tweaks"

#

cryptic

mellow oyster
#

Bug fixes in Pale King style?

#

As, abandon them in the Abyss?

fiery sequoia
#

bro 69

#

you dont have to tag people every other sentence

river tiger
#

Sorry man

#

Force of habbit ig

copper nacelle
river tiger
river tiger
#

I think it's because I haven't erased this save file, but I still can't dash through this guy.

solemn rivet
#

Moose, did you also have that issue?

river tiger
#

It's a shame that vanilla bug ruins this mod..

solemn rivet
#

the game is filled with vanilla bugs

#

pun very much intended

river tiger
#

lol

exotic venture
#

sharp shadow cutting out at random

#

major salt was, and still is, had

river tiger
#

Yeah, happened to me like 3 times in the span of 30mins

#

:/

exotic venture
#

being stuck with a 1 dmg nail is p miserable

#

not gonna lie

river tiger
#

^

solemn rivet
#

git gud

exotic venture
#

there's git gud and pure masochism

flat forum
#

then

exotic venture
#

especially at watcher knights

flat forum
#

pure masochism

#

to quote Shakespeare on that- "n00b"

#

(Shakespeare may or may not have said that)

solemn rivet
#

he did

#

been there seen that

#

but, yeah

#

like I said, I'm quite busy irl now

#

but as soon as I'm done with my current obligations, I'm gonna devote my time to doing what Kerr did to hornet

#

rewrite sharp shadow's fsm into code

exotic venture
#

don't forget to send TC your hard work if you can btw

solemn rivet
#

yeah

#

only if I get 15% of all game sales

river tiger
#

Mys you ever got a bug in BM where you'd get hit and ghost just goes flying and you lost all control of him?

flat forum
#

15% why not 150%?

#

they sell a game for 15 bucks nd you get 20

solemn rivet
#

dat math tho

#

150% of 15 is 22.50

flat forum
#

close enuff

solemn rivet
#

also, 69, what do you mean by ghost?

exotic venture
#

main character

#

no, haven't had that yet

#

well... not until some very specific cases

#

also i now want to see the amazing spinning crystal dash gif again because that's what this conversation reminds me of

#

that was probably the best thing i have ever seen and that includes heavy broken

livid estuary
#

wtf

#

how

river tiger
#

Jfc

exotic venture
#

that's gradow messing around with dashmaster, wanting to use cdash midair

river tiger
#

You killed NKG right?

solemn rivet
#

wut

river tiger
#

1 nail damage, annoying flying enemies that evade when you're too close to them and sharp shadow not working at random is seriously giving me suicidal tendencies.

exotic venture
#

welcome to the blackmoth experience

river tiger
#

Well...

waxen widget
#

how do i install a mod?

flat forum
#

with or without the API?

#

either way there should be instructions on the pinned messages thing

exotic venture
#

check the pins

#

there is a nice how to step by step guide

#

by yours truly.

flat forum
#

@exotic venture you did the OP Heavy Blow thing, right?

exotic venture
#

i didn't code it, that was Kerr

#

but i am the main guy who tested it

young walrus
exotic venture
#

and laughed my ass off at it

flat forum
#

I saw the video on a channel called Mystery

exotic venture
#

that's me

flat forum
#

but was too busy laughing to pay attention to any info on who coded it

#

didn't know the walls could be knocked back

exotic venture
#

that uh

#

wasn't intended

#

it's fixed on the current revision of heavy broken

flat forum
#

O R W A S I T

exotic venture
#

in the heavy blow lore that was only like 25% of its true power

#

it had to be nerfed down to be visible

flat forum
#

I want a shitmod that makes all charms stupid OP

#

Quickslash will have almost no cooldown

exotic venture
#

if it were anything else the moment i parried someone they would ascend

#

or get smashed into the howling cliffs

flat forum
#

Longnail will reach From one side of the Colosseum to the other

#

can such a thing be made? Is there the code for the charms somewhere, I can't seem to get the code dumper to work

exotic venture
#

dunno ask kerr tbh

#

also if you increase range you also go up

#

so basically it's a bigger slash

flat forum
#

@pearl sentinel is the code for each charm present somewhere? I can't get the dumper to work

pearl sentinel
#

Eh? Charms don't really have code in one specific place. At least half don't even have code

flat forum
#

Looking for Quickslash

#

And Longnail

pearl sentinel
#

Probably doesn't have code for quickslash

#

Idk

flat forum
#

(Also, does the game have code for ANYTHING? No enemy AI, no charm code...)

pearl sentinel
#

Look at the game and figure it out, I haven't ever looked into those so I can't really help you there

flat forum
#

How does it even funstion

pearl sentinel
#

Playmaker

flat forum
#

do you have a dump at least? I can't get mine to work

pearl sentinel
#

Nope

solemn rivet
#

Folding: take a look at the Attack and DoAttack (or smth similar) methods under HeroController for quickslash

#

for longnail, I think it's under the NailSlash class?

flat forum
#

Thanks @solemn rivet

exotic venture
solemn rivet
flat forum
#

Wha-?

#

Why TnT

#

Thanks @everyone

#

Wait that wctually tagged someone?

exotic venture
#

you tagged gradow :v

flat forum
#

But the everyine thing also tagged someone...

half sierra
#

@cobalt spade

solemn rivet
#

I don't think it did

#

you can tag everyone in the channel tho

#

not that you should

exotic venture
#

wot

#

no you can't

#

you can mention all modders though

#

don't do that

#

but you could

solemn rivet
#

I thought you could

#

@ Member, or something

#

Or @ Online

#

Maybe you need privileges tho

fiery sequoia
#

@solemn rivet what exactly was changed with the uh

#

shadow cloak ?

#

it does more damage and no OOB that’s right?

#

if that’s it I’m loving it

#

just want to make sure there’s nothing I’m missing

solemn rivet
#

yup

#

I basically switched it up with the sharp shadow charm effect

fiery sequoia
#

sharp shadow now is OOB?

#

HM

#

it might be a little overpowered

#

1.5x maybe would be better?

#

similar to uh

#

unbreakable strength

solemn rivet
#

Sharp shadow always was 2x

#

And it's only 1 notch so people always kept it on

#

That's why I figured it would hurt to make the 2x damage static

fiery sequoia
#

its 2 notches

solemn rivet
#

same difference

fiery sequoia
#

lol

hexed swan
#

yo that's woke

fiery sequoia
#

just got hit and started flying

#

couldnt control or input commands

#

i got hit and it reset

wide crown
#

lol

open delta
#

The punch was so strong that it sent you flying.

pearl sentinel
#

Hmm. So I realized today that my last release of enemy randomizer has my invincible testing hack turned on in it... whoops... but no one has said anything. So either everyone is doing no hit runs or no one is playing the mod

solemn rivet
#

kek

#

what is Charming mod btw

#

also, yay, my installer now gets the dl links directly from the xml

#

so I don't need to update it manually

rain cedar
#

It's the heavy blow mod

solemn rivet
#

oh right

#

ofc it is

pearl sentinel
#

I have a game design doc I wrote up a while ago with plans to enhance al the charms. So that's what that mod is going to be

#

For now it's just the spot o threw the heavy blow mod

rain cedar
#

All of them sounds pretty ambitious

pearl sentinel
#

Yeah, it was enough that I filled a few pages one night, but we'll see what I actually end up having time to do.

copper nacelle
#

do you think people would play a boss buff mod

rain cedar
#

There's already two of those and people play them

copper nacelle
#

cool

#

just gotta buff everything else

#

except hornet because kerr

pearl sentinel
#

Lol

#

I did get a bit of time to code her grapple throw today. Almost got it working

copper nacelle
#

nice

pearl sentinel
#

So come on, what's one charm you're curious about how I'd change it

copper nacelle
#

all of them

#

uhh

#

steady body

pearl sentinel
#

Hold on, lemee find what I wrote... it's 4 pages uh

solemn rivet
#

can I edit the XML? EnemyHPBar isn't in it

pearl sentinel
#

Ok here: small enemies do not cause you to recoil when hit (think buzzers and wings molds) so you can effectively jump through them. In addition, crystal dash does more damage and knocks back enemies like heavy blow mod does.

#

Gradow: of course

solemn rivet
#

ok!

copper nacelle
#

that's neat

rain cedar
#

What about a charm that's already really good, like shaman stone?

copper nacelle
#

^

#

also soul eater

solemn rivet
#

what about glowing womb

copper nacelle
#

weaversong

rain cedar
#

My favorite thing about weaversong is they buffed it so much they felt the need to nerf it

pearl sentinel
#

Shaman stone: I want to add an additional effect to all spells

copper nacelle
#

3 damage and soul

#

extreme buff

rain cedar
#

And new interactions

#

Too OP, had to remove a weaverling

pearl sentinel
#

Soul eater: change the effects of spells (being brief bc mobile typing sucks)

rain cedar
#

But that's what you said for shaman stone

pearl sentinel
#

No shaman is add

#

Like, leave what's there and add onto it

#

Eater would change like fluke does

rain cedar
#

Cool

pearl sentinel
#

Glowing womb would "convert soul into enemies you have slain to make their souls serve you"

#

Aka soul zombie minions

#

Basically just have orange tinted versions of them then use some basic ai like weaverlings

solemn rivet
#

yeah, that's what I'd have guessed

#

inb4 an army of primals fights on your side

pearl sentinel
#

The one I'm probably gonna try next is my longnail mod

#

I wanna make it allow reflecting projectiles

solemn rivet
#

why longnail tho

pearl sentinel
#

It just fit with how all the other charms were being designed

#

Mark of pride would be for parrying attacks

solemn rivet
#

with riposte?

pearl sentinel
#

So longnail fit for ranged

#

Yeah

solemn rivet
#

hnnnng

pearl sentinel
#

Basically I picked the smaller of the two for what I thought would be the more generally op (reflection of projectiles)

#

But partying would obviously be better once you got good