Hellfire Patch v1.02.A5: Classic HF with less bugs and more polish!
Thanks! I had been able to discern some of the information you quoted on my own, but I can use the rest to fill in the blanks.

I did not realize that the values dictating on which frame an action occurs were weaved through these same values defining animation lengths. No wonder trying to determine what some of them did by trial and error was so difficult.

So, first I will tell you that the information you quoted appears to be for Diablo, and not Hellfire. But also possibly a version of Diablo older than v1.09. The locations/offsets/addresses (whatever you'd like to call them really) vary greatly between Diablo and Hellfire, but also slightly between different versions of the game.

Also, these locations are for data inside the executable file. If you've never done anything like this before, I would recommend modifying the program's memory. This saves you the hassle of having to keep multiple copies of the .exe file you're editing, helps avoid saving mistakes permanently, and you don't have to keep detailed notes about where and what you changed, what the original values were, etc.

You don't require any special tools to do this (although you could get a memory editing program if you want to work with it in real-time), since PlugUlmo's loader.exe can apply changes to the game memory when launching either Diablo or Hellfire (and is how my own mod is written at the moment). So once you have the memory addresses, you can simply add them into my mod file, or use your own mod file.

Basically, I prefer working/testing stuff by altering memory first, because it is a temporary canvas that gets wiped every time you restart the program - if you goofed something up, something crashes etc. the results will typically be temporary, unless you were messing with something that controls how the game wrote out something permanent, say, your Warrior's character file data, as an example here.

Anyway, I'll type you up a quick example of how to do that, but first let's get you the right addresses for what you want to play with.

Code:
Hellfire memory addresses
4B5CA1 09 - Warrior's 'hit' frame/speed
4B5CD8 09 - Barbarian's 'hit' frame/speed

So, if you wanted to modify these you can simply open cowqueston.dat in my mod, go to the bottom and create a new area thusly:

Code:
start HF1.01 "Warrior and Barbarian attack 2 frames faster"
4B5CA1 09 07
4B5CD8 09 07
end

These modification codes are just instructions to the memory patcher in loader.exe. I'll explain how this works:

start - This line indicates the start of a new memory change. All of the text after it is simply for informational purposes. HF1.01 has no functional purpose, it merely indicates the version of the .exe it is meant to work with, and could be typed out fully as Hellfire1.01 - doesn't matter. Despite Marsh's mod displaying the version number v1.02, the underlying core is still v1.01, so none of the address locations are different for data tables such as attack speeds etc. Only things Marsh and I have changed will differ from v1.01.

After the start line, each separate line is a simple 3 piece instruction:
4B5CA1 09 07 is: address/offset | expected value | new value

If the value in memory address 4B5CA1 is 09, it will be changed to 07. Otherwise the change will not be applied.

end just signifies the end of an individual memory change. Make sure you open and close any changes you write into the file this way, or the program won't understand. Check the bottom of PlugUlmo.log to look for error messages if your changes don't seem to be getting applied. If you put your own codes at the top of my mod file instead, you'll have to scroll to the top of each new log section to find yours. You may want to delete this file so it can start a new log if it has too much information in it. I've noticed lately it has been growing pretty fast with all the changes it records loading from my mod every time you open Hellfire now. I may have to turn it off as it could grow to a fairly ridiculous size with a few months of regular play...

You can use the code I gave you above and pop it right into the file and it will work. Note, however, that playing with these values will not yield quite the effect you wanted - attack speed bonuses on items will still make the character's attacks faster. This is because the attack speed code skips 1 or 2 frames before the attack frame is normally reached. Because of this, speeding up attacks this way will look funny - you'll be making it occur earlier in the animation, so depending on the speed you put in, your character may look like they keep raising their weapon to strike but never actually connect a swing, yet the monster will die anyway. Also, in theory, your attack may stop working entirely if you had the misfortune to specify a frame for the hit to take place that is one of the two frames skipped when attack speed bonuses are applied. I believe these are frames 3 and 5.

I also should mention that this change will not influence all types of weapons. I don't know if some values are hardcoded or there is another table of speeds somewhere, but based on the odd results I've seen experimenting with these numbers, you can expect that your change will only affect the animations with the same base attack speed for that character (and maybe not even all of them). e.g. for Warrior, everything with a base speed of 0.45. For Sorcerer, everything with a base speed of 0.60. I'm uncertain what speed group the Barbarian might effect, as I don't have one handy to test with, but it may not be the weapons you'd expect. The Bard for instance had no change on her swords (0.50), but shields and kicks (0.50) did change.

This has certainly piqued my curiosity in what the world is going on in there with the attack speeds. Maybe I'll dissect it some day, and maybe what I find will to finally make some sense out of how the Sorcerer ended up with Shields as his fastest weapon type. There might even be an explanation for the Bard seeming to attack faster in HF:Fixed if it wasn't just a shorter animation.

Let me know if you want any more information.
Reply


Messages In This Thread
A5 progress update - by Belix - 02-02-2015, 09:28 AM
RE: Hellfire Patch v1.02.A5: Classic HF with less bugs and more polish! - by Belix - 08-12-2015, 06:29 AM

Forum Jump:


Users browsing this thread: 2 Guest(s)