- Joined
- May 10, 2007
- Messages
- 60
Semi-sequel to this thread by Retera.
You may know that abilities, like other "objects" in WC3, are represented by a unique 4 character ID, called the alias, functioning as its "primary key" in the database.
What is perhaps less obvious is that in addition to its alias, each ability has another field, simply named code. Take this excerpt from AbilityData.slk:
The highlighted cells indicate series of abilities that share the same code while having different aliases. Note in particular the Plague Aura abilities, which share an ability code that does not match any of their aliases. From this we can conclude that the code is actually completely separate from the alias.
This provides an explanation for some observed phenomena: When the "base ability" field for Rain of Chaos is changed, and some cases when Engineering Upgrade is used to replace abilities, the abilities seemingly transplant the data fields of the new abilities unto the behavior of the old abilities. In the framework presented here, we can say that the "code" is not changed, even though the alias and other fields are.
It also means that the game is referring to yet ANOTHER table when reading these codes to determine the abilities' behavior. Which codes does this hidden table contain?
By making changes to AbilityMetaData.slk, this field can be made modifiable in the World Editor. I have then gone through slks and text from the ROC and Frozen Throne Betas to try and find codes that haven't been removed (as of 1.30)
AIpi: Continous Passive Invisibility, no icon, supports an Art - Target effect, intended for a ring item.
ANgl: Exchange Gold for Lumber. NOT the same as Charge Gold and Lumber, that one is AAns.
Alea: Leash. Passive. Renders a unit unselectable like Locust, but NOT invulnerable or untargetable. Referred to in the FrozenBeta files as a night elf ability with a range of 1000. Maybe it was intended for the Avatar of Vengeance minions? I have not tested what happens if the unit is moved outside of the ability's range.
Amou: Mount. So far it only crashes the game when given to anybody. Files refer to it having "mount" and "dismount" order IDs, and tooltips reading "Morph" and "Unmorph".
AIca: Cure Area. Used by Staff of Purification in FrozenBeta, with range of 500 and AoE of 200. Testing so far reveals that it does not dispel, but CURES DISEASE CLOUD. I wonder if it removes other buffs that can't be dispelled?
Abar: Barkskin. Grants a unit DataA1 extra defense for its duration. Has Auto-cast.
Atpi: Pilot Tank. When a unit has this ability, the Load Pilot ability recognizes it as a valid target. However, the "tank" simply drives up to it and then does nothing, even if it has a Cargo Hold. Pilot Tank, inversely, still does not recognize the "tank" as an "armored transport".
What next?
From what I could gather from the old thread, some of yall have access to deeper in the WC3 codebase than the rest of us, and probably stand a better chance of finding any lost ability codes than most.
There's also the extra detail that the 4 character codes in WC3 are actually representative of 4 byte integers, with each character being a Windows-1252 representation of a byte. IDK if that helps with a search.
I include my test map attached, as well as my AbilityMetaData.slk. I use hero abilities for testing, because hero abilities with invalid ability codes, when learned, will retract skill points but remain at level 0 in the skill menu, making it easy to determine if the code is invalid and it's not just an ability with no ui presence.
Additional notes:
The Cargo Hold (Burrows) effect of removing the ability to attack is tied strictly to the Abun alias, so custom abilities do not inherit the effect. This also means that the code of Abun can be changed, and it will retain the effect of removing attack.
DracoL1ch suggested that the tank system was reworked into Devour Cargo, but the Demo and FrozenBeta files indicate to me that at least just before it was scrapped, it was to function more like Hippogryph Taming (Would've been cool if we could have used it like Starcraft Bunkers though):
You may know that abilities, like other "objects" in WC3, are represented by a unique 4 character ID, called the alias, functioning as its "primary key" in the database.
What is perhaps less obvious is that in addition to its alias, each ability has another field, simply named code. Take this excerpt from AbilityData.slk:
The highlighted cells indicate series of abilities that share the same code while having different aliases. Note in particular the Plague Aura abilities, which share an ability code that does not match any of their aliases. From this we can conclude that the code is actually completely separate from the alias.
This provides an explanation for some observed phenomena: When the "base ability" field for Rain of Chaos is changed, and some cases when Engineering Upgrade is used to replace abilities, the abilities seemingly transplant the data fields of the new abilities unto the behavior of the old abilities. In the framework presented here, we can say that the "code" is not changed, even though the alias and other fields are.
It also means that the game is referring to yet ANOTHER table when reading these codes to determine the abilities' behavior. Which codes does this hidden table contain?
By making changes to AbilityMetaData.slk, this field can be made modifiable in the World Editor. I have then gone through slks and text from the ROC and Frozen Throne Betas to try and find codes that haven't been removed (as of 1.30)
AIpi: Continous Passive Invisibility, no icon, supports an Art - Target effect, intended for a ring item.
ANgl: Exchange Gold for Lumber. NOT the same as Charge Gold and Lumber, that one is AAns.
Alea: Leash. Passive. Renders a unit unselectable like Locust, but NOT invulnerable or untargetable. Referred to in the FrozenBeta files as a night elf ability with a range of 1000. Maybe it was intended for the Avatar of Vengeance minions? I have not tested what happens if the unit is moved outside of the ability's range.
Amou: Mount. So far it only crashes the game when given to anybody. Files refer to it having "mount" and "dismount" order IDs, and tooltips reading "Morph" and "Unmorph".
AIca: Cure Area. Used by Staff of Purification in FrozenBeta, with range of 500 and AoE of 200. Testing so far reveals that it does not dispel, but CURES DISEASE CLOUD. I wonder if it removes other buffs that can't be dispelled?
Abar: Barkskin. Grants a unit DataA1 extra defense for its duration. Has Auto-cast.
Atpi: Pilot Tank. When a unit has this ability, the Load Pilot ability recognizes it as a valid target. However, the "tank" simply drives up to it and then does nothing, even if it has a Cargo Hold. Pilot Tank, inversely, still does not recognize the "tank" as an "armored transport".
What next?
From what I could gather from the old thread, some of yall have access to deeper in the WC3 codebase than the rest of us, and probably stand a better chance of finding any lost ability codes than most.
There's also the extra detail that the 4 character codes in WC3 are actually representative of 4 byte integers, with each character being a Windows-1252 representation of a byte. IDK if that helps with a search.
I include my test map attached, as well as my AbilityMetaData.slk. I use hero abilities for testing, because hero abilities with invalid ability codes, when learned, will retract skill points but remain at level 0 in the skill menu, making it easy to determine if the code is invalid and it's not just an ability with no ui presence.
Additional notes:
The Cargo Hold (Burrows) effect of removing the ability to attack is tied strictly to the Abun alias, so custom abilities do not inherit the effect. This also means that the code of Abun can be changed, and it will retain the effect of removing attack.
DracoL1ch suggested that the tank system was reworked into Devour Cargo, but the Demo and FrozenBeta files indicate to me that at least just before it was scrapped, it was to function more like Hippogryph Taming (Would've been cool if we could have used it like Starcraft Bunkers though):
Armored Transport had the alias hstt, War Wagon was hrtt (was recycled for Barrage Siege Engines in Frozen Throne) and Steam Tank had hmtt, which it retained when brought to retail."Use this ability on a Rifleman to become a War Wagon that can attack enemy units, but not buildings. Use this ability on a Mortar Team to become a Steam Tank that can siege enemy buildings."
- Load Pilot tooltip
Attachments
Last edited:




