Editing
Hex Editing - Guide
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==== Spell specialty types ==== Spell specialty type table starts at 0x0e6358 (with Fire Wall specialty). Each consecutive byte is then the next spell by spell ID (Firewall, Earthquake, Magic Arrow, etc.) up to Slayer. Each spell specialty can take 6 types: : 00 - +25% damage (Luna) : 01 - +50% damage (Ciele). : 02 - Tier bonus A, such as Haste, Bloodlust or Stone skin specialties. Yes, all three of these types of specialties have the same bonus here; they are then overwritten in the Hota.dll. Their tables are relatively easy to find in said file, since they just include all bonuses listed one by one, for units level 1-7. : 03 - Static bonus +10 (Aenain) : 04 - This one is only used by Fortune (Daremyth, Melodia). In contrary to what BTB claims, it sets the value of the spell's effect to 3, regardless of the spell's level or the values in SPTRAITS.txt. It can be used to f.e. set the value of extra Counterstrikes from the [[Counterstrike]] spell to 3, or, should its value be increased, affect another value used by a spell. : 05 - Tier bonus B (+20/+20/+16/+16/+12/+12/+8), only used by Coronius as far as I know. Specific value of the bonus is determined by a table in Hota.dll : 06 - Scaling bonus (10% per level, overwritten for Astra and Uland to be 10% per 8-n, where n is the level, in the Hota.dll). HotA.dll changes almost all of these bonuses, meaning that while the specific spell's specialty type can be changed, an entire specialty type can't be edited without editing HotA.dll If a spell does not belong to the spell table, the scaling bonus is applied (for example this applies to the Hypnotize specialist, Astral). "But what if we want to change the specialty type for a spell like Hypnotize?" We can extend the table by changing 0x0e6296 (equal to 0x2a by default) to a different value, which corresponds to the number of spells in the table -1. If we extend the table, the next specialties will be those for the next spells by spell ID. We have a total of 13 bytes of nop (90), so the last spell specialty we can code this way is Summon Air Elemental. Remember to update all specialties created this way! You shouldn't just leave the nops (90) in the middle of the table! "But what about Victoria, the Land Mine specialist?", you may ask. Well, I'm here to give answers: The command '''lea eax, [esi-0Dh]''' located at 0x0e6291 finds the spell ID of firewall (0d) and chooses it as the first spell on the list of specialties ''(remember? The one that starts at 0x0e6358?)''. By changing it to '''lea eax, [esi-0Bh]''', we can change the first spell ID to 0x0B, or Land Mine. ''Notice, that this reduces the last spell specialty to Summon Earth Elemental, but I doubt anyone will miss the Summon Water Elemental and Summon Air Elemental specialties.'' Next, we have to increase the number of spells in the list by 2 (located at 0x0e6296), and then move the entire spell specialty table, 2 bytes each, because now it starts at 0x0e6358 with Land Mine (and still follows by spell ID). "And what about Eovacius? And Zilare?" Haven't looked at them yet but I believe they may be hard-coded. The specialty types can be changed by altering their commands. Each specialty type (00, 01, and so on) have a DWORD pointer to their appropriate code located in a 28-byte long table starting at 0x0e633c.
Summary:
Please note that all contributions to Heroes 3 wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
English
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Purge
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information