#archived-modding-development

1 messages · Page 503 of 1

vocal spire
#

?

warm mirage
#

I found a collision bug just above the hive (and sorry I'm using google translate)

vocal spire
#

ok

#

I don't think this is the right place

warm mirage
#

sorry i didn't know how to report it to the devlopper and i thought there might be one in this channel

vocal spire
copper nacelle
#

need to ref the mscorlib in the vanilla folder

#

What'd you change btw

vocal spire
jolly oriole
jolly oriole
#

failed to load pog

dark wigeon
#

I was already talking to the guy running it

copper nacelle
#

is the custom json.net just the dynamic method meme

jolly oriole
#
[ERROR]:[API] - Error: System.NullReferenceException
[ERROR]:[API] -   at (wrapper managed-to-native) UnityEngine.Object.DontDestroyOnLoad(UnityEngine.Object)
vocal spire
#

tot spoilers

dark wigeon
#

anyway the real issue is hkworldedit

#

unity editor apparently can't read packed atlases or something

vocal spire
#

F

dark wigeon
#

and crashes if you select tk2d sprites

copper nacelle
#

the monomod thing seems like it'd be fucked

dark wigeon
#

everything else worked seamlessly though lol

vocal spire
#

are we switching to bepinex?

jolly oriole
#

i also know why tot crashes, 2017.4.10 assetbundle

vocal spire
#

lol

#

modding api working sort of well pog

dark wigeon
#

like we already have 2020.2 now running all my tools, but that's because I read fields by string, not by actual fields

#

utinyripper is going to be much more difficult since everything is manually named

#

not very easy to upgrade like assetstools' are

vocal spire
#

rewriting the entire utiny ripper time?

jolly oriole
#

and the modding api is also currently only sort of working, because i don't know if/what other methods have the 0 rva

dark wigeon
#

well you wouldn't rewrite everything

#

at most you would entirely replace the class reading and leave everything else as is

jolly oriole
#

i'll take this as working

copper nacelle
#

you just patched the method in dnspy yeah?

#

did the dnail thing get fixed

jolly oriole
#

i changed nothing in dnspy, the charmicon thing i made in the api, is pushed on the repo

#

but i can still dnail midair

#

just tested

#

gives me a lengthy error message

#

another 0 rva thing

copper nacelle
#

Suffering

#

I'll just ask jade

#

Patching in the methods which disintegrate doesn't seem like the move

jolly oriole
#

true

#

even though i have no idea who jade is, but true

copper nacelle
#

Oh

#

It doesn't do that

#

It kills the method

#

Violently

#

That's why my game doesn't boot

jolly oriole
#

damn

copper nacelle
#

Yeah some of the branches go to null

#

I'll take a closer look whenever I finish my homework

vocal spire
#

how did that happen

native pelican
#

SlashHitHook in the modding api tells you what your slash is colliding with. Since c-dash can destroy grass, and so can spells, I want to trigger whenever any kind of hit happens. I'm trying tro figure out how to get the target from HitInstanceHook, but can't.

#

Is that possible?

leaden hedge
#

yes

#

56 should still have the code somewhere for fixing cdash

native pelican
#

What's 56? (I am very new to modding, sorry if this is an obvious question)

unborn flicker
#

You can also hook Grass.Hit and related methods specific to grass components

native pelican
unborn flicker
#

On.Grass.Hit, On.GrassCut.OnTriggerEnter2D, possibly a few others depending on how consistent the game is.

#

The On namespace contains hooks for almost every method in the assembly, public or private

native pelican
#

Holy wow, that is an extremely useful tip. Thank you so much.

#

Can't imagine some combination of these triggers will be insufficient, I'll smash at it now and see what I need to listen to to catch all the grass destruction 🙂

dark wigeon
#

Did you find the exact version they use for uitoolkit then?

vocal spire
native pelican
#

Thank you!

copper nacelle
#

did you try dmcaing them

dark wigeon
#

I was thinking you could just download different preview versions until you find a dll with a hash that matches or sometihng

#

yes you can check what shaders are in a game, but you can't really make the shader code readable

marble hollow
#

hey nesquack i have a question

dark wigeon
#

ok

marble hollow
#

so in supersprite extractor thing u made, whenever i try to edit the skins, the new skins just overlaps the og one. is it possible to get rid of the og skin layer instead of overlapping it?

dark wigeon
#

you can for a particular file, but there's shaders in lots of different files
I can just make a script real quick to dump all shader names

dark wigeon
marble hollow
dark wigeon
#

I think it's been the same way the whole time

#

like are you saying when you edit a sprite, it puts the old sprite under the new sprite?

marble hollow
#

yeah but it only happens when i edit a specific collection instead of all

dark wigeon
#

ok I'll check in a bit

#

oh that repo has all versions

#

is it something that someone manually does or is it automated

#

so when you install the package it just replaces stock UIElementsModule with the new one from the preview package?

#

I just built stock 2020.2.2f1 and the assemblies were almost identical

#

i.e. no preview package

#

right, I thought you said they did have a version of uitoolkit, my bad

#

so it should just work replacing all the dlls from a uitoolkit build but it isn't?

#

all asset data/bundles get scripts by dll filename so if the dll is there it shouldn't have problems

#

are those classes in the UIElementsModule dll for sure?

#

or whatever dll you copied

#

so you did or didn't copy them when this error happened

#

I know there's an internal list of dlls in the game files but I don't think it's usually ever used

dark wigeon
#

guess you'll have to build the shaders into a bundle

#

I scanned all shader assets and printed their names

#

in globalgamemanagers/.assets, level, resources.assets and sharedassets files

#

so just put those in a project and build the bundle, then load it and it should find the shaders

#

in globalgamemanagers
in globalgamemanagers.assets
in resources.assets
Text/Sprite
in level0
in sharedassets0.assets
Skybox/Procedural
Hidden/UIE-Runtime
Text/Mobile/Distance Field SSD
Hidden/UIE-AtlasBlit
Hidden/UIE-RuntimeWorld

#

looks like maybe bundles got updated

#

assetstudio says 5 assets failed to load

#

let me update and see if they're there

#

yeah it always does that

#

yes those shaders are in there

#

idk, you would have to go find how they're referenced

#

ok Shader.Find

#

it might be trying to read from a different name because the package isn't "loaded"

#

I have no idea

#

For Reference: Shader.Find API does not work with shaders loaded from AssetBundles.
don't know how outdated that is but if still true then oof

#

well you have two bad options
a. patch the game files to add your shader to the listing
b. change uitoolkit's code to read from a bundle instead

#

c. ask the devs to add uitoolkit lol

#

the easiest would be a but it would break every time the game updated
b would be much harder and would break every time uitoolkit updated
c is super easy but lol

#

big brain just include the asset patcher in the mod

#

actually hek what am I saying just runtime patch it

#

load an asset bundle and load it from there

#

wdym too slow

#

what is a mono patch

#

I don't think harmony is all that slow, even then shader loading happens on the native side

#

Yeah harmony still isn't that slow, especially when it's not in a loop or anything

#

But whatever use what works

#

they are on assets/ui toolkit/panelsettings.asset, but the names of the shaders are the same as I posted earlier

#

there's no other path on it

#

ok that works too ig

#

ofc

#

it's assetbundle.loadasset

#

can you not grab the panelsettings asset

#

then get the shader refs from there

#

this is the same bundle you sent me?

#

I'll look later

#

You should be able to load it

dark wigeon
marble hollow
#

oo

dark wigeon
#

all the code was there I just forgot to enable a flag

midnight narwhal
#

does the line in the docs GameObject aspid = Instantiate(Aspid.preloadedGO["Aspid"]); require a reference? because otherwise Aspid doesnt exist.

#

or a using statement that visual studio doesnt suggest?

leaden hedge
#

aspid is a static class someone else made

midnight narwhal
#

then why is it in the docs

leaden hedge
#

because thats not really a relevant part of the code

#

there was probably a section prior that explained how to preload

midnight narwhal
#

i mean isnt it all relevant

leaden hedge
#

no

#

class names aren't really relevant

#

where even is it on the docs

#

oh i see

#

this explains how preloaded objects work

midnight narwhal
#

where would i find the paths to the gameobjects?

leaden hedge
#

scene dumps

midnight narwhal
#

k

midnight narwhal
#

so if i were trying to access a gruzzer, would it be

public override List<(string, string)> GetPreloadNames()
        {
            return new List<(string, string)>
            {
                ("Crossroads_07", "Uninfected Parent/Fly 1")
            };
        }

or

public override List<(string, string)> GetPreloadNames()
        {
            return new List<(string, string)>
            {
                ("Crossroads_07", "Crossroads_07/Uninfected Parent/Fly 1")
            };
        }

im getting this information from the scenes.rar file that is pinned, in Crossroads_07.txt

Uninfected Parent\Fly 1
                   \--Component: Transform
                   \--GameObject layer: 11
                   \--GameObject tag: Untagged
                   \--More garbage...
rain cedar
#

The former

native pelican
#

What do the various fields in RectData mean? I don't usually think of a rect having a min or max.

jolly oriole
#

are they fields or are they get properties?

native pelican
rain cedar
#

Min/max are two opposite corners of the rectangle

native pelican
#

Oh I see, minimum position of the two positions defining the rectangle, and maximum position.

#

Thank you!

leaden hedge
#

rect and rectdata are the same thing

#

rectdata is just boilerplate for making rects without needing to make it line by line

leaden hedge
#

isnt ui toolkit like miles behind in features compared to canvas

nimble lake
#

:modders:

jolly jungle
#

excuse me what

jolly oriole
#

:modders:

fair rampart
#

guys

#

some help

#

how do i fix this

deep wave
#

base..ctor(); is supposed to call the constructor for the base class, but iirc dnspy has a panic attack when it sees it, as it reads it as another method
an alternative is to do public BossSequence() : base(), which shouldn't be flagged by dnspy

copper nacelle
#

just get rid of it

#

it's that easy

jolly oriole
#

I think i know why my 1.5 api doesnt quite work correctly

#

Can only test in like an hour though

copper nacelle
#

i know exactly why it doesn't work correctly

jolly oriole
#

32 bit or something else?

copper nacelle
#

null br

stone elm
deep wave
#

afaik : base() is also implied

jolly oriole
deep wave
#

(or as far as i googled because i'm still new to c# feelspkman )

copper nacelle
#

brfalse.s leads to a null which causes ilmerge to kill the method (extern) leading to zero rva

#

or if you don't ilmerge it just crashes immediately

#

feelsokayman

#

ilrepack throwing on a null is incredibly reasonable knowing this information

stone elm
copper nacelle
#

i mean if you fix the br null then yeah

#

i am still of the opinion that this is the optimal opportunity to not have a 20mb assembly

#

but the br has to be fixed either way

jolly oriole
#

Ill research that once i'm at my pc

copper nacelle
#

it's from the prepatcher

jolly oriole
#

Ill research that once i'm at my pc

copper nacelle
#

Ill research that once i'm at my pc

ornate rivet
copper nacelle
#

pogtamer immensely disturbs me

ornate rivet
#

agreed

copper nacelle
#

oh i might've gotten it maybe

#

gaming

limber storm
#

Am I reading this correctly that if hasXunFlower is true and givenEmilitiaFlower is false, then the FSM tries to call "FLOWER" which... doesn't exist?

copper nacelle
#

yeah

ornate rivet
#

:)

limber storm
#

I wonder how often that happens... 😦

jolly oriole
copper nacelle
#

suicide

#

I did it

#

Immensely painful

ornate rivet
#

epicccccc

#

dnail works?

copper nacelle
#

Yeah

ornate rivet
#

very nice

#

still not updating pale court though

copper nacelle
#

you will once every other mod updates with it being a breaking change

#

🙂

jolly oriole
#

is that a "ported" mapi or a new one?

copper nacelle
#

ported

jolly oriole
#

pog, but ig it would really be good to check what can be trimmed from the api

copper nacelle
#

i am going to abuse this optimal opportunity

jolly oriole
#

i mean, people do need to compile mods again thanks to .net 4

copper nacelle
#

don't you worry

jolly oriole
#

mapi 2.0 pog

#

or well, 1.5

copper nacelle
#

suffering

jolly oriole
#

lmk if i can help

copper nacelle
jolly oriole
#

should

copper nacelle
#

cool

jolly oriole
#

let me check

#

though it might be netstandard 2 build instead of .net4

copper nacelle
#

doesn't matter

jolly oriole
#

yep, is pushed

copper nacelle
#

alright

#

i'm going to commit onto the repo which has the loading actually fixed fwiw

jolly oriole
copper nacelle
#

my branch

#

where it has the not double-loading

jolly oriole
#

ah ok

#

btw, i did send the dm, so on release we might be able to use normal json.net

copper nacelle
#

maybe

#

it'd make the reflection much easier ngl

fair rampart
#

guys

#

how do i change the dialog

#

or find it in dnspy

vocal spire
fair rampart
#

how?

vocal spire
#

Look at how other mods change the text

fair rampart
#

where

vocal spire
#

GitHub

#

Also you should probably actually make a mod since with how many screenshots you posted, you seem to be doing a lot

fair rampart
#

thx

#

i will try

#

now

#

i download a mod like eldergod

#

then i open it in visual studio?

vocal spire
#

No...

#

Follow what the apidocs say on it

fair rampart
#

ok?

vocal spire
#

You don’t really open dll files

deep wave
#

just search for the name of the mod on github, most if not all of us upload source code

fair rampart
#

i tried saerching hollo knight but i get this

jolly oriole
#

try just searching hollow knight and click the c# text under languages to the left

fair rampart
#

thx

#

i didnt really get anymods that have dialog

#

i dont see the modding api

copper nacelle
#

have you tried scrolling down

#

if you have debug installed the api is installed anyways

fair rampart
#

bullsh8

copper nacelle
#

me when 1.4.2.4

#

have you tried buying the gaming

fair rampart
#

yea

#

no worrys found it

#

it didnt work

copper nacelle
#

Shocking

deep wave
#

generally would recommend buying the game before trying to use the large amount of free content the community provides to people who paid for the game

copper nacelle
jolly oriole
#

pog

copper nacelle
#

got actual debug info working

#

should've done this a long time ago

#

still very happy

jolly oriole
#

is that for 1432 or 1.5?

copper nacelle
#

1.5

#

can do either though

jolly oriole
#

neat

copper nacelle
#

gaming

#

this is w/out merges too

#

so the assembly is actually usable in dnspy

#

very convenient

jolly oriole
#

did you just add the other dlls in the managed folder or how are those referenced?

copper nacelle
#

managed

jolly oriole
#

pog

copper nacelle
#

Do you have System.Runtime.Serialization in your Managed folder?

#

idk if i put that there or they actually have it now

jolly oriole
#

was already there

copper nacelle
#

yoo

#

nice

jolly oriole
#

which is why i also removed it from the ilmerge thing

copper nacelle
#

makes sense

jolly jungle
#

I have a problem I'm stumped on

#

I basically want Hive Knight to have different DNail dialogue when stunned

#

So, this is my related code

#

In Awake()

#

In my LanguageGet()

#

And in Start()

#

For some reason, it seems to only work the first time I DNail him while staggered; every time after that without quitting the game displays the three normal dialogues

#

Any ideas?

jolly oriole
#

let me quickly rename steam things to 1432

vocal spire
#

@jolly jungle have you tried logging what the key is?

jolly oriole
#

you could try adding both times to the control fsm, with the stun recover staying the same, but change the stun to the Stun Start state of _control

jolly jungle
jolly jungle
#

thanks hollowknice

jolly jungle
#

Alright

#

So, uh

#

Kinda funny

#

Basically, I didn't clean up well after me

#

And every time the fight ends, the script lingers around, I guess

#

And that resulted in this

copper nacelle
#

Oh yeah that happens

#

Make an OnDestroy and unhook

jolly jungle
#

Ah, thanks

#

Should work?

copper nacelle
#

yeah

jolly jungle
#

Woo, it worked

#

Thanks :D

solar hare
#

so does this update mean we get to use a version of C# that isn't from the dark ages?

native pelican
#

What do ya'll usually do to share the mods you make? I have one in some reasonable state of done-ness that I think would be fun to share

copper nacelle
#

there's a Google drive folder and an xml you pr

#

and you could already use c# 9

solar hare
#

oh? how does that work, when 2017 runs .net 3.5

stone elm
#

I imagine they probably meant .NET version. 3.5 is a doozy

solar hare
#

also yeah, i would like the api features, not just the syntax

native pelican
solar hare
#

but i'm still curious about the c# 9 thing

native pelican
prime urchin
#

If you put <LangVersion>9</LangVersion> in your .csproj file you can use a lot of C#9 features

copper nacelle
#

ye

prime urchin
#

any C#9 features that don't require runtime changes

copper nacelle
#

But we have .net 4 now

#

and before we had backported tuples

prime urchin
#

4.0 will be a relief hah

copper nacelle
#

yeah definitely

native pelican
#

Ty!

solar hare
#

yeah

copper nacelle
#

and as far as the gdrive goes you just ask and someone puts it in or can add you

jolly oriole
#

or you do the sfgrenade and pr another link with your mod hosted somewhere else (e.g. github)

#

or also some other mods too big for gdrive

copper nacelle
#

yeah

#

angle self hosts

#

it's just for the sake of having them together

#

Which was more of a big deal when there wasn't an installer

native pelican
#

I just asked for permission to edit the GDrive (I think)... I used the "ask owner to share" feature, which I've never even seen before

#

Oh, maybe that's easier, it's already on github

jolly oriole
#

btw 56, chance you send me the 1.5 mapi you made to port mods or do you want to refactor more first?

copper nacelle
#

I could send it but I do plan on killing more stuff

jolly oriole
#

then have fun :D

copper nacelle
#

like the generic mod

#

It's been like a year

jolly oriole
#

oh god oh fuck

#

time to change all my mods to the non generic version

prime urchin
#

iirc the generic version was for specifying settings types, right?

copper nacelle
#

Yeah

#

You just override some properties

prime urchin
#

was there any benefit other than not having to cast the setter value?

copper nacelle
#

no

jolly oriole
#

can type getfields detect fields from derived types if given the specific instance?

copper nacelle
#

if you have like base obj = derived

#

obj.GetType() will give you the type for derived

jolly oriole
#

poggers, gonna use that for reflection based save setting field detection

copper nacelle
#

I think you might be able to use covariant return types for the property now too

#

Which makes it even more pointless

jolly oriole
#

although i'm currently thinking for 1432, as 1.5 is still beta

prime urchin
#

I want to say that covariant return types don't work for properties but maybe I did it wrong last time I tried

copper nacelle
#

it doesn't

#

ruined

#

i wait for the day where i can make it { get; set }

prime urchin
#

it's strange that it's not allowed

copper nacelle
#

i assume it's because of the set

#

yeah it says it works on read-only properties

prime urchin
#

ah

#

okay, that does make sense

jolly oriole
#

wait a sec, i can just use _saveSettings

#

watch me add an abstract generic mod derived class to not worry about generic mods lol

copper nacelle
copper nacelle
#

@jolly oriole what

jolly oriole
#

about the comment, the replace, the enum name or what?

vocal spire
#

Hello

#

🤔

copper nacelle
#

all of the above

jolly oriole
#

the comment: not made by me
the replace: never worked with mono before, seemed fitting
the enum name: copied from vanilla

copper nacelle
#

i mean

#

why patch it at all

jolly oriole
#

to make LanguageSupport possible, as it's otherwise a real spaghetti conversion between different enums & ints

copper nacelle
#

ok

#

is it just for the one mod

#

in the api

jolly oriole
#

yes

copper nacelle
#

bro

#

the api is so bloated

#

suffering

ornate rivet
#

just remove the fat and it will work

copper nacelle
#

I might just pr languagesupport at this rate

#

so i can kill more

jolly oriole
#

let it lie on ice for a while, language is fucked in the game

#

but if you want insight:
MenuLanguageSetting.RefreshAvailableLanguages() gets either TestingLanguages[] or SupportedLanguages[] and casts to SupportedLanguages[] (not too bad, as those are duplicates of each other).
an entry gets cast into LanguageCode in MenuLanguageSetting.UpdateLanguageSetting() to switch language (so no custom thing possible as entry "34" (string) is not equal to whatever is in LanguageCode)
this gets converted to string in Language.SwitchLanguage(LanguageCode code) to check of the language is available

#

hm apparently it should work according to ms docs

copper nacelle
#

you can cast int to enum even if there's no member

jolly oriole
#

but not the string representation of that int

#

and apparently it's not in .net 4

#

i have to write my own thing sadge

copper nacelle
#

🥴

jolly oriole
#

probs just a function that tryparses the string to int then to languagecode, but i'll see

copper nacelle
#

Enum.TryParse?

jolly oriole
#

doesn't parse the string "34" to the numerical enum value 34

#

or: only does so in .net 5 and netstandard 2.1

copper nacelle
#

Oh you mean it'll throw

#

hook it

jolly oriole
#

hm, tryparse apparently works in .net 4

#

for whatever reason it's different in features from parse

#

so ig you can throw the language enums out

copper nacelle
#

:frogchamp:

jolly oriole
#

though please not in the 1432 version

copper nacelle
#

i ain't touching 1432

jolly oriole
#

froggers

#

wait a sec, i could technically send tc the changes to the language thing, so it maybe doesn't have to be changed in a mod or something lol

#

but nah, tc wouldn't use that, is it literally only benefits modders and maybe even sacrifices a bit performance

copper nacelle
#

istg

#

if this

prime urchin
#

gotta say, doing Unity UI through code when I didn't fully understand Unity UI was a bad idea lul

#

taking an existing game UI and modifying it like that, even more so

#

but it's done, thank god

copper nacelle
prime urchin
#

good ol' refactoring

copper nacelle
#

the power of breaking changes

#

no more obsolete

ornate rivet
#

you can do breaking changes as much as you want so long as it doesnt break my mods

copper nacelle
#

if your mods aren't doing terrible things they will be okish

ornate rivet
#

good thing I'm not smart enough to do terrible things

copper nacelle
#

i mean Mod<A, B> is pretty easy

#

or SerializableDictionary

#

or BoolValues, IntValues, etc

ornate rivet
#

magic words

copper nacelle
#

uh huh

prime urchin
#

yeah, if ya got the opportunity to take breaking changes you might as well go all the way with 'em lul

tawny onyx
#

beta version update again?(about 11 MB)

#

what's the changes

#

ok i found it on announcements

#

nvm

blazing mica
#

wheres the point mod

#

?

jolly oriole
#

There are a lot of points in hk

deep wave
jolly oriole
#

i mean, unity is partially written in c++, so i guess transforms weren't difficult to debug, as they're used pretty much everywhere

jolly oriole
#

can't wait for the 1.5 patch to release while we have no api ready and people flocking in #archived-modding-help to ask why mods aren't working

jolly jungle
#

Can't we start working on it now?

jolly oriole
#

who says that the final version is the same as the current betas?

jolly jungle
#

Ah, I guess

#

Hm

#

How fast can it be fixed once it's released?

#

Also, what will this mean for my own mods

jolly oriole
#

at best: it's very similar, that only small changes are needed to what 56 already has
at worst: it's entirely different

jolly oriole
jolly jungle
#

Will I need to change anything, or will the changes to the api, ah, "bridge" between the old mods and the new game version? Is that the word?

#

Not sure

jolly oriole
#

the api gets some fat trimmed

jolly jungle
#

Point is will I need to change any code myself

#

To a large amount

#

degree*

jolly jungle
jolly oriole
jolly oriole
jolly jungle
#

Aight, wonderful

jolly jungle
#

So should I wait for the change before releasing it?

jolly oriole
#

i mean, we don't know when it's releasing, so you can release your mod right now and just update once 1.5 is out

jolly jungle
#

Cool

empty ridge
#

is it possible to swap out an audioclip in a mod's initialized(), as opposed to tracking down where the audioclip gets played?

jolly oriole
#

afaik no

empty ridge
#

dang 😦

jolly oriole
#

wait nvm, depends

#

if the GO exists in initialize(), then yes

empty ridge
#

could you explain

jolly oriole
#

like if you want to change audioclip of something in the main menu, then doing it in initialize() works, otherwise you'd have to wait for a scene to load that has the go in it to change the audioclip

empty ridge
#

oh gotcha

#

im trying to disable the sound that plays when the knight lands, but thats not handled in heroaudiocontroller so im gonna have to track down where that gets played

#

assuming its an fsm thing

jolly oriole
#

1 sc

#

if you want to just mute all landing sounds:

On.HardLandEffect.OnEnable += OnHardLandEffectOnEnable;
On.SoftLandEffect.OnEnable += OnSoftLandEffectOnEnable;

in those hooks, you get the Hard-/SoftLandEffect monobehaviour, which you can use to get audio on the go the effect is attached to

#

though let me check first if there is audio on the effects GOs

#

TIL hard landing sound is easier to deactiate

#

Knight GO -> Sounds GO -> HardLanding GO -> set volume to 0 probably
Knight GO -> Sounds GO -> Landing GO -> set volume to 0 probably

#

@empty ridge

empty ridge
#

ooooooooooooh i'll try that

#

thank you!

jolly oriole
#

so you can hook HeroController.Start or awake and do that

empty ridge
#

makes sense

dark wigeon
#

didn't see this ping until now, weird
again I'm guessing Shader.Find uses the hardcoded list in globalgamemanagers which isn't something you can patch at runtime so this is probably the best way

jolly oriole
#

are you trying that in 1432 or 1.5?

#

well, ig either way it's possible to have mod be constructed very early after game start, in which one could load assetbundles with shaders, should definetly be before the first Shader.Find

empty ridge
#

so muting hardlanding worked perfectly, muting landing did nothing... idk private void HeroController_Start(On.HeroController.orig_Start orig, HeroController self) { AudioSource hardland = self.transform.Find("Sounds/HardLanding").GetComponent<AudioSource>(); hardland.volume = 0; AudioSource land = self.transform.Find("Sounds/Landing").GetComponent<AudioSource>(); land.volume = 0; Log("swapped sound files!"); orig(self); }

jolly oriole
#

that's weird

#

hm

empty ridge
#

they seem identical lol

jolly oriole
#

may be that it get's set to volume 1 if an actual landing occurs? idk how tc coded it

empty ridge
#

i'll poke around a little more

jolly oriole
#

i'll search too

empty ridge
#

its hard cause its not like a class that you can search for in dnSpy

prime urchin
#

It looks like in the softlanding play effect, it randomizes the pitch before playing

#

HeroAudioController.PlaySound -> case HeroSounds.SOFT_LANDING

jolly oriole
#

yea, but it doesn't touch volume

empty ridge
#

and i hooked that method to just return immediately

jolly oriole
#

in Initialize(), if you can find the GO Soft Land Effect, set the volume of its AudioSource to 0

#

there's also one there

empty ridge
#

tf

#

1 sec

jolly oriole
#

hm, idk then, never tried to add custom shaders

#

though maybe the source code of asciicamera can help

#

yea, just saw that it does apply manually

prime urchin
#

Hmm, the other thing I found is the SoftLandEffect class, which plays the audio clips directly

#

apparently I'm blind as you've already pointed that out lul

empty ridge
#

it worked!!!!

#

thanks so much!

jolly oriole
#

np

#

how the fuck do i git rebase merge conflict in cli?

copper nacelle
#

wdym

jolly oriole
#

don't want to deal with that, i'll just delete and reclone my repo

copper nacelle
#

🥴

jolly oriole
#

it's faster

copper nacelle
#

you can reset soft like 5 commits back then reset hard then pull

jolly oriole
copper nacelle
#

git reset --soft HEAD~10

#

git reset --hard

#

git pull

#

qed

jolly oriole
#

now i know what's wrong, i did 2 other commits in my main mapi repo for no reason

copper nacelle
#

🥴

#

i can give you the assembly if you'd like

jolly oriole
#

nah, just threw away my commits

#

is now up 2 date

#

ready to make new prs pog

empty ridge
#

so apparently the last bit i added to the hook worked because it was throwing an exception

#

i can figure it out but thought that was hilarious

jolly oriole
#

lol

dark wigeon
#

I used asset creator to create a ScriptMapper and it successfully loads by unity (somehow lol) but as I expected, the game only uses the one loaded from globalgamemanagers for Shader.Find and I'm pretty sure it does that at startup before any scripts can execute

#

Shader.Find is using globalgamemanagers' scriptmapper asset which is a lookup table of where to find shaders by their name

#

so I just verified that giving unity another shader list wouldn't work

#

unity loaded the shaders from the list but Shader.Find still didn't work

#

asset creator let's you make assets that don't have c# classes, like ScriptMapper for example

#

afaik you can't initialize one in c#

#

there's always ways to patch around the engine but that means you have to go into native code

#

but other than that, the code is probably like

var file = loadFile("globalgamemanagers")
this.globalTable = file.getScriptManager()
...
this.globalTable.find("blah blah")

so the only way to fix that would be to modify global table's memory or hook the function that loads it in the first place

#

in any case, too much work

#

either patch globalgamemanagers or deal with the patch on shader.find

vocal spire
#

Can someone merge this?

copper nacelle
#

i can merge it but i won't build it

vocal spire
#

I'll build it but what do I do after that

languid goblet
vocal spire
#

Hoo knows

solemn rivet
#

did you build it

vocal spire
#

No, I’m lazy

solemn rivet
#

@ lazy

jolly oriole
#

this possibly has something to do with threaded reflection

dark wigeon
#

isn't dnspy repo gone? so you can't get any more mono debug dlls

#

doesn't have unity 2020.2

#

it's probably not even hard to do manually

#

you know, since there's a giant section on it

#

I have compiled versions before on my laptop

#

I can try later

#

here's hoping it still works

potent dirge
#

what exactly is the TLS issue with the old modding-api and github anyway? Is it something like Unity 2017 just refusing to run even external dlls/libraries that does use TLS 1.2, or is it that youd rather avoid bundling external stuff like that with the api?

jolly oriole
#

modding api tls issue?

potent dirge
#

yea, the old modding-api (the one used for 1221 currently) had a github version helper thingy that depended on TLS 1.0/1.1 for establishing a safe connection to github to check for current versions of mods being up-to-date or not, but github removed even optional TLS 1.0/1.1 support, so now it can't connect and throws errors + tells everyone every mod is outdated pm

stone elm
#

Sounds like something @deep wave fixed in a fork. They enabled TLS1.2 as a security protocol for the ServicePointManager. I believe that solves the problem, although I may be full of it

potent dirge
#

I think that was a different issue related to the ModInstaller and just windows (7?) not supporting TLS1.2 out of the box, but in the modding-api case its ran with/by the game so its ran by Unity2017 rather than as its own external program

stone elm
#

Ah, sorry, I misread you saying modding-api as ModInstaller.

potent dirge
#

could also just strip that functionality completely out if @deep wave does her job and completely overhauls the modinstaller to work for downpatched versions as well so lazy omfg 😤 🙏

stone elm
#

Windows 7 had it supported it just needs to be told to use it. Hence adding it to the enum in ServicePointManager.SecurityProtocol.

#

Http/WebClient follow suit based on that.

potent dirge
#

Oh, I didn't make this, I'm looking for a solution to fixing it, and for that I want to know exactly why it wasn't fixed already etc paxitiPeek

stone elm
#

I looked around for the code that does the update check in moddingapi and I couldn't find much (just searching through github though). If you knew where it was I could look to offer an opinion but there isn't much more I can do atm.

potent dirge
#

yea, that was what I was thinking, but I wanted to ask if anyone had already tried and had it not work

deep wave
solemn rivet
#

wait

#

who's overhaulin what

potent dirge
#

Bc I love u, jamie:3

#

I want to overhaul the old githubversion checker in the old 1221 api so that it works again, if possible, so I asked if anyone had tried to fix it before

#

(it's also in the current cp version, just commented out)

solemn rivet
#

uh huh...

#

about the installer tho

#

I think back when I was first making it, we discussed about adding support for multiple installs

#

but people seems to not be too keen on it back then

#

because "people who are running multiple installs don't really need the installer"

#

specially because older patches didn't have any working mods back then

#

I think 1221 had an api that doubled as debug

copper nacelle
#

it's still just 1221 and like the 2 1028 mods

solemn rivet
#

yeah

#

I mean, if you guys wanna do that overhaul, be my guest

#

but I doubt it's worth the effort

copper nacelle
#

1221 has like 3 mods people actually use too

solemn rivet
#

oh

copper nacelle
#

ax1uwide3

solemn rivet
#

it has more than just a singular mod now?

#

is it a rando or something?

copper nacelle
#

debug, hitboxes, custom knight?

solemn rivet
#

oh right

#

wtf is wrong with my kb today

copper nacelle
#

I mean 1221 has the real api it's just that nobody is going to maintain mods for that

potent dirge
#

Another big part of why there aren't more mods is because it's harder to find resources for those versions

jolly oriole
#

and because they're ancient

potent dirge
#

Moth mentioned porting benchwarp, but tuples effort

copper nacelle
#

that ain't effort

solemn rivet
#

I think another reason why was because adding support for older versions might accidentally add support for pirated versions

copper nacelle
#

you add 1 file to the mods folder

potent dirge
#

Nah, the effort being bc they're in one and not the other, from what I read back then

copper nacelle
#

yeah like I said

#

Put tuples in mod folder

#

Ref tuples in mod folder

#

Build against 1221 api

#

Profit

potent dirge
#

Literally impossible :o

copper nacelle
#

by impossible do you mean free

solemn rivet
#

yes

copper nacelle
#

because 1432 doesn't have native tuples either

potent dirge
#

Yes, and I know ax2uHappy

copper nacelle
#

They're just ilmerge'd in because me and serena found them convenient

jolly oriole
#

1432 is also ancient though :v

copper nacelle
#

true af

#

the faster I can stop supporting 1432 the better

solemn rivet
#

trutru

#

you know what

#

I'm gonna lock the ss modinstaller behind a paywall

hexed violet
ornate rivet
#

time to bring crossroads back :)

unborn flicker
#

That was a meme cerpin. The respawn method is very different on 1221, so even with an api with monomod hooks it would have to be rewritten.

#

I do still blame 56's refactoring which added 200 tuples though. I'm pretty sure number of errors in visual studio == difficulty of fixing the code is the way it works, after allsheopride

copper nacelle
#

better than 200 * 5 duplicated lines

unborn flicker
#

It really was awful

potent dirge
#

ah, imagine memeing in a public server like that D:

jolly jungle
#

Alright

#

It's time

#

How do I get my mod onto the installer
If I happen to not have a github (or, well, I technically do, but I have no idea how to use it so, not yet)

jolly oriole
#
  1. upload a zip (containing the mod and a readme) somewhere (e.g. the gdrive)
  2. make a pullrequest (PR for short) to https://github.com/Ayugradow/ModInstaller (requires github) that adds lines for your mod to be downloadable
    2.1. Requires: Name, Short Description, File name (dll) and the SHA1 value of that file (per file), link to ZIP, dependency list
    2.2. you could also get somebody else to do it for you
jolly jungle
#

e.g. the gdrive
The? A specific one?

jolly oriole
#

just said that as an example, but i meant the google drive with all the mods on it

jolly jungle
#

So yes a specific one

jolly oriole
#

technically you could upload it wherever you want (i use github releases)

jolly jungle
#

Lemme make the zip first, then I'll see

jolly oriole
#

you could just DM me the zip then

jolly jungle
#

Any specific name the zip needs?

jolly oriole
#

no

#

wait nvm, if you upload it to the gdrive i can just pull it from there

jolly jungle
#

As in, the ZIP's name won't influence anything, right?

jolly oriole
#

yes

jolly jungle
#

It's all the .dll

#

Thanks

#

Readme file in all caps, lowercase, or title?

#

The file's name

jolly oriole
#

i think it's not strict, but i'd name it Readme.something

#

personally i just markdown files, so it would be Readme.md

jolly jungle
#

Title it is, then

#

markdown?

jolly oriole
#

text, but fancy

jolly jungle
#

Huh

#

I'll need to check that out later

#

I like fancy

jolly oriole
copper nacelle
#

do .md or .txt

#

installer doesn't recognize the other ones

jolly oriole
#

got languagesupport working on newest 1.5 mapi

ornate rivet
#

nice

copper nacelle
#

nice

jolly oriole
#

and i didn't even need tryparse lmao

jolly jungle
#

How do I make one?

jolly oriole
jolly jungle
#

Wait so I use the same text formatting, save as .md, and it comes out fancy?

jolly oriole
#

depending on what you use to look at it, github displays it fancy, but in notepad it looks like the raw link

jolly jungle
#

Ah

jolly jungle
#

Alrightyyy

#

Do I just upload it to the first link in ?mods

jolly jungle
#

Yep, that's the one

#

So, [My name] - [Mod name]?

jolly oriole
#

yea

jolly jungle
#

Can't touch it shadecry

jolly oriole
#

then dm me the zip

jolly jungle
#

Sure thing

jolly oriole
jolly jungle
#

Yeeee

#

This is gonna be greattt

tidal mantle
#

Anyone have a solution for UnityEngine.UI not being referenced properly ("The type or namespace name 'Text' could not be found")? I'm definitely using UnityEngine.UI, vs is just not accepting it. I feel like I've solved this problem before, but from Unity's side, and long enough ago that I don't remember how I did it.

native pelican
tidal mantle
native pelican
#

👍 that's all I've got

copper nacelle
#

are you refing UnityEngine.UI and UnityEngine

tidal mantle
#

Yup

prime urchin
#

did you maybe accidentally set an alias for the referenced .dll?

tidal mantle
#

alias is set to global only

prime urchin
#

it'll be UnityEngine.UI, not UIModule

tidal mantle
#

is there a UnityEngine.UI.dll somewhere I just can't find? I see a UIElementsModule and a UIModule

prime urchin
#

should be in the folder with all the others

tidal mantle
#

hmmmmm, new question is "why doesn't my unity install have that", but i don't think that's a question for y'all

#

The former.

copper nacelle
#

why are you refing unity dlls for a mod

#

like unity dlls in a unity folder

#

you just ref the game ones

tidal mantle
#

......... im a fool

#

yeah, i just clearly wasn't thinking when moving on to ui

prime urchin
#

it happens

copper nacelle
#

@dark wigeon not to be a bother but fwiw level308 -> Acid Box -> damages_enemies crashes the avalonia viewer if you try and open it

dark wigeon
#

why does it crash

#

it shouldn't do that

copper nacelle
#

that's true

dark wigeon
#

I'm about to 💤 so see you in 13 hours

copper nacelle
#

alright

dark wigeon
#

beta too?

copper nacelle
#

yeah beta release 2

dark wigeon
#

no hk beta

copper nacelle
#

ah

#

yeah hk beta

dark wigeon
#

ok it was trying to read arrays but arrays aren't supported

naive nimbus
#

Sorry it's not a mod, idk where else to put it

copper nacelle
#

cool

naive nimbus
#

Thx!

potent dirge
#

I think it'd fit best in modding discussions, but otherwise that looks surprisingly good 👀

stiff pilot
#

guys can u give me gun mod pls

gilded lotus
#

try going to the right channel then maybe

knotty dagger
#

hello guys, I'm going to try something very basic, but I don't know anything about programming... I've open the code of a mod and I just want to change a name inside for my personal usage (because I play the game in French, so just wanted to translate the boss name to fit more in the game), I've find what I have to change, I've modified it, but cannot save it. Is their a simple way to just make a simple edit onto the files packed into a dll ? I don't ask for programming help, just for knowing if it's actually doable for a beginner to save the changes made to the dll

#

(sorry if it's the bad channel to ask that)

vocal spire
leaden hedge
#

for dnspy you just go to file Save Module...

#

if you've managed to save the class

knotty dagger
#

okay thanks guys, I'll try it!

jolly oriole
copper nacelle
safe hamlet
#

what are you doing bro

jolly oriole
#

obv nothing bad

copper nacelle
#

top 10 anime lies

jolly oriole
#

i couldn't help myself grubsad

copper nacelle
#

Wtf

#

really was a top 10 anime lie

unborn flicker
jolly oriole
prime urchin
#

the most egregious thing is that TSave is the first type parameter but listed second in the constraints

#

absolutely unusable

jolly oriole
#

oh god oh fuck

#

somehow didn't realize that

copper nacelle
#

that's true

#

the generic version means you have to specify a save setting type though

#

terrible

#

and you can't have two generic versions with one param so you can't say only save/global easily

jolly oriole
copper nacelle
#

did you just name them entirely differently

#

Suffering

jolly oriole
#

i named them according to what to expect of them

copper nacelle
#

hmmmm

#

fair enough

prime urchin
#

was it intended that your Type variables don't have underscores?

jolly oriole
copper nacelle
#

what

#

i use underscores

#

for all of the private fields

jolly oriole
#

oh wait yea, you didn't use the types

#

then i have no idea why i left the type types without underscores

copper nacelle
#

nice

prime urchin
#

that's one of those small things that would bother me the most lul

jolly oriole
#

but it's easy to edit

safe hamlet
#

why are they protected

copper nacelle
#

so you can use your settings

#

the override returns a base class so you need access to the backing field

#

though you could make the argument for a public property or something

safe hamlet
#

yeah i see it now and no protected is def better than public

jolly oriole
#

protected is good enough, and if people ever want to derive from another mod's mod class i have lost all faith

copper nacelle
#

🥴

safe hamlet
#

i mean yeah

copper nacelle
#

seal your mod classes for the hot devirtualization

jolly oriole
#

sealed public < public sealed

jolly oriole
#

god dammit

[DEBUG]:[API] - Trying to instantiate mod: SFCore.DontLet56SeeThis.FullSettingsMod`2[TSave,TGlobal]
[ERROR]:[API] - Error: System.MemberAccessException: Cannot create an instance of SFCore.DontLet56SeeThis.FullSettingsMod`2[TSave,TGlobal] because Type.ContainsGenericParameters is true.

it's abstract for a reason.
so either i pr it to the mapi (which you prob wouldn't like 56) or i copy paste the code into files

jolly oriole
#

ig i'll adjust the api to not try to instantiate abstract classes

#

o my god, did tc change the fucking fsm of the control of the world map

copper nacelle
#

I gotta say it instantiating abstract classes seems like something that should be fixed

jolly oriole
#

yeah, just need to pr it

floral island
#

hol up are there grenades here

jolly oriole
#

yes

#

i have no idea how additionalmaps worked, gives me one exception after another with 1.5

prime urchin
#

I do the weirdest stuff and then end up just deleting it after

copper nacelle
#

should ifnull not just return Some

prime urchin
#

probably; I'm not experienced with functional programming and I scrapped that as soon as I realized I was once more doing more than I needed to, hah

copper nacelle
#

understandable

stone elm
#

Does the ModConsole print all Modding.Logger.Log statements to itself?

copper nacelle
#

no

stone elm
#

Okay, thanks. I'll look at its source, assuming the repo is on GH, and see how to plop text in there. Unless someone wants to give me the answer. zote

copper nacelle
#

logger.log will just go to the normal console window

#

you can get text by like returning a string or something in a function you call

stone elm
#

Okay, I'll dig in. Thanks!

#

?saves

finite forumBOT
#

Saves


Windows File Paths: (Assumes Default Steam Install Path, Adjust accordingly for DRM Free or Non-Standard Steam Path)

Game Files: C:\Program Files (x86)\Steam\steamapps\common\Hollow Knight\```
** **
Mac File Paths:
```Save Files: ~/Library/Application Support/unity.Team Cherry.Hollow Knight/
Game Files: ~/Library/Application Support/Steam/steamapps/common/Hollow Knight/hollow_knight.app/```
** **
Linux File Paths:
```Save Files: ~/.config/unity3d/Team Cherry/Hollow Knight/
Game Files: ~/.local/share/Steam/steamapps/common/Hollow Knight/```
stone elm
#

Is it presently possible to attach a debugger to HK to more easily debug mods? Apologies if this is a basic question, I'm very new to HK/Unity modding.

prime urchin
#

Since dnSpy was archived it's a little harder because their github doesn't have the debugging .dlls anymore but I want to say someone around here has a link to one that works with HK - I don't have it myself though.

stone elm
#

Unfortunate. I wonder what happened to cause that. Okay, well, thanks for the answer! I'll muddle through.

dark wigeon
prime urchin
#

That'll be great to have

copper nacelle
#

it 'works'

#

as in it works if you use exactly 0 on hooks and none of your mods use on hooks

#

otherwise it violently crashes the game

#

🙂

vocal spire
#

Why does that crash

copper nacelle
#

at least last i tried it crashed

#

on 1432

#

you can get line numbers if you use an mdb or a portable pdb though for exceptions

#

not a debugger but it's a start

prime urchin
#

You mean using a mod's pdb or is there a special Unity HK pdb somewhere?

copper nacelle
#

mod pdb

#

just set the debugtype to portable

#

portable works on 1.5 at least

#

i only tried mdb on 1.4

#

via mono's pdb2mdb

prime urchin
#

The pdb doesn't seem to be working for me unless I'm missing something obvious

copper nacelle
#

portable yeah?

prime urchin
#

yup

copper nacelle
#

might be 1.5 then

prime urchin
#

gonna download Unity 2017 real quick and see if I can use pdb2mdb for it

copper nacelle
#

pdb2mdb works for 1.4.3.2 pretty sure

#

might need the debug unity runner idr

#

you just take the exe off unity

#

very easy

#

if it doesn't work w/out those

dark wigeon
#

you find a different way to get debugging on 2020.2?

native pelican
#

Does anyone know how to get a game object to be a child of an existing game object and still render? I want to attach something to a game object without having to update its position every frame.

#

When I try the obvious thing and set my game object's transform.parent to the target instead of a canvas, it doesn't get rendered anymore.

copper nacelle
#

nah i haven't tried proper debugging

prime urchin
#

also make sure that what you're attaching to is active

native pelican
copper nacelle
#

could try a spriterenderer

#

does it work w/ no parent

native pelican
prime urchin
#

Hmm, it might be because an Image is a UI element and UI elements have to have a canvas parent - I don't suppose you can parent the canvas itself to the gameobject?

native pelican
#

I don't think I tried that, I will if my spriterenderer poking doesn't work out... still trying things with SpriteRenderer to see if that'll work

prime urchin
#

I suppose alternatively you could have a big screenspace canvas and have images for each object that update with a world position to screen position method

native pelican
#

Yeah, I think that's what hollow point does (was poking around in there earlier hoping that they figured this out). I could certainly get that working. It just feels kinda cludgy... like this should work afaik

prime urchin
#

I think SpriteRenderer works in a similar way to Image so hopefully it works

#

it does seem a lot cleaner that way

native pelican
#

Yeah I noticed that SpriteRenderer can just be given a color too, so I don't have to generate my own sprite like I was... I want this to work...

#

Not getting anywhere yet though, still just not rendering anything

native pelican
#

Setting the canvas object's parent to the target didn't work either 😦

#

Imma give up for now but please anyone ping me if you've got other ideas. I'd love to figure out how to do this cleanly.

prime urchin
#

well, I made a plane I guess

dark wigeon
copper nacelle
#

is this for debugging

dark wigeon
#

yes

copper nacelle
#

sick

prime urchin
#

ver nice

dark wigeon
#

I really only uploaded this here to send it from my laptop to my pc

#

but you can try it too

#

2020 messed up a bunch of stuff in the repo so I have no idea how stable that is ^

#

nvm it just instantly crashes

prime urchin
#

rip

dark wigeon
#

well I mean it built without errors

#

ah wow ok

#

huge file size difference

prime urchin
#

position's probably off - I edited the values while in-game

native pelican
prime urchin
#

It uses a MeshRenderer as it's a 3D object which is why I'm a little iffy on that

#

then again, the Knight also uses a MeshRenderer (which might be why the SpriteRenderer doesn't work? not entirely certain)

native pelican
#

The enemies I was atcching too also seemed to use meshrenderers

#

I wish I'd ever used unity before. So many mysteries.

#

Though I guess it does make it all new and interesting too 😅

dark wigeon
#

that's a tk2d thing

native pelican
#

I should say: I wish I'd ever used anything I'm poking at before then.

jolly oriole
#

why the fuck does SendEventByName not find my custom event anymore?

#

how many fsm utils are there?

dark wigeon
#

yep v4 mbe vs2017 and tried to get the code as close to the dll build date as I could like the instructions say

#

I don't know why it would be so off

#

sure

jolly oriole
copper nacelle
#

why

#

qol seemed to work fine

#

and that is like 80% fsm modding

jolly oriole
#

thanks to FsmTransitions apparently not using the string toState anymore, but toFsmState instead

#

from my testing at least

#

does qol have its own fsm thing?

copper nacelle
#

vasi

#

why are you using toState when there's a public property

#

disturbing

jolly oriole
#

is use the property

copper nacelle
#

what

#

ok well the property works fine for me ngl

jolly oriole
copper nacelle
#

any backing field

jolly oriole
#

unless your playmaker version is somehow different idk why there would be differences

copper nacelle
#

what's the get on both of them do

#

and set

jolly oriole
#

literally just sets/gets the backing field

copper nacelle
#

incredible

#

I'll check closer after I eat

#

Maybe I just didn't test anything relying on it lmao

jolly oriole
#

lol

jolly jungle
#

Aight

#

So there's a problem I don't know how to approach

#

I'm assuming it's caused because of differences between PCs

#

So I was watching crankytemplar's vid on buzzbo, and it seems that the spikes came out much more frequently than when I played

#

For example, the spiral spikes, that happen during the glob and bees, go around three times in the vid, while only once when I play it

#

I think it's cuz of the messy way I spawned them

#

Which is having a coroutine always active, checking a boolean every point something of a second, and spawning spikes if yes

#

boolean controlled by attacks, of course

#

So, if anyone can give a better way that won't lead to this inconsistency, and is also probably better in general, please, please tell

prime urchin
#

initially that sounds like an issue of not using deltaTime but I dunno if you have a github or anything to look at

jolly jungle
#

Pretty simply, seems to spawn at different rates between different pcs

#

The spikes, that is

jolly jungle
#

Woah again?

#

Disable vsync, unlock framerate

#

What's this mean?

prime urchin
#

In your game settings, make sure you have both vsync and the frame cap off

jolly jungle
#

Hm

#

I think I did turn them both off a while ago

#

Or maybe I turned frame cap on, actually

#

I'll need to check

#

Thanks

dark wigeon
#

yes I'm already using that

#

giving it the right commit is part of the build process, I can't skip that

leaden hedge
#

post your code

#

its hard to debug, "it happens too often", without a snippet

copper nacelle
#

really doesnt' work

#

ax1uwide3

jolly oriole
#

btw 56, it really is "just" the tofsmstate thing that broke the entirety of additionalmaps

copper nacelle
#

amazing

dark wigeon
#

this is for 2020.2?

#

weird how big yours is. I even tried vs2019 to be sure and nothing really changed

#

yes I fixed the submodule thing

#

but mines way smaller than the original

#

maybe not way

#

any assertions while building?

dark wigeon
#

yep, had the atomic ops problem tko

#

I also had a problem with dnspy's generator asserting on the patched code

#

oh lol

#

I think the atomic ops problem came when I didn't build in release x64

prime urchin
#

Refactoring is one of those things that's annoying in the moment but oh so satisfying when you're done

jolly oriole
#

idea for mapi: ingame mod reloading, a button somewhere that mods completely unload and scene 0 is loaded, to reinitialize mod loading

copper nacelle
#

maybe with .net 4

#

assembly load stuff was terrible in 3.5

#

i had wanted that

jolly oriole
#

can probably look at how to manage such a thing after monday

copper nacelle
#

it's prob fine with appdomains in 4

#

hopefully at leaset

charred topaz
#

I recall dot net core 3.0 made it easier to do that, but I don’t think it’s still possible under .net standard 2.0

#

Unless appdomains

copper nacelle
#

Suffering

stone elm
#

Reloading assemblies with appdomains is nearly impossible, don't try it. hollowcry We suffered that problem with TShock for Terraria and just never accomplished it.

stone elm
#

Legendary. I assume this allows attachment via dnSpy? Or does any debugger work out? Also, do you have a ko.fi or something similar? That's good effort, worth buying you a cup of coffee.

copper nacelle
#

if it's like 2019 it will crash

stone elm
#

It very well might, but I recognize effort that is above my head. I'm not the brightest bulb with some things. zote

dark wigeon
#

yeah I was getting that exception too but I didn't want to break anything by commenting anything out

stone elm
#

I'm running into some weird assembly loading issues with mod development. I'm pretty sure it's due to my ignorance here. Is it reasonable to reference Newtonsoft.Json.dll in a mod? It seems to lead to dependency loading hell, at least Unity isn't grabbing what it needs from the GAC. Is there a preferred JSON de/serialization alternative?

copper nacelle
#

i mean if you want json.net for something yeah

#

if you're doing 1.5 dev

#

it's in assembly-csharp in 1.4

#

the alternative is unity's jsonutility which is kinda garbage

stone elm
#

Well, I'm punching myself in the gut with what I'm doing, maybe. I'm referencing a general purpose library (for networking purposes) which references json.net. I absolutely do not want to reference assembly-csharp nor unity in this general purpose library.

#

Since 1.4 has json.net in the assembly, I'm going to assume unity can resolve the types and I've been dumdum for putting the dll in the folder. It's at least worth a shot, I guess. 😩

stone elm
#

Okay, just posting since it seems appropriate to share the solution. I took a note out of SereCore's book and edited the mod I'm touching to resolve newtonsoft references to the game assembly, thus resolving the types.

proven cipher
#

Does anybody know where the SereCore GitHub is? (Assuming there is one)

steady comet
jolly oriole
#

wrong chat?

copper nacelle
#

that's true

#

idk how you being Brazilian is of relevance

ornate rivet
#

well gradow is Brazilian and he is god so clearly Pedrito is a follower

vocal spire
potent dirge
#

is there even a single good way to set dependencies without having to screw up your csproj anyway MaggotPrime

jolly oriole
#

change the csproj file by hand

#

i'll just take a guess and say that is for hk 1.5?

potent dirge
#

nah its just yuri's timer mod thingy

#

but setting up these is always a hassle

jolly oriole
#

kinda true

stone elm
#

Put them in a DLL folder in the solution. DO NOT check in the DLLs. Then any new dev can copy their own DLLs into the folder and they auto-reference

#

Then you don't have to mess around with proj files more than the one time to reference the ones in the folder

jolly oriole
#

yea, this is also the way modding api does it

copper nacelle
#

I have them in a folder like one subdir back

potent dirge
#

relative paths wooo

stone elm
#

Just gotta be sure anyone loading the project is aware to set up the folders too. (If you used a path outside of the solution entirely.)