Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
I'd like to get the complete list of defaults types per classification:
- Units
- Items
- Destructibles
- Doodads
- Abilities
- Buff/effects
- Upgrades
I saw this old topic, part of what I need is here, but it is old and the method to get it is not described
Can somebody explain me how I can extract this data from game files ?
Dr Super Good talked about using "MPQ editor", but all I know to do with a MPQ Editor is to get the list of files in a map (.w3i, .w3a, ...), not how to read them
Thanks. After the advice of Dr Super Good I installed this CASC viewer: Casc Storages - Main page.
It doesn't work with W3 1.31.1 (crash on opening), but it works with W3 1.30.4. And it seems there are the .slk files within
you get Cascview, open the warcraft 3 main folder with it. Then inside cascview you navigate to units or to units inside _Balance not sure which holds the correct informations. But regardless there are slk and txt files. The slk files should be openable with an excell software and contain the default data. While the txt files contain order, images, missle data, sfx etc.
While your warcraft 3 map is openable with mpq and holds changed values in regards to one used base set.
Edit: This took me almost 3 hours, so shower me in +rep and donate at 3ICE.hu — thanks for the question, this was a very fun project.
836+2-3 UnitIDs found across all MPQ/CASC versions as of 2019. october 17. (Patch 1.31.1.12164)
Firstly, some weird extras no other SLKs have except one:
Extra ID found only in units\unitweapons.slk
nrmf
From _balance\custom_v0.w3mod\units\unitabilities.slk
oang
In both cases the remaining (hundreds of IDs) were slightly reordered but otherwise identical to the master list below. (So I did not make a mistake and find a loose weapon or ability ID.)
In both cases it is a unit ID. Probably leftover from a removed unit.
MANY files did not have these three IDs but were otherwise similar:
Code:
nba2
nsca
nsce
Lastly, Reign of Chaos of course:
_balance\custom_v0.w3mod\units\notused_unitdata.slk
Only has 466 of the 836 units.
From _balance\custom_v1.w3mod\units\unitbalance.slk
There were no changes since Dr Super Good's post in 2011.
However I did find 2 extras and 3 possibly removed IDs (see above).
I'm working on abilities next. Just because units are the same, we can't assume all others will be.
Abilities and upgrades WERE changed around plenty, I read from the patch notes.
(The HIVE text editor is starting to get laggy with so many lines, so I'm starting a new post instead of editing.)
237±2 Buffs, 799+4 abilities, and 275+1-1+3 Items
I loved reading all the original slk comments by D. Lawrence, A. Gilson, F. Gilson, A. Bond, B. Wood, M. Scipione, and Frank Pearce himself!
How many HP the locust must collect before it will return the HP to the mother.
How much life hero will have when reincarnated. Use huge number to set to hero's max life.
Arbitrary text to determine display order in editor
Maximum number of acolytes that can be sucking gold from the mine at one time.
sadly, this is not an area, but instead the scaling factor increase for the King's graphic when he is BIG
Stealing leaves unit alive (0 = false) (1 = true)
Not available for use in editor
Setting duration makes this ability heal over time. Set a buff for this to work.
Shared cooldown (the cooldown on the item is used instead of on the spells).
Radius of detection object created when Blademaster becomes ethereal.
Radius of the ring that the acolytes form around the gold mine while mining.
Priority for stealing (0 means it gets ignored): Low # = Low Priority
Max locusts that can target any particular enemy unit at the same time.
Mana regeneration disabled during the day.
List of units that are randomly chosen from to be spawned in.
Impact delay (must match birth time on unit).
If set to 0, it just uses the duration field to determine when the club should die.
Fraction of damage dealt by locusts that will be collected and returned to the mother.
For each unit healed, charge the mana cost up until X number of units.
Extra damage applied to primary target. Only applies to targeted version of this spell (ie Frost Nova)
Defines the class ID that determines the general behavior of the ability.
Bitmask indicating which weapons are enabled while rooted.
Building that gets created based on which race is casting the spell (human, orc, undead, night-elf)
Area of effect at beginning of spell. (Radius grows over duration of spell.)
Area to search for a friendly unit to give the buff to.
Allow busy units to get pulled in (if we can't find enough idle ones).
Allows for duplicate entries of an ability with different spell data.
Amount of time spiders spend on unit.
"Buffer mana". Can't cast until mana reaches "mana cost" + "buffer mana".
237±2 Buffs
Two buffs found only in units\abilitybuffdata.slk
Bps1
BIhm
I'm not sure if they are new or removed.
NOTE: Not included in the list below!
Rest of the buffs from _balance\custom_v0.w3mod\units\abilitybuffdata.slk
469 Doodads
There is only one slk handling doodads, thankfully. Not dozens of versions for me to look through and compare! But I got lucky only this one time...
Oh, and to actually answer your original "Can somebody explain" question... To extract this data from game files you need an MPQ editor or a CASC editor, depending on your game version. (The newer patches use CASC, anything older than 2019 uses MPQ.)
The IDs are in *.slk files. There are special SLK editors available, but for our purposes Excel will be just fine. Though I'm angry at Microsoft for it really mangles the plaintext readability of SLK once you save it. Pure SLK can be edited in Notepad with some effort, but good luck doing the same once Excel saves its format strings and other junk into it. Blizzard started using Excel and it shows... Suddenly the file size grew from a couple kilobytes per data table to 20 MB total! Not sure which patch is the culprit. Possibly happened over time as they changed data in pure SLK files as needed, and Excel mangled them on save one by one.
Many other spreadsheet and database tools can handle the file format. Use your favorite!
The specific files are all found in the various mpq files: war3.mpq, war3x.mpq, war3patch.mpq, war3xlocal.mpq, etc. Use your MPQ editor's search functionality in all these mpq files, one by one. Extract what you find in separate folders (they have the same name but different contents in each MPQ.) Usually war3xpatch has the latest version.
Or in the case of CASC: Click File → Open CASC Storage... Navigate to your wc3 folder, then select Data and click OK. (we don't care about folders like x86_64 and the executables, pak's, dll's, etc. inside them so...)
Once the 2GB is loaded, expand war3.w3mod and use ALT+F7 to "Search in Storage" / "files" for *.slk.
Do not use find text as it will take a very long time and likely just crash. Extracting everything would be a costly operation!
The asterisk (*) is very important. (Search *slk or *.slk, not plain slk.) Without "*" there will be no results because it matches regex /^(%s)$/, not /.*(%s).*/ as one might expect...
I ordered them by file name, not path, to show which files describe the same thing. (But differently of course.) And separated with an empty line where 2 or 4 (usually different) versions exist. (Some ID's are even duplicated across 8-10 or even 12 files. Have fun merging them!)
To bulk extract everything in the search results, you sadly can not drag-select nor press CTRL+A inside that modal popup dialog, but luckily shift-selecting works. So press home, then shift+end, or scroll up, click the first item, scroll down, and shift+click the last item. Then right click→extract (F5). Default settings are fine, but: Remember the directory where the files will be extracted to!
Now go to the Work folder of Casc Viewer, (It's usually wherever you installed it), open the SLK files one by one and extract your desired data from them! ID in this case:
Select the first column, copy paste into a diff tool. I use Notepad++ with Compare plugin or NetBeans DIFF because it visually compares changes with pretty spline curves.
Excel can natively compare entire spreadsheets, but you will be buried in spam because Blizzard changed the font... Arial 10pt vs Calibri 11pt (So stupid, to save font information in a data table. Oh well...)
They also don't keep the data ordered, and there have been random order changes and even mass-moves in the files sadly. I work around this by sorting the data myself, before comparing. Excel can do it; Data→Sort, Notepad++ has TextFX Tools by default which you can can use, and NetBeans has a "Sort line tools" plugin.
Merge differences, throw away duplicates, massage the data into whatever format you need. And that's it.
I did my best to preserve Blizzard's ordering, so I'd sort → compare → merge and then undo the sort.
We should probably create a downloadable master txt file with ALL the ID's from above, merged into a single list. Even insert the deleted ID's, maybe...
I'm curious; What will you use this data for?
This took me over 3 hours, so shower me in +rep and donate at 3ICE.hu — thanks for the question, this was a very fun project.
Attachments
3ICE's ID list of all (effect, upgrade, doodad, destr, item, ability, buff, unit, bonus, wurst).txt
17.7 KB
· Views: 67
3ICE's every single ID list (all, effect, upgrade, doodad, destr, item, abil, buff, unit, bonus).zip
Thanks a lot dude ! I like persons who enjoy intellectual challenges
+ thanks the summary in your posts is very complete ! I commended & donated
Just a question an additional question: what CASC software (+ version) did you use to browse CASC 1.31.1 ? I couldn't with latest CASCView, it crashed on launch
Funny you found 803 abilities, and WE only displays 785 of them. I wonder which ones are hidden excepted Atak & Amov
First I'll incorporate abilities in the library I am making that will expose some usefull functions:
- Scanning all abilities at game start with min lagg/freeze
- Get all ability in game
- Game a unit's abilities (ID format, the new instanciated type "ability" suxx)
- Game an item's abilities (ID format, the new instanciated type "ability" suxx)
- Call the new 1.31 primitives GetAbilityXxxxx(Level)Field with ID as parameter instead of "ability" instance
Then I want to do a similar lib for other items ! Buffs first, then Items,...
Thank you very much! Honestly did not expect to get anything, I was so surprised. What a nice email to wake up to.
Reading and re-reading my posts above, I found a very weird, 5 letter rawcode:
'Bspln'
(among the buffs)
Reviewing my master list (attached) also yielded several case-insensitively duplicated IDs across different types (4 to be exact):
Code:
asbl•ASbl
ASpt•Aspt
dtsb•DTsb
NSra•nsra
This is not a problem as ASCII has different values for upper case and lower case chars (naturally). Just make sure to always use the list in a case-sensitive manner. (Because I initially didn't... Oops...)
Testing their lists against mine, I found the exact same order and also matching number of unitIDs (836 units), so I'm even more reassured I got everything right. BUT the discrepancy between abilities is worrying: I have 803 abilities, they have only 692. But that's not what worries me since I got more than them by hundreds. What worries me is this; They have several abilities that I missed!!
I don't know how I could have missed anything... More research will need to be done. (Some notes to myself: ANwm exists, twice. (Anwm) Slo2 not actually missing. Did I fail at failing? ANlg not in ANY slk. Check in editor, make hacked custom units, check their data files, widgetize map.)
On to your questions!
First, I use a very old version of Casc (because I'm lazy to check for updates) and PTR Warcraft 3. (Compared the PTR data against official release and also against 1.26 versions, also, of course.)
Crashes do happen, but I just restart the program and try to do it again, but differently (to avoid the buggy code paths). My Windows reliability history says I crashed CascView.exe 8 times yesterday, and 2 times today. Latest crash report:
Description
Faulting Application Path: C:\Warcraft III\!\CascView\CascView.exe
Problem signature
Problem Event Name: APPCRASH
Application Name: CascView.exe
Application Version: 1.0.2.81
Application Timestamp: 5b766f60
Fault Module Name: CascView.exe
Fault Module Version: 1.0.2.81
Fault Module Timestamp: 5b766f60
Exception Code: c0000005
Exception Offset: 00000000000136b4
OS Version: 10.0.17763.2.0.0.256.48
Locale ID: 1038
Additional Information 1: b5f2
Additional Information 2: b5f20ee2d653e9ee73db948330695d77
Additional Information 3: afe7
Additional Information 4: afe7a4ad4b574be95d98e973a5c016e2
Extra information about the problem
Bucket ID: f309ee115c275938a401cf31140e5c98 (1441661165432102040)
The hidden abilities (and units!) are flagged in slk with useInEditor = 0, I even noted this in my comments section (See the "Some examples" spoiler under "Frank Pearce himself" for "Not available for use in editor" emphasized word mine.) Here are my favorites:
Code:
Ability:
Aalr Alarm
Aatk Attack
ANbu Build (Neutral)
AHbu Build (Human)
AObu Build (Orc)
AEbu Build (Night Elf)
AUbu Build (Undead)
AGbu Build (Naga)
ACsp Creep Sleep
Atdp Drop Pilot
AHer Hero
Atlp Load Pilot
Aloc Locust
Amov Move
Afir On Fire
Afih On Fire (Human)
Afio On Fire (Orc)
Afin On Fire (Night Elf)
Afiu On Fire (Undead)
Attu Tank Turret
Atol Tree of life (for attaching art)
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.