Hello all. My apologies for not updating this website more. My life has become complicated lately, and in these uncertain times I find it difficult to want to write about it. A shame really, as the site has never been more popular. Seems like every time a new game comes out lacking multi-monitor support, I get hundreds of new visitors and users for Cursor Lock; a few weeks ago, it was Cites: Skylines. And today with the announcement of another new Deus Ex game, my version of the soundtrack is hotter than ever. It does make me feel good to know that I can produce things that people need, even if it’s only for video games.
Speaking of video game content, I spent a lot of time a few months ago working on a new class for Diablo II. Well, it’s not really a completely new class, more like a subclass since I only changed one skill tree for the Amazon. It just really bugged me how the Amazon felt so lame compared to the Diablo 3 Demon Hunter. It’s really difficult to keep the monsters from swarming the Amazon, so I designed some Demon Hunter-inspired skills to help remedy the problem, such as caltrops, turrets, and smokescreens. You can see these skills in action in the video below.
I also just wanted to fulfill my desire to do some really hardcore modding for Diablo II. The game has a rather awkward system for making modifications. If it were made today, we’d probably have XML files and LUA scripts to work with. But since it was made 15 years ago, we instead have to settle for massive CSV files. You can find the Demon Hunter mod on my Diablo II mod page. And massive props to the Phrozen Keep for continuing to support D2’s modders.
Another thing that bothered me about Diablo II for so long is that when you die your corpse keeps all your equipment on it, and you respawn basically naked and unarmed. Your only options are to run in, snatch everything off your corpse, and teleport back to town, or rage quit and hope that your corpse returns to town like it’s supposed to. Obviously, this is almost always zero fun and is why no games handle death like this anymore.
Unfortunately, there’s no way to change this in the game’s CSV tables. But I didn’t let that stop me. Every now and then, a problem comes along which must be solved through assembler hacking, and this was one of those times. But I didn’t really have a clue which function was involved in character death. So, I just put breakpoints on every function in IDA and attached to the running process. It took a while of breaking, disabling breakpoints, and resuming, but I eventually narrowed it down to several dozen functions involved in death. Some functions did death animations, some saved character data, but then I found a suspicious bit of code that would loop 14 times—the number of equipment slots. This was the code where the game looped through each equipment slot and moved the item from the player to the player’s dead body. And then there was nothing left to do but some trial and error to figure out where I could safely jump over the offending code and re-enter. Now the only problem is that this mod will have to be updated every time there’s a Diablo II patch. 😥
Since then, I’ve been turning back to more PHP/HTML/CSS/JS coding. I’m working on a project that I can’t disclose at this time but which quite possibly could be my most epic work yet. Wish me luck in completing it.
Recently, I’ve also been using PHP as my go to scripting language for everyday projects. A couple days ago, I wanted to be able to pull all GPS image data from a directory and display it in Google Earth. PHP has file IO, EXIF, and XML libraries, so it was real convenient to bash out a script using that. Then I realized I had created an account on Github recently to comment on some projects and thought why not just put this code on there. So I did. Maybe I’ll add more small projects like this in the future.