#archived-modding-development

1 messages ยท Page 24 of 1

tawny lynx
#

Unless you're transitioning from fundamentally different types of languages.

young walrus
#

like java to.... spanish

pine condor
#

.

#

funny

#

i also want to try ap spanish

leaden hedge
#

all the programming languages are sort of like dialects of the same language

pine condor
#

so learning java

leaden hedge
#

the base concepts are the same, structure is usally the same, but sometimes slightly different words

buoyant wasp
#

learning programming is learning to think with problem solving and logic in mind. each language has it's own syntax, style, libraries, etc. but most you're likely to come across work at a high level in the same way

pine condor
#

will help me understand javascript?

tawny lynx
#

Well, not always. LISP-like languages are pretty different from others.

leaden hedge
#

aslong as you don't try brainfuck or malboge hollowface

buoyant obsidian
#

whitespace is the best lamguage

buoyant wasp
#

there is really weird stuff that's specialized (like R, or RPG or super specialized for s specific function)

broken fable
#

APL

ornate rivet
#

Assembly is the best programming language

tawny lynx
#

Functional and OOP are pretty different too.

pine condor
#

hm

#

i dont think ill be going that deep

leaden hedge
#

but yes if you learnt java you'd be able to read javascript

buoyant wasp
#

java is a fine starting language, it, along with javascript, c# and python are all very popular

leaden hedge
#

functional languages are basically dead

pine condor
#

oh

tawny lynx
#

How so?

broken fable
#

whatever you do, don't learn C++ as your first language. it's confusing as hell.

buoyant wasp
#

but it sounds like the book you got is perhaps 1 book further than you should be

ornate rivet
pine condor
#

out of curiosity what is the coding of vg like hk?

buoyant obsidian
#

C#

buoyant wasp
#

HK is all C#.Net and Unity

broken fable
#

HK is kind of a mess. it's C# plus a bunch of other stuff.

pine condor
#

is that typical for vg?

leaden hedge
#

no

buoyant wasp
#

well

leaden hedge
#

most videogames will be in C++

tawny lynx
#

For indie games it can be pretty common.

buoyant wasp
#

there are quite a few Unity games now

tawny lynx
#

Unity is C++ or something.

leaden hedge
#

unity itself is c++

tawny lynx
#

Valve games are in C.

broken fable
#

Unity is a framework, not a language. you can use Unity from C#, C++, etc.

buoyant wasp
#

but yeah, most games are c++/c and for consoles are often inside of some very specific frameworks

leaden hedge
#

I think you can only use mono in unity

#

which is csharp

buoyant wasp
#

though consoles are alot better now days

leaden hedge
#

oh you can write javascript too in unity

buoyant wasp
#

less custom chips, more x86 variants

#

i heard the PS3 cell chips were a nightmare to code for

pine condor
#

okok

leaden hedge
#

don't learn c++ first

#

don't learn c first

pine condor
#

oh ye lol

tawny lynx
#

If you're interested in the hardware-side more though, could be a nice start a bit further down the line.

rain cedar
#

Any programming language where you have to do your own memory management is a horrible starting point

tawny lynx
#

Well, not hardware, more like memory management and so on.

broken fable
#

any programming language without type safety is a horrible starting point.

buoyant wasp
#

perhaps we should all go back to programing with punchcards

tawny lynx
#

Yes.

leaden hedge
#

but I want to use bitfields

ornate rivet
#

Therefore you should start with Assembly because it definitly doesnt require any memory management

buoyant wasp
#

also, yes, strongly typed languages are my preference

leaden hedge
broken fable
#

@buoyant wasp do you mean safely typed languages or statically typed languages?

deep pilot
#

Have to wonder whether Fortran is a good entry-level language

buoyant wasp
#

statically typed (java/c/c#/c++), though c# has dynamic now which is kind of a squishy thing, (i don't fully understand exactly how it does those in the backend)

leaden hedge
#

I learnt pascal and asm in college as my introduction

deep pilot
#

My language journey has been Java -> C & Fortran -> Python -> Julia

tawny lynx
#

I started with Java and PHP.

#

Now I'm mostly Python and Rust.

deep pilot
#

I'm also a casual Python programmer now

#

Although I've dipped back into C

broken fable
#

VisualBasic, Java, C++, Python, Batch, C#, JavaScript, MIPS, Haskell, Bash, Ruby, PHP, Rust, Perl, Zig. I know a little of everything. (and a lot of the good ones.)

tawny lynx
#

Ew, Bash.

deep pilot
#

Did a little bit of Perl & JavaScript

broken fable
#

ew, lots of languages.

deep pilot
#

But my primary languages are definitely C, Python, and Julia

tawny lynx
#

I mean to try Julia one day. Just need a project for it.

broken fable
#

today i started learning playmaker maggot

ornate rivet
#

what's playmaker?

#

I know TC uses it

leaden hedge
#

its a visual fsm editor

tawny lynx
#

Scripting thing for Unity I believe.

broken fable
#

yeah, it's a thing you use with unity. if you really want to understand hollow knight, you gotta learn it.

buoyant wasp
#

I started out on QBasic, then Borland C, then javascript/php, perl, more C, C++. Dabble in java a few times a week. mostly c#, javascript/html/css these days though. and more perl.

#

and SQL, lots, and lots of SQL

tawny lynx
#

If I never directly touch an SQL query again, it'll be too soon.

buoyant wasp
#

haha

#

I live in ERP databases, so, yeah. SQL is my bread and butter.

leaden hedge
#

erotic roleplay hollowlenny

broken fable
#

according to the ERP databases, what's the most popular character to dress up as?

tawny lynx
#

We had to do a course on ERPs. I never want to work with them again either.

buoyant wasp
#

lol

#

pays the bills, lets me work wherever i want, and i get to code. of course then i "come home(read as come downstairs)" and start coding for fun....

#

i think i might have issues

tawny lynx
#

That's not so bad.

broken fable
#

coding is just as healthy and legitimate a hobby as woodworking. nobody calls amature carpenters nerds. sheo

ornate rivet
#

Being a nerd is good as long as you are not a geek

tawny lynx
#

I was elected geek of the year in my last year of high school. But I didn't attend the ceremony because I was at home on my computer. hollowsad

buoyant wasp
#

i'm both a nerd and a geek

#

and i wear both with pride

tawny lynx
#

Yeah, I don't think they're mutually exclusive.

#

Though there are some archetypes about both that might be incompatible.

buoyant wasp
#

also, wow this conversation has gone so far off the topic of modding hollow knight

ornate rivet
#

^^

leaden hedge
#

good that theres no modderators

#

atleast none that care about shitposting hollowface

buoyant wasp
#

should go back to talking about kingsoul/queensoul and randomzier ๐Ÿ˜ƒ

tawny lynx
#

Life, the Universe, and Hollow Knight, all in one channel.

buoyant obsidian
broken fable
#

is kingsoul going to be randomized in two pieces or as an intact charm?

buoyant wasp
#

but now, time to "go home and eat dinner" then coding!

#

i think randomized in pieces

#

was the notion

leaden hedge
#

2 pieces

#

one gives charm 1, second gives charm 3

#

void soul would be unrandom

buoyant wasp
#

though, if you made WP a dead space entirely, you could i suppose make kingsoul a single piece

broken fable
#

WP being dead would be a real dick move for anyone that didn't know that.

buoyant wasp
#

eh, why? no one goes there now anyway

leaden hedge
#

cant be good anyway

ornate rivet
#

(I go there)

buoyant wasp
#

you have ot have everything to get through it

leaden hedge
#

you need everything required to beat the game to get there

buoyant wasp
#

that you need to beat the game

leaden hedge
#

so you'd just beat the game

buoyant wasp
#

^

broken fable
#

hundo rando, yo

#

gotta catch em all.

#

what does WP actually require? do you really need mothwing cloak, crystal heart, monarch wings, and mantis claw? all four of those? and obviously dream nail and awoken dream nail for entry.

#

you don't need shade cloak or spells, afaik.

hazy sentinel
#

crystal heart and monarch wings aren't required intenseface

leaden hedge
#

neither of which are required to beat the game

broken fable
#

crystal heart or isma's tear is required though, right?

leaden hedge
#

they cant both be in wp

hazy sentinel
#

just said crystal heart isn't required

broken fable
#

they can both be blocked by WP, if WP holds shade cloak.

leaden hedge
#

how

#

shade cloak doesn't block anything

broken fable
#

shade cloak blocks sharp shadow and white lady.

#

as well as markoth

#

can you access all of queen's gardens casually with no shade cloak or isma's tear? i think you can enter through deepnest and go everywhere, right?

#

well not everywhere.

#

or is there some one-way that i'm forgetting?

hazy sentinel
#

QG acid skip is casual hollowface

broken fable
#

you know, if we were worried about shop inventory space hogging all the good items in rando, we could always dilute the location pool by throwing grub jars in there. hollowlenny

buoyant wasp
#

crystal heart is 100% required for WP

#

there is a gap near the end of it that, without float, you can't cross

#

i think you could do it without double jump, though that'd be horrible, alot of the skips would be really hard without it

#

hmm, maybe, there are a few places that would take some work

hazy sentinel
#

if you're not using float then monarch wings and crystal heart are absolutely required

buoyant wasp
#

yeah, rando runs are NMG

#

(in general)

#

so, we get back to WP will never have anything good

#

so it's not a big deal to throw something in there in the pool when pulling kingsoul out

buoyant wasp
#

@rain cedar - outside of checking the "last changed date" of a save file, is there anyway in vanilla to determine which save the player is currently using?

broken fable
#

i want to mod the game so that gathering swarm works in grub room and coliseum. i'm so mad that it doesn't.

rain cedar
#

@buoyant wasp There is a profile id passed into the save function

#

You could probably follow that back to see where it comes from

leaden hedge
#

doesn't the save have a saveslot in playerdata

#

its called profileID

buoyant wasp
#

yeah, i'm doing this outside of the game. writing a small standalone version of playerdatadump that uses the save data rather than the mod api (so that it can be run in an unmodded game), just in case someone wanted to use it for a hundo or something

leaden hedge
#

its literally right at the start of the save file hollowface

buoyant wasp
#

ah

#

well, haven't gotten to porting your java code to decrypt it

#

it's on the list ๐Ÿ˜ƒ

broken fable
#

porting from java to what?

buoyant wasp
#

c#

warped sinew
#

does new debug mod have the invincible flag? can it be switched on and off?

leaden hedge
#

yes

#

it also has noclip

warped sinew
#

righto

buoyant wasp
#

it's what i know, so writing a small simple console app to replicate what we've done for the mod API is super simple to port

broken fable
#

noclip!? PogChamp

buoyant wasp
#

noclip is hilarious

warped sinew
#

is it just a button? im helping some dude out who got the bug and i told him install debug mod and just turn off invincible

buoyant wasp
#

don't clip through the door below fireball

warped sinew
#

as his save is stuck

leaden hedge
#

press f1 then pause the game

#

click on cheats

#

then invincible is there

warped sinew
#

thanks KDT

#

you da best

leaden hedge
#

buff fury ๐Ÿ‘€

buoyant wasp
#

lol

warped sinew
#

Will on right now m8, you ask him heh

#

nah i will talk to him about it over PAX weekend

#

i can convince better in person :p

leaden hedge
#

simo gonna mention it hollowface

buoyant wasp
#

gonna laugh so hard when "buff fury" becomes "nerf spells"

broken fable
#

if you're overcharmed, does fury proc at 2 hp?

leaden hedge
#

no

half wraith
#

Does anyone have the IndieBox disc and has tried this: If you install from disc, there's seemingly no way to update it. But can you just copy-paste particular files from a Steam installation to manually update a disc installation?

leaden hedge
#

probably not

#

you can probably copy the files from drm-free though

half wraith
#

Hmm. I really should just buy a second copy. I'm getting my fiancee into it, but I don't want her using my Steam account to play it because then I wouldn't be able to play while she is. So I installed from the disc, but that version's missing an increasing amount of content.

leaden hedge
#

did you not get a drm free version with the disc

#

lol

#

you could always do family sharing

#

then go offline

half wraith
#

Well, the IndieBox version came with a Steam key and a game disc with a version that can't be updated. So, if I can just copy-paste DRM-free files from another installation to update it, I don't have a DRM-free version that's any more recent than my disc version.

#

We tried family sharing and going offline, but it became a hassle because one of us would always forget to go offline and we'd have to interrupt each others games and, blech. If there's no way to update it manually, I'd really rather just head to GoG and buy a second copy.

#

But if there is a way to manually update, I'd prefer that path first.

#

And I figured the modding community might have some insight.

leaden hedge
#

nah the files for steam and gog are differentish

#

you need the drm-free assembly csharp

#

and the drm-free exe

#

everything else should be the same

half wraith
#

Hmm.

#

I mean, I'd hate to buy the GoG version after the Troupe update then install and refund, because the game is definitely worth more than their $15 asking price. But then again, I did already pay more than twice that for my physical copy.

#

Do we have any ethicists in the modding community that can weigh in?

young walrus
#

About stealing?

#

I mean... It's a cheap game. $15 is not much for a second game for a second person

hazy sentinel
#

$0 isn't much either intenseface

leaden hedge
#

i could buy it, but if I instead steal it thats +$15, so if I steal 1,000 copies thats $15k

#

im going to be rich hollowface

broken fable
#

idk what IndieBox is, but sounds like whoever made it didn't think too hard about supporting content updates.

buoyant obsidian
#

I bought the DRM free edition then copied it into an empty folder several million times.

#

Now I have more money than I know what to do with

#

Aside from the Steam code, @broken fable

leaden hedge
#

indiebox gave you a steam key

young walrus
#

Isn't the physical version more to be a souvenir?

buoyant wasp
#

ethically speaking, if you have 2 distinct licenses of the game, i would think you're good. If you do not, then you should buy a 2nd in order to continue to support the hard work of the developers.

half wraith
#

I kinda do? I've got a physical copy and a Steam copy.

young walrus
#

From one purchase. Aka... One license

#

You got a collector version of it, imo. So ethically, you should buy another version

buoyant wasp
#

especially since the point of a 2nd copy is for someone else to play it. If it was just you wanting two different versions for yourself, that's one thing that is a much finer hair to split.

#

and really 15$ is...peanuts for a game that i've spent more time playing than alot of AAA games that cost 4x as much

half wraith
#

Well, has gaming ever really been about one license per user, as opposed to one license per household? Multiplayer aside, it's not like ethically you used to be encouraged to buy one copy of Super Mario Brothers for each of your kids.

young walrus
#

But you can't both play single player at the same time with that one game

half wraith
#

Right, and we wouldn't.

broken fable
#

intellectual property laws will always break down when you think about them enough. i suggest following your conscience, and not worrying about the law.

half wraith
#

lol Good point.

buoyant wasp
#

if both of you aren't playing at the same time, ever, then you can more or less, have a clearish concience, but if you ever do both at the same time for any reason, then less so. shrug but i'm heavily on the pay folks who deserve to be paid side of things, especially when the cost is reasonable and we're talking about small companies that realistically don't have alot of money, because i want those companies to continue to produce the content they have. (not to mention that few companies release free content after release, it's almost always paid DLC)

leaden hedge
#

licenses have always been to the single person

#

technically you shouldn't allow friends or families to use your license

half wraith
#

Yeah, that's my internal conflict. I don't have the most disposable income at the moment, that $15 would be better spent on other things. But then again, $15 isn't a lot and they are worthy of support.

#

Although, in regards to the free content packs, weren't those Kickstarter rewards?

young walrus
#

i bought a second version because i loved the game and thought the price was too low for the content

half wraith
#

Soooo it's not really adding extra content to the game, it's just adding content to the game that they already promised as an integral part of the game.

young walrus
#

plus it's nice to have a second version for switching patches

buoyant wasp
#

to a certain extent, sure, but I didn't kickstart the game, i only paid the Steam price

young walrus
#

^

#

the only time when we'd pay would "maybe" be for the hornet DLC

buoyant wasp
#

so as far as i'm concerned, it's free.

young walrus
#

and we're not even sure that'll be paid

buoyant wasp
#

@leaden hedge - for the save game decryption, do you know what the java equivalent to the Initialization vector is in your code? is it some first X bytes of the dat file?

#

right now i'm getting The input data is not a complete block.'. so trying to sort out if there is some data sitting in front that i'm needing to grab out before decrypting

leaden hedge
#

there isn't one

#

well there is in java

#

but Rijndel ECB doesn't use it

#

how are you reading the file in?

#

just as a string

#

or are you deserializing it

buoyant wasp
#

doing a File.ReadAllBytes, then passing it to this

#
private static string DecryptString(byte[] encryptedString, byte[] encryptionKey)
        {
            using (var provider = new AesCryptoServiceProvider())
            {
                provider.Key = encryptionKey;
                provider.Mode = CipherMode.ECB;
                provider.Padding = PaddingMode.PKCS7;
                provider.BlockSize = 128;
                //provider.IV = new byte[0];

                using (var ms = new MemoryStream(encryptedString))
                {
                    //byte[] buffer = new byte[16];
                    //ms.Read(buffer, 0, 16);
                    //provider.IV = buffer;
                    using (var decryptor = provider.CreateDecryptor(provider.Key, provider.IV))
                    {
                        using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
                        {
                            byte[] decrypted = new byte[encryptedString.Length];
                            var byteCount = cs.Read(decrypted, 0, encryptedString.Length);
                            return Encoding.UTF8.GetString(decrypted, 0, byteCount);
                        }
                    }
                }
            }
        }
leaden hedge
#

the first 28 bytes are csharp serialization headers

#

or something

#

honestly

#

load dnspy

#

go to gamemanager.loadSave

#

and copy that

young walrus
#

wyza, do you have that link for the beta tracker version?

#

sorry to interject

buoyant wasp
#

@leaden hedge haha, k, will do

young walrus
#

thx

leaden hedge
#

you don't have to go through the same shit I did having to port the csharp serialization and encryption shit over to java

#

if you're using csharp

buoyant wasp
#

yeah

leaden hedge
#
string toDecrypt = string.Empty;
string json = string.Empty;
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream fileStream = File.Open(Application.persistentDataPath + saveFilename, FileMode.Open);
toDecrypt = (string)binaryFormatter.Deserialize(fileStream);
fileStream.Close();
json = StringEncrypt.DecryptData(toDecrypt);
SaveGameData sgd= JsonUtility.FromJson<SaveGameData>(json);
PlayerData instance = sgd.playerData;
SceneData instance2 = sgd.sceneData;
#

JsonUtility is a unity thing though

buoyant wasp
#

ah, i see, this is a managed Rijndel

leaden hedge
#

it says in my code what it is

#
    private static final String CIPHER_MODE = "ECB";
    private static final String CIPHER_ALGO = "Rijndael";
    private static final String CIPHER_PAD  = "PKCS7";
    private static final byte[] RIJNDAEL_KEY = "UKu52ePUBwetZ9wNX88o54dnfKRu0T1l".getBytes();
    private static final int BLOCK_SIZE = 16;
buoyant wasp
#

yeah, but i think that managed vs non-managed behaves differently

#

will find out in a second

young walrus
#

hmm.... this dev version isn't working

buoyant wasp
#

can you be more specific? ๐Ÿ˜ƒ

young walrus
#

not showing up on obs

buoyant wasp
#

what's the full URL you're using?

#

in obs

buoyant wasp
#

ah, you'll still need your url=gamingpc

young walrus
#

really?

#

even after the windows thing we did?

buoyant wasp
#

oh

#

right

#

derp

#

hmm

#

but it shows up fine in chrome ?

young walrus
#

yeah

#

and is reading the game

#

is maybe the profile thing not working?

#

cuz the game is on the other PC?

#

where are you storing the profile data?

buoyant wasp
#

it's in the save folder

#

but PlayerDataDumper is the broker for that, so if it's working in chrome, it should be working in obs

young walrus
#

so.... what if i don't have the HK save folder on this PC

buoyant wasp
#

shouldn't need it

#

playerdatadumper handles it all using the same logic it uses to load the randomizer mapping file

#

just to check, but does OverlayProfile.1.js exist in your save folder?

young walrus
#

there is no save folder

buoyant wasp
#

on your gaming PC?

young walrus
#

no

#

why would it save the profile way over there?

#

do i need to create the folder path on this PC?

buoyant wasp
#

nope. the mod reads/writes from the save folder and just communicates the profile over to OBS using the same mechanism that it communicates the player's state during the game.

#

so nothing special should need to happen

#

so, wherever your HK saves are, there should be a file named OverlayProfile.1.js

young walrus
#

but there's not

buoyant wasp
#

k

#

so

#

hmm

#

try moving 1 thing in chrome and then moving it back, wondering if it hasn't tried to save yet because past the initial config, it hasn't changed anything

#

if that doesn't work, i'll try and figure out why it's not creating that file, cause it should. It works just like ModLog.txt or rnd.js in terms of saving

young walrus
#

yeah it's not

buoyant wasp
#

if you hit F12 in chrome, are there any errors in the console tab?

young walrus
#

WebSocket connection to 'ws://localhost:11420/ProfileStorage' failed: Error during WebSocket handshake: Unexpected response code: 501

#

at least it's trying

buoyant wasp
#

in HK, what does PlayerDataDump's version # say?

young walrus
#

22/10/17.b

buoyant wasp
#

mmm, sec

young walrus
#

main.js:712 WebSocket connection to 'ws://localhost:11420/playerData' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET

#

okay

#

just made a profile

#

refreshed

#

moved some stuff

#

okay

#

seems to be working now

buoyant wasp
#

nice

#

so moving it in one place automatically moves it in obs?

young walrus
#

yeah

buoyant wasp
#

huzzah

young walrus
#

so it's reading the profile updates from the other pc

#

neato

#

this going to sap my gamingpc's performance at all?

#

having another script running?

buoyant wasp
#

shouldn't. it only sends profile changes when you change something in the editor, otherwise it's not doing anything more than the overlay was doing before in terms of sending/receiving

#

so during normal use, nothing really has changed

young walrus
#

kk

solemn rivet
#

do you know how to install it?

solemn rivet
#

just put it under \hollow_knight.app\Contents\Resources\Data\Managed\ and remove the "macos" from the filename (it should be called Assembly-CSharp.dll)

leaden hedge
#

hmmmmmmmmmmmmmmmm

dapper folio
#

clearly one is the evil twin

gray brook
#

Hi everyone, I am investigating modding hollow knight and I was wondering where the game logic lives and if its feasible to mod that. For example changing how an enemys attack. I have opened assembly-csharp in dnspy but I am not sure where to look. I also looked at some mods with dnspy but I dont see a way to find what changes they did to the main game... Are anymods open source or document how they work?

heavy geyser
#

completely new enemy mod? ๐Ÿ‘€

gray brook
#

I would start trying to change some existing enemy

leaden hedge
#

you need to look at the FSM for that enemy

#

all mods are open source technically

#

the modding api ones usually have a github page, if you can't find them ask the author for the location
@gray brook

solemn rivet
#

@gray brook you can start by checking the HeroController class and changing stuff there

#

Maybe make the knight able to triple jump?

#

Something like that

gray brook
#

Thanks, I will check both your suggestions out

solemn rivet
#

now, I think I've had enough stalling

#

I've gotta port the bonfire mod to the modding API

gray brook
#

is there more documentation to the modding api than what the disassasembly of it shows?

solemn rivet
#

I don't think so

#

and since I'm by no means a proficient programmer, I'm struggling with it

gray brook
#

I would consider myself a proficient programmer, just not in c# but it felt a little weird to read an api through a disassembler, in other languages you would read a header file or api documentation

#

which explains exactly what things to and how to use them etc

solemn rivet
#

yeah

#

but this game wasn't really made to be modded

#

there's not official mod support, or a platform for mods

#

even the api is fanmade

#

but thankfully

#

methods, variables, classes and whatnot are (motsly) pretty well named

#

so we can figure out what they do by looking at them

#

except for fsm stuff

leaden hedge
#

You don't really need documentation for the api everything should be quite self explanatory, you don't need to look at the disassembly though
in csharp you don't have header files, all you have to do is add a reference to the dll and it works

ModHooks.Instance.

will list every hook and their prototypes

solemn rivet
#

dsnpy update

#

w00t

broken fable
#

would it be nice to have documentation for the API though.

#

i'm generally hesitant to do any modding work right before an update. grimm troup releases tomorrow-ish

vale zenith
#

Feel free to add extra attributes to stuff and dump a doc file from them.
Most/(all?) Hooks have a corresponding attribute.

rain cedar
#

Pretty sure all of them have the HookInfo on them

vale zenith
#

Also generally if you struggle modding stuff without help it just might not be your thing

buoyant wasp
#

is the code for the API on github? or was it only added via dnspy?

rain cedar
#

dnspy

buoyant wasp
#

guessing adding xml doc comments to classes/methods doesn't work then?

vale zenith
#

That's why the doc has to be in attributes

buoyant wasp
#

makes sense

#

so used to being able to write out all the information into the /// for intellisense

vale zenith
#

I know that feeling

#

Really makes writing assembly less fun to not have intellisense

buoyant wasp
#

i don't envy the early days of programmers who had to do everything by hand with no IDE

#

i have to do a fair amount of debugging of java code without an IDE for work, and tracking down references to stuff is a pain

vale zenith
#

Trace ALL the things

buoyant wasp
#

couldn't even begin to imagine the nightmare of the early C or Assembly or Machine code days

vale zenith
#

It's fun

buoyant wasp
#

that would work, if i were allowed to compile the code ๐Ÿ˜‰

vale zenith
#

Makes you appreciate c more

#

From both directions

buoyant wasp
#

indeed

vale zenith
#

It's a step up from assembly but it's close enough that you can relate the assembly to the c code still

#

It makes debugging with just a core dump a lot easier

#

C++ or even more abstracted languages make that a nightmare

buoyant wasp
#

my favorite problems are when a C program segmentation faults. ๐Ÿ˜ƒ - oh you want a stack trace? you need to write one yourself + use gdb

vale zenith
#

It's what's keeping me from using Rust more

#

Well if you can seg fault you are already too high level to reasonably use c in most cases

buoyant wasp
#

mmhmm. back when some of our software moved from Unix to Linux and from the Vendors Unix C compiler to gcc, we found a lot of little bugs related to memory allocation that you never encountered in unix because gcc laid out the allocation of memory in a more linear way

#

so the old version would put some space in memory between 2 variables allocation, and when variable 1 overflowed, it didn't break anything. in gcc, it would put those 2 allocations right next to eachother, so when variable 1 overflowed, it overflowed into variable 2.

#

good times

vale zenith
#

Gcc is more likely to dump stuff onto the staco probably

buoyant wasp
#

I don't know enough about how it works internally, just that char arrays would often sit right next to eachother and doing a strcpy of a larger array into a smaller array almost always led to the excess being written to whatever the next defined array was. (cause someone changed the array size definition in 1 part of the code, but forgot to change it in another)

#

but my C/C++ abilities are admittedly small. I can debug stuff, slowly, and i can make minor changes to stuff and understand the general logic, but really, truly understanding the language? not so much.

vale zenith
#

If it was allocated on the heap it probably has more to do with how gccs standard allocator works

#

if it's on the stack then you want to be very sure you're not causing any overflows

#

I guess you generally want to be

buoyant wasp
#

@rain cedar - for the modding API, is there an option for logging at different levels? (eg INFO, WARN, ERROR, DEBUG/FINE/FINEST) just thinking it'd be nice to have extra logging in some places, but have it off by default and being able to turn it out without recompiling dll's.

rain cedar
#

There's not, but that's a good idea

#

I'm gonna have to update it for grimm troupe tomorrow anyway

#

I'll add that

buoyant wasp
#

thanks

broken fable
deep pilot
#

I haven't seen them speak up in the Discord for ages now

broken fable
#

i want to mess with it / contribute to it.

deep pilot
#

The person making that one is active in the HK wiki discord

broken fable
#

how do i contribute to that?

deep pilot
#

Well, the website lists means of contacting them

broken fable
#

that profile image looks the same as the primary wiki maintainer thinkgrub

deep pilot
#

Cause it's the same person

broken fable
#

sweet. i found the invite to the other discord.

buoyant wasp
#

eh

#

the hollownest map though

#

isn't going to be as functionally useful

#

from the very first line in the FAQ

#

"RainingChainโ€™s map is functionality-focused, with pins on it that mark charm, NPC, upgrade and other locations. My map is purely an art project and will not feature any such elements. It is assembled from thousands of screenshots and a lot of draw-over and correction is involved, resulting in a very detailed map that is zoomable to gameplay-view."

broken fable
#

good point.

modest ice
#

@solemn rivet Assembly-Csharp is taken with the dll tag

#

It works if I replace Adsembly-CShafp.dll with the new one

#

Gj

hazy sentinel
#

yeah that's generally how you install mods

solemn rivet
#

wait, it works?

#

I didn't expect it to work tbh

#

guess there's little difference between the windows and mac ver then

#

well, thanks for testing!

#

well, added mac ver to the gdrive as well

modest ice
#

Note: Thus far I'm at the Ancestral mound and I have almost instant attack speed instead of having a delay so the "Dexterity" is useless.

hazy sentinel
#

mod works confirmed

solemn rivet
#

did you only level up dex?

modest ice
#

I haven't leveled it up at all

solemn rivet
#

also, Dex increases crit damage

#

ummm

#

then something is weird

modest ice
#

Are the enemies supposed to have more health?

solemn rivet
#

yup

#

and their health increases with progress

modest ice
#

Ok, just making sure

solemn rivet
#

the health issue makes no sense

hazy sentinel
#

what are the percentages? 25% health increase at start and 25% more w/ each dreamer?

solemn rivet
#

(1.4 + (double)(num / 3)) * Math.Pow(1.1, (double)(ModData.instance.currentLv / 10))

#

where num is the number of dreamers killed

#

MAIN sheet now has enemy HP

#

@modest ice you can also check the intended slash speed increase/level

#

but the code for slash speed is simple

#

(float)Math.Round(2.7 / (1.0 + 1.82 * Math.Exp(-0.08 * (double)totalDex)) - 0.01, 2);

modest ice
#

I can attack 5 times per second at LV 1 Dex

#

Is that normal or is that unintended

hazy sentinel
#

it's normal intenseface

modest ice
#

It just seems off. dunq

buoyant wasp
#

5/s? that's an impressively quick button mash

hazy sentinel
#

took 6 fireballs to kill elder baldur hollowsad

solemn rivet
#

^ seems right

#

usually it's 4

#

don't worry

#

as soon as we figure out the Int mechanic, spells will be worth

hazy sentinel
#

so rn spells just get worse and worse lol

solemn rivet
#

not exactly

#

KDT found a way to make scream and dive work

hazy sentinel
#

what's that tied to?

solemn rivet
#

it's not tied to anything at the moment

#

a new Int stat

#

but I don't want to implement that yet

#

because TGT

#

also, we can make fireball work too

#

but only the first 4 casts/scene

#

after that, it resets to default behaviour

hazy sentinel
#

just rename vengeful/shade soul pickups to Trash Spell and call it a feature hollowface

solemn rivet
#

xD

#

but, honestly

#

that's pretty much already implemented

#

just waiting for tomorrow's release

modest ice
#

Ditto

hazy sentinel
solemn rivet
#

Do you have a wanderers journal?

hazy sentinel
#

multiple

solemn rivet
#

What happens if you try to level up?

hazy sentinel
#

it keeps displaying 0 until there's 1 more available free level, then it says "1 free level"

#

and then it does the whole spend 0 geo and X wanderer's journal thing

solemn rivet
#

Something is wrong with mac code...

#

Just a minute

hazy sentinel
#

oh i'm on windows/steam

solemn rivet
#

Oh

#

oh

#

I had to copy the same code multiple times for each relic

#

accidentally left the count for King's Idol pointing to Journal

#

updated gdrive

slate owl
#

@broken fable I'm still alive, yes. Haven't got the time to check on Hollow Knight recently.

broken fable
#

@slate owl hey, is the source for your map available anywhere? or can i contribute to it in any way? i'm looking for a map to mark up with my own notes for modding, and your map looks the most complete out of anything i've seen online, so it'd be a good starting point. plus the interactivity is spot on.

#

i'd like to add scene names like "Ruins1_32", and a directed graph of traversing the world annotated with what movement abilities that traversal requires.

slate owl
#

There was already a plan on adding speedrunning routes to the map.

#

But its not exactly what you'd need.

broken fable
#

i'm interested in randomizer logic.

slate owl
#

Im not sure whats the link between the graph and the map.

#

What are you looking to do exactly?

broken fable
#

i mean i could print out the map on paper, and then draw on it with marker or something to accomplish my purpose. i don't need an interactive map.

#

i would start by drawing connections between all the benches and writing down what's required to traverse each connection.

slate owl
#

So its only for planning?

#

Its meant to be done while playing? By a coder or by a normal player?

broken fable
#

it's mostly useful to the randomizer devs to make sure they programmed everything correctly. it would take extra work to make it useful to a player, and i'm not sure that's within the scope of what i want to accomplish.

slate owl
#

But isnt the elements random? That means every seed will result in a different map?

#

Oh nvm, the requirements will still be the same.

broken fable
#

traveling from dirtmouth to gorb's grave always requires mantis claw. that would be on the map that i'm imagining.

#

right.

young walrus
#

"making sure the programmers did it right" kek

broken fable
#

i noticed there's some speedrun tricks and skip stuff on your map already, so maybe it's within scope to add randomizer-specific stuff to it. but mostly i just want a tool for my own purposes; it would be nice to show it to other members of the community so they can double check my work, but generally it'd be a development tool.

fair rampart
#

What even is this mod you guys are talking about

young walrus
#

Defend your honor Sean! Lol

slate owl
#

I had made a pathfinder tool for Zelda Ocarina of Time Randomizer back then.

broken fable
#

@young walrus i'm mostly referring to myself there. i want to translate everything sean's written in the xml to a different format, and i want sean to be able to look at it and confirm that i didn't make mistakes.

solemn rivet
#

@fair rampart they're talking about Randomizer

broken fable
#

@fair rampart randomizer shuffles around where the items are found in the world, so you might get dash before fireball and need to exit crossroads through fungal wastes instead of greenpath, for example.

slate owl
#

About altering the map on my website, the easiest way would be to simply inject code with the console.

broken fable
#

you and i have different definitions of "easy", heh.

#

i think i would start by scraping all the content, and recreating the app locally.

solemn rivet
#

@broken fable I'm not the best, not even close actually, when it comes to speedrun tricks and whatnot, but I could help you with mapping scene transition requirements

slate owl
#

In that case, you can just make a copy of my html + js.

broken fable
#

@solemn rivet sounds great. i'd be great to get something into a format that multiple people can work on in parallel.

#

@slate owl sure. it looks like there's some minifications and source maps being used. i think i know how to struggle past all that, but any chance you could just send over the source? please? omggrub

#

i'll start with what i have. i'll let you know if i run into any problems.

slate owl
#

The script is in typescript, thats why.

broken fable
#

interesting

slate owl
#

Tbh, not much of the code I've written will be useful for you.

#

The interactive map part is like 10 lines. All the rest is to add the icons, the save state features, panel and layers.

broken fable
#

i mean, i'd like to add icons though.

slate owl
#

Thats also like 1 line lol

#

Gimme 1 min, Ill write down something for you.

#

Are you familiar with leaflet maps?

hazy sentinel
#

@solemn rivet clicking the green button doubles the free level count

solemn rivet
#

hahahahaha

#

why is it that when I test it everything goes fine

#

did you spend any free levels before clicking the Apply button?

broken fable
#

@slate owl no? yes? if you mean like a tiling of mipmaps, then sure. i know how i would design something like that, and the artifacts i see from using it confirm that it's working how i would design it. let's say i am familiar with leaflet maps.

hazy sentinel
#

uhhhh

broken fable
#

oh, leaflet is a specific library.

hazy sentinel
#

don't remember

#

also respec doesn't give back relics hollowsad

solemn rivet
#

it does... But all in the form of Journals

#

it converts 1 seal to 2 journals, 1 idol to 3 journals and 1 egg to 4 journals

#

PlayerData.instance.SetInt("trinket1", ModData.instance.totalFreeLevels);

hazy sentinel
#

what does it convert 1 journal to intenseface

solemn rivet
#

I have yet to figure out how to make the player know they got their relics back

broken fable
#

like L.map(). i found the API docs. so, let's say i am familiar with leaflet.

solemn rivet
#

wut, you only getting 1 journal back?

#

oh wait

#

I know what's wrong

#

phew, it's easy to fix

slate owl
hazy sentinel
#

why is it that every playthrough i do through bonfire mod i get infinite levels intenseface

solemn rivet
#

@hazy sentinel as it is, you'd double Seals, tripe Idols and quadruple Eggs

#

you are the chosen One

#

ofc

#

also, thank you for always reporting back on the bugs you find

broken fable
#

@slate owl fuck yeah! thanks m8. this is a great starting point.

#

now i'll work on porting over the bench locations.

hazy sentinel
#

also because levels give diminishing returns AND enemies' health increases w/ levels, there comes a point where leveling up makes you weaker

broken fable
#

...some other time. i'm out for now. thanks for your help @slate owl

hazy sentinel
#

wandering husks take like 15 hits

solemn rivet
#

I'll make the enemy health increase also have diminishing returns

#

something like, it stabilizes after level 20 or smth

hazy sentinel
#

brb gonna level up until tiktiks take 100 hits

solemn rivet
#

okay, fixed the duplication bug

#

now to fix the respec bug

#

and after that, adjust the progression/balancing curves

#

respec fixed

#

now balancing

hazy sentinel
#

don't fix it imo hollowface

#

super balanced the way it is

solemn rivet
#

I can't stop laughing at that xD

#

so

buoyant obsidian
#

That's awesome

solemn rivet
#

each curve corresponds to # of dreamers killed

#

they stabilize roughly at 50 levels

rain cedar
#

The dreamer increase seems a bit much to me

solemn rivet
#

hm...

#

so, ignoring the other curves, what do you think about the bottom one, the one "without dreamers"?

rain cedar
#

That seems fair, yeah

leaden hedge
#

dreamers are the only real progression though

#

what about doing it the TC way hollowface

#

more nail upgrades = more health hollowface

solemn rivet
#

I'll just make a better adjustment

#

"make the other curves stay closer to the bottom one" or something

rain cedar
#

Honestly I'd just base the hp increase on the current area if I was making this

#

I disagree with anything that has the potential to make you weaker when you get "stronger"

solemn rivet
#

makes sense

#

and it's not terribly hard to do

deep pilot
#

People can also just delay killing the dreamers until they're about to finish the game.

#

Which is what I usually do anyways

leaden hedge
#

ye but I'd make so the harder the difficulty the more stuff you get

#

then you'd just make HK and radiance way harder cause you've been getting 50% exp the entire game hollowface

solemn rivet
#

oh yeah, KDT, if I do make "progression" be measured by current area, then there's no reason to make GEO increase static

hazy sentinel
#

does current area mean the "farthest" area entered or just whatever area you're in

solemn rivet
#

are you're in

hazy sentinel
#

cause if it's the latter you're basically just rebalancing the base game

solemn rivet
#

or

#

I could count how many different areas the player has discovered

#

and tie it to that

leaden hedge
#

plus theres pretty easy lore reason for dreamer = stronger enemies anyway

solemn rivet
#

the infection is spreading

leaden hedge
#

weaken the seal, radiances power is stronger / able to escape better

#

stronger enemies

hazy sentinel
#

lore consistent mods hollowwoke

#

how do you explain debug mod intenseface

solemn rivet
#

that was my plan all along Verulean

rain cedar
#

You could do it based on both current area and dreamers killed

leaden hedge
#

that'd probably be the best

deep pilot
#

I still think that's kinda silly, especially since you can straight up delay killing the dreamers until you want to finish the game so that the only time the enemies get difficult is the run between dreamers and to the final boss.

solemn rivet
#

tbh I only introduced the "per level" part on HP calculation because otherwise the game would be unbalanced, but in the other end

leaden hedge
#

sort of forces linearity

#

ye wataniyob, but harder enemies would give more geo hollowface

deep pilot
#

I'd just straight up remove the connection to dreamer kills

leaden hedge
#

so you can level up more

deep pilot
#

So there's been a change so that luck doesn't give as generous drops anymore?

solemn rivet
#

I like the idea of merging the two ideas, but make it more dependent on area than on dreamers

#

luck drop is linear

#

+5% per level

rain cedar
#

Realistically it's less than that, though

solemn rivet
#

yeah

#

but not by much

deep pilot
#

Cause honestly, I got a bunch of levels just increasing the luck by a decent number of levels and keeping Fragile Greed on.

#

So unless the amount of geo dropped by enemies with their difficulty increased due to a dreamer dying is significant, I'm still not seeing a reason to kill them

hazy sentinel
#

i got a bunch of levels just clicking a button hollowface

solemn rivet
#

shush that was a bug

#

except that time you duped relics

#

that was legit

deep pilot
#

Basically, I'm not seeing a reason you can't just dump stuff into luck and have geo drops snowball, especially combined with relic duping if you choose to do that

#

which means there isn't a real reason to kill dreamers early

rain cedar
#

No reason to balance around duping

solemn rivet
#

if you choose to relic dupe, there's no reason to invest in luck at all

hazy sentinel
#

except crit chance

solemn rivet
#

^

hazy sentinel
#

and grinding for buying stuff i guess but that's dumb hollowface

deep pilot
#

but my point is that there doesn't seem to be a good reason to go kill the dreamers like KDT says to increase geo drop rates if luck already does that decently

solemn rivet
#

I could always nerf Luck hollowlenny

rain cedar
#

Luck and dreamers would stack multiplicatively, though

#

So it's still worth it imo

deep pilot
#

by how much is my question

#

cause it'd have to be reasonably significant for it to be worth it cause I'm increasing the time I'm taking to kill enemies as a whole

hazy sentinel
#

1000% geo bonus per dreamer

solemn rivet
#

so the idea is to balance it so that time spent killing enemies is somewhat constant as you level up and progress through the game

deep pilot
#

dreamers are awkward to put in that balance, imo

#

Cause the time you encounter them can be all mid-game or all late-game

#

or anything in between

solemn rivet
#

hm...

deep pilot
#

Did you put in enemy health scaling by level in the version a few days ago when we were talking about the luck bug?

solemn rivet
#

enemy health scaling with dreamers has been in the mod for a long time

#

every since I first made luck impact geo drops

deep pilot
#

what about by level?

solemn rivet
#

by level was... I think this week?

deep pilot
#

Cause in my current game (which I didn't kill any dreamers in), I'm absolutely wrecking enemies

#

1.5x slash speed with 400% crit damage and 18% crit chance

#

combined with Quick Slash

#

Enemies literally melt in front of me

solemn rivet
#

this is how it was:

#

HP=HP*(1.4 + (double)(num / 3))

#

num=#dreamers killed

hazy sentinel
#

what is this (double)

leaden hedge
#

its a cast

#

double is a type

solemn rivet
#

^

#

num is int, 3 is int, (double) is saying "treat num/3 not as an int, but as a double"

deep pilot
#

well, that seems like it should've significantly boosted enemy health then

#

but it's not feeling like it in my version of the mod

solemn rivet
#

it's something like, 140% at no dreamers, 173% at 1 dreamer, 206% at 2 dreamers and 240% at all dreamers

deep pilot
#

Oh, so it's only dependent on dreamers then

#

Not on what level you're currently at

solemn rivet
#

that's how it was before

#

now it increases that by 1% per level

deep pilot
#

Cause yeah, that explains why enemies are melting in the old version I'm using

solemn rivet
#

oh, my mistake

deep pilot
#

Since I didn't touch any dreamers

solemn rivet
#

oh

#

yeah

#

and your average DPS is way more than 1.4x

#

just by Atk.Spd alone, your DPS is 1.5x vanilla DPS

#

and that was exactly why I first put the levels there

deep pilot
#

it's actually worse than that cause I'm stacking the 1.5x slash speed with Quick Slash

solemn rivet
#

yup

deep pilot
#

So I can literally spam the nail as fast as I can

solemn rivet
#

xD

#

AtkSpd stacks multiplicatively with quickslash btw

#

so yay

#

just to clarify

#

for every 10 levels you get, the total amount of HP is increased by 10%

#

so it's exponential

#

so it's HP=HP*(1.4 + (dreamers / 3))*(1.1^(levels/10))

deep pilot
#

Alright, well it'll be interesting to see how the new balance works

solemn rivet
#

I'll change that

#

to an uglier formula which yields the first curve

#

the blue one

#

and think about what would be a good way to implement HP increase per area

#

and decide if I should or not include dreamers

#

actually, I'll use the gray(?) curve

#

leveled up to 100

#

Enemy HP multiplier: 2.89866723324526

lament wren
#

hey my dudes i have a question

#

how the f do I install the bonfire mod?

#

I have tried to do it

#

but I can't get it to work

hazy sentinel
#

just replace the assembly-csharp.dll in your installation w/ the modded one?

lament wren
#

but there is no assembly-csharp.dll in my installation

#

that's what's bothering me

#

i mean

#

in the mod folder

hazy sentinel
#

wat

lament wren
#

yup

hazy sentinel
#

you mean the folder you downloaded?

solemn rivet
#

wut

lament wren
#

ye

solemn rivet
#

oh

lament wren
#

this is the link, right?

solemn rivet
#

I forgot to update the reddit link

lament wren
#

god damn

solemn rivet
#

don't blame me

#

blame legalities

hazy sentinel
#

i blame you

solemn rivet
#

okay

#

this should me it

#

oh

#

that versions doesn't have the bug fixes Verulean just told me about

#

not gonna be an issue, right? hollowlenny

lament wren
#

uhm

hazy sentinel
#

i mean, yeah

lament wren
#

what bugs does it have

hazy sentinel
#

unless you're really hellbent on breaking the game it shouldn't be that bad

solemn rivet
#

^

hazy sentinel
#

although do wait until it's updated w/ fixed dll if you want to be sure

solemn rivet
#

just don't do things to purposefully try and see if they break

hazy sentinel
#

i can't help but feel that's directed at someone

solemn rivet
#

what version you using, Vaati?

#

steam, gog...?

#

@lament wren

lament wren
#

what

#

uh sorry

#

steam

#

you removed the folders from the drive :^(

hazy sentinel
#

reload the page

lament wren
#

ok great

#

wat

hazy sentinel
#

download the one that says [1.1.1.8] Bonfire...

#

unless you're on a mac

solemn rivet
#

I updated them

lament wren
#

perfect perfect

#

what changes with the update?

solemn rivet
#

bugfixes

#

:x

leaden hedge
#

you don't need to delete it

solemn rivet
#

I didn't delet anything tho

dapper folio
#

MacOS version?

leaden hedge
#

you can just drag the file into the folder, and it auto overwrites, or atleast should

solemn rivet
#

I was just copy pasting from steam to drmfree and macos version

#

I was using dnspy, not even using the gdrive rn

dapper folio
#

didn't know mac needed its own

solemn rivet
#

apparently, it does

#

Blackmoth didn't work for macos

#

and iirc Lightbringer or some other mod had macOS specific dll

dapper folio
#

not that I know

lament wren
#

only way to lvl up is using the mouse?

leaden hedge
#

yes

#

unless you want to spend the next month figuring out menus via fsm hollowface

solemn rivet
#

please, no

#

yes, vaati

lament wren
#

isn't luck and dexterity inherently broken if you level them up?

solemn rivet
#

not necessarily

hazy sentinel
#

STR is hollowknice

#

at least until INT is implemented

solemn rivet
#

oh

lament wren
#

STR is?

#

why tho?

solemn rivet
#

forgot to add Int to this update

#

:x

lament wren
#

you got it?

solemn rivet
hazy sentinel
#

who needs int when you can have spells that kill tiktiks in 10 hits

solemn rivet
#

you can check stats and stat increase per level there

#

not anymore

#

enemy HP doesn't increase past 3x

hazy sentinel
#

how dare you

lament wren
#

what's the math behind that sheet?

solemn rivet
#

you can click the relevant cells and see the formulas behind them

lament wren
#

btw the fuck is delta geo?

solemn rivet
#

Delta as in variation

#

"how much does that variable increase per level"

hazy sentinel
#

delta as in partial dipoles

solemn rivet
#

delta as in the comultiplication of a Hopf algebra

lament wren
#

oh oh okay okay

solemn rivet
#

no, it's just the plain old delta from hs mechanics classes

deep pilot
#

from plain old math class as well

solemn rivet
#

@hazy sentinel Tiktik's HP is 8, so the highest it can get to is 24. Fireball does 15 damage. Checkmate

#

no more tiktik last boss

hazy sentinel
#

that's assuming I ever update to the current version

solemn rivet
#

hahahaha

lament wren
#

okay i have started a new run with this mod

#

any tips?

rain cedar
#

Dupe relics

#

Easy game easy life

solemn rivet
#

I have to update the sheet to be current with HP increase

#

what Sean said

#

also, Luck increases geo drops, so...

lament wren
#

dupe relics?

solemn rivet
#

I prefer to invest Luck and Str early on

#

then on Dex

hazy sentinel
#

ye dupe relics

solemn rivet
#

oh, I have to mention that I rebalanced Res

#

so that it's more useful now

lament wren
#

what's dupe relics?

solemn rivet
#

someone had suggested that I make Res increase i-frames

#

that's coming on a future patch

deep pilot
#

If only I could be super consistent with the dupe @hazy sentinel .

hazy sentinel
#

?

rain cedar
#

Just get storage before the relic

deep pilot
#

Half the time the game doesn't register the first map button press

#

and I end up just picking it up

leaden hedge
#

can't you get focus storage no risk

#

then pick it up

rain cedar
#

Yeah

hazy sentinel
#

you also have to move from your location before the pickup animation completes

deep pilot
#

well, that part is easy for me to pull off

hazy sentinel
#

otherwise it actually registers the relic pickup maggot

solemn rivet
#

good times when you accidentally broke the mod, giving yourself endless stats

hazy sentinel
#

best one was the room dupe into 9999999999 geo

#

that one actually took some effort to get to a rancid egg

solemn rivet
#

challenge run

hazy sentinel
#

because i didn't save sly before going to greenpath

solemn rivet
#

if you start at Dirtmouth, can you get to any eggs with 0 nail damage?

hazy sentinel
#

you mean like, 0 damage from start of the game?

#

or after getting to greenpath

solemn rivet
#

from start

hazy sentinel
#

bc i don't think it'd work without dash

solemn rivet
#

hm...

hazy sentinel
#

i got the city of tears one in the big elevator room and that required float

solemn rivet
#

oooh yeah

#

I remember now

#

would be a nice challenge to do

#

"get to a rancid egg to rekt things"

#

"but die in 1 hit and do no damage until then"

lament wren
#

wait

#

really

#

what's dupe relic?

hazy sentinel
#

did you watch the video

lament wren
#

oh no sry

#

going to now

leaden hedge
#

you dupe a relic, by getting storage and leaving the room before the animation finishes

deep pilot
#

so how do you get focus storage then?

leaden hedge
#

same way you get anything else

lament wren
#

oh i understand

deep pilot
#

i mean, map storage is map -> interact -> map

leaden hedge
#

focus storage is instead of interact you focus

deep pilot
#

oh

#

interesting

#

i'll keep that in mind then

hazy sentinel
#

@leaden hedge don't have to leave the room before animation finishes, just have to move and cancel the animation

leaden hedge
#

oh do you not have to leave to dupe relics

deep pilot
#

you don't

hazy sentinel
#

you just have to leave to have the pickup appear again

#

you can spend as much time in the room as you want

deep pilot
#

managed to dupe the exploding spore hallownest seal next to Queen's Station a couple times, in fact

leaden hedge
#

so you do have to leave hollowface

hazy sentinel
#

technically you could save quit intenseface

leaden hedge
#

99% sure that counts as leaving the room

hazy sentinel
#

well you aren't physically controlling the character and making it leave

lament wren
#

uhm

#

is it normal that the sprite of the character sometimes turns reddish when i attack?

hazy sentinel
#

that's a crit

lament wren
#

damn right

solemn rivet
#

if you hit an enemy with it, you get a nice effect on it too

#

(currently trying to also make it play a sound effect)

lament wren
#

damn that's so god damn cool

#

what's the crit chance math per luck level up?

solemn rivet
#

ehh

#

I forget

#

it's logarithmic

#

6.5 * ln(luck)

#

where ln is the natural log

hazy sentinel
#

where ln is not the natural log

#

log notural

leaden hedge
#

why is log natural log e but ln thinkgrub

solemn rivet
#

dunno

lament wren
#

wait

#

the game is actually a bit harder in the early levels

#

should i put two or three early levels in STR?

hazy sentinel
#

all the early levels

#

at least until it takes 2 level ups to get 1 nail damage increase

lament wren
#

god damn

#

okay

#

what lvl is that?

hazy sentinel
#

idk it's not that many

#

don't really have to do that, just put levels into whatever you want tbh

lament wren
#

damn i was lvling up luck

solemn rivet
#

str lv 4 iirc

lament wren
#

do i save it for later?

hazy sentinel
#

now that enemy hp isn't infinite it doesn't really matter what you do

solemn rivet
#

luck is good, if you can deal with the bosses with ease

hazy sentinel
#

although radiance with 9000 hp hollowwow

solemn rivet
#

but you'd have 40 atk

#

and 500% crits at 25% chance

#

so, rekt

hazy sentinel
#

why did you have to remove the relic multiplier glitch hollowsad

#

now i have to spend time duping

lament wren
#

god damn getting a crit now feels amazing

hazy sentinel
#

dex increases crit damage so be sure to level that too

solemn rivet
#

it used to play the same sound effect as when you get hit with a double damage attack

hazy sentinel
#

you mean it used to break your eardrums

solemn rivet
#

I made it so that the stats are in the same line as what they affect

lament wren
#

you mean the nail arts?

solemn rivet
#

eh?

#

like

#

when one of those Husk Warriors hits you

lament wren
#

ohhhh

solemn rivet
#

it takes 2 masks and plays a different sound effect, for impact

lament wren
#

you mean those

#

yeah yeah

solemn rivet
#

I used to play that

#

but people kept complaining

lament wren
#

i was thinking you meant the charging attacks you learn from the nail_master_guys

solemn rivet
#

no

#

oh

#

does anyone know how those work? Do they scale with nail damage, or do they have their own damage routine?

hazy sentinel
#

scale w/ nail

lament wren
#

x2.5 says the wiki

solemn rivet
#

then it should work fine

hazy sentinel
#

the real strategy is to get STR high enough where you one shot everything

solemn rivet
#

I need to think of more things to be affected by Str

hazy sentinel
#

then you don't have to use nail arts

lament wren
#

but i dont know if they use the Nail damage or the Nail Upgrade

#

like

solemn rivet
#

that's what I'm thinking, vaati

lament wren
#

oh okay okay

solemn rivet
#

I keep pretending to forget that I have to implement damage indicators

#

sigh

lament wren
#

god damn that would be f*ng amazing

solemn rivet
#

it's a must

#

specially for testing the mod

#

like, it says on the screen that you do X damage, but how can you know for sure?

rain cedar
#

Best way to do damage numbers is probably spawning a game object with a component that makes it destroy itself after fading to 0 alpha

solemn rivet
#

that was my initial plan

#

but I wanted it to follow the enemy around

hazy sentinel
#

why

solemn rivet
#

not "follow"

#

but I wanted the number to spawn on top of whoever just got hit

hazy sentinel
#

ahh yeah

rain cedar
#

That's easy, just set it to the same world coordinates as the enemy

#

Or like a little above the top center of its bounding box

solemn rivet
#

yeah

#

I pretty much know how to do it "in theory"

#

but I just know that actually doing it will make me lose my mind for a few days

rain cedar
#

It shouldn't be bad at all

solemn rivet
#

heck, trying to implement a simple "bestiary"-like system from Castlevania made me lose an entire day

rain cedar
#

The game camera has a function for getting screen coordinates from world coordinates

#

So you can easily just use imgui

solemn rivet
#

oh

#

I didn't know that

rain cedar
#

It's something like Camera.main.WorldToScreenCoordinates

#

Maybe not exactly that

#

Just from memory

solemn rivet
#

I get the idea

#

I check it out later

#

thanks again Sean!

#

and now, off I go

rain cedar
#

Later

solemn rivet
#

bye all

buoyant wasp
#

is there a map for beast's den?

#

may have found a way to softlock with randomizer

hazy sentinel
#

idk maybe rainingchain's map?

deep pilot
#

you're talking about the seal in the den, right?

#

cause if I remember correctly, you can get locked out of it if you use the shortcut that skips getting captured

buoyant wasp
#

no, in my case, i went into the den without mantis claw

#

so, went in via the bench