#archived-modding-development

1 messages ยท Page 441 of 1

solemn rivet
#

so you saw this then

#

hmm

#

lemme search some more

leaden hedge
#

if its relative to where its loaded, it might need to be in the .exe folder

safe hamlet
#

i placed it there too

#

like literally everywhere i could think of

leaden hedge
#

just put it everywhere

solemn rivet
#

leave a copy of it inside every folder

#

should work

leaden hedge
#

and then remove them one by one

safe hamlet
#

alright

leaden hedge
#

well actually remove half of them

#

a binary search is probably more efficient

safe hamlet
#

nope

#

i don't get why plugins wouldn't work tho

solemn rivet
#

uhh

#

check the dll name I guess?

safe hamlet
#

it's correct

#

i tested it with a console app, the rpc sends perfectly fine

solemn rivet
#

ยฏ_(ใƒ„)_/ยฏ

solemn rivet
#

what if

#

wait

#

that's from opening the assembly-csharp.dll on dnspy, right?

safe hamlet
#

ye

copper nacelle
#

you tried Mods already, right?

safe hamlet
#

i did

solemn rivet
#

did you try managed?

copper nacelle
#

Try printing Directory.GetCurrentDirectory

#

Maybe it's something weird

safe hamlet
#

i did that

#

it's where the executable is

#

i placed it there too

rancid goblet
#

Hi! Someone told me that there is a mod to replay the path of pain. It is true? If yes, where can I find it?

solemn rivet
#

;i

#

oof

copper nacelle
#

yhtsi

solemn rivet
#

why bote

young walrus
solemn rivet
#

check Pins, Santi

copper nacelle
solemn rivet
#

there

copper nacelle
#

it's qol

solemn rivet
#

sid, can you edit the vanilla assembly in dnspy to see if it can load your dll from the plugins folder?

rancid goblet
#

Ah, ok. Thank you

safe hamlet
#

WAIT

#

i got it

solemn rivet
#

wut

copper nacelle
#

i am waiting

safe hamlet
#

i don't know why but placing it in Mono/EmbedRuntime worked

copper nacelle
solemn rivet
#

steam copied the wrong link

#

wut

safe hamlet
#

my presense updated too

#

very nice

solemn rivet
safe hamlet
#

finally can work on a RPC mod wearytiso

#

also i got this dll from somewhere else

#

maybe the dll was at fault?

solemn rivet
#

I mean

safe hamlet
#

i copied this discord-rpc dll from osu game

#

since i know that presence worked

leaden hedge
#

you can just put it in the usual place

#

I already made a discord-rpc mod for hollow knight

safe hamlet
#

what

#

sad

leaden hedge
#

like over a year ago lol

#

you just put the dll in managed

#

1 sec, once my harddrive responds

safe hamlet
#

for some reason, that didn't work for me, but it works now so idc

#

alright yea

#

the dll file was at fault

leaden hedge
#

omfg why is my hdd so slow

safe hamlet
leaden hedge
#

I think this is it

solemn rivet
#

do I dare ask what RPC is?

leaden hedge
#

rich presence something

safe hamlet
#

ye

leaden hedge
#

its the thing in discord that says what you're doing in game

solemn rivet
#

right

leaden hedge
#

like with that it'll say where you currently are

#

it'll also say your game is hollow knight 2

solemn rivet
safe hamlet
#

i have pinpointed it, it uses the one along the executable

#

the previous dll i put in doesn't work

#

the new one does

#

big thonk

leaden hedge
#
E:\Program Files (x86)\Steam\steamapps\common\Hollow Knight\hollow_knight_Data\Plugins\x86
#

is the path it uses

#

iirc

safe hamlet
#

when i run it and try to delete the dll that is in the same folder as the executable, it tells me that the game is using it

#

so dunno

#

why isn't that mod public, smh

leaden hedge
#

didn't think it was interesting, I thought it'd just spam the server with spoilers

#

like hey this guy is in NIGHTMARE KING GRIMM TENT and is fighting NIGHTMARE KING GRIMM

safe hamlet
#

lol

#

i get what you mean

#

i might just do stuff like health/place then

#

well i guess the images are also a spoiler

leaden hedge
#

it also did %

#

so it'd say you were in GREENPATH with 98% completion

#
    bool flag = data.playerData.permadeathMode == 0;
    if (flag)
    {
        this.presence.details = "Playing Classic";
    }
    else
    {
        this.presence.details = "Playing Balls of Steel";
    }
safe hamlet
#

very cool

leaden hedge
safe hamlet
#

only if had known, i wouldn't have to go through this

#

welp i am gonna do it anyways since i already put some effort into it

leaden hedge
#

you can use my code via dnspy

#

oh wait

safe hamlet
#

i have a layout working so don't really need it

#

thanks tho ok_grimm

leaden hedge
#
    public void SetCompletion()
    {
        PlayerData.instance.CountGameCompletion();
        presence.state = string.Format("Completion");
        presence.partySize = (int)PlayerData.instance.completionPercentage;
        presence.partyMax = 107;
        DiscordRpc.UpdatePresence(presence);
    }
#

I found the source dabright

safe hamlet
leaden hedge
#

but yeah you can't really update things fast enough for health or soul

#

and you don't get a lot of space

#

you could put a gameplay timer in

#

and maybe a current boss

safe hamlet
#

i believe the presence update sends like 10s after initiating, right? i have made custom presence for my self bot and it was around 10s

#

very nice

leaden hedge
#

its not delay

#

its rate limited

safe hamlet
#

o i see

#

so yea, health wouldn't be useful

leaden hedge
#

timers only need to be initialized and they keep track

#

so thats fine

#

I mean the only cool thing I can think of is mod integration

safe hamlet
#

ye, just gotta specify the start timestamp

leaden hedge
#

like playing randomizer: seed whatever

safe hamlet
#

o

leaden hedge
#

and a button you can click to steal the seed

#

I can't remember if you can just add the buttons with ingame interactions

safe hamlet
#

nah you can't

charred parrot
#

hmm

#

whats going on

#

has KDT finally given in

safe hamlet
#

it only provides stuff like party and spectate that is handled in the native dll

charred parrot
#

and decided to remake HK from the ground up

leaden hedge
#

I'm playing hollow knight 2

safe hamlet
#

i could make a rpc for silksong :^)

leaden hedge
#

I assume the OnSceneChanged hook has changed

#

as its not being called

#

also im not making hk lazy, thats what my discord-rpc mod calls hollow knight

#

sid was making one, but I beat them to it by a year Kappa

#

so old godmaster was still called Gods n Glory

#
    {
        Debug.Log("Discord: init");
        callbackCalls = 0;
        DiscordRpc.Initialize(applicationId, ref handlers, true, optionalSteamId);
        presence.details = string.Format("Installing GnG...");
        DiscordRpc.UpdatePresence(presence);
        ModHooks.Instance.HeroUpdateHook += OnUpdate;
        ModHooks.Instance.ApplicationQuitHook += OnQuit;
        ModHooks.Instance.SceneChanged += OnSceneChanged;
        ModHooks.Instance.AfterSavegameLoadHook += Instance_AfterSavegameLoadHook;
        ModHooks.Instance.NewGameHook += Instance_NewGameHook;
        ModHooks.Instance.SetPlayerBoolHook += PlayerBoolSet;
        ModHooks.Instance.SetPlayerIntHook += PlayerIntSet;
    }
charred parrot
#

not making HK mhm

#

mhm

#

ok

#

we all know you're secretly making your own metroidvania KDT

#

its obvious

leaden hedge
#

yes

#

its called hk2

#

its super cool

#

its like hollow knight

#

but its coded well enough to run on a TI-86

charred parrot
#

spicy

safe hamlet
leaden hedge
#

no memes

#

0/10

charred parrot
#

what needs to be fullfilled for discord to recognize something as a "game"

leaden hedge
#

make it say Hollow Knight: Silksong

#

nothing

#

you self-report

safe hamlet
leaden hedge
#

you make a RPC app, like a bot

#

and you set the name

charred parrot
#

because sometimes it tells me people are just working on regular old IDEs

leaden hedge
#

and give the same id

#

oh you mean for a game without RPC?

safe hamlet
#

someone give a good silksong logo

charred parrot
#

no like sometimes it will be like

leaden hedge
#

settings -> game activity

#

you can add anything

charred parrot
#

Igotlazy is playing "Visual Studio"

leaden hedge
#

wow look at me

#

playing "Steam Login"

#

ebic game

#

although the default listing is probably curated

safe hamlet
cinder storm
#

Woah that suer do be

leaden hedge
#

nice

charred parrot
#

fucking Sherma

unborn flicker
solemn rivet
#

how

unborn flicker
#

pain

solemn rivet
#

how

safe hamlet
unborn flicker
#

it picks an area that hasn't been reached yet and a transition in that area which isn't a deadend

solemn rivet
#

oh

#

how long does the spanning take

unborn flicker
#

and if there's a transition in an already reached area which is directionally compatible, it links it

#

It's pretty fast. No stutter for me

solemn rivet
#

oh nice

unborn flicker
#

It's non-deterministic, but with no logic it can run pretty quickly, I think

#

I have not made a condition for it to abort yet though bote

solemn rivet
#

leave it like that

#

we don't want any new abortion laws

unborn flicker
#

this would be a billion times safer without directional compatibility pissedkoth

#

oh well

charred parrot
#

no more new abortions laws plz

#

the past few have been

#

interesting

leaden hedge
#

i think we should abort people who pass abortion laws

floral furnace
#

kdt question wasnt there a way of a sprite following the player without parenting that sprite?
cuz if i lets say, flip the sprite parented to the player's transform, the player flips too

something LateUpdate(){
newSprite.transform = HeroController.instance.transform right?
//doesnt work cuz transform is read only
}

solemn rivet
#

do that to the position of the transform?

safe hamlet
#

gradow, are you streaming tonight?

solemn rivet
#

yeah

#

soon

safe hamlet
solemn rivet
#

what should I stream tho

safe hamlet
#

whatever you want

floral furnace
#

what i have now is

Update(){
gunSpriteGO.transform.parent = HeroController.instance.transform;
gunSpriteGO.transform.position = HeroController.instance.transform.position;
}

but ill try yours gradow

solemn rivet
#

I'm not sure you need to parent it tho

#

I never parent the hp bars to anything

floral furnace
#

i tried removing parent before and the sprite just disappeared

solemn rivet
#

oh

#

you need to enable the go

#

if it's parented to the knight, it inherits its enable/disable state

floral furnace
#

o

#

well i have a coroutine at Start already that enables it after the instances arent null anymore but ill try doing that now

solemn rivet
#

hmm

#

if that doesn't work, then maybe you'll need someone who actually knows what they're doing

#

instead of me who just googles all the answers

floral furnace
#

thats what im been doing all night yesterday lmao

#

i think half of the search results are purple already, that or im just bad at specifying/wording the problem

solemn rivet
#

I mean, all my mods and the installer are basically just a bunch of google searches

floral furnace
#

understandable tho

leaden hedge
#

child.transform.position = parent.transform.position

#

also you can set parent, set local pos to 0,0,0, then unset parent

solemn rivet
#

but will it follow?

floral furnace
#

im doing the unparenting stuff on Start, but ill keep the follow stuff in LateUpdate

solemn rivet
#

it's live, sid

floral furnace
#

i mean, its working now i guess, but only appears when i walk

thanks bruhdow/k๐Ÿ…ฑt

safe hamlet
#

very cool

weak lodge
#

gun mod pog

mellow elbow
#

*pew pew mod

charred parrot
#

I wonder when the next Silksong Update will be

silk jetty
#

nevah

mellow elbow
#

I'm telling you, shadow drop at e3

#

I want internet points if it actually happens

#

and cookies

copper nacelle
#

and i want my code to be written for me while i sleep but i don't think that's happening anytime soon

charred parrot
#

I mean

#

TC is basically top tier in the indie world at the moment

#

they dont need to show up at e3 but they could release something during the e3 time period

#

TC could just splice together a whole new trailer

#

show the same shit

#

maybe 1 new area

#

and people would still start foaming at the mouth

unborn flicker
#

does anybody have a right transition I could borrow?

copper nacelle
#

any specifications

unborn flicker
#

yes, it shouldn't be left

copper nacelle
#

deepnest_14[right1]

unborn flicker
#

I have too many of those

#

ooh, I like Deepnest

#

oh, I was being dumb and pairing doors with right transitions

#

everyone knows you can only go through a door and come out from the left

#

unless you're bretta

safe hamlet
#

lol

unborn flicker
#

forgotten emote bretta

safe hamlet
#

that reminds me

#

forgotten foe when

copper nacelle
#

30-40 business days

safe hamlet
unborn flicker
#

it finished shroompog

safe hamlet
#

working on RPC mod was a mistake, i have no sense of good design at all

#

i am prolly gonna ditch it

#

homothety, you should implement RPC with randomizer

copper nacelle
#

working on RPC a mod was a mistake, i am prolly gonna ditch it

unborn flicker
#

King's Pass to right side city to Crystal Peak to Resting Grounds

#

But I didn't fix the item placements yet

jovial vault
#

why is 56 an acute angle

compact sedge
#

I want RPC going in the other direction

#

a HK API for AI

#

AI controlled knight

#

alpha knight

safe hamlet
#

thonk

#

by RPC i mean rich presence

compact sedge
#

I dunnoman HK API would be cool

#

wonder if libtas works at all on games like HK

safe hamlet
#

libtas?

mossy pike
#

It does Angle

jovial vault
#

why is drawing the knight with a gun and making it not look like shit surprisingly hard

jovial vault
solar jacinth
#

Agreed

#

Also what are you working on

#

Oh

#

Gun mod

#

Yeah

jovial vault
#

marmu spikes are also done

solar jacinth
#

Pog

jovial vault
#

uwu

#

anyone want modding art while im on a roll

solar jacinth
#

Mino drawing my character when soulpensive

jovial vault
#

oh shit yeah i could do that rn

#

send a pic in art discussion or smt

#

and ill get back to you after i finish gun mod stuff

solar jacinth
#

K

copper nacelle
#

Potassium

solemn rivet
#

Possum

jovial vault
#

ok

solemn rivet
#

bloodstained arriving in two weeks got me like GWczoneTentacles trobbiogasm

jovial vault
#

56 literally wyd

#

gradow what the fuck is that second emote

#

sigh

#

im leaving

solemn rivet
solar jacinth
#

lmao

solemn rivet
#

it's an official emote of this server

solar jacinth
#

its this servers emote

jovial vault
#

who added this

#

benji

solar jacinth
#

im so glad that they added maggotprime

solemn rivet
solar jacinth
#

also wtf is

#

yup

solemn rivet
#

hornet is hongry

solar jacinth
#

was going to say that

#

how did u know

solemn rivet
#

I mean

#

if you're my fancult

#

then I am your god

solar jacinth
#

hklove graadoww

jovial vault
#

what's a god to a nonbeliever

solemn rivet
#

therefore I am omniscient (when it comes to my fanbois at least)

jovial vault
#

2 people

vagrant leaf
solar jacinth
solar jacinth
#

wait benji is a modding staff ?

#

what mods did he do

jovial vault
#

Benji and simo just have all of the roles as a joke i think

solar jacinth
#

yeah , i dont think benji is a speedrunner , modder and artist at the same time

trim totem
#

they have all the roles for testing purposes probably

buoyant obsidian
#

do not doubt Benji's many talents

leaden hedge
#

banjo can play the benji

floral zealot
#

he's the legend27

copper nacelle
#

pretty sure it's just cause he can

#

roles don't matter when you have a role with administrator

charred parrot
#

roles dont matter when you own everyone and everything under an iron fist

brazen mortar
#

Dictators brand themselves titles all the time

thorn comet
#

Um, it's also for the fact if someone pings a role we're aware of it too; to pick up on meme pings or just help if possible

leaden hedge
#

just disable all pings intenseface

weak lodge
thorn comet
#

@ everyone
Okay zote

leaden hedge
#

actually I have a better request

#

disable the hotdog emote

hollow pier
#

no

silk jetty
#

I dont think you can disable individual emotes

thorn comet
#

Immediate ban for all those that use it? Say I

leaden hedge
#

make a bot delete it everytime its posted

hollow pier
#

ban kdt

weak lodge
#

pete did you complete the prophecy yet

leaden hedge
#

don't ban me

silk jetty
#

ban KDT

hollow pier
#

bro what prophecy

leaden hedge
#

ill come back under an alias

weak lodge
#

of leaving to go do celeste runs and come back later to take hk wr

leaden hedge
#

TDK

hollow pier
#

hk GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL GWmemetownOMEGALUL

weak lodge
#

hey dont billie me ๐Ÿ˜ก

silk jetty
#

pete, speedrun eroico

rain cedar
weak lodge
silk jetty
#

what is that emote even supposed to convey

hollow pier
silk jetty
#

thanks guys

leaden hedge
weak lodge
#

what is this emote supposed to convey ๐Ÿ‘บ

#

tengu

silk jetty
#

๐Ÿ˜ก it's clearly supposed to convey Sword Saint

weak lodge
#

but sword saint was pretty free

rain cedar
#

what

silk jetty
#

I find Demon of Hatred easier

rain cedar
#

Hardest boss in the game easily

weak lodge
#

ech demon was ass for me

silk jetty
#

I'm really fucking bad at deflecting spear attacks

leaden hedge
#

You strafe and he misses then you hit him twice

silk jetty
#

which probably doesn't help at all

weak lodge
#

eh sword saint wasnt that big of a deal for me, yea he took me a bunch of times on my first run but i doubt i crossed 35 deaths

leaden hedge
#

Repeat until phase 2 and hit him with the firecracker

#

Then he dies instantly

weak lodge
#

imagine using prosthetics on sword saint

silk jetty
#

I only use shuriken to make him stop staying away like a bitch when I fall off or have to heal

leaden hedge
#

He has a gun thats cheating

weak lodge
#

i mean he does pull a sword and gun out of his ass

#

well

#

shoulder

#

and also the spear

silk jetty
#

and genichiro pulls an old man out of his shoulder

weak lodge
#

everybody gangsta till grandpa crawls out of your shoulder GWczoneHotdog

silk jetty
#

question, is it in logic to get to hiveblood/hive mask shard with only tram pass and dive with shade skips misc skips and fireball skips on

silk jetty
#

also, in rando 3 does having it so that logic is only in easy locations or whatever does it start you with lantern?

#

because I started with lantern for some reason even though it was from flukemarm

leaden hedge
#

its probably an anti-darkroom thing

silk jetty
#

ech I guess

weak lodge
#

darkmoon blade

unborn flicker
#

if only there were a channel to ask these questions

#

where I've already posted the answers many times

silk jetty
#

I'm not gonna scroll through modding help

#

or ask questions there

unborn flicker
copper nacelle
#

ok buddy

#

have you considered

unborn flicker
#

hmmm

#

TIL the difference between value types and reference types

#

also, my mod is hella fucked

leaden hedge
#

I don't think you can pass by value in csharp

#

everything is a reference

unborn flicker
#

yes, it's quite unfortunate

leaden hedge
#

oh you're complaining about shallow copies

#

understandable

unborn flicker
#

I had a lot of methods which looped by adding stuff to int[] obtained

#

to determine what was reachable

buoyant obsidian
#

why would you want to pass by value ๐Ÿคข

leaden hedge
#

its faster for primitives

buoyant obsidian
#

wait are primitives not pass by value?

charred parrot
#

KDT-sama can I see your collision code again I want to try a thing

buoyant obsidian
#

like int and float and the like

leaden hedge
#

they are in csharp probably

copper nacelle
#

primitives are by value yeah

leaden hedge
#

but in c++ you can pass them by reference

copper nacelle
#

as are structs

#

I mean you can pass them by ref in c#

buoyant obsidian
#

alright thought so

copper nacelle
#

just use ref

leaden hedge
safe hamlet
#

wait you pass primitive types by reference in C++?

leaden hedge
copper nacelle
#

you can

leaden hedge
#

in c++ you can do anything you want

safe hamlet
#

is it normally passed by reference tho?

leaden hedge
#

but by default it'll pass everything by value

safe hamlet
#

ok that makes more sense

unborn flicker
#

This is the culprit for me. I had assumed the method wouldn't actually alter the array

#

Now that I think about it, I guess it always has newObtained == obtained

safe hamlet
#

not really relevant but i think you can use IEnumerable<string> as the return type and yield return the transition, saves you the hassle of creating a new list

floral furnace
#
Type goType = HeroController.instance.transform.GetType();
FieldInfo[] myField = goType.GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);

foreach(FieldInfo fi in myField)
{
Log(fi.Name + " " + fi.GetValue(HeroController.instance.transform));
}

uhh this should print out all the variable/field names AND values of that transform instance right

safe hamlet
#

aren't all the stuff in transform properties?

#

try using GetProperties instead

floral furnace
#

alrighty ill try that too

solemn rivet
#

Object.FindObjectsOfType<Transform>()

#

if you iterate over that list and check if they're parented to HeroController I think it would be better

floral furnace
#

jesus christ nvm, apparently my only problem was is my object wasnt set to DontDestroyOnLoad, which like you said gradow yesterday, was probably being inherited whenever i parent something

#

cuz i did the dumbest way of debugging it, i Logged a double var that increments everytime update occurs and for some reason it just stops when the game fully loads

solemn rivet
safe hamlet
jovial vault
#

Morning

rain cedar
#

wrong

jovial vault
#

Unfortunate

safe hamlet
#

morning mino

copper nacelle
#

wrong

solemn rivet
#

supmino

unborn flicker
#

It still crashes on building the spanning tree sometimes grimmpalm

rain cedar
#

Nobody gonna comment on

HeroController.instance.transform.GetType()

?

#

Massive brain

#

any typeof(Transform)

floral furnace
#

look i thought you needed the type of the actual instance itself to get its value, plus im bad at using reflection

#

hi bad at using reflection

unborn flicker
#

With the new settings, can I use a SerializableStringDictionary as a public dictionary I can refer to elsewhere? Or do I have to convert it to an array or something first?

rain cedar
#

SerializableStringDictionary is just Dictionary<string, string> with some fluff added using ISerializationCallbackReceiver

#

So yeah you can use it

unborn flicker
#

ok, cool

rain cedar
#

Probably cast it to Dictionary<string, string> to make it easier

unborn flicker
#

I guess you converted it into an array for rando because you don't need the structure of a dict if you're assigning actions to everything?

rain cedar
#

It's just better compartmentalization

#

There's a word for it in programming but it's slipping my mind right now

#

Basically if something doesn't need to be publicly modifiable it shouldn't be

#

Because you might do it on accident

#

And converting it to a new data type before returning has that effect

unborn flicker
#

I see, that does make sense

unborn flicker
#

56, did you have a way to get the gate info from the previous room with your hook?

#

Oh, I guess I could just check against vanilla destinations

#

That would be tedious to add, but doable

#

I'm trying to find where to modify entry gate coordinates, for stuff like the Mantis Lords gate, etc

rain cedar
#

You mean where the gate takes you to or where the gate is at in the scene?

#

I guess the second one makes more sense

#

It's just an object

#

Modify its transform

unborn flicker
#

I think this will do for coordinates:
GameObject.Find(info.EntryGateName).GetComponent<TransitionPoint>().entryOffset

#

where the gate takes you, preferably

#

just to prevent it from putting you behind walls and such

unborn flicker
charred parrot
#

@leaden hedge Did you make a TAS for Celeste

#

?

leaden hedge
#

I worked on the TAS yes

charred parrot
#

monster

jovial vault
#

TAS for hk when

safe hamlet
#

never

jovial vault
#

make one

safe hamlet
#

nou

jovial vault
#

u

safe hamlet
#

learn to mod mino

jovial vault
#

soonโ„ข

solar jacinth
#

imagine modding hk when there is minecraft

rain cedar
#

Finally someone gets it

mellow elbow
#

Imagine modding when there's literally so many other games to play

#

This is why I never finish anything

hollow hearth
#

@ornate rivet STOP

#

PLEASE

jovial vault
#

he's not going to see this yknow

floral furnace
#

is he still camping on twitter

jovial vault
#

yes

#

dms me at least once a day for brandon sanderson updates

floral furnace
#

interesting GWchadMEGATHINK

jovial vault
#

it really do be like that

#

also ah fuck ill dm you the directions thing today

#

i have way too much art piled up lmao

solar jacinth
#

free real estate

jovial vault
#

just gotta get a couple more things done and then ๐Ÿƒ no more art for yall

solar jacinth
#

what happened to him tho

#

i still wait for pc sadgrub

jovial vault
#

he is busy

#

im just like whatever as well. had some stuff kinda planned but ee rip those mods

solar jacinth
#

ohk

jovial vault
#

ye

solar jacinth
#

damn modding channel loses members hollowsad

jovial vault
#

sad

#

now i'll actually have to code shit myself

solemn rivet
#

If you need help mini

jovial vault
#

gradow my brother calls me this and it bothers the shit out of me

#

smh

solemn rivet
#

Sorry I bit my tongue

#

If you need help meanie

jovial vault
#

uwu

#

yea ill look at C# stuff when im done with this pile of modding art and commissions

#

a lot of it's gone considering saleh's not here

solemn rivet
#

oof

#

Where's my free art of a tentacle monster attacking 2b

#

smh

leaden hedge
#

reported for sinning

jovial vault
#

where's my $69420

solemn rivet
#

I didn't sing

#

Done, it's in your bank account

leaden hedge
#

what kind of dollar

#

zimbabwe dollar

fair rampart
jovial vault
#

ok

solemn rivet
#

I payed in geo

#

Hope that's fine

fair rampart
#

is there a mod to get all pale ores mask shards and vessel fragments?

hazy sentinel
#

yeah it's called playing the game

fair rampart
#

i don't like this mod

solar jacinth
#

yes there is debug

fair rampart
#

how do i open debug

solar jacinth
#

f1

fair rampart
solar jacinth
#

download debug

#

and then

#

noclip

fair rampart
#

ok how do i?

solar jacinth
#

download debug

fair rampart
#

ok

#

but i have to leave to download?

solar jacinth
#

yes ?

#

its in the installer

fair rampart
#

damn there aren't many good hollow knight mods

#

just 5 or 6

jovial vault
#

well then

#

time for you to make a good hollow knight mod

fair rampart
#

lol

#

i don't know anything about programming

upper niche
#

Petition for someone to make a mod that changes uumuu's name to uuwuu

jovial vault
#

u

leaden hedge
#

its like half a second to do yourself

fair rampart
#

now that i installed modapi there are more good mods

jovial vault
#

i mean

#

try some

fair rampart
#

what's custom knight

leaden hedge
#

lets you replace knights texture

fair rampart
#

arts mod?

leaden hedge
#

shitpost

solemn rivet
#

wait

#

what mods were you playing before the api

jovial vault
#

bonfire

#

i think infinite charms

#

from what they posted

hazy sentinel
#

dreamshield co-op

young walrus
#

chaos mod

opaque axle
#

hey uhh my small baby brain can't locate the randomizer mod can someone help me

young walrus
opaque axle
#

thanks

fair rampart
#

shit white lady glitched idk why

jovial vault
solemn rivet
jovial vault
#

gun mod production vs my mental health

#

fight

solar jacinth
#

best mod ever

solemn rivet
#

why not replace the nail with the gun

#

and only move it to holding position when you fire it

#

that's easier to draw, right?

solar jacinth
#

no

#

you are not drawing you are duplicating a gun drawing and posing it

jovial vault
#

^

#

also changing the cloak a bit

#

also it's swappable b/w nail and gun

leaden hedge
#

can you not make the gun sprite more aesthetic

#

over an ak47

unborn flicker
jovial vault
#

ttacco wanted this ยฏ_(ใƒ„)_/ยฏ

leaden hedge
#

its understandable if its a 0 effort shitpost

jovial vault
#

nah i had a more aesthetic gun but we swapped it out

#

it's fine tho

#

as long as it both plays and looks consistent

solemn rivet
#

make it customknight compatible tho

#

so people can sprite their own guns

jovial vault
#

yeah but like that's pasting and making sure the guns are consistent on each sprite

#

that's effort

leaden hedge
#

could you not use smart layers

jovial vault
#

ill have to edit the sprite multiple times because things like perspective exist

solemn rivet
#

at least you're getting paid amirite

jovial vault
#

doesn't look as good

#

i am getting paid in exposure duh

buoyant obsidian
#

nice

solemn basin
#

Was the Poorly Translated mod finished or still being worked on?

jovial vault
#

oh yeah

solemn basin
#

I remember seeing that initial stuff had been done but that there were things like "page break" in the text.

jovial vault
#

gradowdaddy how is that going

#

that hurt my soul to type

copper nacelle
#

it would've cost you 0 dollars to not type that

jovial vault
#

you're welcome 5fiftysix6 ๐Ÿ˜ƒ

solemn rivet
#

forall

#

Oh yeah I forgot that existed mino

jovial vault
#

sad

solemn rivet
#

56 stream rain world again

jovial vault
#

wasn't this like a group modding channel project, and it's been abandoned sadgrub

#

56 streams rain world?

solemn rivet
#

Best rw streamer

copper nacelle
#

I mean the only thing that needs changing is the tags

#

You could remove the tags within the messages via regex pretty easily

solemn rivet
#

Tbh I should do that before translation tho

copper nacelle
#

but that requires retranslation

#

mega effort

solemn rivet
#

Because some broke, some work and some were assembled into the text

#

Like, one <page> became <website>

copper nacelle
#

very nice

solemn basin
#

Thanks for the answer! Best of luck finishing it.

unborn flicker
#

Hey 56, is there an easy way to get gate info from the previous scene from On.GameManager.BeginSceneTransition?

#

Or to lookup where a given gate leads to?

copper nacelle
#

I can check in a minute

unborn flicker
#

yeah, thanks

copper nacelle
#

omw home ๐ŸŽ

jovial vault
#

๐Ÿƒ

unborn flicker
#

I didn't see anything in dnspy, but you never know

solemn rivet
#

omwo what's this

copper nacelle
#

@unborn flicker why are you using BeginSceneTransition btw

#

You can just hook the gate itself

unborn flicker
#

that's what you were using

copper nacelle
#

ah

unborn flicker
#

how do you hook the gate?

copper nacelle
#

You can hook TransitionPoint

#

You might just be able to loop over all the transition points and use tc's built in event

#

And you can get the gate direction from BeginSceneTransition if you want

#

but not the specific gate

#

so if there are 2 right gates you can't say which one

unborn flicker
#

yeah, that's the issue

#

it doesn't come up too often though

#

can you get the previous scene too?

copper nacelle
#

I mean before calling orig just check the current scene

#

I guess you could actually figure out the gates via WorldNavigation

#

Because you have EntryGateName and SceneName

#

Nevermind WorldNavigation is missing the actual to scene

#

unfortunate

unborn flicker
#

pensive

copper nacelle
#

You could do something that's kinda cancer

#

Make a stackframe and read up the call stack for the TransitionPoint's call to the method

#

actually

#

You could GetObjectOfType<TransitionPoint>.First(x => x.targetScene == SceneName && x.entryPoint == EntryGateName)

unborn flicker
#

modify each transition point immediately after randomization, rather than on transition?

copper nacelle
#

no

unborn flicker
#

right now I have a dict which is (entrance, new exit)

#

and I have don't have anything to give old exit => entrance

#

Ok, the hook you mentioned earlier would be On.GameManager.FindTransitionPoint, right?

copper nacelle
#
        private static void RandomizeTransition(On.GameManager.orig_BeginSceneTransition orig, GameManager self, GameManager.SceneLoadInfo info)
        {
            if (string.IsNullOrEmpty(info.EntryGateName) || string.IsNullOrEmpty(info.SceneName))
            {
                orig(self, info);
                return;
            }

            // Note that we haven't changed the scene yet so we can just get stuff before actually calling orig
            var tp = UnityEngine.Object.FindObjectsOfType<TransitionPoint>.First(x => x.entryPoint == info.EntryGateName && x.targetScene == info.SceneName);

            Logger.Log("Gate is " + tp.name);
            orig(self, info);
        }
unborn flicker
#

ok, I see now!

#

a fundamental misunderstanding of orig was at play here

copper nacelle
#

ah

#

note that if you do something like

#

never calling orig at all

#

the original function just never happens

unborn flicker
#

right

#

I thought we just used it to update the info

copper nacelle
#

understandable

floral zealot
#

ununderstandable

real furnace
#

Someone should make a HK mod that puts grave markers at crystal lake for every NPC that has left or died

rain cedar
#

at what

unborn flicker
#

commenting out the two tp lines makes them work normally again

#

according to debug it doesn't leave the scene

copper nacelle
#

check output_log

rain cedar
#

It's probably throwing

#

So orig doesn't happen

#

Do FirstOrDefault and null check

copper nacelle
#

^

unborn flicker
#

yeah, that fixed transitions

#

ok, yeah, I'm getting logs now. Thanks

copper nacelle
unborn flicker
#

I have a bit more to work on, but I'll stream more tonight

#

fotf is now randomized normally. I'm thinking I'm going to have the player start the game with ~200 geo, since it's possible to be forced into KP => Queen's Station => Dirtmouth

mellow elbow
#

Is there any way to hook some sort of a map into it? I feel like I'm going to be so lost

rain cedar
#

Randomized transitions aren't going to make sense in a standard map

solar jacinth
#

you can make a map in your mind

unborn flicker
#

Incredible. I randomize 4 doors. The doors to Emilitia and Crystallized Mound have transition points. The doors to Ancestral Mound and Overgrown Mound don't. shroompog

#

nah, that's not exactly right. Rather, those last two doors don't properly refer to their target scenes, I think

unborn flicker
#

I just had a powerful category theory moment while modding trobbiogasm

#

but Gradow is not here, so I will wait to share it

brazen mortar
#

Arenโ€™t there more doors in hollow knight than just those

unborn flicker
#

Not that I'm aware of

brazen mortar
#

Like the nailmasters

#

Or do those not count

unborn flicker
#

fake doors

brazen mortar
unborn flicker
#

I only randomized doors leading to different areas

brazen mortar
#

O

unborn flicker
#

though, obviously, "area" is something defined on an ad hoc basis

brazen mortar
#

Trying to think of exceptions

#

Uh

#

Right teachers archives

#

Door or no door

unborn flicker
#

I didn't randomize it, but I considered it

#

same with Beast's Den

brazen mortar
#

And weavers den?

unborn flicker
#

No. Only the 3 mounds, and the passage from CoT to Waterways

brazen mortar
#

I see

#

But there are two passages from CoT waterways that have โ€œdoorsโ€

#

Junk pit tbh

unborn flicker
#

I consider Junk Pit part of Waterways ๐Ÿ˜Ž

#

No one wants to go there anyways

brazen mortar
#

No love for fluke hermit

unborn flicker
silk jetty
#

are you gonna count left waterways as different than right waterways

unborn flicker
#

no

#

they are connected by the central shaft

#

Even though that room is named Abyss, and the CoT map shows it as Basin, Jiji has spoken, so it is in Waterways

solemn rivet
#

Am here

#

Speak of categories

unborn flicker
#

it wasn't as good as I first thought

#

but I have two special kinds of transitions: those tagged as deadends, and those tagged as isolated

#

and I realized those are categorical duals

#

a deadend is a transition which doesn't lead to any other transitions, so it also doesn't contribute to any logic
an isolated transition is a transition which can't be reached from any other transition, so it doesn't have logic for reaching it

#

and so if you have an area with one deadend and one isolated transition, there's a sense in which those are terminal and initial objects, respectively, I think

solemn rivet
#

Ex of isolated transition?

#

Like, nailmasters rooms?

unborn flicker
#

one with a breakable wall, like the one coming up into Howling Cliffs from King's Pass, or into City of Tears from Emilitia

#

An area with only one transition, like the mounds or the Abyss, necessarily has both properties on its transition

#

a deadend would be like entering QG from Fungal Wastes

solemn rivet
#

Right

charred parrot
#

The more I work on this project the more I come to terms with the ultimate truth of the universe.

#

KDT is always right.

unborn flicker
#

I have stream

leaden hedge
#

whos trying to donate kidneys to 56

#

ill take ur kidneys

floral furnace
#

depends, how many pocket lints do you have on you

leaden hedge
#

i dunno I can probably get more if I get a free kidney out of it

#

I can't wait to have 4 kidneys im gonna be able to do double the amount of toxic things a normal human can

floral furnace
#

fucking deal

charred parrot
#

I think I'm going to need to fake a FixedUpdate

safe hamlet
#

uneedtofake

charred parrot
#

holy shit Unity added the ability to turn off autoSimulation

#

and gave you the ability to call physics when you want

#

....I guess it's time to create my own GameLoop

charred parrot
#

@leaden hedge I summon thee.

jovial vault
#

Just donate in a kidney

leaden hedge
#

ye

solemn rivet
#

can I just donate a kidney?

unborn flicker
#

me 3 hours ago: I'm getting Mantis Claw at fury too often, let me put a slight weight to make it appear later

#

randomizer: ok I will put claw at soul catcher

#

me: oh that sounds very nice

#

randomizer: blocked by lantern at void heart

#

me:

leaden hedge
#

imagine being pinged and then not even asked a question @charred parrot

jovial vault
#

Big rip

#

KDT explain why japanese particles are just a big ๐Ÿ˜ฉ thats a question for you

solemn rivet
#

I'll play some more celeste in a while

jovial vault
#

ye just ping me since ill be awake

unborn flicker
#

unbelievably big-brained seed
Mines_33 is the Crossroads dark room, linked to Ancestral Mound

charred parrot
#

Sorry

#

was talking with Unity people

#

so it turns out you were right

leaden hedge
#

i dunno about what

#

but I knew it

charred parrot
#

10/10

#

I'm going to be controlling the character through regular position sets as opposed to Rigidbody garbage

#

I am however going to keep a Kinematic RB on it just so it can react to triggers

#

the thing is that the Physics Simulation happens freaking whenever

#

so I'm going to be making my own Game Loop

leaden hedge
#

I'd only ever trust a rigidbody to work on something non-game mechanic related

charred parrot
#

that calls 2D Physics from within Update

leaden hedge
#

that looks suspicously like my code

charred parrot
#

So player movement, Unity physics and drawing will happen together

#

in order

#

I'm also going to have 1 single Update loop with delegates

#

and things will just hook in

#

because apparently the Update loop is actually quite intensive

#

when there's a bunch at least

leaden hedge
#

if you want to be cooler, move your while(statetime > completedframes) into a single gamemanager

#

and just call them all one by one in that

charred parrot
leaden hedge
#
    void Update()
    {
        Time.timeScale = timeScale;
        while (StateTime > CompletedFrames)
        {
            inactive.Clear();
            for (int i = Entity.entities.Count - 1; i >= 0; i-- )
            {
                if (Entity.entities[i].StateTime > Entity.entities[i].CompletedFrames)
                {
                    Entity.entities[i].uf(Entity.entities[i], 1);
                    Entity.entities[i].CompletedFrames++;
                    if (!Entity.entities[i].active)
                        inactive.Add(Entity.entities[i]);
                }
            }
            foreach (Entity e in inactive)
            {
                e.Remove();
                Entity.entities.Remove(e);
            }
            CompletedFrames++;
        }
    }
charred parrot
#

Time.timeScale = timeScale;

#

eh?

#

for time slow effects?

leaden hedge
#

doing it this way makes sure everything always goes in the same order
i.e. if you had to do 2 frames the other way it'd do
aabb
but with this it does abab

#

the timescale is just so I can have a slider

#

to slow the game down

charred parrot
#

ya figured

#

I mean I kinda want to do aaaa bbbb though

#

or do I

leaden hedge
#

no you want abab

#

as thats how it'd work if you didn't lag

charred parrot
#

I do this is true

#

oh 1 question actually

#

back to this at the bottom

#

you had your control function AFTER everything else

#

why?

#

wouldn't that mean the inputs would be applied a frame after

#

instead of the frame of the input

leaden hedge
#

won't really add lag as cf is probably getting called a fuck tonne of times compared to uf

charred parrot
#

going to try to write something

#

do you mind giving it a look in a bit?

leaden hedge
#

sure

charred parrot
#

ty

leaden hedge
#

if you moved it so cf only ran on the frames uf did, then yeah move it before

#

which is really what you should do

#

and make the player input just read from a buffer, that you write to every frame, regardless of if its a 1/60 frame

charred parrot
#

ya I'm going to add an input buffer later

#

is it just 1 button press per frame?

#

meanwhile axes can be whatever

unborn flicker
#

@rain cedar I just replicated a bug on the build of the randomizer from your github. After obtaining the first item in an additive item set, the others despawn from their locations

solemn rivet
#

wait, I just realized something about room rando

leaden hedge
#

just store the state of the input device

#

well, after keybinds

solemn rivet
#

what if the exit of Sly's store links to Iselda's store, and vice-versa

unborn flicker
#

that's why I made such a big deal about the special labels for certain transitions earlier

solemn rivet
#

right

unborn flicker
#

My method runs

  1. build spanning tree (without using deadends, King's Pass is excluded)
  2. place oneway transitions and isolated transitions (the 2-way King's Pass transitions cannot be used here)
  3. place remaining transitions using logic to constructively ensure completability
charred parrot
#

@leaden hedge I'm assuming you're using 60 because you want to lock to a 60 fps simulation?

unborn flicker
#

because there are so many unnecessary transitions, I can afford to waste a dozen at random on the spanning tree, just to guarantee connectedness

solemn rivet
#

right right

leaden hedge
#

60fps is just standard

charred parrot
#

time to run the game at 10

jovial vault
#

Lazy.

unborn flicker
#

It's interesting to think about though. You would need a very different algorithm given different complexities of transition requirements, distribution of item locations, number of extra transitions, and so on

charred parrot
#

Mino.

jovial vault
#

Cease

charred parrot
#

wait whats the logic again behind not just slapping everything in FixedUpdate and telling FixedUpdate to run at 60fps

leaden hedge
#

go for it

charred parrot
#

huh

rain cedar
#

Unfortunate

charred parrot
#

no ghost plz

leaden hedge
#

fixedupdate works weird

#

wouldn't trust

unborn flicker
#

reverting GetAdditiveBoolName to what it was before the May commits seemed to fix the problem I mentioned

#

I didn't put too much thought into it though, so who knows

charred parrot
#
{
    public static MasterLoop instance { get; private set; }

    public static event Action GameUpdate;
    public static event Action GameControlUpdate;
    public static event Action GameFixedUpdate;

    private static long totalFramesSinceStart;
    public static long TotalFramesSinceStart
    {
        get { return totalFramesSinceStart; }
        set
        {
            totalFramesSinceStart = value;
            TotalFrameProgress?.Invoke(totalFramesSinceStart);
        }
    }
    public static event Action<long> TotalFrameProgress;

    private static long totalPhysicsFramesSinceStart;
    public static long TotalPhysicsFramesSinceStart
    {
        get { return totalPhysicsFramesSinceStart; }
        set
        {
            totalPhysicsFramesSinceStart = value;
            TotalPhysicsFrameProgress?.Invoke(totalFramesSinceStart);
        }
    }
    public static event Action<long> TotalPhysicsFrameProgress;

    public static double TotalTimeSinceStart { get; private set; }

    private float fixedTimer;
#

    private void Awake()
    {
        if(instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
            Physics2D.autoSimulation = false;
        }
        else
        {
            Destroy(gameObject);
            return;
        }
    }



    void Update()
    {
        GameLoop();
    }



    private void GameLoop()
    {
        if(TotalTimeSinceStart == 0)
        {
            GameFixedUpdate?.Invoke();
            Physics2D.Simulate(1 / 60f);
        }
        while (fixedTimer > (1 / 60f)) 
        {
            GameFixedUpdate?.Invoke();
            Physics2D.Simulate(1 / 60f);

            TotalPhysicsFramesSinceStart++;

            fixedTimer -= (1 / 60f);
        }

        GameControlUpdate?.Invoke();
        GameUpdate?.Invoke();

        fixedTimer += Time.deltaTime;
        TotalTimeSinceStart += Time.deltaTime;
        TotalFramesSinceStart++;
    }
}```
#

@leaden hedge

#

probably doing something dumb

rain cedar
#

Looks functionally the same to me

charred parrot
#

as?

rain cedar
#

Not you, sorry

charred parrot
#

aw

rain cedar
#

@unborn flicker Did you test the same seed/items?

#

Before and after reverting

unborn flicker
#

I tested the same items, not same seed

#

I had it happen with VS, cloak, and kingsoul on my mod, and cloak when I tested on yours

#

I assume it affected all additive groups equally though, I wasn't thoroughly testing

charred parrot
#

Dash Distance

#

are you not entertained

copper nacelle
#

consistency Pog

hollow hearth
#

very entertained

silk jetty
#

woah woah woah are you making a mod to make the game consistent for TASing

copper nacelle
#

thinking lazy actually mods this game GWmemetownOMEGALUL

leaden hedge
#

theres already a mod to make the game consistent

silk jetty
#

wait there is

leaden hedge
#

its called replacing all the c++ functions for time/random with calls to c#

silk jetty
#

huh

#

oh

leaden hedge
#

yeah I only bothered to replace the time call

#

but it'd be like 20minutes or something to find the rng function

charred parrot
#

imagine thinking I would waste my time modding this shit game when I could be making my own shit game

golden vine
#

What does the "RandoMapMod" do

copper nacelle
#

it shows rando stuff

#

on the map

golden vine
#

such as

leaden hedge
#

how much does it cost to make them not ? and say what they are

golden vine
#

thanks

safe hamlet
#

it's pretty much free if you are willing to put effort

rain cedar
#

I think I know what's wrong with the additive items in the current rando

#

The locations are serialized in a dictionary, which is unordered

#

So sometimes when you load your save it'll put the items in different orders

#

And they'll get different bools assigned to them

#

Shouldn't ever break if you don't quit, if that's the case

unborn flicker
#

Hmmm, that doesn't seem right

#

I did a test where I benchwarped to get cloak at MoP, and then benchwarped to Great Slash where shade cloak should've been

#

no quitouts

rain cedar
#

Even if it's not the only problem it's still a problem, at least

unborn flicker
#

yeah, that's fair

charred parrot
#

Silksong at E3?

floral furnace
#

it will be

charred parrot
#

you think?

floral furnace
#

radio silence says it all

ornate rivet
#

yes I can confirm

floral furnace
#

saleh youve literally disappeared from the face of the earth for 3-4 days did you finally finish your book

ornate rivet
#

no, I did not finish Hero of Ages

copper nacelle
#

wtf

ornate rivet
#

and I still have not finished PC

#

but

#

but

mellow elbow
#

look, I already called silksong at e3

safe hamlet
#

saleh

#

we need to talk

copper nacelle
#

can you let him finish the but ๐Ÿ˜ 

floral furnace
#

hehe

#

finish

#

hehe

ornate rivet
#

I am getting a free ride for the freshmen year of university because of all the scholarship work I've been doing

floral furnace
#

sorry too immature?

ornate rivet
#

so that's good

copper nacelle
#

congrats

ornate rivet
#

thank you

#

now I need to do it 3 more times

floral furnace
#

another one taken by uni, say good bye to your free time ๐Ÿ˜”

ornate rivet
#

also

#

wtf

#

we have so many emotes

safe hamlet
floral furnace
#

nitro boosted

copper nacelle
#

yeah we got nitro boosted

ornate rivet
#

incredible

floral furnace
#

hence the banner too

ornate rivet
#

ah yes

#

:smugrad:

#

unfortunate

copper nacelle
ornate rivet
#

sigh

floral furnace
#

this fuckin emoji is apparently too good for this server so they didnt add it

ornate rivet
floral furnace
#

56 i just realized why are you a universal quantifier

copper nacelle
#

forall is a nice symbol

floral furnace
#

agree

fair rampart
#

any โˆƒ

floral furnace
#

imagine using there exist

ornate rivet
#

any existential crisis

#

what if June 13th passes and no silksong news comes

safe hamlet
#

null ref on GameInspector.PrintObject shroompog

floral furnace
#

then we literally do nothing

#

but i doubt, theres gonna be a 80% chance it shows up at least some extra gameplay on treehouse, they didnt mention anything about "hey guys please shut the fuck up about e3 were not going thanks ๐Ÿ˜ƒ"

ornate rivet
#

56 is it okay if I read secret history before alloys of law

copper nacelle
#

I think I'd actually recommend you do so

charred parrot
#

Is Hollow Knight a Nintendo IP

#

The answer is yes.

#

Hornet for Smash

copper nacelle
ornate rivet
#

wow I can use maggotprime now

floral furnace
#

whats the point if even, lets say, the most faintest chance of it happening, hk gets into smash, itll end up getting torn apart because the slot was "stolen by a dumb indie character noone cares about" when their favorite character shouldve been added instead

ornate rivet
#

honestly that would make it even better

floral furnace
#

just, inhale the salt

charred parrot
#

there isnt any Indie representation in smash

#

thus

#

Hornet for Smash

floral furnace
#

i cant believe smash would spoil all of silksongs moveset this cant be real this cant be happennig

#

also notice, leth has been way more online these days hmmm coincidence??!?

copper nacelle
#

yes

leaden hedge
#

they should put crawlid in smash

fair rampart
#

They should put maggotprime in smash

charred parrot
#

I'm sorry guys I have failed you

leaden hedge
#

reported