#archived-modding-development
1 messages ยท Page 24 of 1
like java to.... spanish
all the programming languages are sort of like dialects of the same language
so learning java
the base concepts are the same, structure is usally the same, but sometimes slightly different words
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
will help me understand javascript?
Well, not always. LISP-like languages are pretty different from others.
aslong as you don't try brainfuck or malboge 
whitespace is the best lamguage
there is really weird stuff that's specialized (like R, or RPG or super specialized for s specific function)
APL
Assembly is the best programming language
Functional and OOP are pretty different too.
but yes if you learnt java you'd be able to read javascript
java is a fine starting language, it, along with javascript, c# and python are all very popular
functional languages are basically dead
oh
How so?
whatever you do, don't learn C++ as your first language. it's confusing as hell.
but it sounds like the book you got is perhaps 1 book further than you should be
out of curiosity what is the coding of vg like hk?
C#
HK is all C#.Net and Unity
HK is kind of a mess. it's C# plus a bunch of other stuff.
is that typical for vg?
no
well
most videogames will be in C++
For indie games it can be pretty common.
there are quite a few Unity games now
Unity is C++ or something.
unity itself is c++
Valve games are in C.
Unity is a framework, not a language. you can use Unity from C#, C++, etc.
but yeah, most games are c++/c and for consoles are often inside of some very specific frameworks
though consoles are alot better now days
oh you can write javascript too in unity
less custom chips, more x86 variants
i heard the PS3 cell chips were a nightmare to code for
okok
oh ye lol
If you're interested in the hardware-side more though, could be a nice start a bit further down the line.
Any programming language where you have to do your own memory management is a horrible starting point
Well, not hardware, more like memory management and so on.
any programming language without type safety is a horrible starting point.
perhaps we should all go back to programing with punchcards
Yes.
but I want to use bitfields
Therefore you should start with Assembly because it definitly doesnt require any memory management
also, yes, strongly typed languages are my preference

@buoyant wasp do you mean safely typed languages or statically typed languages?
Have to wonder whether Fortran is a good entry-level language
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)
I learnt pascal and asm in college as my introduction
My language journey has been Java -> C & Fortran -> Python -> Julia
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.)
Ew, Bash.
Did a little bit of Perl & JavaScript
ew, lots of languages.
But my primary languages are definitely C, Python, and Julia
I mean to try Julia one day. Just need a project for it.
today i started learning playmaker 
its a visual fsm editor
Scripting thing for Unity I believe.
yeah, it's a thing you use with unity. if you really want to understand hollow knight, you gotta learn it.
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
If I never directly touch an SQL query again, it'll be too soon.
erotic roleplay 
according to the ERP databases, what's the most popular character to dress up as?
We had to do a course on ERPs. I never want to work with them again either.
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
That's not so bad.
coding is just as healthy and legitimate a hobby as woodworking. nobody calls amature carpenters nerds. 
Being a nerd is good as long as you are not a geek
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. 
Yeah, I don't think they're mutually exclusive.
Though there are some archetypes about both that might be incompatible.
also, wow this conversation has gone so far off the topic of modding hollow knight
^^
should go back to talking about kingsoul/queensoul and randomzier ๐
Life, the Universe, and Hollow Knight, all in one channel.
psssh #archived-modding-development was founded on shitposting
is kingsoul going to be randomized in two pieces or as an intact charm?
but now, time to "go home and eat dinner" then coding!
i think randomized in pieces
was the notion
though, if you made WP a dead space entirely, you could i suppose make kingsoul a single piece
WP being dead would be a real dick move for anyone that didn't know that.
eh, why? no one goes there now anyway
cant be good anyway
(I go there)
you have ot have everything to get through it
you need everything required to beat the game to get there
that you need to beat the game
so you'd just beat the game
^
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.
crystal heart and monarch wings aren't required 
neither of which are required to beat the game
crystal heart or isma's tear is required though, right?
they cant both be in wp
just said crystal heart isn't required
they can both be blocked by WP, if WP holds shade cloak.
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?
QG acid skip is casual 
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. 
crystal heart is 100% required for WP
there is a gap near the end of it that, without float, you can't cross
The White Palace Walkthrough. Review: https://pcindiemrace.com/2017/02/28/hollow-knight-review/ ------------------------------------------------------- About...
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
if you're not using float then monarch wings and crystal heart are absolutely required
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
@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?
i want to mod the game so that gathering swarm works in grub room and coliseum. i'm so mad that it doesn't.
@buoyant wasp There is a profile id passed into the save function
You could probably follow that back to see where it comes from
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
its literally right at the start of the save file 
ah
well, haven't gotten to porting your java code to decrypt it
it's on the list ๐
porting from java to what?
c#
does new debug mod have the invincible flag? can it be switched on and off?
righto
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
noclip!? PogChamp
noclip is hilarious
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
don't clip through the door below fireball
as his save is stuck
buff fury ๐
lol
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
simo gonna mention it 
gonna laugh so hard when "buff fury" becomes "nerf spells"
if you're overcharmed, does fury proc at 2 hp?
no
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?
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.
did you not get a drm free version with the disc
lol
you could always do family sharing
then go offline
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.
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
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?
About stealing?
I mean... It's a cheap game. $15 is not much for a second game for a second person
$0 isn't much either 
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 
idk what IndieBox is, but sounds like whoever made it didn't think too hard about supporting content updates.
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
indiebox gave you a steam key
Isn't the physical version more to be a souvenir?
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.
I kinda do? I've got a physical copy and a Steam copy.
From one purchase. Aka... One license
You got a collector version of it, imo. So ethically, you should buy another version
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
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.
But you can't both play single player at the same time with that one game
Right, and we wouldn't.
intellectual property laws will always break down when you think about them enough. i suggest following your conscience, and not worrying about the law.
lol Good point.
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)
licenses have always been to the single person
technically you shouldn't allow friends or families to use your license
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?
i bought a second version because i loved the game and thought the price was too low for the content
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.
plus it's nice to have a second version for switching patches
to a certain extent, sure, but I didn't kickstart the game, i only paid the Steam price
so as far as i'm concerned, it's free.
and we're not even sure that'll be paid
@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
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
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);
}
}
}
}
}
the first 28 bytes are csharp serialization headers
or something
honestly
load dnspy
go to gamemanager.loadSave
and copy that
thx
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
yeah
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
ah, i see, this is a managed Rijndel
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;
yeah, but i think that managed vs non-managed behaves differently
will find out in a second
hmm.... this dev version isn't working
can you be more specific? ๐
not showing up on obs
ah, you'll still need your url=gamingpc
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?
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
so.... what if i don't have the HK save folder on this PC
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?
there is no save folder
on your gaming PC?
no
why would it save the profile way over there?
do i need to create the folder path on this PC?
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
but there's not
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
yeah it's not
if you hit F12 in chrome, are there any errors in the console tab?
WebSocket connection to 'ws://localhost:11420/ProfileStorage' failed: Error during WebSocket handshake: Unexpected response code: 501
at least it's trying
in HK, what does PlayerDataDump's version # say?
22/10/17.b
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
yeah
huzzah
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?
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
kk
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)
clearly one is the evil twin
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?
completely new enemy mod? ๐
I would start trying to change some existing enemy
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
@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
Thanks, I will check both your suggestions out
now, I think I've had enough stalling
I've gotta port the bonfire mod to the modding API
is there more documentation to the modding api than what the disassasembly of it shows?
I don't think so
and since I'm by no means a proficient programmer, I'm struggling with it
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
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
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
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
Feel free to add extra attributes to stuff and dump a doc file from them.
Most/(all?) Hooks have a corresponding attribute.
Pretty sure all of them have the HookInfo on them
Also generally if you struggle modding stuff without help it just might not be your thing
is the code for the API on github? or was it only added via dnspy?
dnspy
guessing adding xml doc comments to classes/methods doesn't work then?
That's why the doc has to be in attributes
makes sense
so used to being able to write out all the information into the /// for intellisense
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
Trace ALL the things
couldn't even begin to imagine the nightmare of the early C or Assembly or Machine code days
It's fun
that would work, if i were allowed to compile the code ๐
indeed
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
my favorite problems are when a C program segmentation faults. ๐ - oh you want a stack trace? you need to write one yourself + use gdb
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
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
Gcc is more likely to dump stuff onto the staco probably
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.
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
@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.
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
thanks
so this map is fucking awesome: https://rainingchain.com/hollowknight/map is the creator in this room? @slate owl ?
I haven't seen them speak up in the Discord for ages now
i want to mess with it / contribute to it.
There's a higher quality one in progress here: http://www.hallownest.net/
The person making that one is active in the HK wiki discord
how do i contribute to that?
Well, the website lists means of contacting them
that profile image looks the same as the primary wiki maintainer 
Cause it's the same person
sweet. i found the invite to the other discord.
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."
good point.
@solemn rivet Assembly-Csharp is taken with the dll tag
It works if I replace Adsembly-CShafp.dll with the new one
Gj
yeah that's generally how you install mods
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
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.
mod works confirmed
did you only level up dex?
I haven't leveled it up at all
Are the enemies supposed to have more health?
Ok, just making sure
the health issue makes no sense
what are the percentages? 25% health increase at start and 25% more w/ each dreamer?
(1.4 + (double)(num / 3)) * Math.Pow(1.1, (double)(ModData.instance.currentLv / 10))
where num is the number of dreamers killed
https://docs.google.com/spreadsheets/d/1a95HWAF9lwtAWgNrBf6jA8Yk07V8VDI1MafpaEhD0nU/edit?usp=sharing
MAIN
Level, Geo, Delta Geo, Total Geo to Lv 50, Enemy HP at Start, Enemy HP After 1 Dreamer, Enemy HP After 2 Dreamers, Enemy HP After 3 Dreamers
1, 61, 0, 58175, 141. 00%, 175. 00%, 209. 00%, 242. 00%
2, 74, 13, 143. 00%, 177. 00%, 211. 00%, 245. 00%
3, 89, 15, 144. 00%, 178. 00%, 213. 00%...
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);
it's normal 
It just seems off. 
5/s? that's an impressively quick button mash
took 6 fireballs to kill elder baldur 
^ seems right
usually it's 4
don't worry
as soon as we figure out the Int mechanic, spells will be worth
so rn spells just get worse and worse lol
what's that tied to?
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
just rename vengeful/shade soul pickups to Trash Spell and call it a feature 
xD
but, honestly
that's pretty much already implemented
just waiting for tomorrow's release
Ditto
@solemn rivet is this intentional?
Do you have a wanderers journal?
multiple
What happens if you try to level up?
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
oh i'm on windows/steam
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
@hazy sentinel fixed
updated gdrive
@broken fable I'm still alive, yes. Haven't got the time to check on Hollow Knight recently.
@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.
There was already a plan on adding speedrunning routes to the map.
But its not exactly what you'd need.
i'm interested in randomizer logic.
Im not sure whats the link between the graph and the map.
What are you looking to do exactly?
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.
So its only for planning?
Its meant to be done while playing? By a coder or by a normal player?
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.
But isnt the elements random? That means every seed will result in a different map?
Oh nvm, the requirements will still be the same.
traveling from dirtmouth to gorb's grave always requires mantis claw. that would be on the map that i'm imagining.
right.
"making sure the programmers did it right" kek
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.
What even is this mod you guys are talking about
Defend your honor Sean! Lol
I had made a pathfinder tool for Zelda Ocarina of Time Randomizer back then.
@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.
@fair rampart they're talking about Randomizer
@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.
About altering the map on my website, the easiest way would be to simply inject code with the console.
you and i have different definitions of "easy", heh.
i think i would start by scraping all the content, and recreating the app locally.
@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
In that case, you can just make a copy of my html + js.
@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? 
i'll start with what i have. i'll let you know if i run into any problems.
The script is in typescript, thats why.
interesting
Thats because my MMO is in typescript. https://rainingchain.com/game
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.
i mean, i'd like to add icons though.
Thats also like 1 line lol
Gimme 1 min, Ill write down something for you.
Are you familiar with leaflet maps?
@solemn rivet clicking the green button doubles the free level count
hahahahaha
why is it that when I test it everything goes fine
did you spend any free levels before clicking the Apply button?
@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.
uhhhh
oh, leaflet is a specific library.
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);
what does it convert 1 journal to 
I have yet to figure out how to make the player know they got their relics back
like L.map(). i found the API docs. so, let's say i am familiar with leaflet.
wut, you only getting 1 journal back?
oh wait
I know what's wrong
phew, it's easy to fix
https://drive.google.com/file/d/0By96xy9Bk7KNUmVISVVOZ3h3bjA/view?usp=sharing
Thats the core of the map.
why is it that every playthrough i do through bonfire mod i get infinite levels 
@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
@slate owl fuck yeah! thanks m8. this is a great starting point.
now i'll work on porting over the bench locations.
also because levels give diminishing returns AND enemies' health increases w/ levels, there comes a point where leveling up makes you weaker
...some other time. i'm out for now. thanks for your help @slate owl
wandering husks take like 15 hits
I'll make the enemy health increase also have diminishing returns
something like, it stabilizes after level 20 or smth
brb gonna level up until tiktiks take 100 hits
okay, fixed the duplication bug
now to fix the respec bug
and after that, adjust the progression/balancing curves
respec fixed
now balancing
don't fix it imo 
super balanced the way it is
can't believe i actually beat him on my first attempt
That's awesome
what do you guys think of this curve for Enemy HP increase per level?
each curve corresponds to # of dreamers killed
and this is how they look from a distance
they stabilize roughly at 50 levels
The dreamer increase seems a bit much to me
hm...
so, ignoring the other curves, what do you think about the bottom one, the one "without dreamers"?
That seems fair, yeah
dreamers are the only real progression though
what about doing it the TC way 
more nail upgrades = more health 
I'll just make a better adjustment
"make the other curves stay closer to the bottom one" or something
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"
People can also just delay killing the dreamers until they're about to finish the game.
Which is what I usually do anyways
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 
oh yeah, KDT, if I do make "progression" be measured by current area, then there's no reason to make GEO increase static
does current area mean the "farthest" area entered or just whatever area you're in
are you're in
cause if it's the latter you're basically just rebalancing the base game
or
I could count how many different areas the player has discovered
and tie it to that
plus theres pretty easy lore reason for dreamer = stronger enemies anyway
the infection is spreading
weaken the seal, radiances power is stronger / able to escape better
stronger enemies
that was my plan all along Verulean
You could do it based on both current area and dreamers killed
that'd probably be the best
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.
tbh I only introduced the "per level" part on HP calculation because otherwise the game would be unbalanced, but in the other end
I'd just straight up remove the connection to dreamer kills
so you can level up more
So there's been a change so that luck doesn't give as generous drops anymore?
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
Realistically it's less than that, though
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
i got a bunch of levels just clicking a button 
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
No reason to balance around duping
if you choose to relic dupe, there's no reason to invest in luck at all
except crit chance
^
and grinding for buying stuff i guess but that's dumb 
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
I could always nerf Luck 
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
1000% geo bonus per dreamer
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
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
hm...
Did you put in enemy health scaling by level in the version a few days ago when we were talking about the luck bug?
enemy health scaling with dreamers has been in the mod for a long time
every since I first made luck impact geo drops
what about by level?
by level was... I think this week?
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
what is this (double)
^
num is int, 3 is int, (double) is saying "treat num/3 not as an int, but as a double"
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
it's something like, 140% at no dreamers, 173% at 1 dreamer, 206% at 2 dreamers and 240% at all dreamers
Cause yeah, that explains why enemies are melting in the old version I'm using
oh, my mistake
Since I didn't touch any dreamers
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
it's actually worse than that cause I'm stacking the 1.5x slash speed with Quick Slash
yup
So I can literally spam the nail as fast as I can
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))
Alright, well it'll be interesting to see how the new balance works
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
here's our new hp/level curve
leveled up to 100
Enemy HP multiplier: 2.89866723324526
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
just replace the assembly-csharp.dll in your installation w/ the modded one?
but there is no assembly-csharp.dll in my installation
that's what's bothering me
i mean
in the mod folder
wat
yup
you mean the folder you downloaded?
wut
oh
this is the link, right?
I forgot to update the reddit link
god damn
i blame you
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? 
uhm
i mean, yeah
what bugs does it have
unless you're really hellbent on breaking the game it shouldn't be that bad
^
although do wait until it's updated w/ fixed dll if you want to be sure
just don't do things to purposefully try and see if they break
i can't help but feel that's directed at someone
reload the page
I updated them
you don't need to delete it
I didn't delet anything tho
MacOS version?
you can just drag the file into the folder, and it auto overwrites, or atleast should
I was just copy pasting from steam to drmfree and macos version
I was using dnspy, not even using the gdrive rn
didn't know mac needed its own
apparently, it does
Blackmoth didn't work for macos
and iirc Lightbringer or some other mod had macOS specific dll
not that I know
only way to lvl up is using the mouse?
isn't luck and dexterity inherently broken if you level them up?
not necessarily
oh
you got it?
https://docs.google.com/spreadsheets/d/1a95HWAF9lwtAWgNrBf6jA8Yk07V8VDI1MafpaEhD0nU/edit?usp=sharing
MAIN
Level, Geo, Delta Geo, Total Geo to Lv 50, Enemy HP at Start, Enemy HP After 1 Dreamer, Enemy HP After 2 Dreamers, Enemy HP After 3 Dreamers
1, 61, 0, 58175, 141. 00%, 175. 00%, 209. 00%, 242. 00%
2, 74, 13, 143. 00%, 177. 00%, 211. 00%, 245. 00%
3, 89, 15, 144. 00%, 178. 00%, 213. 00%,...
who needs int when you can have spells that kill tiktiks in 10 hits
you can check stats and stat increase per level there
not anymore
enemy HP doesn't increase past 3x
how dare you
what's the math behind that sheet?
you can click the relevant cells and see the formulas behind them
btw the fuck is delta geo?
delta as in partial dipoles
delta as in the comultiplication of a Hopf algebra
oh oh okay okay
no, it's just the plain old delta from hs mechanics classes
from plain old math class as well
@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
that's assuming I ever update to the current version
hahahaha
I have to update the sheet to be current with HP increase
what Sean said
also, Luck increases geo drops, so...
dupe relics?
ye dupe relics
what's dupe relics?
someone had suggested that I make Res increase i-frames
that's coming on a future patch
If only I could be super consistent with the dupe @hazy sentinel .
?
Just get storage before the relic
Half the time the game doesn't register the first map button press
and I end up just picking it up
Yeah
you also have to move from your location before the pickup animation completes
well, that part is easy for me to pull off
otherwise it actually registers the relic pickup 
good times when you accidentally broke the mod, giving yourself endless stats
best one was the room dupe into 9999999999 geo
that one actually took some effort to get to a rancid egg
challenge run
because i didn't save sly before going to greenpath
if you start at Dirtmouth, can you get to any eggs with 0 nail damage?
from start
bc i don't think it'd work without dash
hm...
i got the city of tears one in the big elevator room and that required float
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"
did you watch the video
you dupe a relic, by getting storage and leaving the room before the animation finishes
so how do you get focus storage then?
same way you get anything else
oh i understand
i mean, map storage is map -> interact -> map
focus storage is instead of interact you focus
@leaden hedge don't have to leave the room before animation finishes, just have to move and cancel the animation
oh do you not have to leave to dupe relics
you don't
you just have to leave to have the pickup appear again
you can spend as much time in the room as you want
managed to dupe the exploding spore hallownest seal next to Queen's Station a couple times, in fact
so you do have to leave 
technically you could save quit 
99% sure that counts as leaving the room
well you aren't physically controlling the character and making it leave
uhm
is it normal that the sprite of the character sometimes turns reddish when i attack?
that's a crit
damn right
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)
why is log natural log e but ln 
dunno
wait
the game is actually a bit harder in the early levels
should i put two or three early levels in STR?
all the early levels
at least until it takes 2 level ups to get 1 nail damage increase
idk it's not that many
don't really have to do that, just put levels into whatever you want tbh
damn i was lvling up luck
str lv 4 iirc
do i save it for later?
luck is good, if you can deal with the bosses with ease
although radiance with 9000 hp 
why did you have to remove the relic multiplier glitch 
now i have to spend time duping
god damn getting a crit now feels amazing
dex increases crit damage so be sure to level that too
it used to play the same sound effect as when you get hit with a double damage attack
you mean it used to break your eardrums
I made it so that the stats are in the same line as what they affect
you mean the nail arts?
ohhhh
it takes 2 masks and plays a different sound effect, for impact
i was thinking you meant the charging attacks you learn from the nail_master_guys

no
oh
does anyone know how those work? Do they scale with nail damage, or do they have their own damage routine?
scale w/ nail
x2.5 says the wiki
then it should work fine
the real strategy is to get STR high enough where you one shot everything
I need to think of more things to be affected by Str
then you don't have to use nail arts
that's what I'm thinking, vaati
oh okay okay
god damn that would be f*ng amazing
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?
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
why
ahh yeah
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
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
It shouldn't be bad at all
heck, trying to implement a simple "bestiary"-like system from Castlevania made me lose an entire day
The game camera has a function for getting screen coordinates from world coordinates
So you can easily just use imgui
It's something like Camera.main.WorldToScreenCoordinates
Maybe not exactly that
Just from memory
Later
bye all
idk maybe rainingchain's map?


