SetItemBonuses.gam Files
This section discusses the "\GameBalance\SetItemBonuses.gam" file in the "CoreData.mpq" file. MPQ Patches to this file are located in the "base" subdirectory of the Diablo 3 "MPQs" directory. Please see the MPQs section for general MPQ information and basic information about how files are encoded.
SetItemBonus Structure
The SetItemBonus structure size is 0x1D0 bytes. The set name accounts for 0x100 bytes, and optional ModCodes account for most of the rest, so it is not a very large structure. Here are the details of this structure:
| struct SetItemBonus | // sizeof 0x1D0 | |
| { | ||
| 0x000 | DWord unknown1; | // always 0x00000000 |
| 0x004 | char itemSetName[256]; | // non-NLS key name of the Item Set |
| 0x104 | DWord parentHash; | // hash of the parent Item Set |
| 0x108 | DWord numOfSet; | // number in set to activate bonus |
| 0x00C | DWord unknown2; | // always 0x00000000 |
| 0x110 | ModCode mods[8]; | // ModCodes (Attributes) |
| } |
The ModCode (sometimes called Attribute) structure is the same as the one used for Items.
The entries in the "SetItemBonuses.gam" file fall into two groups:
- An "Item Set" entry that has no parentHash (0xFFFFFFFF) and no ModCodes defined.
- The "Item Set Bonus" entries that have a parentHash (which is the hash of the "ItemSetName". Some of these entries seem to be unused since they have a "numOfSet" of 0 and no ModCodes defined.
Most "Item Set Bonus" entries have a "numOfSet" value greater than zero. This is the number of Set Item pieces that a character must wear to trigger the bonus (e.g., a 2-piece bonus). All such entries have one or more ModCodes defined that specify the Set bonuses.
Here is a partial example of one of the Sets in the "SetItemBonuses.gam" file:
| itemSetName | parentHash | numOfSet | ModCode1 | ModCode2 |
|---|---|---|---|---|
| Inferno Set 010 | FFFFFFFF | 0 | FFFFFFFF | FFFFFFFF |
| Inferno Set 010 (1) | 1010E22E | 2 | 0000000D | 000000F9 |
| Inferno Set 010 (2) | 1010E22E | 0 | FFFFFFFF | FFFFFFFF |
| Inferno Set 010 (3) | 1010E22E | 3 | 00000040 | FFFFFFFF |
| Inferno Set 010 (4) | 1010E22E | 4 | 000000FC | 000000A5 |
| Inferno Set 010 (5) | 1010E22E | 0 | FFFFFFFF | FFFFFFFF |
Note that 0x1010E22E is the String Hash for "Inferno Set 010".
The Set Items Bonuses "Inferno Set 010 (2)" and "Inferno Set 010 (5)" have a "numOfSet" of "0" and no ModCodes defined. The other three Set Items Bonuses provide the 2-piece, 3-piece, and 4-piece bonuses for this Item Set. Each of the bonuses grants (in the above case) 1-2 mods each.
The ModCode with value 0x00D corresponds to Defense. The min/max data for the ModCodes is also stored in "SetItemBonuses.gam", at the end of the file as ModCode Variable Data.
For a complete list of Set Items and their bonuses, check out D3Lexicon's Item Sets.
