ActInfo.txt
This file controls global Act functionalities including item levels, monster behaviors, and waypoints
This file uses the WanderingMon.txt file for a modular list of potential wandering units to spawn
This file defines where an act begins and ends. It is new to D2R and helps control traveling between acts.
Data Fields
act - [O] - Defines the ID for the Act
town - [O] - Uses an area level (Name field from Levels.txt) to define the Act's town area
start - [O] - Uses an area level (Name field from Levels.txt) to define where the player starts in the Act
maxnpcitemlevel - [N] - Controls the maximum item level for items sold by the NPC in the Act
classlevelrangestart - [O] - Uses an area level (Name field from Levels.txt) with its MonLvl values as a global Act minimum monster level. For example, this is used to determine chest levels in an Act.
classlevelrangeend - [O] - Uses an area level (Name field from Levels.txt) with its MonLvl values as a global Act maximum monster level. For example, this is used to determine chest levels in an Act.
wanderingnpcstart - [N] - Uses an index to determine which wandering monster class to use when populating areas (WanderingMon.txt for a list of possible monsters to spawn)
wanderingnpcrange - [N] - This is a modifier that gets added to the wanderingnpcstart value to randomly select an index
commonactcof - [O] - Specifies which ".D2" file to use as for the common Act COF file. This is used to establish the seed when initializing the Act.
waypoint1 - [O] - Uses an area level (Name field from Levels.txt) as the designated waypoint selection in the Waypoint UI
wanderingMonsterPopulateChance - [N] - The percent chance (from 0 to 100) to spawn a wandering monster (WanderingMon.txt for a list of possible monsters to spawn)
wanderingMonsterRegionTotal - [N] - The maximum number of wandering monsters allowed at once
wanderingPopulateRandomChance - [N] - A secondary percent chance (from 0 to #) to determine whether to attempt populating with monsters. Only fails if random chance selects 0.
Armor.txt, Misc.txt, Weapons.txt
These files control the functionality for all base items in the game (armors, miscellaneous and weapons).
They are loaded/merged together on runtime with their counterpart files in the following order: Weapons.txt, Armor.txt, Misc.txt
Columns that typically only exist in one of the files will be listed below all of the shared column entries.
This also means columns can be copied between files (such as auto prefix or spelldesc, etc)
Data Fields
name - [O] - This is a reference field to define the item; it does not need to be uniquely named
version - [N] - Defines which game version to create this item (0 = Classic mode | 100 = Expansion mode)
compactsave - [B] - If equals 1, then only the item's base stats will be stored in the character save, but not any modifiers or additional stats. If equals 0, then all of the items stats will be saved.
rarity - [N] - Determines the chance that the item will randomly spawn (1 / N). The higher the value then the rarer the item will be. This field depends on the spawnable field being enabled, the quest field being disabled, and the item level being less than or equal to the area level. This value is also affected by the relative Act number that the item is dropping in, where the higher the Act number, then the more common the item will drop.
spawnable - [B] - If equals 1, then this item can be randomly spawned. If equals 0, then this item will never randomly spawn.
speed - [N] - For Armors: Controls the Walk/Run Speed reduction when wearing the item. For Weapons: Controls the Attack Speed reduction when wearing the item.
reqstr - [N] - Defines the amount of the Strength attribute needed to use the item
reqdex - [N] - Defines the amount of the Dexterity attribute needed to use the item
durability - [N] - Defines the base durability amount that the item will spawn with. An item must have durability to become ethereal
nodurability - [B] - If equals 1, then the item will not have durability. If equals 0, then the item will have durability.
level - [N] - Controls the base item level. This is used for determining when the item is allowed to drop, such as making sure that the item level is not greater than the monster's level or the area level.
ShowLevel - [B] - If equals 1, then display the item level next to the item name. If equals 0, then ignore this.
levelreq - [N] - Controls the player level requirement for being able to use the item
cost - [N] - Defines the base gold cost of the item when being sold by an NPC. This can be affected by item modifiers and the rarity of the item.
gamble cost - [X] [N] - Defines the gambling gold cost of the item on the Gambling UI. Only functions for rings and amulets.
code - [O] - Defines a unique 3* letter/number identifier code for the item. This code is case sensitive, so a69 and A69 are considered different. *Can technically use 4 characters instead of 3, but Items.json will not process it (no visuals).
namestr - [O] - String Key that is used for the base item name. Reference string files found in local/lng/strings, such as item-names.json
magic lvl - [N] - Defines the magic level of the item, which can affect how magical item modifiers that can appear on the item (AutoMagic.txt)
auto prefix - [N] - Automatically picks an item affix name from a designated group value from AutoMagic.txt. Applies to all item qualities, excluding sets and uniques.
alternategfx - [O] - Uses a unique 3 letter/number code similar to the defined code fields to determine what in-game graphics to display on the player character when the item is equipped
normcode - [O] - Links to the Code field to determine the normal version of the item
ubercode - [O] - Links to a Code field to determine the Exceptional version of the item
ultracode - [O] - Links to a Code field to determine the Elite version of the item
component - [N] - Determines the layer of player animation when the item is equipped. This uses a Token entry from Composit.txt
invwidth & invheight - [N] - Defines the width and height of grid cells that the item occupies in the player inventory
hasinv - [B] - Determines if an item can be socketed with runes, jewels or Gems. (1 = Socketable | 0 = Not Socketable)
Gemsockets - [N] - Controls the maximum number of sockets allowed on this item. This is limited by the item's size based on the invwidth and invheight fields. This also compares with the MaxSockets1 field(s) in the ItemTypes.txt file.
gemapplytype - [N] - Determines which affect from a gem or rune will be applied when it is socketed into this item (Gems.txt)
Code | Description |
0 | Weapon |
1 | Armor or Helmet |
2 | Shield |
flippyfile - [O] - Controls which DC6 file to use for displaying the item in the game world when it is dropped on the ground (uses the file name as the input). *Legacy View Only
invfile - [O] - Controls which DC6 file to use for displaying the item graphics in the inventory (uses the file name as the input). *Legacy View Only
uniqueinvfile - [O] - Controls which DC6 file to use for displaying the item graphics in the inventory when it is a Unique quality item (uses the file name as the input). *Legacy View Only (Any text required in field to use entry from uniques.JSON for D2R view)
setinvfile - [O] - Controls which DC6 file to use for displaying the item graphics in the inventory when it is a Set quality item (uses the file name as the input). *Legacy View Only
useable - [B] - If equals 1, then the item can be used with the right-click mouse button command (this only works with specific belt items or quest items). If equals 0, then ignore this
stackable - [B] - If equals 1, then the item will use a quantity field and handle stacking functionality. This can depend on if the item type is throwable, is a type of ammunition, or is some other kind of miscellaneous item. If equals 0, then the item cannot be stacked
minstack - [N] - Controls the minimum stack count or quantity that is allowed on the item. This field depends on the stackable field being enabled
maxstack - [N] - Controls the maximum stack count or quantity that is allowed on the item. This field depends on the stackable field being enabled
spawnstack - [N] - Controls the stack count or quantity that the item can spawn with. This field depends on the stackable field being enabled
Transmogrify - [X] [B] - If equals 1, then the item will use the transmogrify function. If equals 0, then ignore this. This field depends on the "useable" field being enabled. Does not function at all
TMogType - [X] [O] - Links to a "code" field to determine which item is chosen to transmogrify this item to. Does not function at all
TMogMin - [X] [N] - Controls the minimum quantity that the transmogrify item will have. This depends on what item was chosen in the "TMogType" field, and that the transmogrify item has quantity. Does not function at all
TMogMax - [X] [N] - Controls the minimum quantity that the transmogrify item will have. This depends on what item was chosen in the "TMogType" field, and that the transmogrify item has quantity. Does not function at all
type - [O] - Points to an Code defined in the ItemTypes.txt file, which controls how the item functions
type2 - [O] - Points to a secondary Item Type defined in the ItemTypes.txt file, which controls how the item functions. This is optional but can add more functionalities and possibilities with the item
dropsound - [O] - Points to a sound defined in the Sounds.txt file. Used when the item is dropped on the ground
dropsfxframe - [N] - Defines which frame in the flippyfile animation to play the dropsound when the item is dropped on the ground
usesound - [O] - Points to sound defined in the Sounds.txt file. Used when the item is moved in the inventory or used
unique - [B] - If equals 1, then the item can only spawn as a Unique quality type. If equals 0, then the item can spawn as other quality types
transparent - [B] - If equals 1, then the item will be drawn transparent on the player model (similar to ethereal models). If equals 0, then the item will appear solid on the player model
transtbl - [N] - Controls what type of transparency to use (if the above transparent field is enabled). Referenced by the Code value of the Transparency Table
lightradius - [N] - Controls the value of the light radius that this item can apply on the monster. This only affects monsters with this item equipped, not other types of units. This is ignored if the item's component on the monster is "lit", "med", or "hvy"
belt - [N] - Controls which belt type to use for belt items only. This field determines what index entry in the Belts.txt file to use
quest - [N] - Controls what quest class is tied to the item which can enable certain item functionalities for a specific quest. Any value greater than 0 will also mean the item is flagged as a quest item, which can affect how it is displayed in tooltips, how it is traded with other players, its item rarity, and how it cannot be sold to an NPC. If equals 0, then the item will not be flagged as a quest item. Referenced by the Code value of the Quests Table
questdiffcheck - [B] - If equals 1 and the quest field is enabled, then the game will check the current difficulty setting and will tie that difficulty setting to the quest item. This means that the player can have more than 1 of the same quest item as long each they are obtained per difficulty mode (Normal / Nightmare / Hell). If equals 0 and the "quest" field is enabled, then the player can only have 1 count of the quest item in the inventory, regardless of difficulty
missiletype - [O] - Points to the *ID field from the Missiles.txt file, which determines what type of missile is used when using the throwing weapons
durwarning - [N] - Controls the threshold value for durability to display the low durability warning UI. This is only used if the item has durability
qntwarning - [N] - Controls the threshold value for quantity to display the low quantity warning UI. This is only used if the item has stacks
mindam - [N] - The minimum physical damage provided by the item
maxdam - [N] - The maximum physical damage provided by the item
StrBonus - [N] - The percentage multiplier that gets multiplied the player's current Strength attribute value to modify the bonus damage percent from the equipped item. If this equals 1, then default the value to 100
DexBonus - [N] - The percentage multiplier that gets multiplied the player's current Dexterity attribute value to modify the bonus damage percent from the equipped item. If this equals 1, then default the value to 100
gemoffset - [N] - Determines the starting index of possible gem/rune options based on the gemapplytype field and the Gems.txt entries. For example, if this value equals 9, then the game will start with index 9 ("Chipped Emerald") and ignore lower-indexed entries, meaning the item cannot roll these options
bitfield1 - [N] - Controls different flags that can affect the item. Uses an integer value to check against different bit fields by using the "&" operator. For example, if the value equals 5 (binary = 101) then that returns true for both the 4 (binary = 100) and 1 (binary = 1) bit field values.
Bit Field One Bits | Binary Equivalent Value | Description |
1 | 1 | Allow the item to be capable of having Magic quality |
2 | 10 | The item is classified as metal |
4 | 100 | The item is classified as a spellcaster item (currently does nothing) |
8 | 1000 | The item is classified as a skill based item (currently does nothing) |
The following fields are separated per NPC in each Act:
[NPC]Min - [N] - Minimum amount of this item type in Normal rarity that the NPC can sell at once
[NPC]Max - [N] - Maximum amount of this item type in Normal rarity that the NPC can sell at once. This must be equal to or greater than the minimum amount
[NPC]MagicMin - [N] - Minimum amount of this item type in Magical rarity that the NPC can sell at once
[NPC]MagicMax - [N] - Maximum amount of this item type in Magical rarity that the NPC can sell at once. This must be equal to or greater than the minimum amount
[NPC]MagicLvl - [N] - Maximum magic level allowed for this item type in Magical rarity; Where [NPC] is one of the following:
Charsi |
Gheed |
Akara |
Fara |
Lysander |
Drognan |
Hratli |
Alkor |
Ormus |
Elzix |
Asheara |
Cain |
Halbu |
Jamella |
Larzuk |
Malah |
Anya |
Transform - [O] - Controls the color palette change of the item for the character model graphics. Referenced by the Code value of the Inventory Transform Table
InvTrans - [N] - Controls the color palette change of the item for the inventory graphics. Referenced by the Code value of the Inventory Transform Table
SkipName - [B] - If equals 1 and the item is Unique rarity, then skip adding the item's base name in its title. If equals 0, then ignore this
NightmareUpgrade - [O] - Links to another item's Code field. Used to determine which item will replace this item when being generated in the NPC's store while the game is playing in Nightmare difficulty. If this field's code equals "xxx", then this item will not change in this difficulty
HellUpgrade - [O] - Links to another item's Code field. Used to determine which item will replace this item when being generated in the NPC's store while the game is playing in Hell difficulty. If this field's code equals "xxx", then this item will not change in this difficulty
Nameable - [B] - If equals 1, then the item's name can be personalized by Anya for the Act 5 Betrayal of Harrogath quest reward. If equals 0, then the item cannot be used for the personalized name reward
PermStoreItem - [B] - If equals 1, then this item will always appear on the NPC's store. If equals 0, then the item will randomly appear on the NPC's store when appropriate
diablocloneweight - [N] - The amount of weight added to the diablo clone progress when this item is sold. When offline, selling this item will instead immediately spawn diablo clone.
Armor.txt only
minac - [N] - The minimum amount of Defense that an armor item type can have
maxac - [N] - The maximum amount of Defense that an armor item type can have
block - [N] - Controls the block percent chance that the item provides (out of 100, but caps at 75)
rArm - [N] - Controls the character's graphics and animations for the Right Arm component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy"
lArm - [N] - Controls the character's graphics and animations for the Left Arm component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy"
Torso - [N] - Controls the character's graphics and animations for the Torso component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy"
Legs - [N] - Controls the character's graphics and animations for the Legs component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy"
rSPad - [N] - Controls the character's graphics and animations for the Right Shoulder Pad component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy"
lSPad - [N] - Controls the character's graphics and animations for the Left Shoulder Pad component when wearing the armor, where the value 0 = Light or "lit", 1 = Medium or "med", and 2 = Heavy or "hvy"
Misc.txt only
autobelt - [B] - If equals 1, then the item will automatically be placed is a free slot in the belt when picked up, if possible. If equals 0, then ignore this
bettergem - [O] - Links to another item's Code field. Also used by Function 18 from the Code field in Shrines.txt to specify which gem is the upgraded version
multibuy - [B] - If equals 1, then use the multi-buy transaction function when holding the shift key and buying this item from an NPC store. This multi-buy function will automatically purchase enough of the item to fill up to a full quantity stack or fill the available belt slots if the item is has the autobelt field enabled. If equals 0, then ignore this
spellicon - [N] - Determines the icon asset for displaying the item's spell. This uses an ID value based on the global skillicon file. If this value equals -1, then the item's spell will not display an icon. Used as a parameter for a PSpell function
pspell - [N] - Uses the Code value to select a spell from the Player Spell Table when the item is used. This depends on the item type.
state - [O] - Links to a State field defined in the States.txt file. It signifies what state will be applied to the player when the item is used. Used as a parameter for a PSpell function
cstate1 - [O] - Links to a State field defined in the States.txt file. It signifies what state will be removed from the player when the item is used. Used as a parameter for a PSpell function
len - [N] - Calculates the frame length of a state. Used as a parameter for a PSpell function
stat1 - [N] - Controls the stat modifier when the item is used (Uses the Code field from Properties.txt). Used as a parameter for a PSpell function
calc1 - [C] - Calculates the value of the above stat1 field. Used as a parameter for a PSpell function
spelldesc - [N] - Uses the code value from the below table to format and display string for the item's tooltip:
Code | Parameters | Description |
0 (or empty) | Do nothing | |
1 | spelldescstr spelldescstr2 | 1. Add the spelldescstr string to the item tooltip 2. If spelldescstr2 is not null, then use this string instead of spelldescstr string when playing in controller mode |
2 | spelldescstr spelldesccalc stat1 | 1. Evaluate the spelldesccalc field 2. If the stat1 value equals "hitpoints" or "hpregen" then adjust the calculated value based on the relative HealthPotionPercent value from CharStats.txt 3. If the stat1 value equals "mana" or "manarecovery" then adjust the calculated value based on the relative ManaPotionPercent value from CharStats.txt 4. Insert the calculated value into the spelldescstr string and add the string to the item tooltip |
3 | spelldescstr spelldesccalc | 1. Evaluate the spelldesccalc field 2. Add the spelldescstr string to the item tooltip 3. Append a space string and the calculated value after the spelldescstr string to the item tooltip |
4 | spelldescstr spelldesccalc | 1. Evaluate the spelldesccalc field 2. Insert the calculated value into the spelldescstr string and add the string to the item tooltip |
spelldescstr - [O] - Defines the primary string key used by the above spelldesc table
spelldescstr2 - [O] - Defines the secondary string key used by the above spelldesc table
spelldesccalc - [C] - Value applied or used by the above spelldesc table
spelldesccolor - [N] - Uses the Code value from the below table, for the above spelldesc table.
Code | Description |
0 | White (R=255, G=255, B=255) |
1 | Red (R=255, G=77, B=77) |
2 | Green (R=0, G=255, B=0) |
3 | Blue (R=105, G=105, B=255) |
4 | Light Gold (R=199, G=179, B=119) |
5 | Grey (R=105, G=105, B=105) |
6 | Black (R=0, G=0, B=0) |
7 | Dark Gold (R=208, G=194, B=125) |
8 | Orange (R=255, G=168, B=0) |
9 | Yellow (R=255, G=255, B=100) |
10 | Dark Green (R=0, G=128, B=0) |
11 | Purple (R=174, G=0, B=255) |
12 | Medium Green (R=0, G=200, B=0) |
Weapons.txt only
1or2handed - [B] - If equals 1, then the item will be treated as a one-handed and two-handed weapon by the Barbarian class. If equals 0, then the Barbarian can only use this weapon as either one-handed or two-handed, but not both
2handed - [B] - If equals 1, then the item will be treated as two-handed weapon. If equals 0, then the item will be treated as one-handed weapon
2handedwclass - [O] - Defines the two-handed weapon class, which controls what character animations are used when the weapon is equipped. Referenced by the Code value of the Weapon Class Table
2handmindam - [N] - The minimum physical damage provided by the weapon if the item is two-handed. This relies on the 2handed field being enabled
2handmaxdam - [N] - The maximum physical damage provided by the weapon if the item is two-handed. This relies on the 2handed field being enabled
hit class - [O] - Defines the hit class of the weapon which is used to know what SFX to use when the weapon hits an enemy. Referenced from the Code column in HitClass.txt
minmisdam - [N] - The maximum physical damage provided by the item if it is a throwing weapon
maxmisdam - [N] - The maximum physical damage provided by the item if it is a throwing weapon
rangeadder - [N] - Adds extra range in grid spaces for melee attacks while the melee weapon is equipped. The baseline melee range is 1, and this field adds to that range
wclass - [O] - Defines the one-handed weapon class, which controls what character animations are used when the weapon is equipped. Referenced by the Code value of the Weapon Class Table
AutoMagic.txt
This file controls what item affixes (groups of item modifiers) are automatically applied to items, regardless of their quality type. These item affixes will not change the quality of the item.
An example can be class based items like a paladin shield that can be Normal Quality but still have Paladin skill bonuses without changing the item's name.
This file is loaded together with other similar files in the following order: magicsuffix.txt, magicprefix.txt, AutoMagic.txt. These combined files form the Item Mods structure.
Data Fields
Name - [O] - Defines the item affix name; it does not need to be uniquely named
version - [N] - Defines which game version to use this item affix (0 = Classic mode | 100 = Expansion mode)
spawnable - [B] - If equals 1, then this item affix is used as part of the game's randomizer for assigning item modifiers when an item spawns. If equals 0, then this item affix is never used.
rare - [B] - If equals 1, then this item affix can be used when randomly assigning item modifiers when a rare item spawns. If equals 0, then this item affix is not used for rare items.
level - [N] - The minimum item level required for this item affix to spawn on the item. If the item level is below this value, then the item affix will not spawn on the item.
maxlevel - [N] - The maximum item level required for this item affix to spawn on the item. If the item level is above this value, then the item affix will not spawn on the item.
levelreq - [N] - The minimum character level required to equip an item that has this item affix
classspecific - [O] - Controls if this item affix should only be used for class specific items. Specified by the Code column in PlayerClass.txt
class - [O] - Controls which character class is required for the class specific level requirement specified in the below classlevelreq field. Specified by the Code column in PlayerClass.txt
classlevelreq - [N] - The minimum character level required for a specific class in order to equip an item that has this item affix. This relies on the class specified in the above class field. If equals null, then the class will default to using the levelreq field
frequency - [N] - Controls the probability that the affix appears on the item (a higher value means that the item affix will appear on the item more often). This value gets summed together with other frequency values from all possible item affixes that can spawn on the item, and then is used as a denominator value for the randomizer. Whichever item affix is randomly selected will be the one to appear on the item. The formula is calculated as the following: [Item Affix Selected] = ["frequency"] / [Total Frequency]. If the item has a magic lvl, then the magic level value is multiplied with this value. If equals 0, then this item affix will never appear on an item
group - [N] - Assigns an item affix to a specific group number. Items cannot spawn with more than 1 item affix with the same group number. This is used to guarantee that certain item affixes do not overlap on the same item. If this field is null, then the group number will default to group 0
mod1code - [O] - Controls the item properties for the item affix using the Code value from Properties.txt
mod1param - [N] - The "parameter" value associated with the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
mod1min - [N] - The "min" value to assign to the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
mod1max - [N] - The "max" value to assign to the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
transformcolor - [N] - Controls the color change of the item after spawning with this item affix. If empty, then the item affix will not change the item's color. Referenced from the Code column in colors.txt
itype1 - [O] - Controls what Item Types are allowed to spawn with this item affix. Uses the Code field from ItemTypes.txt
etype1 - [O] - Controls what Item Types are forbidden to spawn with this item affix. Uses the Code field from ItemTypes.txt
multiply - [N] - Multiplicative modifier for the item's buy and sell costs, based on the item affix (Calculated in 1024ths for buy cost and 4096ths for sell cost)
add - [N] - Flat integer modification to the item's buy and sell costs, based on the item affix
AutoMap.txt
This file controls how the Automap in game will display the discovered parts of the area level and store this progress in character save files.
The Automap is composed of many different image files depicted as small icons to convey what part of the area level is being displayed. This file will assign these image files to their related map cells, which will properly build the Automap as the player explores the area.
Not all tiles will have image files assigned to them, and in these cases, those parts of the Automap will remain blank.
Data Fields
LevelName - [O] - Uses a string format system to define the Act number and name of the level type. Level types are static defined values that cannot be added. The number at the start of the string defines the Act number, and the word that follows this number defines the level type. This data should stay grouped by level.
String Code | Description |
Level Type None | |
1 Town | Level Type 1 Town |
1 Wilderness | Level Type 1 Wilderness |
1 Cave | Level Type 1 Cave |
1 Crypt | Level Type 1 Crypt |
1 Monestary | Level Type 1 Monestary |
1 Courtyard | Level Type 1 Courtyard |
1 Barracks | Level Type 1 Barracks |
1 Jail | Level Type 1 Jail |
1 Cathedral | Level Type 1 Cathedral |
1 Catacombs | Level Type 1 Catacombs |
1 Tristram | Level Type 1 Tristram |
2 Town | Level Type 2 Town |
2 Sewer | Level Type 2 Sewer |
2 Harem | Level Type 2 Desert |
2 Basement | Level Type 2 Sewer |
2 Desert | Level Type 2 Desert |
2 Tomb | Level Type 2 Tomb |
2 Lair | Level Type 2 Lair |
2 Arcane | Level Type 2 Arcane |
3 Town | Level Type 3 Town |
3 Jungle | Level Type 3 Jungle |
3 Kurast | Level Type 3 Kurast |
3 Spider | Level Type 3 Spider |
3 Dungeon | Level Type 3 Dungeon |
3 Sewer | Level Type 3 Sewer |
4 Town | Level Type 4 Town |
4 Mesa | Level Type 4 Mesa |
4 Lava | Level Type 4 Hell |
5 Town | Level Type 6 Town |
5 Siege | Level Type 6 Siege |
5 Barricade | Level Type 6 Barricade |
5 Temple | Level Type 6 Temple |
5 Ice | Level Type 5 Ice Caves |
5 Baal | Level Type 5 Baal |
5 Lava | Level Type 5 Lava |
TileName - [O] - Uses defined string codes to control the tile orientations on the Automap
String Code | Description |
fl | Base Floor |
wl | Base Left Wall |
wr | Base Right Wall |
wtlr | Base Upper Top Corner Right |
wtll | Base Upper Top Corner Left |
wtr | Base Upper Top Corner |
wbl | Base Lower Bottom Corner Left |
wbr | Base Lower Bottom Corner Right |
wld | Base Left Door |
wrd | Base Right Door |
wle | Base Left Exit |
wre | Base Right Exit |
co | Base Column |
sh | Base Shadow |
tr | Base Tree |
rf | Base Roof |
ld | Base Left Wall Down |
rd | Base Right Wall Down |
fd | Base Full Wall Down |
fi | Base Front Wall Down |
Style - [N] - Defines a group numeric ID for the range of cells, meaning that the game will try to use cells that matc the same style value, after determining the Level Type and Tile Type. If this value is equal to 255, then the style is ignored in the "Cel#" field selection
StartSequence - [N] - The start index value for valid Cel1 field(s) to choose for displaying on the Automap. If this value is equal to 255, then both the "StartSequence" and "EndSequence" are ignored in the Cel1 field(s) field selection. If this value is equal to -1, then this field is ignored in the Cel1 field(s) field selection
EndSequence - [N] - The end index value for a valid Cel1 field(s) to choose for displaying on the Automap. If this value is equal to -1, then this field is ignored in the Cel1 field(s) selection
Cel1 - [N] - Determines the unique image frame to use from the MaxiMap.dc6 file that will be used to display on the Automap for that position of the level tile. There are multiple of these fields because they can be randomly chosen to give image variety in the Automap display. If the value equals -1, then this cell is not valid and will be ignored. If no cell is chosen overall, then nothing will be drawn in this area on the Automap.
Belts.txt
This file controls the statistics for how belts and their various item slots work.
This file relies on the belt field from the Armor.txt file. Each belt entry in this file defines a belt type that controls how many slots the belt item provides.
The game uses the 3rd entry is defined as the "default" belt, meaning that the player has no belt equipped, and the game will use this entry's stats to determine how to handle the belt slots.
Data Fields
name - [O] - This is a reference field to define the belt type
numboxes - [N] - This integer field defines the number of item slots in the belt. This is used when inserting items into the belt and also for handling the removal of items when the belt item is unequipped.
box1left - [N] - Specifies the belt slot left side coordinates. This is use for Server verification purposes and does not affect the local box UI in the client.
box1right - [N] - Specifies the belt slot right side coordinates. This is use for Server verification purposes and does not affect the local box UI in the client.
box1top - [N] - Specifies the belt slot left top coordinates. This is use for Server verification purposes and does not affect the local box UI in the client.
box1bottom - [N] - Specifies the belt slot bottom side coordinates. This is use for Server verification purposes and does not affect the local box UI in the client.
defaultItemTypeCol1 - [O] - Specifies the default item type used for the populate belt and auto-use functionality on controller.
defaultItemCodeCol1 - [O] - Specifies the default item code used for the populate belt and auto-use functionality on controller. Leaving this blank uses no code and instead relies entirely on the item type.
Books.txt
This file controls functionalities of book items (also called Tomes). This includes how they interact with their related scroll items.
Data Fields
Name - [O] - This is a reference field to define the book
ScrollSpellCode - [O] - Uses an item's code to define as the scroll item for the book
BookSpellCode - [O] - Uses an item's code to define as the book item
pSpell - [N] - Defines the item spell function to use when using the book. Referenced by the Code value of the Player Spell Table
SpellIcon - [O] - Controls which DC6 file to display for the mouse cursor when using the scroll or book (Uses numeric indices to pick the DC6 file. Example: When using Identify, use icon 1 or buysell.DC6)
ScrollSkill - [O] - Defines which Skill to use for the scroll item (Uses the skill field from Skills.txt)
BookSkill - [O] - Defines which Skill to use for the book item (Uses the skill field from Skills.txt)
BaseCost - [N] - The starting gold cost to buy the book from an NPC
CostPerCharge - [N] - The additional gold cost added with the book's "BaseCost" value, based on how many charges the book has
Charstats.txt
This file controls the starting stats for each of the classes
Data Fields
class - [O] - The name of the character class (this cannot be changed)
str - [N] - Starting amount of the Strength attribute
dex - [N] - Starting amount of the Dexterity attribute
int - [N] - Starting amount of the Energy attribute
vit - [N] - Starting amount of the Vitality attribute
stamina - [N] - Starting amount of Stamina
hpadd - [N] - Bonus starting Life value (This value gets added with the vit field value to determine the overall starting amount of Life)
ManaRegen - [N] - Number of seconds to regain max Mana. (If this equals 0 then it will default to 300 seconds)
ToHitFactor - [N] - Starting amount of Attack Rating
WalkVelocity - [N] - Base Walk movement speed
RunVelocity - [N] - Base Run movement speed
RunDrain - [N] - Rate at which Stamina is lost while running
LifePerLevel - [N] - Amount of Life added for each level gained (Calculated in fourths and is divided by 256)
StaminaPerLevel - [N] - Amount of Stamina added for each level gained (Calculated in fourths and is divided by 256)
ManaPerLevel [N] - Amount of Mana added for each level gained (Calculated in fourths and is divided by 256)
LifePerVitality - [N] - Amount of Life added for each point in Vitality (Calculated in fourths and is divided by 256)
StaminaPerVitality - [N] - Amount of Stamina added for each point in Vitality (Calculated in fourths and is divided by 256)
ManaPerMagic - [N] - Amount of Mana added for each point in Energy (Calculated in fourths and is divided by 256)
StatPerLevel - [N] - Amount of Attribute stat points earned for each level gained
SkillsPerLevel - [N] - Amount of Skill points earned for each level gained
LightRadius - [N] - Baseline radius size of the character's Light Radius
BlockFactor - [N] - Baseline percent chance for Blocking
MinimumCastingDelay - [N] - Global delay on all Skills after using a Skill with a Casting Delay (Calculated in Frames, where 25 Frames = 1 Second)
StartSkill - [O] - Controls what skill will be added by default to the character's starting weapon and will be slotted in the Right Skill selection (Uses the skill field from Skills.txt)
Skill 1 - [O] - Skill that the character starts with and will always have available (Uses the skill field from Skills.txt)
StrAllSkills - [O] - String key for displaying the item modifier bonus to all skills for the class (Ex: "+1 to Barbarian Skill Levels")
StrSkillTab1 - [O] - String key for displaying the item modifier bonus to all skills for the class's first to third skill tab (Ex: "+1 to Warcries")
StrClassOnly - [O] - String key for displaying on item modifier exclusive to the class or for class specific items (Ex: "Barbarian only")
HealthPotionPercent - [N] - This scales the amount of Life that a Healing potion will restore based on the class
ManaPotionPercent - [N] - This scales the amount of Mana that a Mana potion will restore based on the class
baseWClass - [O] - Base weapon class that the character will use by default when no weapon is equipped. Referenced by the Code value of the Weapon Class Table
item1 - [O] - Item that the character starts with (Uses the code field from Weapons.txt, Armor.txt or Misc.txt)
item1loc - [O] - Location where the related item will be placed in the character's inventory. Referenced from the Code column in BodyLocs.txt
item1count - [N] - The amount of the related item that the character starts with
item1quality - [O] - Controls the quality level of the related item using the below table:
Item Quality Code | Description |
0 | Any Quality (Used for a random quality) |
1 | Low Quality (Ex: "Crude") |
2 | Normal Quality (Default value if the value is empty) |
3 | High Quality (Superior) |
4 | Magic Quality (Uses Magic Prefixes and Suffixes) |
5 | Set Item |
6 | Rare Quality |
7 | Unique (Predetermined stats) |
8 | Crafted |
9 | Tempered |
Cubemain.txt
This file controls the recipes for the Horadric Cube
Data Fields
description - [O] - This is a reference field to define the cube recipe
enabled - [B] - If equals 1, then the recipe can be used in-game. If equals 0, then the recipe cannot be used in-game
ladder - [B] - If equals 1, then the recipe can only be used on Ladder realm games. If equals 0, then the recipe can be used in all game types
min diff - [N] - The minimum game difficulty to use the recipe (0 = All Game Difficulties | 1 = Nightmare and Hell Difficulty only | 2 = Hell Difficulty only)
version - [N] - Defines which game version to use this recipe (0 = Classic mode | 100 = Expansion mode)
op - [N] - Uses a function as an additional input requirement for the recipe. (See param and value)
Op ID | Parameters | Description |
(empty) | Do nothing | |
1 | param value | Require that the current day of the month is less than param or greater than value |
2 | value | Require that the current day of the week does not equal value (0=None, 1=Sunday, 2=Monday, 3=Tuesday, 4=Wednesday, 5=Thursday, 6=Friday, 7=Saturday) |
3 | param value | Require that the player's current stat param is greater than or equal to value |
4 | param value | Require that the player's current stat param is less than or equal to value |
5 | param value | Require that the player's current stat param is not equal to value |
6 | param value | Require that the player's current stat param is equal to value |
7 | param value | Require that the player's base stat param is greater than or equal to value |
8 | param value | Require that the player's base stat param is less than or equal to value |
9 | param value | Require that the player's base stat param is not equal to value |
10 | param value | Require that the player's base stat param is equal to value |
11 | param value | Require that the player's non-base stat param is greater than or equal to value |
12 | param value | Require that the player's non-base stat param is less than or equal to value |
13 | param value | Require that the player's non-base stat param is not equal to value |
14 | param value | Require that the player's non-base stat param is equal to value |
15 | param value | Require that the input item's current stat param is greater than or equal to value |
16 | param value | Require that the input item's current stat param is less than or equal to value |
17 | param value | Require that the input item's current stat param is not equal to value |
18 | param value | Require that the input item's current stat param is equal to value |
19 | param value | Require that the input item's base stat param is greater than or equal to value |
20 | param value | Require that the input item's base stat param is less than or equal to value |
21 | param value | Require that the input item's base stat param is not equal to value |
22 | param value | Require that the input item's base stat param is equal to value |
23 | param value | Require that the input item's non-base stat param is greater than or equal to value |
24 | param value | Require that the input item's non-base stat param is less than or equal to value |
25 | param value | Require that the input item's non-base stat param is not equal to value |
26 | param value | Require that the input item's non-base stat param is equal to value |
27 | value | Require that the item's Mod Class is not equal to value. An item's Mod Class value can be the item's unique ID or quality type, depending on the case. |
28 | Checks that the item has the Quest and QuestDiffCheck flag, then ensures that the item's quest difficulty is greater than the game's difficulty level |
param - [N] - Integer value used as a possible parameter for the op function. Normally uses the *ID field from ItemStatCost.txt for the param value
value - [N] - Integer value used as a possible parameter for the op function. Normally used to compare against the *ID linked in param
class - [O] - Defines the recipe to be only usable by a defined class. Referenced from the Code column in PlayerClass.txt
numinputs - [N] - Controls the number of items that need to be inside the cube for the recipe
input 1 - [O] - Controls what items are required for the recipe. Uses either the item's unique code or a combination of pre-defined codes from the table below, separated by commas if needed. (hiq,noe)
Code | Description |
qty=# | The number (#) of this item type required for the recipe |
low | Low Quality |
nor | Normal Quality |
hiq | High Quality (Superior) |
mag | Magic Item |
set | Set Item |
rar | Rare Item |
uni | Unique Item |
crf | Crafted Item |
tmp | Tempered Item |
nos | Item with no sockets |
sock=# | Item with sockets, where # defines the number of sockets |
noe | Item that is not Ethereal |
eth | Item that is Ethereal |
upg | Item that allows Upgrades |
bas | Basic Item |
exc | Exceptional Item |
eli | Elite Item |
nru | Item is not a Rune Word |
output - [O] - Controls the first to third output items. Uses either the item's unique code or a combination of pre-defined codes from the table below, separated by commas if needed. (hiq,noe).
Code | Description |
Cow Portal | Special code to create the Portal to the Moo Moo Farm |
Pandemonium Portal | Special code to randomly create 1 of the 3 Pandemonium Portals: (The Matron's Den / The Forgotten Sands / The Furnace of Pain) (Does not create duplicate portals in the same game) |
Pandemonium Finale Portal | Special code to create the Portal to Uber Tristram |
Red Portal | Special code to create a permanent Red Portal to a Level ID. The Level ID is determined by the output "qty=#" code. |
usetype | Use the same item type as input 1 for the output item's type |
useitem | Use the item from "input 1" as the output item |
qty=# | The number (#) of this item type created |
pre=# | Force the output item to have an item prefix, where # equals the ID of the prefix (the row count on MagicPrefix.txt) |
suf=# | Force the output item to have an item suffix, where # equals the ID of the suffix (the row count on MagicSuffix.txt) |
low | Low Quality Item |
nor | Normal Item |
hiq | High Quality Item (Superior) |
mag | Magic Item |
set | Set Item |
rar | Rare Item |
uni | Unique Item |
crf | Crafted Item |
tmp | Tempered Item |
eth | Ethereal Item |
sock | Item with sockets, where # defines the number of sockets |
mod | Use the item modifiers from "input 1" as the output item's modifiers |
uns | Destroy all Gems/runes/jewels in the item's sockets |
rem | Remove all Gems/runes/jewels in the item's sockets |
reg | If the function has "usetype" and if the item is a Unique, then regenerate/reroll the Unique |
exc | Exceptional Item |
eli | Elite Item |
rep | Repair the Item |
rch | Recharge all of the skill charges on the Item |
lvl=# | The number (#) of this item type created (same as "qty=#") |
lvl - [N] - Forces the output item level to be a specific level. If this field is used, then ignore the below plvl and ilvl fields
plvl - [N] - This is a numeric ratio that gets multiplied with the current player's level, to add to the output item's level requirement
ilvl - [N] - This is a numeric ratio that gets multiplied with input 1's item's level, to add to the output item's level requirement
mod 1 - [O] - Controls the output item properties (Uses the Code field from Properties.txt)
mod 1 chance - [N] - The percent chance that the property will be assigned. If this equals 0, then the Property will always be assigned
mod 1 param - [N] - The "parameter" value associated with the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
mod 1 min - [N] - The "min" value to assign to the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
mod 1 max - [N] - The "max" value to assign to the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
DifficultyLevels.txt
This file controls global parameters for game rules and how they work between each difficulty mode
Users cannot add new difficulty modes from this file
Data Fields
Name - [O] - This is a reference field to define the difficulty mode
ResistPenalty - [N] - Defines the baseline starting point for a player character's resistances for Expansion mode
ResistPenaltyNonExpansion - [N] - Defines the baseline starting point for a player character's resistances for Non-Expansion mode
DeathExpPenalty - [N] - Modifies the percentage of current level Experience lost when a player character dies
MonsterSkillBonus - [N] - Adds additional skill levels to skills used by monsters (Only applies to monsters with skills assigned via the Skill1 column(s) in MonStats.txt)
MonsterFreezeDivisor - [N] - Divisor that affects all Freeze Length values on monsters. The attempted Freeze Length value is divided by this divisor to determine the actual Freeze Length
MonsterColdDivisor - [N] - Divisor that affects all Cold Length values on monsters. The attempted Cold Length value is divided by this divisor to determine the actual Cold Length
AiCurseDivisor - [N] - Divisor that affects all durations of Curses on monsters. The attempted Curse duration is divided by this divisor to determine the actual Curse duration
LifeStealDivisor - [N] - Divisor that affects the amount of Life Steal that player characters gain. The attempted Life Steal value is divided by this divisor to determine the actual Life Steal
ManaStealDivisor - [N] - Divisor that affects the amount of Mana Steal that player characters gain. The attempted Mana Steal value is divided by this divisor to determine the actual Mana Steal
UniqueDamageBonus - [N] - Percentage modifier for a Unique monster's overall Damage and Attack Rating. This is applied after calculating the monster's other modifications
ChampionDamageBonus - [N] - Percentage modifier for a Champion monster's overall Damage and Attack Rating. This is applied after calculating the monster's other modifications
PlayerDamagePercentVSPlayer - [N] - Percentage modifier for the total damage a player deals to another player
PlayerDamagePercentVSMercenary - [N] - Percentage modifier for the total damage a player deals to another player's mercenary
PlayerDamagePercentVSPrimeEvil - [N] - Percentage modifier for the total damage a player deals to a Prime Evil boss
PlayerHitReactBufferVSPlayer - [N] - The frame length for the amount of time a player cannot be placed into another hit react from a player (25 frames = 1 second)
PlayerHitReactBufferVSMonster - [N] - The frame length for the amount of time a player cannot be placed into another hit react from a monster (25 frames = 1 second)
MercenaryDamagePercentVSPlayer - [N] - Percentage modifier for the total damage a player's mercenary deals to another player
MercenaryDamagePercentVSMercenary - [N] - Percentage modifier for the total damage a player's mercenary deals to another player's mercenary
MercenaryDamagePercentVSBoss - [N] - Percentage modifier for the total damage a player's mercenary deals to a boss monster
MercenaryMaxStunLength - [N] - The frame length for the maximum stun length allowed on a player's mercenary (25 Frames = 1 second)
PrimeEvilDamagePercentVSPlayer - [N] - Percentage modifier applied to the total damage a Prime Evil boss deals to a player
PrimeEvilDamagePercentVSMercenary - [N] - Percentage modifier for the total damage a Prime Evil boss deals to a player's mercenary
PrimeEvilDamagePercentVSPet - [N] - Percentage modifier for the total damage a Prime Evil boss deals to a player's pet
PetDamagePercentVSPlayer - [N] - Percentage modifier for the total damage a player's pet deals to another player
MonsterCEDamagePercent - [N] - Percentage modifier that affects how much damage is dealt to a player by a Monster's version of Corpse Explosion. For example, when certain monsters die and explode on death
MonsterFireEnchantExplosionDamagePercent - [N] - Percentage modifier that affects how much damage is dealt to a player by a Monster's Fire Enchant explosion. The Fire Enchant death explosion uses the same Corpse Explosion functionality and this value is applied after the "MonsterCEDamagePercent" value
StaticFieldMin - [N] - Percentage modifier for capping the amount of current Life damage dealt to monsters by the Sorceress Static Field skill. This field only affects games in Expansion mode
GambleRare - [N] - The odds to obtain a Rare item from gambling. The game rolls a random number between 0 to 100000. If that rolled number is less than this value, then the gambled item will be a Rare item
GambleSet - [N] - The odds to obtain a Set item from gambling. The game rolls a random number between 0 to 100000. If that rolled number is less than this value, then the gambled item will be a Set item
GambleUnique - [N] - The odds to obtain a Unique item from gambling. The game rolls a random number between 0 to 100000. If that rolled number is less than this value, then the gambled item will be a Unique item
GambleUber - [N] - The odds to make the gambled item be an Exceptional Quality item. The game rolls a random number between 0 to 10000. This rolled number is then compared to the following formula:
([Item Level] - [Base Item Level]) * ["GambleUber"] + 1. If the rolled number is less than this value, then the item becomes an Exceptional Quality item, and the game will roll for upgrading it to Elite Quality ("GambleUltra")
GambleUltra - [N] - The odds to make the gambled item be an Elite Quality item. The game rolls a random number between 0 to 10000. This rolled number is then compared to the following formula:
([Item Level] - [Base Item Level]) * ["GambleUltra"] + 1. If the rolled number is less than this value, then the item is upgraded to an Elite Quality item. This only happens if the item successfully rolled for Exceptional Quality.
Experience.txt
This file controls the Experience required for each level by each class
Data Fields
Level - [O] - This is a reference field to define the level
Amazon - [N] - Controls the Experience required for each level with the Amazon class
Sorceress - [N] - Controls the Experience required for each level with the Sorceress class
Necromancer - [N] - Controls the Experience required for each level with the Necromancer class
Paladin - [N] - Controls the Experience required for each level with the Paladin class
Barbarian - [N] - Controls the Experience required for each level with the Barbarian class
Druid - [N] - Controls the Experience required for each level with the Druid class
Assassin - [N] - Controls the Experience required for each level with the Assassin class
ExpRatio - [N] - This multiplier affects the percentage of Experienced earned, based on the level (Calculated in 1024ths by default, but this can be changed by updating the "10" value in the "Maxlvl" row)
Gamble.txt
This file controls what Item Types will appear as possible items to purchase in the Gambling UI
Item Types can be added to this list as a potential option for the Gambling system
Data Fields
name - [O] - This is a reference field to describe the Item
code - [O] - This is a pointer to code field from Weapons.txt/Armor.txt/Misc.txt
Gems.txt
This file controls the item modifiers of Gems and runes for each item type
This file is used by the following files: Weapons.txt, Armor.txt, Misc.txt
Data Fields
name - [O] - This is a reference field to define the gem/rune name
letter - [O] - Defines the string that is concatenated together in the item tooltip when a rune is socketed into an item
transform - [N] - Controls the color change of the item after being socketed by the gem/rune. Referenced from the Index value in colors.txt
code - [O] - Defines the unique item code used to create the gem/rune
weaponMod1Code - [O] - Controls the item properties that the gem/rune provides when socketed into an item with a "gemapplytype" value that equals 0 (Uses the Code field from Properties.txt)
weaponMod1Param - [N] - The stat's "parameter" value associated with the listed property (weaponMod1Code). Usage depends on the (Function ID field from Properties.txt)
weaponMod1Min - [N] - The stat's "min" value associated with the listed property (weaponMod1Code). Usage depends on the (Function ID field from Properties.txt)
weaponMod1Max - [N] - The stat's "max" value to assign to the listed property (weaponMod1Code). Usage depends on the (Function ID field from Properties.txt)
helmMod1Code - [O] - Controls the item properties that the gem/rune provides when socketed into an item with a "gemapplytype" value that equals 1 (Uses the Code field from Properties.txt)
helmMod1Param - [N] - The stat's "parameter" value associated with the listed property (helmMod1Code). Usage depends on the (Function ID field from Properties.txt)
helmMod1Min - [N] - The stat's "min" value associated with the listed property (helmMod1Code). Usage depends on the (Function ID field from Properties.txt)
helmMod1Max - [N] - The stat's "max" value to assign to the listed property (helmMod1Code). Usage depends on the (Function ID field from Properties.txt)
shieldMod1Code - [O] - Controls the item properties that the gem/rune provides when socketed into an item with a "gemapplytype" value that equals 2 (Uses the Code field from Properties.txt)shieldMod1Param - [N] - The stat's "parameter" value associated with the listed property (shieldMod1Code). Usage depends on the (Function ID field from Properties.txt)
shieldMod1Min - [N] - The stat's "min" value associated with the listed property (shieldMod1Code). Usage depends on the (Function ID field from Properties.txt)
shieldMod1Max - [N] - The stat's "max" value to assign to the listed property (shieldMod1Code). Usage depends on the (Function ID field from Properties.txt)
Hireling.txt
This file controls the unit statistics for player mercenaries and their related functions
Data Fields
Hireling - [O] - This is a reference field to define the Hireling name
Version - [N] - Defines which game version to use this hireling (0 = Classic mode | 100 = Expansion mode)
ID - [N] - The unique identification number to define each hireling type
Class - [N] - This refers to the hcIDx field in MonStats.txt, which defines the base type of unit to use for the hireling
Act - [N] - The Act that the hireling belongs to (values 1 to 5 equal Act 1 to Act 5, respectively)
Difficulty - [N] - The difficulty mode associated with the hireling (1 = Normal | 2 = Nightmare | 3 = Hell)
Level - [N] - The starting level of the unit
Seller - [N] - This refers to the hcIDx field in MonStats.txt, which defines the unit NPC that sells this hireling
NameFirst & NameLast - [O] - These fields define a string key which the game uses as a sequential range of string IDs from "NameFirst" to "NameLast" to randomly generate as hireling names. (Max name length is 48 characters)
Gold - [N] - The initial cost of the hireling. This is used in the following calculation to generate the full hire price: Cost = ["Gold"] * (100 + 15 * [Difference of Current Level and "Level"]) / 100
Exp/Lvl - [N] - This modifier is used in the following calculation to determine the amount of Experience need for the hireling's next level: [Current Level] + [Current Level] * [Current Level + 1] * ["Exp/Lvl"]
HP - [N] - The starting amount of Life at base Level
HP/Lvl - [N] - The amount of Life gained per Level
Defense - [N] - The starting amount of Defense at base Level
Def/Lvl - [N] - The amount of Defense gained per Level
Str - [N] - The starting amount of Strength at base Level
Str/Lvl - [N] - The amount of Strength gained per Level (Calculated in 8ths)
Dex - [N] - The starting amount of Dexterity at base Level
Dex/Lvl - [N] - The amount of Dexterity gained per Level (Calculated in 8ths)
AR - [N] - The starting amount of Attack Rating at base Level
AR/Lvl - [N] - The amount of Attack Rating gained per Level
Dmg-Min - [N] - The starting amount of minimum Physical Damage for attacks
Dmg-Max - [N] - The starting amount of maximum Physical Damage for attacks
Dmg/Lvl - [N] - The amount of Physical Damage gained per level, to be added to "Dmg-Min" and "Dmg-Max" (Calculated in 8ths)
ResistFire - [N] - The starting amount of Fire Resistance at base Level
ResistFire/Lvl - [N] - The amount of Fire Resistance gained per Level (Calculated in 4ths)
ResistCold - [N] - The starting amount of Fire Resistance at base Level
ResistCold/Lvl - [N] - The amount of Fire Resistance gained per Level (Calculated in 4ths)
ResistLightning - [N] - The starting amount of Fire Resistance at base Level
ResistLightning/Lvl - [N] - The amount of Fire Resistance gained per Level (Calculated in 4ths)
ResistPoison - [N] - The starting amount of Fire Resistance at base Level
ResistPoison/Lvl - [N] - The amount of Fire Resistance gained per Level (Calculated in 4ths)
HireDesc - [O] - This accepts a string key, which is used to display as the special description of the hireling in the hire UI window (local/lng/strings/mercenaries.JSON)
DefaultChance - [N] - This is the chance for the hireling to attack with his/her weapon instead of using a Skill. All Chance values are summed together as a denominator value for a random roll to determine which skill to use
Skill1 - [O] - Points to a skill from the skill field in the Skills.txt file. This gives the hireling the Skill to use (requires "Mode#", "Chance#", "ChancePerLvl#")
Mode1 - [O] - Uses a monster mode to determine the hireling's behavior when using the related Skill. Referenced from the Index value in MonMode.txt
Chance1 - [N] - This is the base chance for the hireling to use the related Skill. All Chance values are summed together as a denominator value for a random roll to determine which skill to use
ChancePerLvl1 - [N] - This is the chance for the hireling to use the related Skill, affected by the difference in the hireling's current Level and the hireling's Level field. All Chance values are summed together as a denominator value for a random roll to determine which skill to use. Each skill Chance is calculated with the following formula: ["Chance#"] + ["ChancePerLvl#"] * [Difference of Current Level and "Level"] / 4
Level1 - [N] - The starting Level for the related Skill
LvlPerLvl1 - [N] - A modifier to increase the related Skill level for every Level gained. This is used in the following calculated to determine the current skill level: [Current Skill Level] = FLOOR(["Level"] + ((["LvlPerLvl"] * [Difference of Current Level and "Level"]) / 32))
HiringMaxLevelDifference - [N] - This is used to generate a range with this value plus and minus with the player's current Level. In the hiring UI window, hirelings start with a random Level that is between this range
resurrectcostmultiplier - [N] - A modifier used to calculate the hireling's current resurrect cost. Used in the following formula: [Resurrect Cost] = [Current Level] * [Current Level] / ["resurrectcostdivisor"] * ["resurrectcostmultiplier"]
resurrectcostdivisor - [N] - A modifier used to calculate the hireling's current resurrect cost. Used in the following formula: [Resurrect Cost] = [Current Level] * [Current Level] / ["resurrectcostdivisor"] * ["resurrectcostmultiplier"]
resurrectcostmax - [N] - This is the maximum Gold cost to resurrect this hireling
equivalentcharclass - [O] - Determines what class this hireling is treated like under the hood when calculating skill level bonuses and gear restrictions.
HirelingDesc.txt
This file controls attributes about player mercenaries that relate to the monster class but not the specific statblocks.
Data Fields
id - [N] - The id of the hireling monster class as defined in monstats.txt
alternateVoice - [B] - If equals 1, then the hireling will use the alternate (feminine) voice type for voice lines. If equals 0, then it will use the masculine voice type.
Inventory.txt
This file controls the grid sizes of the inventory slots for the game's various UI windows.
These values are measured in pixels on the screen.
Data Fields
class - [O] - This is a reference field to define the type of inventory screen
invLeft - [N] - Starting X coordinate pixel position of the inventory panel
invRight - [N] - Ending X coordinate pixel position of the inventory panel (Includes the "invLeft" value with the inventory width size)
invTop - [N] - Starting Y coordinate pixel position of the inventory panel
invBottom - [N] - Ending Y coordinate pixel position of the inventory panel (Includes the "invTop" value with the inventory height size)
gridX - [N] - Column number size of the inventory grid, measured in the number of grid boxes to use
gridY - [N] - Column row size of the inventory grid, measured in the number of grid boxes to use
gridLeft - [N] - Starting X coordinate location of the inventory's left grid side
gridRight - [N] - Ending X coordinate location of the inventory's right grid side (Includes the "gridLeft" value with the grid width size)
gridTop - [N] - Starting Y coordinate location of the inventory's top grid side
gridBottom - [N] - Ending Y coordinate location of the inventory's bottom grid side (Includes the "gridTop" value with the grid height size)
gridBoxWidth - [N] - Width size of an inventory's box cell
gridBoxHeight - [N] - Height size of an inventory's box cell
rArmLeft - [N] - Starting X coordinate location of the Right Weapon Slot
rArmRight - [N] - Ending X coordinate location of the Right Weapon Slot (Includes the "rArmLeft" value with the "rArmWidth" value)
rArmTop - [N] - Starting Y coordinate location of the Right Weapon Slot
rArmBottom - [N] - Ending Y coordinate location of the Right Weapon Slot (Includes the "rArmTop" value with the "rArmHeight" value)
rArmWidth - [N] - The pixel width of the Right Weapon Slot
rArmHeight - [N] - The pixel Height of the Right Weapon Slot
torsoLeft - [N] - Starting X coordinate location of the Body Armor Slot
torsoRight - [N] - Ending X coordinate location of the Body Armor Slot (Includes the "torsoLeft" value with the "torsoWidth" value)
torsoTop - [N] - Starting Y coordinate location of the Body Armor Slot
torsoBottom - [N] - Ending Y coordinate location of the Body Armor Slot (Includes the "torsoTop" value with the "torsoHeight" value)
torsoWidth - [N] - The pixel width of the Body Armor Slot
torsoHeight - [N] - The pixel Height of the Body Armor Slot
lArmLeft - [N] - Starting X coordinate location of the Left Weapon Slot
lArmRight - [N] - Ending X coordinate location of the Left Weapon Slot (Includes the "lArmLeft" value with the "lArmWidth" value)
lArmTop - [N] - Starting Y coordinate location of the Left Weapon Slot
lArmBottom - [N] - Ending Y coordinate location of the Left Weapon Slot (Includes the "lArmTop" value with the "lArmHeight" value)
lArmWidth - [N] - The pixel width of the Left Weapon Slot
lArmHeight - [N] - The pixel Height of the Left Weapon Slot
headLeft - [N] - Starting X coordinate location of the Helm Slot
headRight - [N] - Ending X coordinate location of the Helm Slot (Includes the "headLeft" value with the "headWidth" value)
headTop - [N] - Starting Y coordinate location of the Helm Slot
headBottom - [N] - Ending Y coordinate location of the Helm Slot (Includes the "headTop" value with the "headHeight" value)
headWidth - [N] - The pixel width of the Helm Slot
headHeight - [N] - The pixel Height of the Helm Slot
neckLeft - [N] - Starting X coordinate location of the Amulet Slot
neckRight - [N] - Ending X coordinate location of the Amulet Slot (Includes the "neckLeft" value with the "neckWidth" value)
neckTop - [N] - Starting Y coordinate location of the Amulet Slot
neckBottom - [N] - Ending Y coordinate location of the Amulet Slot (Includes the "neckTop" value with the "neckHeight" value)
neckWidth - [N] - The pixel width of the Amulet Slot
neckHeight - [N] - The pixel Height of the Amulet Slot
rHandLeft - [N] - Starting X coordinate location of the Right Ring Slot
rHandLeft - [N] - Ending X coordinate location of the Right Ring Slot (Includes the "rHandLeft" value with the "rHandWidth" value)
rHandTop - [N] - Starting Y coordinate location of the Right Ring Slot
rHandBottom - [N] - Ending Y coordinate location of the Right Ring Slot (Includes the "rHandTop" value with the "rHandHeight" value)
rHandWidth - [N] - The pixel width of the Right Ring Slot
rHandHeight - [N] - The pixel Height of the Right Ring Slot
lHandLeft - [N] - Starting X coordinate location of the Left Ring Slot
lHandRight - [N] - Ending X coordinate location of the Left Ring Slot (Includes the "lHandLeft" value with the "lHandWidth" value)
lHandTop - [N] - Starting Y coordinate location of the Left Ring Slot
lHandBottom - [N] - Ending Y coordinate location of the Left Ring Slot (Includes the "lHandTop" value with the "lHandHeight" value)
lHandWidth - [N] - The pixel width of the Left Ring Slot
lHandHeight - [N] - The pixel Height of the Left Ring Slot
beltLeft - [N] - Starting X coordinate location of the Belt Slot
beltRight - [N] - Ending X coordinate location of the Belt Slot (Includes the "beltLeft" value with the "beltWidth" value)
beltTop - [N] - Starting Y coordinate location of the Belt Slot
beltBottom - [N] - Ending Y coordinate location of the Belt Slot (Includes the "beltTop" value with the "beltHeight" value)
beltWidth - [N] - The pixel width of the Belt Slot
beltHeight - [N] - The pixel Height of the Belt Slot
feetLeft - [N] - Starting X coordinate location of the Boots Slot
feetRight - [N] - Ending X coordinate location of the Boots Slot (Includes the "feetLeft" value with the "feetWidth" value)
feetTop - [N] - Starting Y coordinate location of the Boots Slot
feetBottom - [N] - Ending Y coordinate location of the Boots Slot (Includes the "feetTop" value with the "feetHeight" value)
feetWidth - [N] - The pixel width of the Boots Slot
feetHeight - [N] - The pixel Height of the Boots Slot
glovesLeft - [N] - Starting X coordinate location of the Gloves Slot
glovesRight - [N] - Ending X coordinate location of the Gloves Slot (Includes the "glovesLeft" value with the "glovesWidth" value)
glovesTop - [N] - Starting Y coordinate location of the Gloves Slot
glovesBottom - [N] - Ending Y coordinate location of the Gloves Slot (Includes the "glovesTop" value with the "glovesHeight" value)
glovesWidth - [N] - The pixel width of the Gloves Slot
glovesHeight - [N] - The pixel Height of the Gloves Slot
ItemRatio.txt
This file determines the quality of items when being spawned. After the game determines what Item Type should spawn, it then uses this file to calculate the quality of that item.
These Item Quality checks are used for most item drops in the game such as monster drops and chest drops.
The following files related to these calculations: ItemTypes.txt, Weapons.txt, Armor.txt, Misc.txt, Uniqueitems.txt, SetItems.txt, monstats.txt, TreasureClassEx.txt
Data Fields
Function - [O] - This is a reference field to define the item ratio name
Version - [N] - Defines which game version to use this item ratio (0 = Classic mode | 100 = Expansion mode)
Uber - [B] - If equals 1, then the item ratio will apply to items with Exceptional or Elite Quality. If equals 0, then the item ratio will apply to Normal Quality items (This is determined by the normcode, ubercode and ultracode fields in Armor/Weapons.txt)
Class Specific - [B] - If equals 1, then the item ratio will apply to class-based items (This will compare to the Item Type's Class field from ItemTypes.txt to determine if the item is class specific)
Unique - [N] - Base value for calculating the Unique Quality chance. Higher value means rarer chance. (Calculated first)
UniqueDivisor - [N] - Modifier for changing the Unique Quality chance, based on the difference between the Monster Level and the Item's base level
UniqueMin - [N] - The minimum value of the probability denominator for Unique Quality. This is compared to the calculated Unique Quality value after Magic Find calculations and is chosen if it is greater than that value. (Calculated in 128ths)
Set - [N] - Base value for calculating the Set Quality chance. Higher value means rarer chance. (Calculated after Unique)
SetDivisor - [N] - Modifier for changing the Set Quality chance, based on the difference between the Monster Level and the Item's base level
SetMin - [N] - The minimum value of the probability denominator for Set Quality. This is compared to the calculated Set Quality value after Magic Find calculations and is chosen if it is greater than that value. (Calculated in 128ths)
Rare - [N] - Base value for calculating the Rare Quality chance. Higher value means rarer chance. (Calculated after Set)
RareDivisor - [N] - Modifier for changing the Rare Quality chance, based on the difference between the Monster Level and the Item's base level
RareMin - [N] - The minimum value of the probability denominator for Rare Quality. This is compared to the calculated Rare Quality value after Magic Find calculations and is chosen if it is greater than that value. (Calculated in 128ths)
Magic - [N] - Base value for calculating the Magic Quality chance. Higher value means rarer chance. (Calculated after Rare)
MagicDivisor - [N] - Modifier for changing the Magic Quality chance, based on the difference between the Monster Level and the Item's base level
MagicMin - [N] - The minimum value of the probability denominator for Magic Quality. This is compared to the calculated Magic Quality value after Magic Find calculations and is chosen if it is greater than that value. (Calculated in 128ths)
HiQuality - [N] - Base value for calculating the High Quality (Superior) chance. Higher value means rarer chance. (Calculated after Magic)
HiQualityDivisor - [N] - Modifier for changing the High Quality (Superior) chance, based on the difference between the Monster Level and the Item's base level
Normal - [N] - Base value for calculating the Normal Quality chance. Higher value means rarer chance. (Calculated after Normal, and if this does not succeed in rolling, then the item is defaulted to Low Quality)
NormalDivisor - [N] - Modifier for changing the Normal Quality chance, based on the difference between the Monster Level and the Item's base level
Calculations
Item Quality is determined by first calculating the roll chance for a specific Quality. Then the game will attempt a random roll for that Item Quality. If that roll fails, then the game will calculate for the next lower Item Quality.
The order of Item Quality calculations is the following: Unique > Set > Rare > Magic > High Quality (Superior) > Normal > Low Quality
The following information details how the game uses the Data Fields in its calculations.
Step 1: Calculate the Base Probability
The first part of the calculations is to obtain the base probability for rolling the item quality with the following formula:
Probability = ( Quality - ( mlvl - ilvl ) / Divisor ) * 128
This probability value is a ratio divisor, meaning that there is a 1 in probability chance of the game choosing that Item Quality, so the lower the probability value, then the better the chance the item will successfully roll that Item Quality. The multiplication with 128 is for decreasing rounding errors. The Quality value is the "Unique"/"Set"/"Rare"/"Magic"/"HiQuality"/"Normal" Data Field. The mlvl value is the Monster Level, which depends on the current area level and game difficulty (this can also be the level for the chest drop). The ilvl value is the Base Item Level (the "level" field in the Weapons.txt/Armor.txt/Misc.txt or the "lvl" field in UniqueItems.txt/SetItems.txt). The Divisor value is the "UniqueDivisor"/"SetDivisor"/"RareDivisor"/"MagicDivisor"/"HiQualityDivisor"/"NormalDivisor" Data Field
Step 2: Calculate Magic Find
The game will then obtain the character's magic find bonus from items. If the current calculation is for Unique/Set/ Rare Quality items and the magic find item bonus exceeds 110%, then the character's magic find will be modified with diminishing returns:
MagicFind = 100 + MF * dim / (MF + dim)
The MF value is the character's magic find bonus percentage value plus the baseline default 100 value ("item_magicbonus" in ItemStatCost.txt). The dim value is a special modifier for adding diminishing returns to the magic find bonus, which differs based on the Item Quality being calculated (Unique = 250, Set = 500, Rare = 600)
After calculating the proper magic find value, the probability value is modified with the following formula:
Probability = Probability * 100 / MagicFind
This will reduce the Probability value, giving the Item Quality a higher chance to be successfully rolled
Step 3: Calculate Probability with Treasure Class
After calculating the baseline probability with the magic find bonus, the game will then compare this value with the minimum value for the Item Quality to cap it from reducing any further ("UniqueMin"/"SetMin"/"RareMin"/"MagicMin" Data Fields). High Quality (Superior) and Normal Quality do not have a minimum value.
The game will then modify the probability with the value from the related Treasure Class:
Probability = Probability - Probability * TreasureClass / 1024
The TreasureClass value is a modifier for this Item Quality based on the Treasure Class being used (the "Unique"/"Set"/"Rare"/"Magic" field from the TreasureClassEx.txt file)
Step 4: Roll for the Item Quality
Finally, after calculating the overall value of the probability for the Item Quality, the game will then find a random number between 0 and the probability value. If that random value is between 0 and 128, then the item has successfully rolled that specific Item Quality. Otherwise, the calculations will move on to checking for the next lower Item Quality.
ItemStatCost.txt
Thisfile controls the functionalities for each possible stat on a unit
Thesedefined stats are used to form modifiers for the Properties.txt file
Anycolumn field name starting with "*" is considered a comment field and is notused by the game
Data Fields
Stat - [O] - Defines the unique pointer for this stat, which is used in other files
*ID - [N] - This field is not read directly, but can be used as an Index for stats
Send Other - [B] - If equals 1, then only add the stat to a new monster if the that has no state and has an item mask. If equals 0, then ignore this
Signed - [B] - If equals 1, then the stat will be treated as a signed integer, meaning that it can be either a positive or negative value. If equals 0, then stat will be treated as an unsigned integer, meaning that it can only be a positive value. This only affects stats with state bits
Send Bits - [N] - Controls how many bits of data for the stat to send to the game client, essentially controlling the max value possible for the stat. Signed values should have less than 32 bits, otherwise they will be treated as unsigned values
Send Param Bits - [N] - Controls how many bits of data for the stat's parameter value to send to the client for a unit. This value is always treated as a signed integer
UpdateAnimRate - [B] - If equals 1, then the stat will notify that game to handle and adjust the speed of the unit when the stat changes. If equals 0, then ignore this. This is only checked for stats with States or for specific skill server functions including 30, 61, 71
Saved - [B] - If equals 1, then this state will be inserted in the change list to be stored in the Character Save file. If equals 0, then ignore this
CSvSigned - [B] - If equals 1, then the stat will be saved as a signed integer in the Character Save file. If equals 0, then the stat will be saved as an unsigned integer in the Character Save file. This is only used if the "Saved" field is enabled
CSvBits - [N] - Controls how many bits of data for the stat to send to save in the Character Save file. Signed values should have less than 32 bits, otherwise they will be treated as unsigned values. This is only used if the "Saved" field is enabled
CSvParam - [N] - Controls how many bits of data for the stat's parameter value to save in the Character Save file. This value is always treated as a signed integer. This is only used if the "Saved" field is enabled
fCallback - [B] - If equals 1, then any changes to the stat will call the Callback function which will update thgecharacter's States, skills, or item events based on the changed stat value. If equals 0, then ignore this
fMin - [B] - If equals 1, then the stat will have a minimum value that cannot be reduced further than that value ("MinAccr" field). If equals 0, then ignore this
MinAccr - [N] - The minimum value of a stat. This is only used if the "fMin" field is enabled
Encode - [N] - Controls how the stat will modify an item's buy, sell, and repair costs. This field uses a code value to select a function to handle the calculations. This field relies on the "Add", "Multiply" and "ValShift" fields. The baseline Stat Value is first modified using the "ValShift" field to shift the bits. This Stat Value is then used in the calculations by one of the selected functions.
Code | Parameters | Description |
0 (or empty) | Add Multiply | Buy Cost += [Stat Value] * ["Multiply"] / 1024 + ["Add"] Sell Cost += [Stat Value] * ["Multiply"] / 1024 + ["Add"] Repair Cost += [Stat Value] * ["Multiply"] / 1024 + ["Add"] |
1 | Use the stat's parameter value to determine the skill ID used. Use the stat's value to determine the skill level. Obtain the "cost mult" and "cost add" values from the skill linked in this stat's parameter (Skills.txt). The Stat Value is considered the skill's level. Buy Cost += [Stat Value] * ["cost mult"] / 1024 + ["cost add"] Sell Cost += [Stat Value] * ["cost mult"] / 4096 + ["cost add"] Repair Cost += [Stat Value] * ["cost mult"] / 1024 + ["cost add"] | |
2 | Use the stat's parameter value to determine both the skill ID and skill level. Obtain the "cost mult" and "cost add" values from the determined skill ID (Skills.txt). Buy Cost += [Stat Value] * ["cost mult"] / 1024 + ["cost add"] Sell Cost += [Stat Value] * ["cost mult"] / 4096 + ["cost add"] Repair Cost += [Stat Value] * ["cost mult"] / 1024 + ["cost add"] | |
3 | Same as function 2 | |
4 | Add Multiply | Obtains the stat's min and max values based on the By Time bit masks and uses them to calculate the average value or Baseline stat value. Buy Cost += [Baseline] * ["Multiply"] / 1024 + ["Add"] Sell Cost += [Baseline] * ["Multiply"] / 1024 + ["Add"] Repair Cost += [Baseline] * ["Multiply"] / 1024 + ["Add"] |
Add - [N] - Used as a possible parameter value for the "Encode" function. Flat integer modification to the Unique item's buy, sell, and repair costs. This is added after the "Multiply" field has modified the costs
Multiply - [N] - Used as a possible parameter value for the "Encode" function. Multiplicative modifier for the item's buy, sell, and repair costs. The way this value is used depends on the Encode function selected
ValShift - [N] - Used to shift the stat's input value by a number of bits to obtain the actual value when performing calculations (such as for the "Encode" function)
1.09-Save Bits - [N] - Controls how many bits of data are allocated for the overall size of the stat when saving/reading an item from a Character Save. This value can be treated as a signed or unsigned integer, depending on the stat. This field is only used for items saved in a game version of Patch 1.09d or older
1.09-Save Add - [N] - Controls how many bits of data are allocated for the stat's value when saving/reading an item from a Character Save. This value is treated as a signed integer. This field is only used for items saved in a game version of Patch 1.09d or older
Save Bits - [N] - Controls how many bits of data are allocated for the overall size of the stat when saving/reading an item from a Character Save. This value can be treated as a signed or unsigned integer, depending on the stat
Save Add - [N] - Controls how many bits of data are allocated for the stat's value when saving/reading an item from a Character Save. This value is treated as a signed integer
Save Param Bits - [N] - Controls how many bits of data for the stat's parameter value to use when saving/reading an item from a Character Save. This value is always treated asan unsigned integer
keepzero - [B] - If equals 1, then this stat will remain on the stat change list, when being updated, even if that stat value is 0. If equals 0, then ignore this
op - [N] - This is the stat operator, used for advanced stat modification when calculating the value of a stat. This can involves using this stat and its value to modify another stat's value. This use a function ID to determine what to calculate.
Code | Parameters | Description |
0 (or empty) | No Operator. Just add the stat normally | |
1 | op stat1 op stat2 op stat3 | Percent Operator. Gets the value of "op stat#" and multiplies it by a percentage increase equal to this stat's value: ["op stat#"] += ["op stat#"] * value / 100 |
2 | op param op base op stat1 op stat2 op stat3 | By Level Operator. Gets value of "op stat#" and uses it as a multiplier with "op param" as the divisor: ["op stat#"] += ["op stat#"] * ["op base"] << ["op param"] |
3 | op param op base op stat1 op stat2 op stat3 | By Level Percent Operator. Gets value of "op stat#" and uses it as a multiplier with "op param" as the divisor. Then it uses this value as a percentage increase to "op stat#": percent = ["op stat#"] * ["op base"] << ["op param"] ["op stat#"] = ["op stat#"] * percent / 100 |
4 | op param op base op stat1 op stat2 op stat3 | By Level Source Operator. Gets value of "op stat#" for the item (not the unit) and uses it as a multiplier with "op param" as the divisor: ["op stat#"] += ["op stat#"] * ["op base"] << ["op param"] |
5 | op param op base op stat1 op stat2 op stat3 | By Level Source Percent Operator. Gets value of "op stat#" for the item (not the unit) and uses it as a multiplier with "op param" as the divisor. Then it uses this value as a percentage increase to "op stat#": percent = ["op stat#"] * ["op base"] << ["op param"] ["op stat#"] = ["op stat#"] * percent / 100 |
6 | op stat1 op stat2 op stat3 | By Time Operator. Gets the value of "op stat#" and increases it by a delta value which depends on game's time of day. The delta is calculated by using the stat's min and max as a range of increase/decrease and biasing this value with the current progress of game's time of day ["op stat#"] += ["op stat#"] * [delta] |
7 | op stat1 op stat2 op stat3 | By Time Percent Operator. Gets the value of "op stat#" and multiplies it by a percentage. This percentage is determined by obtaining "op stat#" and a delta value which depends on game's time of day. The delta is calculated by using the stat's min and max as a range of increase/decrease and biasing this value with the current progress of game's time of day percent = ["op stat#"] * [delta] ["op stat#"] = ["op stat#"] * percent / 100 |
8 | op stat1 op stat2 op stat3 | Energy Operator. This will only apply for stats on the player. Gets the value of "op stat#" and multiplies it by the related "ManaPerMagic" field from the CharStats.txt file. This is then bit shifted by the baseline Mana bit value, MANA_SHIFT = 8, with the fourths value calculation from the "ManaPerMagic" field. ["op stat#"] = ["op stat#"] * ["ManaPerMagic"] << (MANA_SHIFT - 2) |
9 | op stat1 op stat2 op stat3 | Vitality Operator. This will only apply for stats on the player. If the stat is "maxstamina", then the operator will get the value of "op stat#" and multiply it by the related "StaminaPerVitality" field from the CharStats.txt file. This is then bit shifted by the baseline Stamina bit value, STAMINA_SHIFT = 8, with the fourths value calculation from the "StaminaPerVitality" field: ["op stat#"] = ["op stat#"] * ["StaminaPerVitality"] << (STAMINA_SHIFT - 2) If the stat is not "maxstamina", then the operator will get the value of "op stat#" and multiply it by the related "LifePerVitality" field from the CharStats.txt file. This is then bit shifted by the baseline Life bit value, LIFE_SHIFT = 8, with the fourths value calculation from the "LifePerVitality" field: |
10 | Currently not being used. Does nothing. | |
11 | op stat1 op stat2 op stat3 | Player Percent Operator. This will only apply for stats on units. Gets the value of "op stat#" and multiplies it by a percentage increase equal to this stat's value: ["op stat#"] += ["op stat#"] * value / 100 |
12 | Currently not being used. Does nothing. | |
13 | op stat1 op stat2 op stat3 | Item Percent Operator. This will only apply for stats on items. Gets the value of "op stat#" and multiplies it by a percentage increase equal to this stat's value: ["op stat#"] += ["op stat#"] * value / 100 |
op param - [N] - Used as a possible parameter value for the "op" function
op base - [N] - Used as a possible parameter value for the "op" function
op stat1 - [N] - Used as a possible parameter value for the "op" function
direct - [B] - If equals 1, then when the stat is being updated in certain skill functions having to do with state changes, the stat will update in relation to its "maxstat" field to ensure that it never exceeds that value. If equals 0, then ignore this, and the stat will simply update in these cases. This only applies to skills that use skill server function 65, 66, 81, and 82
maxstat - [O] - Controls which stat is associated with this stat to be treated as the maximum version of this stat. This means that 2 stats are essentially linked so that there can be a current version of the stat and a maximum version to control the cap of stat's value. This is used for Life, Mana, Stamina, and Durability. This field relies on the "direct" field to be enabled unless it is being used for the healing potion item spell
damagerelated - [B] - If equals 1, then this stat will be exclusive to the item and will not add to the unit. If equals 0, then ignore this, and the stat will always add to the unit. This is typically used for weapons and is important when dual wielding weapons so that when a unit attacks, then one weapon's stats do not stack with another weapon's stats
itemevent1 - [N] - Uses an event that will activate the specified function defined by "itemeventfunc#". Referenced from the event column in Events.txt
itemeventfunc1 - [N] - Specifies the function to use after the related item event occurred. Functions are defined by a numeric ID code. This is only applied based on the "itemevent#" field definition. Referenced by the Code value of the Event Functions Table
descpriority - [N] - Controls how this stat is sorted in item tooltips. This field is compared to the same field on other stats to determine how to order the stats. The higher the value means that the stat will be sorted higher than other stats. If more than 1 stat has the same "descpriority" value, then they will be listed in the order defined in this data file
descfunc - [N] - Controls how the stat is displayed in tooltips. Uses the Code value from the below table to format the string value using the specified function
Code | Parameters | Description |
0 | No display. Do nothing. | |
1 | descval descstrpos descstrneg | Plus or Minus • If value > 0, "+[value] [descstr]" • If value < 0, "-[value] [descstr]" |
2 | descval descstrpos descstrneg | Percent • "[value] [descstr]" |
3 | descval descstrpos descstrneg | String • "[value] [descstr]" |
4 | descval descstrpos descstrneg | Plus Percent • "+[value]% descstr]" |
5 | descval descstrpos descstrneg | Percent 128 • "+[value * 100 / 128]% [descstr]" |
6 | descval descstrpos descstrneg descstr2 | Plus or Minus Per Level • If value > 0, "+[value] [descstr] [descstr2]" • If value < 0, "-[value] [descstr] [descstr2]" |
7 | descval descstrpos descstrneg descstr2 | Percent Per Level • "[value]% [descstr] [descstr2]" |
8 | descval descstrpos descstrneg descstr2 | Plus Percent Per Level • "+[value]%[descstr] [descstr2]" |
9 | descval descstrpos descstrneg descstr2 | String Per Level • "[value][descstr] [descstr2]" |
10 | descval descstrpos descstrneg descstr2 | Percent 128 Per Level • "[value * 100 / 128]% [descstr] [descstr2]" |
11 | Repair • Uses the string ModStre9t and inserts the value into this string | |
12 | descval descstrpos descstrneg | Plus Sub One • If value > 1, then use "+[value] [descstr]" • Else, use "[value] [descstr]" or "-[value] [descstr]" |
13 | Add Class Skill • Uses the "StrAllSkills" from the CharStats.txt File | |
14 | Add Tab Skill • Uses "StrSkillTab#" from the CharStats.txt file based on related tab being modified | |
15 | descstrpos | Proc Skill • Gets the skill name, skill level, and chance percent to insert into the "descstrpos" string |
16 | descstrpos descstrneg | Aura • Gets the skill name, and uses the stat's value for the skill level and inserts these values into the designated "descstr" string |
17 | descstrpos descstrneg | Plus Minus By Time • Gets the proper value based on the time of day and inserts this value into the "descstr" string • Uses the following strings for the second part of the description, depending on the time selected: ModStre9d, ModStre9e, ModStre9f, ModStre9g |
18 | descstrpos descstrneg | (Same as function 17) |
19 | descstrpos descstrneg descstr2 | Sprintf Num • Uses the Sprintf string function with the designated "descstr" string and adds "descstr2" if that value is not empty |
20 | descval descstrpos descstrneg | Minus Percent • "[value* -1]% [descstr]" |
21 | descstrpos descstrneg descstr2 | Minus Percent Per Level • "[value * -1]% [descstr] [descstr2]" • If "descstr2" is empty, then default to using the increaseswithplaylevelX string |
22 | descstrpos descstrneg | Versus Monster Percent • Uses strplur from MonType.txt, based on the monster type selected, and inserts this value into the designated descstrpos or descstrneg strings |
23 | descstrpos descstrneg | Reanimate • Obtains the related "NameStr" string from the monstats.txt file and inserts this string into the designated "descstr" string |
24 | descstrpos descstrneg | Charges • Obtains the skill, skill level, max charges, and current charges and inserts these values into the designated "descstr" string |
25 | descval descstrpos descstrneg | Minus • If desval equals 1, then use "+[value * -1] [descstr]" • If desval equals 2, then use "[descstr] +[value * -1]" |
26 | descval descstrpos descstrneg descstr2 | Minus Per Level • (Same as function 25) |
27 | descstrpos descstrneg | Single Skill • Obtains the "str name" field from SkillDesc.txt file and the "StrClassOnly" field from the CharStats.txt file • Uses the stat value as the skill level • Combines these values into the designated "descstr" string |
28 | descstrpos descstrneg | Non Class Skill • Obtains the "str name" field from SkillDesc.txt file • Uses the stat value as the skill level • Combines these values into the designated "descstr" string |
29 | descstrpos descstrneg descstr2 | Sprintf num positive • Same as function 19, except the it uses the absolute value of [value] |
descval - [N] - Used as a possible parameter value for the descfunc function. This controls the how the value of the stat is displayed.
Code | Description |
0 | Do not show the value of the stat |
1 | Shows the value of the stat at the start of its description |
2 | Shows the value of the stat at the end of its description |
descstrpos - [O] - Used as a possible parameter value for the descfunc function. This uses a string to display the item stat in a tooltip when its value is positive
descstrneg - [O] - Used as a possible parameter value for the descfunc function. This uses a string to display the item stat in a tooltip when its value is negative
descstr2 - [O] - Used as a possible parameter value for the descfunc function. This uses a string to append to an item stat's string in a tooltip
dgrp - [N] - Assigns the stat to a group ID value. If all stats with a matching "dgrp" value are applied on the unit, then instead of displaying each stat individually, the group description will be applied instead (dgrpfunc field below)
dgrpfunc - [N] - Controls how the shared group of stats is displayed in tooltips. Uses an ID value to select a description function to format the string value. This function IDs are exactly the same as the descfunc field
dgrpval - [N] - Used as a possible parameter value for the dgrpfunc function. This controls the how the value of the stat is displayed. (Functions the same as the "descval" field)
dgrpstrpos - [O] - Used as a possible parameter value for the dgrpfunc function. This uses a string to display the item stat in a tooltip when its value is positive
dgrpstrneg - [O] - Used as a possible parameter value for the dgrpfunc function. This uses a string to display the item stat in a tooltip when its value is negative
dgrpstr2 - [O] - Used as a possible parameter value for the dgrpfunc function. This uses a string to append to an item stat's string in a tooltip
stuff - [N] - Used as a bit shift value for handling the conversion of skill IDs and skill levels to bit values for the stat. Controls the numeric range of possible skill IDs and skill levels for charge based items. This value cannot be less than or equal to 0, or greater than 8, otherwise it will default to 6. The row that this value appears in the data file is unrelated, since this is a universally applied value
advdisplay - [N] - Controls how the stat appears in the Advanced Stats UI
Code | Description |
0 (or empty) | The stat will never appear on the Advanced Stats UI |
1 | The stat will always show on the Advanced Stats UI |
2 | The stat will only show on the Advanced Stats UI if the value is greater than 0 |
ItemTypes.txt
This file controls the general statistics for each type of item, which is then used for the item type fields in other files
Data Fields
ItemType - [O] - This is a reference field to define the Item Type name
Code - [O] - Defines the unique pointer for this Item Type, which is used by various data files
Equiv1 - [O] - Points to the index of another Item Type to reference as a parent. This is used to create a hierarchy for Item Types where the parents will have more universal settings shared across the related children
Repair - [B] - If equals 1, then the item can be repaired by an NPC in the shop UI. If equals 0, then the item cannot be repaired
Body - [B] - If equals 1, then the item can be equipped by a character (Also uses the BodyLoc1 field(s) as parameters). If equals 0, then the item can only be carried in the inventory, stash, or Horadric Cube
BodyLoc1 - [O] - These are required parameters if the Body field is enabled. These fields specify the inventory slots where the item can be equipped. Referenced from the Code column in BodyLocs.txt
Shoots - [N] - Points to the index of another Item Type as the required equipped Item Type to be used as ammo
Quiver - [N] - Points to the index of another Item Type as the required equipped Item Type to be used as this ammo's weapon
Throwable - [B] - If equals 1, then it determines that this item is a throwing weapon. If equals 0, then ignore this
Reload - [B] - If equals 1, then the item (considered ammo in this case) will be automatically transferred from the inventory to the required BodyLoc1 when another item runs out of that specific ammo. If equals 0, then ignore this
ReEquip - [B] - If equals 1, then the item in the inventory will replace a matching equipped item if that equipped item was destroyed. If equals 0, then ignore this
AutoStack - [B] - If equals 1, then if the player picks up a matching Item Type, then they will try to automatically stack together. If equals 0, then ignore this
Magic - [B] - If equals 1, then this item will always have the Magic quality (unless it is a Quest item). If equals 0, then ignore this
Rare - [B] - If equals 1, then this item can spawn as a Rare quality. If equals 0, then ignore this
Normal - [B] - If equals 1, then this item will always have the Normal quality. If equals 0, then ignore this
Beltable - [B] - If equals 1, then this item can be placed in the character's belt slots. If equals 0, then ignore this
MaxSockets1 - [N] - Determines the maximum possible number of sockets that can be spawned on the item when the item level is greater than or equal to 1 and less than or equal to the matching MaxSocketsLevelThreshold1 value(s). The number of sockets is also determined by the Gemsockets value from AMW.txt
MaxSocketsLevelThreshold1 - [N] - Defines the item level thresholds using the above MaxSockets1 field(s)
TreasureClass - [B] - If equals 1, then allow this Item Type to be used in default treasure classes. If equals 0, then ignore this
Rarity - [N] - Determines the chance for the item to spawn with stats, when created as a random Weapon/Armor/Misc item. Used in the following formula: IF RANDOM(0, (["Rarity"] - [Current Act Level]))> 0, THEN spawn stats
StaffMods - [O] - Determines if the Item Type should have class specific item skill modifiers. Grants skills to the class listed using the Code column in PlayerClass.txt
Class - [O] - Determines if this item should be useable only by a specific class. Referenced from the Code column in PlayerClass.txt
VarInvGfx - [N] - Tracks the number of inventory graphics used for this item type. This number much match the number of InvGfx1 field(s) used
InvGfx1 - [O] - Defines a DC6 file to use for the item's inventory graphics. The entry amount should equal the value used in above VarInvGfx
StorePage - [O] - Uses a code to determine which UI tab page on the NPC shop UI to display this Item Type, such as after it is sold to the NPC. Referenced from the Code column in StorePage.txt
LevelGroups.txt
This file controls how the game groups levels together. This has currently no gameplay purpose and is mainly used for condensing level names in desecrated (terror) zone messaging.
Data Fields
Name - [O] - Defines the unique name pointer for the level group, which is used in other files
ID - [N] - Defines the unique numeric ID for the level group, which is used in other files
GroupName - [O] - String Field. Used for displaying the name of the level group, such as when all levels in a group have been desecrated (Terrorized)
Levels.txt
This file controls how the game controls the area levels, including how the level is built, what rules are allowed on the level, and what monsters/objects can spawn on the level.
This file uses the following files: AutoMap.txt, LevelGroups.txt, LvlMaze.txt, LvlPrest.txt, LvlSub.txt, LvlTypes.txt, LvlWarp.txt, monstats.txt, Objgroup.txt
Data Fields
Name - [O] - Defines the unique name pointer for the area level, which is used in other files
ID - [N] - Defines the unique numeric ID for the area level, which is used in other files
Pal - [N] - Defines which palette file to use for the area level. This uses index values from 0 to 4 to convey Act 1 to Act 5
Act - [N] - Defines the Act number that the area level is a part of. This uses index values from 0 to 4 to convey Act 1 to Act 5
QuestFlag - [N] - Controls what quest record that the player needs to have completed before being allowed to enter this area level, while playing in Classic Mode. Each quest can have multiple quest records, and this field is looking for a specific quest record from a quest. Referenced by the Code value of the Quest Flags Table
QuestFlagEx - [N] - Controls what quest record that the player needs to have completed before being allowed to enter this area level, while playing in Expansion Mode. Each quest can have multiple quest records, and this field is looking for a specific quest record from a quest. Referenced by the Code value of the Quest Flags Table
Layer - [N] - Defines a unique numeric ID that is used to identify which Automap data belongs to which area level when saving and loading data from the character save
SizeX - [N] - Specifies the Length tile size values of an entire area level, which are used for determining how to build the level, for Normal, Nightmare, and Hell Difficulty, respectively
SizeY - [N] - Specifies the Width tile size values of an entire area level, which are used for determining how to build the level, for Normal, Nightmare, and Hell Difficulty, respectively
OffsetX & OffsetY - [N] - Specifies the location offset coordinates (measured in tile size) for the origin point of the area level in the world. Must not overlap with other level offsets
Depend - [N] - Assigns another level to be this area level's depended level, which controls this area level's position and how it starts building its tiles. Uses the level ID field. If this equals 0, then ignore this
Teleport - [N] - Controls the functionality of the Sorceress Teleport skill and the Assassin Dragon Flight skill on the area level
Code | Description |
0 | Teleport is disabled on the area level |
1 | Teleport is enabled on the area level |
2 | Teleport is enabled on the area level but adheres to the collision of the rooms |
Rain - [B] - If equals 1, then allow rain to play its effects on the area level. If the level is part of Act 5, then it will snow on the area level, instead of rain. If equals 0, then it will never rain on the area level
Mud - [B] - If equals 1, then random bubbles will animate on the tiles that are flagged as water tiles. If equals 0, then ignore this
NoPer - [B] - If equals 1, then allow the use of display option of Perspective Mode while the player is in the level. If equals 0, then disable the option of Perspective Mode and force the player to use Orthographic Mode while the player is in the level
LOSDraw - [B] - If equals 1, then the level will check the player's line of sight before drawing monsters. If equals 0, then ignore this
FloorFilter - [B] - If equals 1 and if the floor's layer in the area level equals 1, then draw the floor tiles with a linear texture sampler. If equals 0, then draw the floor tiles with a nearest texture sampler
BlankScreen - [B] - If equals 1, then draw the area level screen. If equals 0, then do not draw the area level screen, meaning that the level will be a blank screen
DrawEdges - [B] - If equals 1, then draw the areas in levels that are not covered by floor tiles. If equals 0, then ignore this
DrlgType - [N] - Determines the type of Dynamic Random Level Generation used for building and handling different elements of the area level. Uses the Code from the table below to handle which type of DRLG is used.
Code | Description |
0 | None |
1 | Maze |
2 | Preset |
3 | Outdoor |
LevelType - [N] - Defines the Level Type used for this area level. Uses the ID field from LvlTypes.txt
SubType - [N] - Controls the group of tile substitutions for the area level (LvlSub.txt). There are defined sub-types to choose from, listed below.
Code | Description |
-1 | None |
0 | Border Cliffs |
1 | Border Middle |
2 | Border Corner |
3 | Border General |
4 | Border Wild Waypoint |
5 | Border Wild Shrine |
6 | Border Wild Themes |
7 | Border Desert Waypoint |
8 | Border Desert Shrine |
9 | Border Desert Themes |
10 | Siege Dirt |
11 | Siege Snow |
12 | Barricade |
13 | Broken Barricade |
SubTheme - [N] - Controls which theme number to use in a Level Substitution. The allowed values are 0 to 4, which convey which Prob0, Trials0, and Max0 field to use from the LvlSub.txt file. If this equals -1, then there is no sub theme for the area level
SubWaypoint - [N] - Controls the level substitutions for adding waypoints in the area level (LvlSub.txt). This uses a defined sub type to choose from and also depends on the room having a waypoint tile
SubShrine - [N] - Controls the level substitutions for adding Shrines in the area level (LvlSub.txt). This uses a defined sub type to choose from and also depends on the room allowing for a shrine to spawn
Vis0 - [N] - Defines the visibility of other area levels involved with this area level, allowing for travel functionalities between levels. This uses the ID field of another defined area level to link with this area level. If this equals 0, then no area level is specified
Warp0 - [N] - Uses the ID field from LvlWarp.txt, which defines which Level Warp to use when exiting the area level. This is connected with the definition of the related Vis0 field. If this equals -1, then no Level Warp is specified which should also mean that the related Vis0 field is not defined
Intensity - [N] - Controls the intensity value of the area level's ambient colors. This affects brightness of the room's RGB colors. Uses a value between 0 and 128. If all these related fields equal 0, then the game ignores setting the area level's ambient colors
Red - [N] - Controls the red value of the area level's ambient colors. Uses a value between 0 and 255
Green - [N] - Controls the green value of the area level's ambient colors. Uses a value between 0 and 255
Blue - [N] - Controls the blue value of the area level's ambient colors. Uses a value between 0 and 255
Portal - [B] - If equals 1, then this area level will be flagged as a portal level, which is saved in the player's information and can be used for keeping track of the player's portal functionalities. If equals 0, then ignore this
Position - [B] - If equals 1, then enable special casing for positioning the player on the area level. This can mean that the player could spawn on a different location on the area level, depending on the level room's position type. An example can be when the player spawns in a town when loading the game, or using a waypoint, or using a town portal. If equals 0, then ignore this
SaveMonsters - [B] - If equals 1, then the game will save the monsters in the area level, such as when all players leave the area level. If equals 0, then monsters will not be saved and will be removed. This is usually disabled for areas where monsters do not spawn
Quest - [N] - Controls what quest record is attached to monsters that spawn in this area level. This is used for specific quests handling lists of monsters in the area level. Referenced by the Code value of the Quest Flags Table
WarpDist - [N] - Defines the minimum pixel distance from a Level Warp that a monster is allowed to spawn near. Tile distance values are converted to game pixel distance values by multiplying the tile distance value by 160 / 32, where 160 is the width of pixels of a tile
MonLvl - [N] - Controls the overall monster level for the area level for Normal, Nightmare, and Hell Difficulty, respectively. This is for Classic mode only. This can affect the highest item level allowed to drop in this area level
MonLvlEx - [N] - Controls the overall monster level for the area level for Normal, Nightmare, and Hell Difficulty, respectively. This is for Expansion mode only. This can affect the highest item level allowed to drop in this area level
MonDen - [N] - Controls the monster density on the area level for Normal, Nightmare, and Hell Difficulty, respectively. This is a random value out of 100000, which will determine whether to spawn or not spawn a monster pack in the room of the area level. If this value equals 0, then no random monsters will populate on the area level
MonUMin - [N] - Defines the minimum number of Unique Monsters that can spawn in the area level for Normal, Nightmare, and Hell Difficulty, respectively. This field depends on the related MonDen fields being defined
MonUMax - [N] - Defines the maximum number of Unique Monsters that can spawn in the area level for Normal, Nightmare, and Hell Difficulty, respectively. This field depends on the related MonDen field being defined. Each room in the area level will attempt to spawn a Unique Monster with a 5/100 random chance, and this field's value will cap the number of successful attempts for the entire area level
MonWndr - [B] - If equals 1, then allow Wandering Monsters to spawn on this area level (WanderingMon.txt). This field depends on the related MonDen field being defined. If equals 0, then ignore this
MonSpcWalk - [N] - Defines a distance value, used to handle monster pathing AI when the level has certain pathing blockers, such as jail bars or rivers. In these cases, monsters will walk randomly until a player is located within this distance value or when the monsters find a possible path to target the player. If this equals 0, then ignore this field
NumMon - [N] - Controls the number of different monsters randomly spawn in the area level. The maximum value is 13. This controls the number of random selections from the 25 related mon1 and nmon1 fields or umon1 fields, depending on the game difficulty and monster type
mon1 - [O] - Defines which monsters can spawn on the area level for Normal Difficulty. Uses the monster ID field from MonStats.txt
rangedspawn - [B] - If equals 1, then for the first monster, try to pick a ranged type. If equals 0, then ignore this
nmon1 - [O] - Defines which monsters can spawn on the area level for Nightmare Difficulty and Hell Difficulty. Uses the monster ID field from MonStats.txt
umon1 - [O] - Defines which monsters can spawn as Unique monsters on this area level for Normal Difficulty. Uses the monster ID field from MonStats.txt
cmon1 - [O] - Defines which Critter monsters can spawn on the area level. Uses the monster ID field from MonStats.txtCritter monsters are determined by the critter field from MonStats2.txt
cpct1 - [N] - Controls the percent chance (out of 100) to spawn a Critter monster on the area level
camt1 - [N] - Controls the amount of Critter monsters to spawn on the area level after they succeeded their random spawn chance from the above cpct1 field
Themes - [N] - Controls the type of theme when building a level room. This value is a summation of possible values to build a bit mask for determining which themes to use when building a level room. For example, a value of 60 means that the area level can have the following themes: 32, 16, 8, 4.
Code | Description |
0 | No Theme |
1 | Object Empty Theme (no objects spawn) |
2 | Barrel Theme (create random barrel objects) |
4 | Shrine Theme |
8 | Treasure Theme (create random items) |
16 | Armor Stand Theme |
32 | Weapon Rack Theme |
SoundEnv - [N] - Uses the Index field from SoundEnviron.txt, which controls what music is played while the player is in the area level
Waypoint - [N] - Defines the unique numeric ID for the Waypoint in the area level. If this value is greater than or equal to 255, then ignore this field
LevelName - [O] - Used for displaying the name of the area level, such as when in the UI when the Automap is being viewed
LevelWarp - [O] - Used for displaying the entrance name of the area level on Level Warp tiles that link to this area level. For example, when the player mouse hovers over a tile to warp to the area level, then this string is displayed
LevelEntry - [O] - Used for displaying the UI popup title string when the player enters the area level
ObjGrp0 - [N] - Uses a numeric *ID Index to define which possible Object Groups to spawn in this area level (ObjGroup.txt). The game will go through each of these fields, so there can be more than 1 Object Group used in an area level. If this value equals 0, then ignore this
ObjPrb0 - [N] - Determines the random chance (out of 100) for each Object Group to spawn in the area level. This field depends on the related "ObjGrp#" field being defined
LevelGroup - [O] - Defines what group this level belongs to. Used for condensing level names in desecrated (terror) zones messaging. See LevelGroups.txt.
LvlMaze.txt
This file controls the sizes of the underground area levels. This file uses the levels from Levels.txt and specifies the sizes for each room, which can mean how many Level Presets to use to build out the entire randomly generated area.
Data Fields
Name - [O] - This is a reference field to describe the area level. IDeally this should match the name of the area level from the Levels.txt file
Level - [N] - This refers to the ID field from the Levels.txt file
Rooms - [N] - Controls the total number of rooms that a Level Maze will generate when playing the game in Normal Difficulty, Nightmare Difficulty, and Hell Difficulty, respectively
SizeX & SizeY - [N] - Controls the length and width sizes of each room (DS1 map files) that are added to the Level Maze. This is measured in tile sizes
Merge - [N] - This value affects the probability that a room gets an adjacent room linked next to it. This is a random chance out of 1000.
LvlPrest.txt
This file controls the values for each Level Preset. A Level Preset is a static area composed of tiles that is used to construct entire area levels found in the game.
Data Fields
Name - [O] - This is a reference field to define the Level Preset
Def - [N] - Defines the unique numeric ID for the Level Preset. This is referenced in other files
LevelID - [N] - This refers to the ID field from the Levels.txt file. If this value is not equal to 0, then this Level Preset is used to build that entire area level. If this value is equal to 0, then the Level Preset does not define the entire area level and is used as a part of constructing area levels
Populate - [B] - If equals 1, then units are allowed to spawn in the Level Preset. If equals 0, then units will never spawn in the Level Preset
Logicals - [B] - If equals 1, then the Level Preset allow for wall transparency to function. If equals 0, then walls will always appear solid
Outdoors - [B] - If equals 1, then the Level Preset will be classified as an outdoor area, which can mean that lighting will function differently. If equals 0, then the Level Preset will be classified as an indoor area
Animate - [B] - If equals 1, then the game will animate the tiles in the Level Preset. If equals 0, then ignore this
KillEdge - [B] - If equals 1, then the game will remove tiles that border the size of the Level Preset. If equals 0, then ignore this
FillBlanks - [B] - If equals 1, then all blank tiles in the Level Preset will be filled with unwalkable tiles. If equals 0, then ignore this
SizeX & SizeY - [N] - Specifies the Length and Width tile size values of the Level Preset, which are used for determining how big to build area levels. These values are equal to 0 for Level Presets that are static
AutoMap - [B] - If equals 1, then this Level Preset will be automatically completely revealed on the Automap. If equals 0, then this Level Preset will be hidden on the Automap and will need to be explored
Scan - [B] - If equals 1, then this Level Preset will allow the usage of warping with waypoints (This requires that the Level Preset has a waypoint object). If equals 0, then ignore this
Pops - [N] - Defines how many Pop tiles are defined in the Level Preset file. These Pop tiles are mainly used for controlling the roof and wall popping when a player enters a building in an area
PopPad - [N] - Determines the size of the Pop tile area, by using an offset value. This offset value can increase or decrease the size of the Pop tile size if it has a positive or negative value
Files - [N] - Determines the number of different versions to use for the Level Preset. This value acts as a range, which the game will use for randomly choosing one of the File1 fields to build the Level Preset. This is how the Level Presets have variety when the area level is being built
File1 - [O] - Specifies the name of which ds1 file to use. The ds1 files contain data for building Level Presets. If this value equals 0, then this field will be ignored. The number of these defined fields should match the value used in the "Files" field
Dt1Mask - [N] - This functions as a bit field mask with a size of a 32 bit value. This explains to the ds1 file which of the 32 dt1 tile files to use from a Level Type when assembling the Level Preset. Each File 1 field value from LevelTypes.txt is assigned a bit value, up to the 32 possible bit values. (For example: File1 = 1, File2=2, File3 = 4, File4=8, File5=16….File32 = 2147483648). To build the "Dt1Mask", you would add their associated bit values together for a total value. This total value is the bitmask value.
LvlSub.txt
This file controls how tiles can be substituted in for other tiles. The game will divide the level into clusters and iterate through these clusters to randomly substitute tiles with different ones for more visual diversity.
Data Fields
Name - [O] - This is a reference field to describe the Level Substitution
Type - [N] - This refers to the SubType field from the Levels.txt file. This defines a group that multiple substitutions can share
File - [O] - Specifies the name of which ds1 file to use. The ds1 files contain data for building Level Presets
CheckAll - [B] - If equals 1, then substitute each tile in the room. If equals 0, then substitute random tiles in the room.
BordType - [N] - This controls how often substituting tiles can work for border tiles
Code | Description |
0 | Single One Only. This allows substituting for 1 border in total |
1 | One Per Cluster. This allows substituting 1 border for each cluster in the level |
Other values | Allow substituting borders for all of the level |
GridSize - [N] - Controls the tile size of a cluster for substituting tiles. This evenly affects both the X and Y size values of a room
Dt1Mask - [N] - This functions as a bit field mask with a size of a 32 bit value. This explains to the ds1 file which of the 32 dt1 tile files to use from a Level Type when assembling the Level Preset. Each File 1 field value from LevelTypes.txt is assigned a bit value, up to the 32 possible bit values. (For example: File1 = 1, File2=2, File3 = 4, File4=8, File5=16….File32 = 2147483648). To build the "Dt1Mask", you would add their associated bit values together for a total value. This total value is the bitmask value.
Prob0 - [N] - This value affects the probability that the tile substitution is used. This is a random chance out of 100. Which "Prob#" field that is checked depends on the SubTheme value from the Levels.txt file
Trials0 - [N] - Controls the number of times to randomly substitute tiles in a cluster. If this value equals -1, then the game will try to do as many tile substitutions that can be allowed based on the cluster and tile size. This field depends on the CheckAll field being equal to 0
Max0 - [N] - The maximum number of clusters of tiles to substitute randomly. This field depends on the CheckAll field being equal to 0.
LvlTypes.txt
This file controls which files containing tile graphics are used for creating maps. This looks at dt1 files, which contain tile images of the environments foundin the game. Each line in this file defines a Level Type and what files it uses.
The order of each Level Type defined in this file will convey what ID value it has, which is referenced by the following files: Levels.txt, LvlPrest.txt
The order of these Level Types should not be changed
Data Fields
Name - [O] - This is a reference field to define the name of each Level Type
ID - [N] - This is a reference field to define the index of each Level Type
File 1 - [O] - Specifies the name of which dt1 file to use. The dt1 files contain the images for each area tile found in each Act. If this value equals 0, then this field will be ignored
Act - [N] - Defines which Act is related to the Level Type. When loading an Act, the game will only use the Level Types associated with that Act number. Uses a decimal number to convey each Act number (Ex: A value of 3 means Act 3)
LvlWarp.txt
This file controls how the player is moved to different area levels, such as entrances and exits between different areas. This player transportation of between levels is defined as a Level Warp. Level Warps function as special tiles that are added to the area for controlling the location for where to transport the player.
This file is used by the Levels.txt file.
Data Fields
Name - [O] - This is a reference field to define the Level Warp
ID - [N] - Defines the numeric ID for the type of Level Warp. This ID can be shared between multiple Level Warps if those Level Warps want to use the same functionality. This is referenced in other files
SelectX & SelectY - [N] - These values define the horizontal and vertical offsets (respectively) of the starting left corner position of the Level Warp area. This is treated as the starting position to select the interactable Level Warp area in the area level. This value is measured in pixels
SelectDX & SelectDY - [N] - These values define the horizontal and vertical offsets (respectively) of the offset from the starting position of the Level Warp area. This is added with the SelectX & SelectY fields (respectively) to determine the overall size and position of the Level Warp in the area level. This value is measured in pixels
ExitWalkX & ExitWalkY - [N] - These values define the horizontal and vertical positions (respectively) of the destination location where the player will walk to after exiting to this Level Warp. This value is measured with a sub-tile offset from the base position of the Level Warp. One full tile on a level is composed of a grid of 5x5 sub-tiles
OffsetX & OffsetY - [N] - These values define the horizontal and vertical positions (respectively) of the sub-tile for the Level Warp, where the player will appear when exiting to this area level. This value is measured with a sub-tile offset from the base position of the Level Warp. One full tile on a level is composed of a grid of 5x5 sub-tiles
LitVersion - [B] - If equals 1, then Level Warp tiles will change their appearance when highlighted. If equals 0, then the Level Warp tiles will not change appearance when highlighted
Tiles - [N] - Defines an index offset to determine which tile to use in the tile set for the highlighted version of the Level Warp. These tiles are loaded and hidden/revealed when the player mouse hovers over the Level Warp tiles. This relies on LitVersion being enabled
NoInteract - [B] - If equals 1, then the Level War cannot be directly interacted by the player. If equals 0, then the player can interact with the Level Warp
Direction - [O] - Defines the orientation of the Level Warp. Uses a specific string code.
Code | Description |
l | Left. If this is selected, then the tile type direction should match this. |
r | Right. If this is selected, then the tile type direction should match this. |
b | Both. This can mean that the Level Warp can be reassigned its direction. |
UniqueID - [N] - Defines the unique numeric ID for the Level Warp. Each Level Warp should have a unique ID so that the game can handle loading that specific Level Warp's related files.
MagicPrefix.txt, MagicSuffix.txt
These files control the possible magic stat modifiers applied as either a prefix or suffix to the item.
These item affixes will appear at the start or end of an item's name respectively
This file is loaded together with other similar files in the following order: magicsuffix.txt, magicprefix.txt, AutoMagic.txt
These stat modifiers may only appear on magical or higher quality items, excluding sets and uniques.
Data Fields
Name - [O] - Defines the item affix name
version - [N] - Defines which game version to use this item affix (<100 = Classic mode | 100 = Expansion mode)
spawnable - [B] - If equals 1, then this item affix is used as part of the game's randomizer for assigning item modifiers when an item spawns. If equals 0, then this item affix is never used
rare - [B] - If equals 1, then this item affix can be used when randomly assigning item modifiers when a rare item spawns. If equals 0, then this item affix is not used for rare items
level - [N] - The minimum item level required for this item affix to spawn on the item. If the item level is below this value, then the item affix will not spawn on the item
maxlevel - [N] - The maximum item level required for this item affix to spawn on the item. If the item level is above this value, then the item affix will not spawn on the item
levelreq - [N] - The minimum character level required to equip an item that has this item affix
classspecific - [O] - Controls if this item affix should only be used for class specific items. This relies on the Class specified from ItemTypes.txt, for the specific item. Referenced from the Code column in PlayerClass.txt
class - [O] - Controls which character class is required for the class specific level requirement (classlevelreq field). Referenced from the Code column in PlayerClass.txt
classlevelreq - [N] - The minimum character level required for a specific class in order to equip an item that has this item affix. This relies on the class specified. If equals null, then the class will default to using the levelreq field
frequency - [N] - Controls the probability that the affix appears on the item (a higher value means that the item affix will appear on the item more often). This value gets summed together with other "frequency" values from all possible item affixes that can spawn on the item, and then is used as a denominator value for the randomizer. Whichever item affix is randomly selected will be the one to appear on the item. The formula is calculated as the following: [Item Affix Selected] = ["frequency"] / [Total Frequency]. If the item has a magic level (from the "magic lvl" field in Weapons.txt/Armor.txt/Misc.txt) then the magic level value is multiplied with this value. If equals 0, then this item affix will never appear on an item
group - [N] - Assigns an item affix to a specific group number. Items cannot spawn with more than 1 item affix with the same group number. This is used to guarantee that certain item affixes do not overlap on the same item. If this field is null, then the group number will default to group 0
mod1code - [O] - Controls the item properties for the item affix (Uses the Code field from Properties.txt)
mod1param - [N] - The "parameter" value associated with the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
mod1min - [N] - The "min" value to assign to the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
mod1max - [N] - The "max" value to assign to the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
transformcolor - [O] - Controls the color change of the item after spawning with this item affix. If empty, then the item affix will not change the item's color. Referenced from the Code column in Colors.txt
itype1 - [O] - Controls what Item Types are allowed to spawn with this item affix. Uses the Code field from ItemTypes.txt
etype1 - [O] - Controls what Item Types are excluded to spawn with this item affix. Uses the Code field from ItemTypes.txt
multiply - [N] - Multiplicative modifier for the item's buy and sell costs, based on the item affix (Calculated in 1024ths for buy cost and 4096ths for sell cost)
add - [N] - Flat integer modification to the item's buy and sell costs, based on the item affix
Missiles.txt
This file controls the different functions for all missiles and their statistics. Missiles are projectiles used throughout the game for attacks, skills, and special effects.
Data Fields
Missile - [O] - Defines the unique name ID for the missile, which is how other files can reference the missile. The order of defined missiles will determine their ID numbers, so they should not be reordered
pCltDoFunc - [N] - Uses an ID value from the below table, to select a function for the missile's behavior that will be active every frame on the client side. This is more about handling the local graphics while the missile is moving.
ID | Parameters | Description |
0 (or empty) | Do nothing | |
1 | ProcessMissileMode - Perform the standard client missile move function. This is called in most of the other functions | |
2 | ProcessBlood - Kill the missile if it goes off screen. Otherwise, set the number of duration frames for the missile to equal 128 and perform the standard missile move function. | |
3 | CltCalc1 CltSubMissile1 | PoisonJavelin - Create a sub missile each frame that the current missile is moving where "CltCalc1" controls the number of subloops for thecreated sub missile. |
4 | CltParam1 CltParam2 CltParam3 CltSubMissile1 | PoisonCloud - Create multiple sub missiles randomly in a area where the parameters control the spawn rate, number of sub missiles to spawn per rate, and the spawn radius size, respectively. |
5 | SubStart SubStop | Firewall - Create an animation sequence for the missile where the difference of the "SubStart" and "SubStop" fields control the length of the sequence within the animation, and the game will randomly choose a frame within this sequence to loop back to. |
6 | CltParam1 CltSubMissile1 CltSubMissile2 CltSubMissile3 | FirewallMaker - Randomly create 1 of the 3 possible sub missiles, where the parameter controls the random chance that the sub missile spawns with no light. |
7 | CltParam1 | ProcessGuidedArrow - Try to retarget the missile on a possible target unit where the parameter controls the rate at which the missile should attempt to retarget again. |
8 | CltParam1 CltSubMissile1 InitSteps | LightningMaker - Attempt to create a sub missile where the parameter controls the number of subloops for the sub missile (minimum value equals 1). The sub missile is only created if the current missile's has existed for greater than or equal to the "InitSteps" value. |
9 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 ProgSound | ProcessMeteorCenter - Create each sub missile where the parameters control the number of frames, the missile fall rate (Used to calculate the starting height), and the missile slide rate (used to calculated the starting position offset), respectively. Also attempt to play the "ProgSound" sound at 2 frames before the "CltParam1" frame count. |
10 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 | ProcessMonBliz - Randomly create 1 of the 2 sub missiles in an area radius, where the parameters control the baseline radius size (affected by the missile level), the spawn frequency (minimum equals 3 frames, affected by the missile level), and the level divisor (affects the difference in value for the other fields per missile level). The "CltParam1" and "CltParam2" parameters also can control the missile fall distance and fall rate. |
11 | ProcessHoldLast - At the end of the missile's animation, set it to dead and destroy its light. Otherwise, run the ProcessMissileMode function. | |
12 | CltParam1 CltParam2 | ProcessScreenShake - Run the ProcessMissileMode function and also call the camera shaking function. The "CltParam1" field controls the camera shake magnitude, and the "CltParam2" field controls the camera shake duration. |
13 | CltParam1 CltParam2 CltSubMissile1 CltSubMissile2 | ProcessBlizzard - Randomly create 1 of the 2 missiles in a calculated area every duration. The radius and spawn frequency are controlled by the missile's linked skill's "calc1" and "calc2" fields. The "CltParam1" and "CltParam2" parameters control the sub missile fall distance and fall rate. |
14 | CltParam3 CltParam4 CltParam5 | FingerMageSpider2 - Shoot a missile that can be retargeted on a unit. The parameters control the retarget frequency, the retarget distance range, and the retarget position offset (minimum value equals 1), respectively. |
15 | CltParam1 CltParam2 CltParam3 CltParam4 CltParam5 CltSubMissile1 | FingerMageSpider - Shoot a missile that can be retargeted on a unit and can spawn a sub missile. The parameters control the number of frames to wait before spawning the sub missile (minimum value equals 1), the number of frames to wait before processing the missile, the retarget frequency, the retarget distance range, and the retarget position offset (minimum value equals 1), respectively. |
16 | CltSubMissile1 | DiabWallMaker - Shoot a missile using the ProcessMissileMode function where every frame while moving it can create a sub missile that will have a random chance to spawn with no light |
17 | CltParam1 CltSubMissile1 | ProcessCurse - Shoot a missile that will create a disc of sub missiles every 3 frames after a specified frame duration controlled by the parameter. The radius and density of the disc of sub missile is controlled by the current missile's radius value, which is given to the missile by the skill function. |
18 | CltParam1 CltSubMissile1 InitSteps | SimpleTrailMaker - Shoot a missile that will create a sub missile after the "InitSteps" frame count, where the parameter controls the sub missile's subloops. The sub missile will follow the same direction, offset, and path of the current missile. |
19 | CltParam1 CltParam2 CltSubMissile1 | ProcessFrozenOrb - Shoot a missile that will create sub missiles at a spawn rate and different directions. The "CltParam1" value controls the rate to spawn sub missiles, and the "CltParam2" value controls the direction index increment for looping through which direction the next created sub missile should fire towards. |
20 | CltParam1 CltParam2 | ProcessFrozenOrbNova - Shoot a missile that will have a delay until processing and then will process its path at a specified rate. The "CltParam1" value controls the activation frame, and the "CltParam2" value controls the periodic rate to process the missile path |
21 | CltParam1 CltSubMissile1 | BRDeathControl - Create a sub missile after a periodic delay that can spawn in a random location in a radius controlled by the parameter. The periodic delay can be 25, 10, 3, or 15 frames, depending how many frames the current missile has lasted. |
22 | CltParam1 CltSubMissile1 | BRDeathLightning - Shoot a missile that will retarget to a randomized direction every periodic frame delay and will create sub missiles while moving. |
23 | ProcessDOELight - Run the ProcessMissileMode function and ensure that the missile lasts 500 frames if its frame count is less than 100 | |
24 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 | ProcessCairnStones - Create multiple "CltSubMissile1" sub missiles in a radius controlled by "CltParam2" and a spawn frequency controlled by "CltParam3", lasting a duration controlled by "CltParam1". The "CltParam1" field also controls the start time for spawning more "CltSubMissile1" sub missiles and "CltSubMissile2" sub missiles every 8 frames if there are any of the "StoneAlpha" to "StoneTheta" objects in the room. |
25 | CltParam1 CltParam2 CltParam3 CltSubMissile1 | ProcessTowerMist - Shoot a missile that will spawn a sub missile randomly in a defined radius after a periodic delay |
26 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 | SmithDeathControl - Create "CltSubMissile1" sub missile in a random position in a radius controlled by "CltParam3" where "CltParam1" controls its spawn rate. Create "CltSubMissile2" sub missile as a lobbing missile in a random position in the same radius where "CltParam2" controls its spawn rate. Also the "CltSubMissile2" sub missile's level is controlled by the following function: 1 + RANDOM(0, 5) |
27 | CltParam1 CltSubMissile1 | SmithFirewallMaker - Create the sub missile every frame while moving. The parameter controls the delay until the current missile needs to retarget in a new direction |
28 | CltParam1 CltSubMissile1 | SmithDoNotDraw - Create 4 sub missiles in different directions after a delay that is controlled by the parameter. |
29 | CltParam1 CltParam2 CltSubMissile1 CltSubMissile2 CltSubMissile3 ProgSound | ProcessAndyControl0 - Create "CltSubMissile1" after 10 Frames which subsequently will make its own "CltSubMissile1" where its "CltParam1", "CltParam2" and "CltParam3" fields control the Z offset, Z Velocity Max, and Z Acceleration, respectively. Create "CltSubMissile2" randomly in a radius equal to 20 and at a periodic rate controlled by "CltParam1". "CltParam2" controls the duration of the camera shake, which starts after 90 frames. Between frame 115 and 315, create "CltSubMissile3" randomly in a radius equal to 6 where its "CltParam1" and "CltParam2" values control the Z offset and Z velocity. |
30 | CltParam1 CltParam2 CltParam3 CltSubMissile1 | ProcessTowerChestSpawner - Start creating the sub missileperiodically after an initial delay controlled by "CltParam1". "CltParam2"controls the periodic rate to spawn the sub missile and "CltParam3" controlsthe radius size to spawn the sub missile randomly in an area. |
31 | ProcessHoradricStaff - This function does multiple hardcoded features. Shake the screen after 150 frames. Create 7 "horadriclight" missiles. After 165 frames, create the "horadriclightning" missile at a specific position, direction, and velocity. After 150 frames, create the "dust" missile every other frame. | |
32 | ProcessRadDeath - Create a "radamenthandofgod" missile at an increasing rate based on the total frame count of the current missile | |
33 | ProcessTaintedSun - Create a "taintedsunflash" missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Also add a "horadric_light" overlay on the altar object in the level room. | |
34 | ProcessTaintedSunBall - The missile will change its path and velocities throughout its life cycle using different mods, to follow a crafted pattern | |
35 | ProcessQueenDeath - Every 4 frames, create a "queendeathglob" using a lobbing function in a random position in a defined radius of size 12. | |
36 | ProcessDurielDeath - Create a "explodingarrowexp" missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Also create a "durieldeathrock" missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Run a camera shake function. | |
37 | ProcessDiabloAppears - Run a camera shake function andrequest to play the "monster_diablo_taunt_1" sound | |
38 | ProcessHellForge - Create multiple lobbing "hffragment1" missiles at an increasing rate in random directions, based on the total frame count of the current missile. Run a camera shake function. | |
39 | ProcessHFragment1 - If the missile has a source unit, then set the missile frame to 0 and run the ProcessMissileMode function | |
40 | ProcessHFragment2 - Periodically create a "hfspirit1" missile after a randomized periodic delay. | |
41 | ProcessSoul - Adjust the animation rate of the missile after certain key frames during the missile's duration. | |
42 | Param1 Param2 | ProcessIzualDeath - Create the "izual mist loop" missile every frame in a random radius of size 10. Create a "izual lightning" missile every frame between the value of the "Param1" and "Param2" fields. |
43 | ProcessAttached - Attach the missile follow its source unit's position. Kill the missile if the unit is dead. | |
44 | CltSubMissile1 | ProcessDistraction - Attach the missile follow its source unit's position. Create a sub missile while moving. |
45 | CltParam1 CltParam2 CltParam3 CltSubMissile1 | ProcessDistractionFog - Create a number of sub missiles in an area at a defined rate. "CltParam1" controls the spawn rate, "CltParam2" controls the number of missiles to spawn per rate, and "CltParam3" controls the radius to randomly spawn the sub missiles. |
46 | CltParam1 CltSubMissile1 | ProcessTrailJav - Create 2 sub missiles per frame while moving with perpendicular directions and a defined number of subloopscontrolled by the parameter |
47 | CltParam1 CltSubMissile1 CltSubMissile2 CltSubMissile3 ProgSound | ProcessMoltenBoulder - Play the "ProgSound" sound if the missile has a bounce value. Run the FirewallMaker function (Code = 6). |
48 | CltSubMissile1 CltSubMissile2 | ProcessEruption - Uses the linked skill's "calc1" and "calc2" fields to get the spawn radius and spawn frequency for creating the 2 sub missiles. For "CltSubMissile1", the missile is automatically set to dead mode when it is created. |
49 | CltParam1 CltSubMissile1 | ProcessVines - Periodically spawn the sub missile in the same direction as the current missile where the parameter controls the spawn rate |
50 | CltParam1 CltParam2 CltParam3 CltParam4 CltParam5 CltSubMissile1 | ProcessVolcano - Spawn a sub missile with the lob function at a defined spawn rate at certain frames within the current missile's duration. "CltParam1" controls the periodic spawn rate, "CltParam2" controls the radius to spawn the sub missile, "CltParam3" controls the starting frame to begin spawning the sub missile, "CltParam4" controls the end frame to stop spawning the sub missile, and "CltParam5" controls the lob start value. |
51 | CltParam1 CltParam2 CltParam3 CltParam4 CltSubMissile1 CltSubMissile2 ProgSound | ProcessRecycleDelay - Create "CltSubMissile1" at a frame controlled by "CltParam1" in a radius controlled by "CltParam4" and a spawn count controlled by "CltParam3". Create "CltSubMissile2" sub missile at a frame controlled by "CltParam2" and also request to play the "ProgSound" at the same time. |
52 | CltSubMissile1 | ProcessMakePerpMissiles - Create 2 of the same sub missile every frame while moving that face at perpendicular directions |
53 | CltParam1 CltSubMissile1 | ProcessTigerFury - Create a sub missile every frame while moving and then run the ProcessGuidedArrow function (Code = 7). |
54 | ProcessAnyaCenter - Create a "anya icemagic" missile every frame until frame 110. Create a decreasing number of "anyasteam1" missiles in a random position and velocity, every frame until frame 110. Perform a camera shake function. Create a "anyasteamvent" missile and a "anyasteam" missile randomly in a radius every 7 frames until frame 200. | |
55 | ProcessAncientDeath - Create a "ancient death cloud" missile every 3 frames randomly in an area in a random direction | |
56 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 CltSubMissile3 | ProcessBaalTaunt - Randomly choose to spawn one of the 3 sub missiles where each of the parameters control the spawn rate for each of the sub missiles. |
57 | CltSubMissile1 | ProcessBladeShieldCenter - Attach the current missile to the source unit and after a certain delay, create a sub missile every frame that moves in a missile spiral path |
58 | Param1 | ProcessChaosIce - Randomly decide to change the path of the missile to a different direction |
59 | ProcessWorldstoneChip - If the current Z offset is too low or too high, then stop the missile | |
60 | ProcessHurricane - Every 2 Frames change the missile path to a different direction | |
61 | ProcessOverseerCtrl - Randomly create either the "catapult cold ball" missile or "catapult meteor ball" missile at an increasing spawnrate in a random position in a radius. | |
62 | ProcessNihlathak - This function handles the missilevisuals for Nihlathak's death. • Every frame has a random chance to create 2 of the following missiles in a random position: "nehlithakswoosh" "nehlithakdebris1", "nehlithakdebris2", "nehlithakdebris3",nehlithakdebris4". • After frame 60, every 20 frames create a "brdeathlightningbolt" missile in a random direction. • At frame 25, create a "nehlithakhole" and "nehlithakholelight" at the missile's location. | |
63 | ProcessNihlathakHurr - Update the path of the missile at every frame | |
64 | ProcessBaalControl - This function handles the missile visuals for Baal's death. • Randomly spawn either a "baalfx spirit 1" missile or "baalfx spirit 2" missile at an increasing rate and in a randomdirection. • At frame 450, create a "baalfx baal head appear" missile • At frame 425, create a "baalfx baal head 1" missile • At frame 375, create a "baalfx baal head 2" missile • At frame 325, create a "baalfx baal head 3" missile • After some time and when the "tyrael3" unit is found within the level, then randomly create either the "baalfx tyreal debris 1", "baalfx tyreal debris 2", or "baalfx tyreal debris 3" every frame for a specified duration | |
65 | ProcessBaalSpirit - The missile will follow different modes that can change its path and direction, which are controlled by the ProcessBaalControl function (Code = 64) | |
66 | ProcessWorldstoneShake - Attach the missile to the source unit. Call the camera shake function at random periodic delays. There is a small chance to randomly create either the "baalfx tyreal debris 1", "baalfx tyreal debris 2", or "baalfx tyreal debris 3" at periodic durations. | |
67 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 CltSubMissile3 | ProcessMissileDelayed - Create a sub missile at a specified frame at the source unit's location. Each parameter controls the specific frame to spawn one of the sub missiles. |
68 | CltParam1 CltSubMissile1 | ProcessSucFireBall - Create a sub missile every frame while the current missile is moving where the number of sub loops for the sub missile is controlled by the parameter |
pCltHitFunc - [N] - Uses an ID value from the below table, to select a specialized function for the missile's behavior when hitting something on the client side. This is more about handling the local graphics at the moment of missile collision.
ID | Parameters | Description |
0 (or empty) | Do nothing | |
1 | cHitPar1 cHitPar2 CltHitSubMissile1 | HitExplodingArrow - Create a disc of sub missiles with a defined radius and missile count |
2 | cHitPar1 cHitPar2 cHitPar3 CltHitSubMissile1 Param1 Param2 | HitPlagueJavelin - Create an inner and outer disc of sub missiles with a specified density for each ring. Each sub missile will use its "Param1" and "Param2" fields to define their velocities |
3 | CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 | HitOilPotion - Create "CltHitSubMissile1" and then randomly create either "CltHitSubMissile2" or "CltHitSubMissile3" |
4 | cHitPar1 CltHitSubMissile1 | HitDoNova - Create a ring of sub missiles with a defined count |
5 | Do nothing | |
6 | Do nothing | |
7 | Do nothing | |
8 | Do nothing | |
9 | cHitPar1 cHitPar2 cHitPar3 CltHitSubMissile1 ProgOverlay | HitHolyBolt - Determine whether to impact allies, how that damage is modified by the "dParam1" field based on the unit type hit, and if the missile should be killed on hitting an allowed unit. If impacting a unit then create a sub missile. When hitting an ally, create an overlay. |
10 | ProgOverlay | HitLightningOverlay - Add an overlay on the target unit |
11 | Do nothing | |
12 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 SHitCalc1 | HitImmolationArrow - Create a ring of sub missiles with a defined radius and density count. Use "SHitCalc1" to control the range (duration) of the sub missile |
13 | Param2 | HitGuidedArrow - Control the missile flags to either mark the target, go to the target, or run the missile retarget function |
14 | CltHitSubMissile1 CltHitSubMissile2 | HitFreezingArrow - Create the "CltHitSubMissile1" sub missile normally, and create "CltHitSubMissile2" sub missile in a random rotation |
15 | Do nothing | |
16 | cHitPar1 ProgOverlay | HitChainLightning - Create duplicate of this missile if there is a valid unit in range and there are still enough chain hits. Add an overlay on the target unit. |
17 | Do nothing | |
18 | cHitPar1 cHitPar2 cHitPar3 CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 CltHitSubMissile4 | HitMeteorCenter - Create a ring of "CltHitSubMissile1" sub missiles where "cHitPar1" controls the density. Create a "CltHitSubMissile2" sub missile where the range is controlled by the linked skill's "Param3" and "Param4" values from the Skills.txt file, and also set the missile's light radius value to 12. Create a ring of "CltHitSubMissile3" sub missiles where "cHitPar2" controls the density. Create a ring of "CltHitSubMissile4" sub missiles where "cHitPar3" controls the density. |
19 | CltHitSubMissile1 CltHitSubMissile2 | HitMonBliz - Randomly choose between creating one of the sub missiles |
20 | Do nothing | |
21 | Do nothing | |
22 | Do nothing | |
23 | Do nothing | |
24 | CltHitSubMissile1 | HitBoneSpear - Create a sub missile at the target location |
25 | cHitPar1 cHitPar2 CltHitSubMissile1 | HitLightningFury - Create a sub missile per enemy found in an area, where the radius and the maximum number of possible missiles to spawn are controlled by the parameters |
26 | cHitPar1 cHitPar2 CltHitSubMissile1 HitSubMissile1 | HitFistOfHeavensDelay - If there is no "HitSubMissile1" sub missile, then do nothing. Otherwise, create a sub missile per enemy found in an area, where the radius and the maximum number of possible missiles to spawn are controlled by the parameters |
27 | nullptr | |
28 | cHitPar1 CltHitSubMissile1 Param1 | HitMonsterRancidGasPotion - Create a disc of sub missiles with a specified density. Each sub missile will use its "Param1" field to define its velocity. |
29 | cHitPar1 CltHitSubMissile1 | HitGrimWard - Create a sub missile with a specified duration and force its direction to be the same as the missile that created it |
30 | cHitPar1 CltHitSubMissile1 | HitFrozenOrb - Create a disc of sub missiles with a specified density. |
31 | HitIceBreak - Create a missile with a forced animation rate value of 1, depending on the missile class used. • If "Missile" equals "icebreaksmall" then create "icebreaksmallmelt" • If "Missile" equals "icebreakmedium" then create "icebreaklargemelt" • If "Missile" equals "icebreaklarge" then create "icebreaklargemelt" • If "Missile" equals "catapult cold explosion" then create "icebreaklargemelt" | |
32 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 ProgOverlay | HitFirehead - Create the "CltHitSubMissile1" sub missile at the target location and create a ring of "CltHitSubMissile2" sub missiles where the parameters control the ring radius and density. Also add an overlay on the source unit. |
33 | cHitPar1 CltHitSubMissile1 | HitFlyingRocks - Create a random number of sub missiles in a defined area radius controlled by "cHitPar1" |
34 | HitSmithDoNotDraw - Make the source unit invisibile | |
35 | Do nothing | |
36 | Param1 | HitHellMeteor - Do nothing is colliding with a wall. Otherwise, create a disc of randomly selected missiles. The random missiles chosen are either "firewall", "firesmall", or "firemedium". The missile's "Param1" field controls the disc radius. The duration of each missile created is calculated with the following: Range = 25 + RANDOM(0, 25) - 12 |
37 | HitRadHandOfGod - Create a random number of "radamentholybolt" missiles in random positions in a radius | |
38 | HitTaintedSunFlash - Create a "taintedsunball" missile | |
39 | HitQueenDeathGlob - Randomly create 1 of the next 2 missile's defined in the missile.txt file after the missile that uses this function. For example, if "Missile" equals "queendeathglob" (ID = 354) and it uses this function, then randomly choose to create "queendeathsplat1" (ID = 355) or "queendeathsplat2" (ID = 356). | |
40 | HitHealingBolt - Determine that the target is an allied unit | |
41 | HitDurielDeathRock - Create 3 "durieldeathdebris" missiles randomly in a radius value of 6. Create a "durieldeathsmoke" missile at the previous missile's location. | |
42 | HitSoulStoneFragment1 - Create a "hffragment2" missile on the target unit | |
43 | HitSoulStoneFragment2 - Create a "hffragment3" missile on the target unit, with 0 velocity, and a random delay between 10 to 45 frames. | |
44 | CltHitSubMissile1 | HitCreateNextMissile - Create a sub missile and set its direction to match the old missile's path |
45 | Do nothing | |
46 | cHitPar1 cHitPar2 HitSubMissile1 | HitCatapultChargedBall - Create a disc of sub missiles where the number of missiles created is controlled by the following formula: ["cHitPar1"] + ["cHitPar2"] * ([Missile current level] - 1) |
47 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 | HitCatapultSpikeBag - Create "CltHitSubMissile1" sub missiles using the lob function where "cHitPar1" and "cHitPar2" are used to calculate the number of missiles in the following formula: MissileCount = ["cHitPar1"] + ["cHitPar2"] 8 ([Missile current level] - 1). The radius is this missile lob function is determined by doing MissileCount / 4. Also create "CltHitSubMissile2" at the location of the old missile. |
48 | HitCatapultCold - Create a "freezingarrowexp1" (ID = 88) missile in the center of the previous missile location. Also create 8 different "freezingarrowexp2" (ID = 89) missiles ejected in 8 different directions. Also create 8 different "catapult cold explosion" (ID = 417) missiles that have a randomized range and velocity and use the lob function to launch these missiles which an initial Z offset equal to 30. | |
49 | Do nothing | |
50 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 | HitCatapultMeteor - Run the spray rock function to spawn different missiles. First create multiple "moltenboulder-flyingrocks" (ID = 456) missiles where the "cHitPar1" field controls the number of missiles to spawn and the targeted radius distance to spawn these missiles is equal to this value multiplied by 2. The "cHitPar2" field controls these missiles' velocity. The "CltHitSubMissile1" sub missile is never spawned, but these "moltenboulder-flyingrocks" will not spawn unless this field has a value. Next create a ring of 18 "CltHitSubMissile2" sub missiles. |
51 | cHitPar1 cHitPar2 CltHitSubMissile1 | HitLightJav - Create a disc of the sub missiles where "cHitPar1" controls the number of sub missiles to spawn and "cHitPar2" acts as a Boolean Field where if enabled, it will cause these spawned sub missiles to have a randomized path. |
52 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 | HitMoltenBoulder - If hitting the target or a monster with the "large" flag enabled, then create "CltHitSubMissile1" sub missile. Also run the spray rock function to spawn different missiles. First create multiple "moltenboulder-flyingrocks" (ID = 456) missiles where the "cHitPar1" field controls the number of missiles to spawn and the targeted radius distance to spawn these missiles is equal to this value multiplied by 2. The "cHitPar2" field controls these missiles' velocity. The "CltHitSubMissile2" sub missile is never spawned, but these "moltenboulder-flyingrocks" will not spawn unless this field has a value. Next create a ring of 18 "CltHitSubMissile3" sub missiles. |
53 | cHitPar1 cHitPar2 cHitPar3 CltHitSubMissile1 | CreateRollingBoulder - Create the sub missile that bounces, where "cHitPar1" controls the number of bounces, "cHitPar2" controls the bounce dampening percentage, and "cHitPar3" controls the number of steps, or the lifetime remaining in ticks (Minimum value equal to 1). |
54 | CltHitSubMissile1 | HitVineTrail - Create the sub missile and force it to get the same direction as the previous missile |
55 | CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 | HitDebris - Create all 3 sub missiles at the source unit location |
56 | CltHitSubMissile1 | HitRecycleVine - Create the sub missile at the source unit location and force it to get the same direction as the previous missile |
57 | cHitPar1 cHitPar2 CltHitSubMissile1 | HitBaalSpawn - Create a disc ring of sub missiles where the parameters control the radius and density of the ring, respectively |
58 | Do nothing | |
59 | Do nothing | |
60 | cHitPar1 CltHitSubMissile1 CltHitSubMissile2 | HitNihlathak1 - Create the "CltHitSubMissile1" sub missile at the location of the previous missile. Create the "CltHitSubMissile2" sub missile at the same position, but "cHitPar1" controls the z offset of the sub missile. |
61 | HitWorldstoneShake - Stop the camera shake | |
62 | cHitPar1 CltHitSubMissile1 | HitBaalRandomBolts - Create the sub missile where the range is randomized by the parameter (minimum value equals 1) and the target location is also randomized by this range value |
63 | cHitPar1 CltHitSubMissile1 Param1 Param2 | HitBaalTauntPoison - Create a disc of sub missiles where "cHitPar1" controls the ring density (minimum value equals 1). Each sub missile will use its "Param1" and "Param2" fields to define their velocities |
64 | cHitPar1 CltHitSubMissile1 | HitBladeFury - Create a disc of sub missiles with the parameter controlling the ring density (minimum value equals 1) |
pSrvDoFunc - [N] - Uses an ID value from the below table, to select a specialized function for the missile's behavior while active every frame on the server side
ID | Parameters | Description |
0 (or empty) | Do nothing | |
1 | MissileDoArrow - Perform the standard missile move function. This is called in most of the other functions | |
2 | SrvCalc1 SubMissile1 | MissileDoPoisonJavelin - Create a sub missile with a specified number of subloops |
3 | StillMissileKludge - Check the missile velocity to determine whether or not to set the collision mask to Missile | |
4 | Do nothing | |
5 | SubStart SubStop | Firewall - Create an animation sequence for the missile, set the collision mask to Missile |
6 | SubMissile1 | MissileMakeFirewall - Create sub missiles based on the count that was passed to this missile |
7 | Param1 | MissileGuidedArrow - Use the parameter to control the retarget time on the unit |
8 | Param1 Param2 Param3 SubMissile1 | MissileMonBliz - Create multiple sub missiles, using the parameters as the spawn radius, spawn frequency, and level divisor |
9 | SubMissile1 | MissileMakeBatLightning - Create a sub missile based on the missile's path moved |
10 | SubMissile1 | MissileBlizzard - Create multiple sub missiles, use the linked skill's "calc1" field for the radius, and the "calc2" field for the sub missile spawn frequency |
11 | Param1 Param2 Param3 | FingerMageSpider - Shoot a missile that can be retargeted. Uses the parameters to control the periodic delay between retargeting, the maximum distance to retarget, and the distance delta for where to retarget. |
12 | SubMissile1 | MissileDiabWallMaker - Shoot a missile and have that missile create sub missiles as it is moving |
13 | MissileBoneWallMaker - Shoot a missile and have that missile create pet summons as it is moving, using the linked skill's "PetType" field from Skills.txt | |
14 | Param1 Param2 | MissileDoGrimWard - Shoot a missile where every periodic delay, do a function from the "srvdofunc" field in the Skills.txt file. "Param1" controls the periodic frame delay, and "Param2" controls which function code number to use. |
15 | Param1 Param2 SubMissile1 | MissileFrozenOrb - Shoot a missile and have that missile shoot sub missiles in different directions as it is moving. "Param1" controls the sub missile spawn rate and "Param2" controls the change in direction per sub missile spawn. |
16 | Param1 Param2 | MissileFrozenOrbNova - Shoot a missile in a set direction. "Param1" controls the delay until the missile moves and "Param2" controls theperiodic frame delay for updating the missile's target path |
17 | Param1 Param2 Param3 Param4 Param5 SubMissile1 | MissileDoCairnStones - Shoot sub missiles in a radius and then after a delay, create a portal to another level. Uses parameters to control the delays between creating sub missiles, the radius to create the sub missiles, which level ID to link the portal to, and the delay before creating the portal. |
18 | Param1 Param2 Param3 | DoTowerChestSpawner - Open the chest object to spawn items, and create random gold piles in an area |
19 | DoRadamentDeath - Use the Paladin Redemption skill function on nearby corpses in an area | |
20 | MissileAttachUntilDead - Shoot the missile and keep it attached to the source until. If the source unit dies, then kill the missile. | |
21 | SubMissile1 | MissileDoDistraction - Create a sub missile and run the MissileAttachUntilDead function |
22 | Param1 SubMissile1 | ProcessTrailJav - Shoot the missile and have it create 2 sub missiles every frame while it is moving |
23 | Param1 SubMissile1 | ProcessSucFireBall - Create a sub missile every frame while the missile is moving, where the parameter controls the sub missile's subloops |
24 | Param1 SubMissile1 | Duplicate of function 23 |
25 | SubMissile1 | MissileEruption - Shoot the missile and have it create sub missiles in a radius at a periodic rate, which is controlled by the link skill's "calc1" and "calc2" fields. |
26 | Param1 SubMissile1 | ProcessVines - Shoot the missile and have it create sub missiles at a periodic rate, which is controlled by the parameter |
27 | Param1 Param2 | MissileTornado - Shoot the missile and have it deal damage at a periodic rate in a radius, which is controlled by the parameters or by the linked skill's "calc4" and "aurarangecalc" fields |
28 | Param1 Param2 Param3 Param4 Param5 SubMissile1 | ProcessVolcano - Shoot the missile and have it periodically create sub missiles in a lobbing pattern. Use parameters to control the periodic frame delay for spawning sub missiles, the radius to spawn the sub missiles, the start and stop frame count for when to spawn and stop spawning sub missiles, and the lob start value for the sub missiles |
29 | Param1 | ProcessRecycleDelay - Shoot the missile and after a certain delay, process any life steal or mana steal, based on the linked skill's "calc1" and "calc2" fields |
30 | Param1 Param2 SubMissile1 | MissileRabiesPlague - Shoot the missile, have it attached to the source unit, and have it periodically spawn sub missiles in a radius |
31 | SubMissile1 | ProcessMakePerpMissiles - Shoot the missile and have it create 2 sub missiles that are fired in perpendicular directions |
32 | SubMissile1 | MissileTigerFuryPath - Shoot the missile using the MissileGuidedArrow function and have it create a sub missile |
33 | Param1 Param2 SubMissile1 | ProcessRecycleManaDelay - Shoot the missile and after a certain delay, process any mana steal, based on the linked skill's "calc1" field, and create a sub missile after another certain delay |
34 | Param1 Param2 Param3 Param4 SubMissile1 SubMissile2 | ProcessBaalTaunt - Randomly choose one of the 4 parameters to select a delay and randomly spawn one of the sub missiles |
35 | Param1 | MissileDoChaosIce - Shoot the missile and have it repath in a perpendicular direction after a periodic delay |
36 | MissileDoBaalDeathControl - Shoot the missile and spawn the Tyrael unit | |
37 | SubMissile1 SubMissile2 SubMissile3 | ProcessMissileDelayed - Shoot the missile and have it create 1 of each sub missile |
pSrvHitFunc - [N] - Uses an ID value from the below table, to select a specialized function for the missile's behavior when hitting something on the server side
ID | Parameters | Description |
0 (or empty) | Do nothing | |
1 | sHitPar1 | RadialFireDamage - Deal elemental damage in an area where the parameter controls the damage radius |
2 | sHitPar1 sHitPar2 HitSubMissile1 | HitPlagueJavelin - Kill the missile while dealing its damage, and also deal radial poison damage in an area by creating sub missiles in a defined radius for a specified number of loops |
3 | sHitPar1 | NoTargetRadialDamage - Deal the missile damage in amdefined area radius |
4 | sHitPar1 HitSubMissile1 HitSubMissile2 HitSubMissile3 HitSubMissile4 | HitCreateMissile - Determine whether to kill this missile on hit or not, and then create 1 of each hit sub missile |
5 | sHitPar1 HitSubMissile1 | HitDoNova - Create a certain number of sub missiles and shoot them outwards in an equalized distance from the location of this missile |
6 | sHitPar1 sHitPar2 | HitSummon - Create a monster in a specific starting mode at the missile's location. The "sHitPar1" field controls the monster ID to use, and the "sHitPar2" field controls which mode to set on the monster. |
7 | sHitPar1 sHitPar2 sHitPar3 dParam1 | HitHolyBolt - Determine whether to impact allies, how that damage is modified by the "dParam1" field based on the unit type hit, and if the missile should be killed on hitting an allowed unit |
8 | HitBlaze - The missile will deal damage if the source unit has the "blaze" state | |
9 | sHitPar1 sHitCalc1 HitSubMissile1 | HitImmolationArrow - Deal radius damage and create sub missiles with specified range values in a defined radius. If there is a freeze length or cold length from the elemental damage, then set it to 0. |
10 | HitGuidedArrow - Control if the missile should be redirected on a target when possible, or if it should be destroyed | |
11 | sHitPar1 HitSubMissile1 HitSubMissile2 HitSubMissile3 HitSubMissile4 | HitCreateMissileNoDmg - Kill this missile on hit and create 1 of each hit sub missile |
12 | sHitPar1 | HitChainLightning - Create duplicate of this missile if there is a valid unit in range and there are still enough chain hits |
13 | sHitPar1 sHitPar2 | HitGlacialSpike - Deal elemental damage in a specified radius with a specified elemental duration, if applicable |
14 | sHitPar1 sHitPar2 HitSubMissile1 | HitMeteorCenter - Deal damage in a specified radius and create a ring of hit sub missiles (controlled by a count) and define the duration of these sub missiles based on the linked skill's "Param3" and "Param4" values |
15 | HitSubMissile1 | HitSpiderLay - Kill the missile and create a sub missile at the location |
16 | HitSpiderGoo - Apply the state from the linked skill's "auratargetstate" field with a duration defined by the linked skill's "calc4" field | |
17 | HitHowl - Use the linked skill's "auratargetstate", "calc2", "calc3", and "Param2" fields to apply a state (with a defined level and duration) to units in a defined radius. Also call the AIScare function. | |
18 | HitShout - Kill the missile and call the AddShout function on hit allied units, which applies the "aurastate" state defined in the linked skill | |
19 | HitFingerMageSpiderHit - Kill the missile and apply the "auratargetstate" defined in the linked skill | |
20 | sHitPar1 sHitPar2 HitSubMissile1 | HitLightningFury - Kill the missile and create a specified number of sub missiles in a radius, per unit targeted in that radius |
21 | HitBattleCry - Kill the missile and apply the "auratargetstate" state on the target unit, defined in the linked skill | |
22 | sHitPar1 sHitPar2 HitSubMissile1 | HitFistOfHeavensDelay - Kill the missile and create a specified number of sub missiles in a defined radius, per filtered unit targeted in that radius |
23 | sHitPar1 | HitMissileSkill - Kill the missile and do a function from the "srvdofunc" field in the Skills.txt file, where the "sHitPar1" field controls the function ID to use |
24 | sHitPar1 | RadialMissileDamage - Kill the missile and damage in an area controlled by a defined radius |
25 | sHitPar1 HitSubMissile1 | HitMonsterRancidGasPotion - Kill the missile and deal radial poison damage in an area by creating sub missiles in a defined radius for a specified number of loops |
26 | sHitPar1 HitSubMissile1 | HitGrimWardStart - Kill the missile and create a sub missile with a specified duration |
27 | HitKillMissile - Kill the missile | |
28 | HitGrimWardScare - Kill the missile and apply the AiScare function to all monsters in a radius controlled by the "calc2" field from the linked skill with a distance and duration value controlled by the "Param5" and "Param6" values from the linked skill. | |
29 | sHitPar1 HitSubMissile1 | HitFrozenOrb - Kill the missile and create specified number sub missiles in a circular outwards direction from that location |
30 | sHitPar1 sHitPar2 | RadialStunDamage - Kill the missile and do stun damage in a defined radius with a defined stun length |
31 | HitFirehead - Kill the missile and deal elemental damage directly to the target unit's life, ignoring resistances | |
32 | Param4 | MissileHitCairnStones - Create a portal linked to a specified level area ID |
33 | HitTowerChest - Set the dungeon room to untile | |
34 | Do nothing | |
35 | OrbMistHit - Kill the missile. Set the missile's tracked object's dungeon room to untile and set that object's mode from Neutral to Operating. | |
36 | HitSubMissile1 | HitCreateNextMissile - Kill the missile and create a sub missile with parameters copied over |
37 | HitBladeCreeper - If this hits a target unit then deal damage | |
38 | sHitPar1 sHitPar2 HitSubMissile1 | HitCatapultChargedBall - Kill the missile and create a specified number of sub missiles in a ring |
39 | HitImpSpawnMonsters - Kill the missile and spawn an appropriate monster, based on the allowed monsters in the area level | |
40 | sHitPar1 sHitPar2 HitSubMissile1 | HitCatapultSpikeBag - Kill the missile and create aspecified number of sub missiles that are lobbed outwards in a radius |
41 | Do nothing | |
42 | Do nothing | |
43 | HitHealing - Use the linked skill's physical damage as the amount of healing done to the target unit. Determine whether to kill the missile or not, based on the "CollideKill" field | |
44 | sHitPar1 | RadialDamage - Kill the missile and deal damage in a specified radius |
45 | sHitPar1 sHitPar2 HitSubMissile1 | HitLightJav - Kill the missile and create a number of sub missiles in a disc. Determine whether these sub missiles created should use a random path or not. |
46 | Do nothing | |
47 | sHitPar1 sHitPar2 HitSubMissile1 | BoulderExplode - Kill the missile and create an explosion with a defined radius and a ring of sub missiles with a defined count of missiles |
48 | HitSubMissile1 | CreateRollingBoulder - Kill the missile and create a sub missile |
49 | Do nothing | |
50 | sHitPar1 | HitPlagueVines - If the range of the missile minus the"sHitPar1" parameter is greater than the missile's current frame, then deal damage |
51 | HitSubMissile1 HitSubMissile2 HitSubMissile3 | HitDebris - Kill the missile and create the 3 sub missiles, if possible |
52 | sHitPar1 HitSubMissile1 | HitBladeFury - Kill the missile and spawn sub missiles in multiple directions depending on the "sHitPar1" value |
53 | HitRabiesContagion - Get the elemental duration from the linked skill and compare that with the duration of the missile to determine to kill the missile or create a new one, depending on the target having the linked skill's "auratargetstate" state | |
54 | HitBaalSpawnMonsters - Kill the missile and spawn a monster in Neutral mode | |
55 | sHitPar1 | HitBaalInferno - Drain a percentage of the target's mana (from 0 to 100) and deal damage |
56 | sHitPar1 HitSubMissile1 | HitArmageddon - Kill the missile, deal damage in an area with a defined radius, and create a sub missile |
57 | MissileHitBaalDeathControl - Create the Tyrael unit | |
58 | sHitPar1 HitSubMissile1 | HitBaalRandomBolts - Kill the missile and create a sub missile targeting a random randomized location range controlled by "sHitPar1" |
59 | sHitPar1 HitSubMissile1 Param1 Param2 | HitBaalTauntPoison - Kill the missile and create an inner and outer disc of sub missiles with a specified count (using "sHitPar1") of missiles and with incremental specified velocities (the sub missile will use its "Param1" and "Param2" fields) |
pSrvDmgFunc - [N] - Uses an ID value from the below table, to select a specialized function that gets called before damaging a unit on the server side
ID | Parameters | Description |
0 (or empty) | Default | |
1 | DmgCalc1 | DamageFireArrow - Converts a percentage of physical damageto elemental damage per level |
2 | dParam1 | DamageIceArrow - Converts the Cold Length value to Freeze Length. Uses the parameter value as a percentage increase the Freeze Length |
3 | dParam1 | DamageFireWall - Uses the parameter as a random chance to use an attack result Soft Hit flag |
4 | DamageIceBlast - Converts the Cold Length value to the Freeze Length value | |
5 | dParam1 dParam2 | DamageBlessedHammerNew - Uses "dParam1" as a damage percent multiplier against Undead type monsters. Uses "dParam2" as a damage percent multiplier against Demon type monsters. |
6 | DamageNoItem - If the source unit is not a Mercenary, then set the target unit to be unable to drop items when it dies. | |
7 | dParam1 | DamageWarCry - Uses the parameter as the Stun Length. If the parameter equals 0, then use the source unit's related skill's "Calc4" field as the Stun Length value. If the skill is null, then use the missile's default skill's Param1 & Param2 values. |
8 | ProgOverlay | DamageEruption - Create an overlay on the target |
9 | dParam1 | DamageTwister - Uses the parameter as the Stun Length, and sets the damage Hit Class layer to Stun Layer. If the parameter equals 0, then use the source unit's related skill's "Calc2" field as the Stun Length. |
10 | DamageFreeze - Checks that the missile has stats and then sets the Freeze Length value to equal the Cold Length value. | |
11 | DoRabiesDamage - Checks the remaining poison duration on the target unit and if it is less than 10, it will use the linked skill's Elemental damage and duration length calculation (Skills.txt) to apply a new poison. | |
12 | sDamageLightningJavelin | |
13 | dParam1 dParam2 | DamageBlessedHammerOld - Uses the source units physical damage percent stat as a percentage modifier for the missile's damage, and then calls the "DamageBlessedHammerNew" function (function code 5) |
14 | dParam1 dParam2 | DamageMoltenBoulder - Uses "dParam2" as the percent chance to knockback the target unit. Uses "dParam1" to control how this percent chance is modified. Also relies on the "small" and "large" fields from the MonStats2.txt file. • If the target unit is a player and "dParam1" is greater than or equal to 1, then set the knockback chance to "dParam2" • If "dParam1" is less than 1 and the monster is a small size, then set the knockback chance to "dParam2" • If "dParam1" equals 1 and the monster is a small size, then set the knockback chance to "dParam2" * 2 • If "dParam1" equals 1 and the monster is a large size, then set the knockback chance to "dParam2" • If "dParam1" is greater than 1 and the monster is a small size, then set the knockback chance to "dParam2" * 3 • If "dParam1" is greater than 1 and the monster is a large size, then set the knockback chance to "dParam2" * 2 • If "dParam1" is greater than 1 and the monster is not a small or large size, then set the knockback chance to "dParam2" |
15 | sHitPar2 dParam1 | DamageHolyBolt - Uses "dParam1" as a percent damage multiplier for the total elemental damage, depending on the use case of "sHitPar2" • If the target unit is a monster • If "sHitPar2" equals 0, then do not modify the damage • If "sHitPar2" equals 1, then only modify the damage if the monster is an Undead type • If "sHitPar2" equals 2, then only modify the damage if the monster is a Demon type • If "sHitPar2" equals 3, then only modify the damage if the monster is an Undead or Demon type • If the target unit is a player • If "sHitPar2" equals 0, then modify the damage • If "sHitPar2" equals 0, then do not modify the damage |
SrvCalc1 - [C] - Used as a parameter for the pSrvDoFunc field
Param1 - [N] - Used as a parameter for the pSrvDoFunc field
CltCalc1 - [C] - Used as a parameter for the pCltDoFunc field
CltParam1 - [N] - Used as a parameter for the pCltDoFunc field
SHitCalc1 - [C] - Used as a parameter for the pSrvHitFunc field
sHitPar1 - [N] - Used as a parameter for the pSrvHitFunc field
CHitCalc1 - [C] - Used as a parameter for the pCltHitFunc field
cHitPar1 - [N] - Used as a parameter for the pCltHitFunc field
DmgCalc1 - [C] - Used as a parameter for the pSrvDmgFunc field
dParam1 - [N] - Used as a parameter for the pSrvDmgFunc field
Vel - [N] - The baseline velocity of the missile, which is the speed at which the missile moves in the game world. This is measured by distance in pixels traveled per frame
MaxVel - [N] - The maximum velocity of the missile. If the missile's current velocity increases (based on other fields), then this field controls how high the velocity is allowed to go
VelLev - [N] - Adds extra velocity based on the caster unit's level. Each level gained beyond level 1 will add this value to the baseline Vel field
Accel - [N] - Controls the acceleration of the missile's movement. A positive value will increase the missile's velocity per frame. A negative value will decrease the missile's velocity per frame. The bigger positive or negative values will cause the velocity to change faster per frame
Range - [N] - Controls the baseline duration that the missile will exist for after it is created. This is measured in frames where 25 Frames = 1 second
LevRange - [N] - Adds extra duration based on the caster unit's level. Each level gained beyond level 1 will add this value to the baseline Range field
Light - [N] - Controls the missile's Light Radius size (measured in grid sub-tiles)
Flicker - [N] - If greater than 0, then every 4th frame while the missile is active, the Light Radius will randomly change in size between base size to its base size plus this value (measured in grid sub-tiles)
Red - [N] - Controls the red color value of the missile's Light Radius (Uses a value from 0 to 255)
Green - [N] - Controls the green color value of the monster's Light Radius (Uses a value from 0 to 255)
Blue - [N] - Controls the blue color value of the monster's Light Radius (Uses a value from 0 to 255)
InitSteps - [N] - The number of frames the missile needs to be alive until it becomes visible on the game client. If the missile's current duration in frame count is less than this value, then the missile will appear invisible
Activate - [N] - The number of frames the missile needs to be alive until it becomes active. If the missile's current duration in frame count is less than this value, then the missile will not collide
LoopAnim - [B] - If equals 1, then the missile's animation will repeat once the previous animation finishes. If equals 0, then the missile's animation will only play once, which can cause the missile to appear invisible at the end of the animation, but it will still be alive
CelFile - [O] - Defines which DCC missile file to use for the visual graphics of the missile
animrate - [N] - Controls the visual speed of the missile's animation graphics. The overall missile animation rate is calculated as the following: 256 * ["animrate"] / 1024
AnimLen - [N] - Defines the length of the missile's animation in frames where 25 Frames = 1 second. This field can sometimes be used to calculate the missile animation rate, depending on the missile function used
AnimSpeed - [N] - Controls the visual speed of the missile's animation graphics on the client side (Measured in 16ths, where 16 equals 1 frame per second). This can be overridden by certain missile functions
RandStart - [N] - If this value is greater than 0, then the missile will start at a random frame between 0 and this value when it begins its animation
SubLoop - [B] - If equals 1, then the missile will use a specific sequence of its animation while it is alive, depending on its creation. If equals 0, then the missile will not use a sequenced animation
SubStart - [N] - The starting frame of the sequence animation. This requires that the SubLoop field is enabled
SubStop - [N] - The ending frame of the sequence animation. After reaching this frame, then the sequenced animation will loop back to the SubStart frame. This requires that the SubLoop field is enabled
CollideType - [N] - Defines the missile's collision type, which controls what units, objects, or parts of the environment that the missile can impact
Code | Description |
0 | No collision |
1 | Player unit collision |
2 | Monster unit collision |
3 | Player and Monster unit collision |
4 | No collision |
5 | Monster unit collision |
6 | Barrier collision, such as doors |
7 | Missile collision |
8 | Player, Monster, Barrier, and Wall collision |
CollideKill - [B] - If equals 1, then the missile will be destroyed when it collides with something. If equals 0, then the missile will not be destroyed when it collides with something
CollideFriend - [B] - If equals 1, then the missile can collide with friendly units, including the caster. If equals 0, then the missile will ignore friendly units
LastCollide - [B] - If equals 1, then the missile will track the last unit that it collided with, which is useful for making sure the missile does not hit the same unit twice. If equals 0, then ignore this
Collision - [B] - If equals 1, then the missile will have a missile type path placement collision mask when it is initialized or moved. If equals 0, then the missile will have no placement collision mask when it is created or moved
ClientCol - [B] - If equals 1, then the missile will check collision on the client, depending on the missile's CollideType field. If equals 0, then ignore this
ClientSend - [B] - If equals 1, then the server will create the missile on the client. This can be used when reloading area levels or transitioning units between areas. If equals 0, then ignore this
NextHit - [B] - If equals 1, then the missile will use the next delay. If equals 0, then ignore this
NextDelay - [N] - Controls the delay in frame length until the missile is allowed to hit the same unit again. This field relies on the NextHit field being enabled
xoffset & yoffset & zoffset - [N] - Specifies the X, Y, and Z location coordinates (measured in pixels) to offset to visually draw the missile based on its actual location. This will only offset the visual graphics of the missile, not the missile itself. The Z axis controls the visual height of the missile
Size - [N] - Defines the diameter in sub-tiles (for both the X and Y axis) that the missile will occupy. This affects how the missile will collide with something or how the game will handle placement for the missile
SrcTown - [B] - If equals 1, then the missile will be destroyed if the caster unit is located in an act town. If equals 0, then ignore this
CltSrcTown - [N] - If this value is greater than 0 and the LoopAnim field is disabled, then this field will control which frame to set the missile's animation when the player is in town. This value gets subtracted from the AnimLen value to determine the frame to set the missile's animation.
CanDestroy - [B] - If equals 1, then the missile can be attacked and destroyed. If equals 0, then the missile cannot be attacked
ToHit - [B] - If equals 1, then this missile will use the caster's Attack Rating stat to determine if the missile should hit its target. If equals 0, then the missile will always hit its target
AlwaysExplode - [B] - If equals 1, then the missile will always process an explosion when it is killed, which can use the pSrvHitFunc, HitSound and ExplosionMissile fields on the client side. If equals 0, then the missile will only rely on proper collision hits to process an explosion
Explosion - [B] - If equals 1, then the missile will be classified as an explosion which will make it use different handlers for finding nearby units and dealing damage. If equals 0, then ignore this
Town - [B] - If equals 1, then the missile is allowed to be alive when in a town area. If equals 0, then the missile will be immediately destroyed when located within a town area
NoUniqueMod - [B] - If equals 1, then the missile will not receive bonuses from Unique monster modifiers. If equals 0, then the missile will receive bonuses from Unique monster modifiers
NoMultiShot - [B] - If equals 1, then the missile will not be affected by the Multi-Shot monster modifier. If equals 0, then the missile will be affected by theMulti-Shot monster modifier
Holy - [N] - Controls a bit field flag where each value is a code to allow the missile to damage a certain type of monster
Code | Description |
0 | Damage all units |
1 | Only damage Undead |
2 | Only damage Demons |
4 | Only damage Beasts |
CanSlow - [B] - If equals 1, then the missile can be affected by the "slowmissiles" state (States.txt). If equals 0, then the missile will ignore the "slowmissiles" state
ReturnFire - [B] - If equals 1, then missile can trigger the Sorceress Chilling Armor event function. If equals 0, then this missile will not trigger that function
GetHit - [B] - If equals 1, then the missile will cause the target unit to enter the Get Hit mode (GH), which acts as the hit recovery mode. If equals 0, then ignore this
SoftHit - [B] - If equals 1, then the missile will cause a soft hit on the unit, which can trigger a blood splatter effect, hit flash, and/or a hit sound. If equals 0, then ignore this
KnockBack - [N] - Controls the percentage chance (out of 100) that the target unit will be knocked back when hit by the missile
Trans - [N] - Controls the alpha mode for how the missile is displayed, which can affect transparency and blending
Code | Description |
0 | No Transparency |
1 | Black Alpha Transparency |
2 | White Alpha Transparency |
Pierce - [B] - If equals 1, then allow the Pierce modifier function to work with this missile. If equals 0, then do not allow Pierce to work with this missile
MissileSkill - [B] - If equals 1, then the missile will look up the skill that created it and use that skill's damage instead of the missile damage. If equals 0, then ignore this
Skill - [O] - Links to the "skill" field from the Skills.txt file. This will look up the specified skill's damage and use it for the missile instead of using the missile's defined damage
ResultFlags - [N] - Controls different flags that can affect how the target reacts after being hit by the missile. Uses an integer value to check against different bit fields by using the "&" operator. For example, if the value equals 5 (binary = 101) then that returns true for both the 4 (binary = 100) and 1 (binary = 1) bit field values. Referenced by the Bit Field Value of the Result Flags Table
HitFlags - [N] - Controls different flags that can affect the damage dealt when the target is hit by the missile. Uses an integer value to check against different bit fields by using the "&" operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values. Referenced by the Bit Field Value of the Hit Flags Table
HitShift - [N] - Controls the percentage modifier for the missile's damage. This value cannot be less than 0 or greater than 8. This is calculated in 256ths, where 8=256/256, 7=128/256, 6=64/256, 5=32/256, 4=16/256, 3=8/256, 2=4/256, 1=2/256, and 0=1/256
ApplyMastery - [B] - If equals 1, then apply the caster's elemental mastery bonus modifiers to the missile's elemental damage. If equals 0, then ignore this
SrcDamage - [N] - Controls how much of the source unit's damage should be added to the missile's damage. This is calculated in 128ths and acts as a percentage modifier for the source unit's damage that added to the missile. If equals -1 or 0, then the source damage is not included
Half2HSrc - [B] - If equals 1 and the source unit is currently wielding a 2-Handed weapon, then the SrcDamage is reduced by 50%. If equals 0, then ignore this
SrcMissDmg - [N] - If the missile was created by another missile, then this controls how much of the source missile's damage should be added to this missile's damage. This is calculated in 128ths and acts as a percentage modifier for the source missile's damage that added to this missile. If equals 0, then the source damage is not included
MinDamage - [N] - Minimum baseline physical damage dealt by the missile
MinLevDam1 - [N] - Controls the additional minimum physical damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field
MaxDamage - [N] - Maximum baseline physical damage dealt by the missile
MaxLevDam1 - [N] - Controls the additional maximum physical damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field
DmgSymPerCalc - [C] - Determines the percentage increase to the physical damage dealt by the missile based on specified skill levels
EType - [O] - Defines the type of elemental damage dealt by the missile. If this field is empty, then the related elemental fields below will not be used. Referenced by the Code value of the Elemental Types Table
EMin - [N] - Minimum baseline elemental damage dealt by the missile
MinELev1 - [N] - Controls the additional minimum elemental damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number
EMax - [N] - Maximum baseline elemental damage dealt by the missile
MaxELev1 - [N] - Controls the additional maximum elemental damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field
EDmgSymPerCalc - [C] - Determines the percentage increase to the elemental damage dealt by the missile based on specified skill levels
ELen - [N] - The baseline elemental duration dealt by the missile. This is calculated in frame lengths where 25 Frames = 1 second. These fields only apply to appropriate elemental types with a duration
ELevLen1 - [N] - Controls the additional elemental duration added by the missile, calculated using the leveling formula between 3 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17 and beyond. These 3 level thresholds correlate to each field. These fields only apply to appropriate elemental types with a duration
HitClass - [N] - Defines the missile's own hit class into the damage routines, mainly used for determining hit sound effects and overlays. This field only handles the hit class layers, so values beyond these defined bits are ignored. Uses an integer value to check against different bit fields by using the "&" operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values.
Bit Field Value | Binary Equivalent Value | Description |
16 | 00010000 | Double Layer |
32 | 00010100 | Fire Layer |
48 | 00011110 | Cold Layer |
64 | 01000000 | Lightning Layer |
80 | 01010000 | Poison Layer |
96 | 01100000 | Stun Layer |
112 | 01110000 | Bash Layer |
128 | 10000000 | Thorns Layer |
144 | 10010000 | Sanctuary Layer |
160 | 10100000 | Silent Voice Layer |
176 | 10110000 | Goo Layer |
NumDirections - [N] - The number of directions allowed by the missile, based on the DCC file used (CelFile). This value should be within the power of 2, with a minimum value of 1 or up to a maximum value of 64
LocalBlood - [B] - If equals 1, then change the color of blood missiles to green. If equals 0, then keep the blood missiles colored the default red
DamageRate - [N] - Controls the "damage_framerate" stat (Calculated in 1024ths), which acts as a percentage multiplier for the physical damage reduction and magic damage reduction stat modifiers, when performing damage resistance calculations. This is only enabled if the value is greater than 0
TravelSound - [O] - Points to a Sound field defined in the Sounds.txt file. Used when the missile is created and while it is alive
HitSound - [O] - Points to a Sound field defined in the Sounds.txt file. Used when the collides with a target
ProgSound - [O] - Points to a Sound field defined in the Sounds.txt file. Used for a programmed special event based on the client function
ProgOverlay - [O] - Points to the overlay field defined in the Overlay.txt file. Used for a programmed special event based on the server or client function
ExplosionMissile - [O] - Points to the Missile field for another missile. Used for the missile created on the client when this missile explodes
SubMissile1 - [O] - Points to the Missile field for another missile. Used for creating a new missile based on the server function used
HitSubMissile1 - [O] - Points to the Missile field for another missile. Used for a new missile after a collision, based on the server function used
CltSubMissile1 - [O] - Points to the Missile field for another missile. Used for creating a new missile based on the client function used
CltHitSubMissile1 - [O] - Points to the Missile field for another missile. Used for a new missile after a collision, based on the client function used.
MonEquip.txt
This file controls how a monster may be created with specific type of inventory equipment items
These equipment items are randomly generated on the monster, based on the specified parameters in this file
This data relies on the "inventory" field being enabled for the listed monster, found in the monstats.txt file
Data Fields
monster - [O] - Defines the monster that should be equipped. Points to the matching ID value in the MonStats.txt file. If the monster has multiple defined equipment possibilities, then they should always be grouped together. The game will go through the list in order to match what is best to use for the monster
oninit - [B] - Defines if the monster equipment is added on initialization during the monster's creation, depending how the monster is spawned. Monsters created by a skill have this value set to 0. Monsters created by a level have this value set to 1
level - [N] - Defines the level requirement for the monster in order to gain this equipment. The game will prefer the highest level allowed, so the order of these equipment should be from highest level to lowest level
item1 - [O] - Item code that can be equipped on the monster
loc1 - [O] - Specifies the inventory slot where the item will be equipped. Once an item is equipped on that body location, then the game will skip any duplicate calls to equipping the same body location. This is another reason why the equipment should be ordered from highest level to lowest level. Referenced from the Code column in BodyLocs.txt
mod1 - [N] - Controls the quality level of the related item
Item Quality Code | Description |
0 | Any Quality (Used for a random quality) |
1 | Low Quality (Ex: "Crude") |
2 | Normal Quality (Default value if the value is empty) |
3 | High Quality (Superior) |
4 | Magic Quality (Uses Magic Prefixes and Suffixes) |
5 | Set Item |
6 | Rare Quality |
7 | Unique (Predetermined stats) |
MonLvl.txt
This file controls how monster statistics increase per level based on the current game type and difficulty
The "(N)" text in field names signifies to use that specific value for games in Nightmare difficulty
The "(H)" text in field names signifies to use that specific value for games in Hell difficulty
This file is used by MonStats.txt for all of these values
Data Fields
Level - [N] - An integer value to determine how to scale the monster's statistics when at a specific level
The following are used for D2R Classic:
AC & AC(N) & AC(H) - [N] - Percentage multiplier for increasing the Monster's Defense (multiplies with the AC field)
TH & TH(N) & TH(H) - [N] - Percentage multiplier for increasing the Monster's Attack Rating (multiplies with the A1TH and A2TH fields)
HP & HP(N) & HP(H) - [N] - Percentage multiplier for increasing the Monster's Life (multiplies with the minHP and maxHP fields)
DM & DM(N) & DM(H) - [N] - Percentage multiplier for increasing the Monster's Damage (multiplies with the A1MinD, A1MaxD, A2MinD, A2MaxD, El1MinD and El1MaxD fields)
XP & XP(N) & XP(H) - [N] - Percentage multiplier for increasing the Experience provided to the player when killing the Monster (multiplies with the Exp fields)
The following are used for D2R Expansion:
L-AC & L-AC(N) & L-AC(H) - [N] - Percentage multiplier for increasing the Monster's Defense (multiplies with the AC field)
L-TH & L-TH(N) & L-TH(H) - [N] - Percentage multiplier for increasing the Monster's Attack Rating (multiplies with the A1TH and A2TH fields)
L-HP & L-HP(N) & L-HP(H) - [N] - Percentage multiplier for increasing the Monster's Life (multiplies with the minHP and maxHP fields)
L-DM & L-DM(N) & L-DM(H) - [N] - Percentage multiplier for increasing the Monster's Damage (multiplies with the A1MinD, A1MaxD, A2MinD, A2MaxD, El1MinD and El1MaxD fields)
L-XP & L-XP(N) & L-XP(H) - [N] - Percentage multiplier for increasing the Experience provided to the player when killing the Monster (multiplies with the Exp fields)
MonPreset.txt
This file controls which monsters are preloaded in a preset, based on the Act number
Data Fields
Act - [N] - Defines the Act number used for each Monster Preset. Uses values between 1 to 5
Place - [O] - Defines a Super Unique monster from SuperUniques.txt, a monster from MonStats.txt or a place from MonPlace.txt. This defines the Monster Preset which is used for preloading, such as during level transitions
MonProp.txt
This file controls special properties that can be added to a monster, based on the game difficulty
The "(N)" text in field names signifies to use that specific value for games in Nightmare difficulty
The "(H)" text in field names signifies to use that specific value for games in Hell difficulty
This file is used by the monstats.txt file
Data Fields
ID - [N] - Defines the monster that should gain the Property. Points to the matching "ID" value in the monstats.txt file
prop1 - [O] - Defines with Property to apply to the monster (Uses the "code field from Properties.txt)
chance1 - [N] - The percent chance that the related property (prop#) will be assigned. If this value equals 0, then the Property will always be applied
par1 - [N] - The "parameter" value associated with the related property (prop#). Usage depends on the (Function ID field from Properties.txt)
min1 - [N] - The "min" value to assign to the related property (prop#). Usage depends on the (Function ID field from Properties.txt)
max1 - [N] - The "max" value to assign to the related property (prop#). Usage depends on the (Function ID field from Properties.txt)
MonSeq.txt
This file controls the sequence table used for specifying events during certain animation frames, such as when using skills.
A sequence is divided into multiple lines in this file to define each frame in the animation and to determine which event to use during a specific frame.
Data Fields
sequence -[N] - Establishes the Monster Sequence index. An entire monster sequence can be composed of multiple sequence lines, which means that each line needs to have matching "sequence" fields and must be in contiguous order
mode - [O] - Defines which monster mode animation to use for the sequence. Referenced from the Code column in MonMode.txt
frame - [N] - The in-game frame number for the animation. For the first line in the sequence, this value will establish where the starting frame for the animation. These values should be in contiguous order for the sequence
dir - [N] - Defines the numeric animation direction that the frame use. Most animations have between 8 to 64 maximum directions
event - [N] - Defines what type of event will be used when the frame triggers
Code | Description |
0 | No event, do nothing |
1 | Do Melee attack |
2 | Do Missile attack |
3 | Play a sound |
4 | Use a Skill |
MonStats.txt
This file controls the main functionalities and statistics for every monster in the game. This includes enemy monsters, pets, and NPC units.
This file is connected to the MonStats2.txt file, so additional functionalities can be found in that file. This means that this file's number and order of entries should be identical with the MonStats2.txt file.
The "(N)" text in field names signifies to use that specific value for games in Nightmare difficulty
The "(H)" text in field names signifies to use that specific value for games in Hell difficulty
Data Fields
ID - [N] - Controls the unique name ID to define the monster
*hcIDx - [*] - This field is not read directly, but can be used as an index entry for the monsters.
BaseID - [O] - Points to the ID of another monster to define the monster's base type. This is to create groups of monsters which are considered the same type
NextInClass - [O] - Points to the ID of another monster to signify the next monster in the group of this monster's type. This is to continue the groups of monsters which are considered the same type. The order should be contiguous
TransLvl - [N] - Defines the color transform level to use for this monster, which affects what color palette that the monster will use
Code | Description |
0 | Cold |
1 | Poison |
2 | Level 0 |
3 | Level 1 |
4 | Level 2 |
5 | Level 3 |
6 | Level 4 |
7 | Level Miscellaneous |
NameStr - [O] Used to define the monster's name, such as in the Life bar UI when it is being targeted
MonStatsEx - [O] - Controls a pointer to the ID from MonStats2.txt
MonProp - [O] - Points to the ID field from MonProp.txt. Used to add special modifiers to the monster
MonType - [O] - Points to the type field from MonType.txt. Used to handle the monster's classification
AI - [O] - Points to a type of AI script to use for the monster (MonAI.txt)
DescStr - [O] Used to add a string to appear as an additional description below the Life bar UI when the monster is being targeted
Code - [O] - Controls the token used for choosing the proper cells to display the monster's graphics
enabled - [B] - If equals 1, then this monster is allowed to spawn in the game. If equals 0, then this monster will never spawn in the game
rangedtype - [B] - If equals 1, then the monster will be classified as a ranged type. If equals 0, then the monster will be classified as a melee type
placespawn - [B] - If equals 1, then this monster will be treated as a spawner, so monsters that spawn can be initially placed within this monster. If equals 0, then ignore this
spawn - [O] - Points to the ID of another monster to control what kind of monster is spawned from this monster. This is only used if the placespawn field is enabled
spawnx & spawny - [N] - Controls the X & Y offsets for where another monster is displaced when being spawned by this monster
spawnmode - [O] - Defines the animation mode that the spawned monsters will be initiated with. Referenced from the Token column in MonMode.txt
minion1 - [O] - Points to the ID of another monster to control what kind of monster is spawned with this monster when it is spawned, like a monster pack. The minion1 field is also used for spawning a monster when this monster is killed while it has the SplEndDeath field enabled
SetBoss - [B] - If equals 1, then set the monster AI to use the Boss AI type, which can affect the monster's behaviors. If equals 0, then ignore this
BossXfer - [B] - If equals 1, then the monster's AI will transfer its boss recognition to another monster, which can affect the minion monster behaviors after this boss is killed. If equals 0, then ignore no boss AI will transfer and minion monsters will behave differently after the boss is killed. This field relies on the SetBoss field being enabled
PartyMin - [N] - The minimum number of minions that can spawn with this monster. Uses the minion1 fields. The actual number is a random value chosen between the "PartyMin" and "PartyMax" field values
PartyMax - [N] - The maximum number of minions that can spawn with this monster. Uses the minion1 fields. The actual number is a random value chosen between the "PartyMin" and "PartyMax" field values
MinGrp - [N] - The minimum number of duplicates of this monster that can spawn together. The actual number is a random value chosen between the "MinGrp" and "MaxGrp" field values
MaxGrp - [N] - The maximum number of duplicates of this monster that can spawn together. The actual number is a random value chosen between the "MinGrp" and "MaxGrp" field values
sparsePopulate - [N] - If this value is greater than 0, then it controls the percent chance that this monster does not spawn, and another monster will spawn in its place. (Out of 100)
Velocity - [N] - Determines the movement velocity of the monster, which can be the monster's baseline walk speed
Run - [N] - Determines the run speed of the monster as opposed to walk speed. This is only used if the monster has a Run mode
Rarity - [N] - Modifies the chance that this monster will be chosen to spawn in the area level. The higher the value is, then the more likely this monster will be chosen. This value acts as a numerator and a denominator. All "Rarity" values of possible monsters get summed together to give a total denominator, used for the random roll. For example, if there are 3 possible monsters that can spawn, and their "Rarity" values are 1, 2, 2, then their chances to be chosen are 1/5, 2/5, and 2/5 respectively. If this value equals 0, then this monster is never randomly selected to spawn in an area level
Level - [N] - Determines the monster's level. This value for Nightmare and Hell difficulty can be overridden by the area level's MonLvl or MonLvlEx values from Levels.txt, unless the monster's boss and noRatio fields are enabled
MonSound - [O] - Points to the ID field of a monster sound from MonSounds.txt. This is used to control the monsters assigned sounds, when the monster is spawned as a Normal monster
UMonSound - [O] - Points to the ID field of a monster sound from MonSounds.txt. This is used to control the monsters assigned sounds, when the monster is spawned as a Unique or Champion monster
threat - [N] - Controls the AI threat value of the monster which can affect the targeting priorities of enemy Ais for this monster. The higher this value is, then the more likely that enemy AI will target this monster
aidel - [N] - Controls the delay in frame length for how often the monster's AI will update its commands. A lower delay means that the monster will perform commands more often without as long of a pause in between
aidist - [N] - Controls the maximum distance (measured in tiles) between the monster and an enemy until the monster's AI becomes aggressive. If equals 0, then default to 35
aip1 - [N] - Defines numeric parameters used to control various functions of the monster's AI. These fields depend on which AI script is being used (MonAI.txt, and the AI field in MonStats.txt)
MissA1 - [O] - Points to the Missile field from Missiles.txt to determine which missile to use when the monster is in Attack 1 & Attack 2 mode
MissS1 - [O] - Points to the Missile field from Missiles.txt to determine which missile to use when the monster is in Skill 1 (to Skill 4) mode
MissC - [O] - Points to the Missile field from Missiles.txt to determine which missile to use when the monster is in Cast mode
MissSQ - [O] - Points to the Missile field from Missiles.txt to determine which missile to use when the monster is in Sequence mode
Align - [N] - Controls the monster's alignment, which determines if the monster will be an enemy, ally, or neutral party to the player.
Code | Description |
0 | Evil Alignment - The monster will attack the player |
1 | Good Alignment - The monster will fight with the player and will be in the player's party |
2 | Neutral Alignment - The monster will not attack the player and will not be in the player's party |
isSpawn - [B] - If equals 1, then the monster is allowed to spawn in an area level. If equals 0, then the monster will not be spawned automatically in an area level
isMelee - [B] - If equals 1, then the monster is classified as a melee only type, which can affect its AI behaviors and what monster modifiers are allowed on the monster. If equals 0, then ignore this
npc - [B] - If equals 1, then the monster is classified as an NPC (Non-Playable Character), which can affect its AI behaviors and how the player treats this monster. If equals 0, then ignore this
interact - [B] - If equals 1, then the monster is interactable, meaning that the player can click on the monster to perform an interact command instead of attacking. If equals 0, then ignore this
inventory - [B] - If equals 1, then monster will have an inventory with randomly generated items, such as an NPC with shop items (if the interact field is enabled) or a summoned unit with random equipped items (MonEquip.txt). If equals 0, then ignore this
inTown - [B] - If equals 1, then the monster is allowed to be in town. If equals 0, then the monster is not allowed to be in town, which can affect or disable their AI or collision from entering towns
lUndead - [B] - If equals 1, then the monster is treated as a Low Undead, meaning that the monster is classified as an Undead type and can be resurrected by certain AI. If equals 0, then ignore this
hUndead - [B] - If equals 1, then the monster is treated as a High Undead, meaning that the monster is classified as an Undead type but cannot be resurrected by certain AI. If equals 0, then ignore this
demon - [B] - If equals 1, then the monster is classified as a Demon type. If equals 0, then ignore this
flying - [B] - If equals 1, then the monster is flagged as a flying type, which can affect its collision with the area level and how it is spawned. If equals 0, then ignore this
opendoors - [B] - If equals 1, then the monster will use its AI to open doors if necessary. If equals 0, then the monster cannot open doors and will treat doors as another type of collision
boss - [B] - If equals 1, then the monster is classified as a Boss type, which can affect boss related AI and functions. If equals 0, then ignore this
primeevil - [B] - If equals 1, then the monster is classified as a Prime Evil type, or an Act End boss, which can affect various skills, AI, and damage related functions. If equals 0, then ignore this
killable - [B] - If equals 1, then the monster can be killed, damage, and be put in a Death or Dead mode. If equals 0, then the monster cannot be damaged or killed
switchai - [B] - If equals 1, then monster's AI can switched, such as by the Assassin's Mind Blast ability. If equals 0, then the monster AI cannot be switched
noAura - [B] - If equals 1, then the monster cannot be affected by friendly auras. If equals 0, then the monster can be affected by friendly auras
nomultishot - [B] - If equals 1, then the monster is not allowed to spawn with the Multi-Shot unique monster modifier (MonUMod.txt). If equals 0, then ignore this
neverCount - [B] - If equals 1, then the monster is not counted on the list of the active monsters in the area, which affects spawning and saving functions. If equals 0, then the monster will be accounted for, and can be part of the active or inactive list functions
petIgnore - [B] - If equals 1, then pet AI scripts will ignore this monster (MonAI.txt). If equals 0, then pet AI will attack this monster
deathDmg - [B] - If equals 1, then the monster will explode on death. This has special cases for the "bonefetish1" and "siegebeast1" monster classes, otherwise the monster will use a general death damage function to damage nearby units based on the monster's health percentage. If equals 0, then ignore this
genericSpawn - [B] - If equals 1, the monster is flagged as a possible selection for the AI generic spawner function. There are defaults for using the If equals 0, then ignore this
zoo - [B] - If equals 1, then the monster will be flagged as a zoo type monster, which will give it the AI zoo behavior. If equals 0, then ignore this
CannotDesecrate - [B] - If equals 1, then the monster will not be able to be desecrated when inside a desecrated level. If equals 0, then ignore this
rightArmItemType - [O] - Determines what type of items the monster is allowed to hold in its right arm (ItemTypes.txt). A blank value means it can hold any item
leftArmItemType - [O] - Determines what type of items the monster is allowed to hold in its left arm (ItemTypes.txt). A blank value means it can hold any item
canNotUseTwoHandedItems - [B] - If equals 1, then the monster can not items marked as two handed (Weapons.txt)
SendSkills - [N] - Determines which of the monster's skill's level should be sent to the client. Uses a byte value, where the code tests each bit to determine which of the monster's skills to check
Skill1 - [O] - Points to the Skill field from Skills.txt file. This gives the monster the skill to use for Sk1Mode
Sk1mode - [O] - Determines the monster's animation mode when using the related skill. Outside of the standard animation mode inputs, the field can also point to a sequence from MonSeq.txt, which handles a specific set of frames to place a sequence animation. Referenced from the Code column in MonMode.txt
Sk1lvl - [N] - Controls the base skill level of the related skill on the monster
Drain - [N] - Controls the monster's overall Life and Mana steal percentage. This can also be affected by the LifeStealDivisor and ManaStealDivisor fields from DifficultyLevels.txt. If equals 0, then the monster will not have Life or Mana steal
coldeffect - [N] - Sets the percentage change in movement speed and attack rate when the monster if chilled by a cold effect. If this equals 0, then the monster will be immune to the cold effect
ResDm - [N] - Sets the monster's Physical Damage Resistance stat
ResMa - [N] - Sets the monster's Magic Resistance stat
ResFi - [N] - Sets the monster's Fire Resistance stat
ResLi - [N] - Sets the monster's Lightning Resistance stat
ResCo - [N] - Sets the monster's Cold Resistance stat
ResPo - [N] - Sets the monster's Poison Resistance stat
DamageRegen - [N] - Controls the monster's Life regeneration per frame. This is calculated based on the monster's maximum life: Regeneration Rate = (Life * "DamageRegen") / 16
SkillDamage - [N] - Points to a skill from the "skill" field in the Skills.txt file. This changes the monster's min physical damage, max physical damage, and Attack Rating to be based off the values from the linked skill and its current level from the monster's owner (usually the player who summoned the monster)
noRatio - [B] - If equals 1, then use this file's fields to determine the monster's baseline stats (minHP, maxHP, AC, Exp, A1MinD, A1MaxD, A1TH, A2MinD, A2MinD, A2TH, S1MinD, S1MaxD, S1TH). If equals 0, then use MonLvl.txt to determine the monster's baseline stats
ShieldBlockOverride - [N] - If equals 1, then the monster can block without a shield (the block chance stat will take effect even without a shield equipped). If equals 2, then the monster cannot block at all, even with a shield equipped. If equals 0, then ignore this
ToBlock - [N] - The monster's percent chance to block an attack
Crit - [N] - The percent chance for the monster to score a critical hit when attacking an enemy, which causes the attack to deal double damage
minHP - [N] - The monster's minimum amount of Life when spawned
maxHP - [N] - The monster's maximum amount of Life when spawned
AC - [N] - The monster's Defense value
Exp - [N] - The amount of Experience that is rewarded to the player when the monster is killed
A1MinD - [N] - The minimum damage dealt by the monster when it is using the Attack 1 (A1) animation mode
A1MaxD - [N] - The maximum damage dealt by the monster when it is using the Attack 1 (A1) animation mode
A1TH - [N] - The monster's Attack Rating when it is using the Attack 1 (A1) animation mode
A2MinD - [N] - The minimum damage dealt by the monster when it is using the Attack 2 (A2) animation mode
A2MaxD - [N] - The maximum damage dealt by the monster when it is using the Attack 2 (A2) animation mode
A2TH - [N] - The monster's Attack Rating when it is using the Attack 2 (A2) animation mode
S1MinD - [N] - The minimum damage dealt by the monster when it is using the Skill 1 (S1) animation mode
S1MaxD - [N] - The maximum damage dealt by the monster when it is using the Skill 1 (S1) animation mode
S1TH - [N] - The monster's Attack Rating when it is using the Skill 1 (S1) animation mode
El1Mode - [O] - Determines which animation mode will trigger an additional elemental damage type when used. Referenced from the Code column in MonMode.txt
El1Type - [O] - Defines the type of elemental damage. This field is used when El#Mode is not null. Referenced by the Code value of the Elemental Types Table
El1Pct - [N] - Controls the random percent chance (out of 100) that the monster will append the element damage to the attack. This field is used when El#Mode is not null
El1MinD - [N] - The minimum element damage applied to the attack. This field is used when El#Mode is not null
El1MaxD - [N] - The maximum element damage applied to the attack. This field is used when El#Mode is not null
El1Dur - [N] - Controls the duration of the related element mode in frame lengths (25 Frames = 1 Second). This is only applicable for the Cold, Poison, Stun, Burning, Freeze elements. There are special cases when evaluating the elements, where Poison min and max damage are multiplied by 10, and Poison duration is multiplied by 2. This field is used when El#Mode is not null
TreasureClass - [O] - Defines which Treasure Class is used by the monster when a Normal monster type is killed; for each difficulty respectively
TreasureClassChamp - [O] - Defines which Treasure Class is used by the monster when a Champion monster type is killed; for each difficulty respectively
TreasureClassUnique - [O] - Defines which Treasure Class is used by the monster when a Unique monster type is killed; for each difficulty respectively
TreasureClassQuest - [O] - Defines which Treasure Class is used by the monster when a Quest-Enabled monster type is killed; for each difficulty respectively. Based on the TCQuestID and TCQuestCP fields
TCQuestID - [N] - Checks to see if the player has does not have a quest flag progress. If not, then use the TreasureClassQuest field, based on the game's current difficulty. Referenced by the Code value of the Quest Flags Table
TCQuestCP - [N] - Controls which Quest Checkpoint, or current progress within a quest (based on the TCQuestID value), is needed to use the TreasureClassQuest field, based on the game's current difficulty
Code | Description |
0 | History Success |
1 | History Earned Reward |
2 | Checkpoint 1 |
3 | Checkpoint 2 |
4 | Checkpoint 3 |
5 | Checkpoint 4 |
6 | Checkpoint 5 |
7 | Checkpoint 6 |
8 | Checkpoint 7 |
9 | Checkpoint 8 |
10 | Checkpoint 9 |
11 | Checkpoint 10 |
12 | Complete Quest Log |
13 | Current Game Success |
14 | Current Game Failure |
15 | Previous Game |
SplEndDeath - [N] - Controls a special case death handler for the monster that is ran on the server side
Code | Description |
null | Do nothing |
1 | Spawn the monster type from the minion1 field after this monster dies |
2 | Kill the source unit that is related to this monster. Typically this is a mount type unit that the monster is riding when it dies |
SplGetModeChart - [B] - If equals 1, then check special case handlers of certain monsters with specific BaseID fields while they are using certain a mode and perform a function. If equals 0, then ignore this.
Index | "BaseID" | Description |
243 333 705 | "diablo" "diablo clone" "uberdiablo" | If current mode equals Skill 3 (S3) or Skill 4 (S4), then do a generic attack function |
403 | "trappedsoul1" | If current mode equals Attack 1 (A1), Attack 2 (A2), Skill 1 (S1), or Skill 2 (S2), then do a generic attack function and end it with setting the monster to start the Skill 1 mode and skip the AI pause |
543 | "baalthrone" | If the current mode equals Skill 3 (S3), then tell the monster to do its Cast mode (SC) |
544 570 709 | "baalcrab" "baalclone" "uberbaal" | If the current mode equals Skill 3 (S3), then tell the monster to do its Cast mode (SC) |
417 418 | "shadowwarrior" "shadowmaster" | If the current mode equals Skill 4 (S4), then tell the monster to do a generic attack function |
SplEndGeneric - [B] - If equals 1, then check special case handlers of monsters with specific BaseID fields while they are ending certain modes and perform a function. If equals 0, then ignore this.
Index | "BaseID" | Mode that is ending | Description |
110 | "vulture1" | Skill 1 (S1) | Process the event Run AI |
118 | "willowwisp1" | Walk (WL) | Process the event Run AI |
136 | "batdemon1" | Skill 3 (S3) or Skill 4 (S4) | Process the event Run AI |
230 231 | "firebeast" "iceglobe" | Any mode | Process the event Run AI |
247 | "frogdemon1" | Sequence (xx) | Process the event Run AI |
403 | "trappedsoul1" | Any mode | Process the event Run AI |
SplClientEnd - [B] - If equals 1, then on the client side, check special case handlers of monsters with specific BaseID fields while they are ending certain modes and perform a function. If equals 0, then ignore this.
Index | "BaseID" | Mode that is ending | Description |
110 | "vulture1" | Skill 1 (S1) | Ignore setting the monster back to Neutral (NU) |
403 404 | "trappedsoul1" "trappedsoul2" | Skill 1 (S1) or Skill 2 (S2) or Attack 1 (A1) or Attack 2 (A2) | Set the mode to Skill 1 (S1) |
136 | "batdemon1" | Skill 3 (S3) | Set the mode to Skill 4 (S4) |
136 | "batdemon1" | Skill 4 (S4) | Ignore setting the monster back to Neutral (NU) |
118 231 | "willowwisp1" "iceglobe" | Walk (WL) | Ignore setting the monster back to Neutral (NU) |
497 | "catapult1" | Attack 1 (A1) | Remove the siege missile and add a new one |
247 | "frogdemon1" | Sequence (xx) | Ignore setting the monster back to Neutral (NU) |
284 | "maggotqueen1" | Dead (DD) | Ignore setting the monster back to Neutral (NU) |
MonStats2.txt
This file controls additional functionalities and statistics for every monster in the game.
Data Fields
ID - [O] - Controls the unique name ID to define the monster. This must match the same value in the monstats.txt file
Height - [N] - Determines the height of the monster. This has 2 purposes. The first purpose is to act as an index value for selecting which icebreak missile to use when the monster dies while frozen. The second purpose is to select a code which affects what attack animation the player characters will use when attacking the monster (Attack1 and or Attack2). See each code description types below.
Code | Description | Code | Description |
1 | icebreaksmall | 1 | Low Height |
2 | icebreakmedium | 2 | High Height |
3 | icebreaklarge | 3 | Both types of Heights |
4 | icebreaksmoke |
OverlayHeight - [N] - Determines the height value of overlays (Overlay.txt) for the monster
pixHeight - [N] - Determines the pixel height value for the damage bar when the monster is selected
SizeX & SizeY - [N] - Determines the tile grid size of the monster which is use for handling placement when the monster spawns or uses movement skills
spawnCol - [N] - Controls the method for spawning the monster based on the collisions in the environment
Code | Description |
0 | Normal - Basic Monster Pathing |
1 | Water - Handle water terrain where units cannot normally walk, but can fly over |
2 | Preset - Placement handler which considers walls, no pathable areas, objects, doors, items, and other monsters |
3 | Force - Override any collision |
MeleeRng - [N] - Controls the range of the monster's melee attack, which can affect also affect certain AI pathing. If this value equals 255, then refer to the monster's weapon class ("BaseW")
BaseW - [O] - Defines the monster's base weapon class, which can affect how the monster attacks. Referenced by the Code value of the Weapon Class Table
HitClass - [O] - Defines the specific class of an attack when the monster successfully hits with an attack. This can affect the sound and overlay display of the attack hit. Referenced from the Index value in HitClass.txt
The following are formula fields that define the types of visual graphics to use for the specific component field. Users can add input parameters by adding a comma "," to the input and using a code. For a list of possible component inputs, see the compcode.txt file
HDv - [O] - Head visual
TRv - [O] - Torso visual
LGv - [O] - Legs visual
RAv - [O] - Right Arm visual
LAv - [O] - Left Arm visual
RHv - [O] - Right Hand visual
LHv - [O] - Left Hand visual
SHv - [O] - Shield visual
S1v (to S8v) - [O] - Special 1 to Special 8 visual
The following fields are Boolean fields, which control which specific component piece is enabled for the monster. If equals 1, then the component is enabled. If equals 0, then the monster does not have that component.
(Referenced from the Token column in Composit.txt)HD - [B] - Head
TR - [B] - Torso
LG - [B] - Legs
RA - [B] - Right Arm
LA - [B] - Left Arm
RH - [B] - Right Hand
LH - [B] - Left Hand
SH - [B] - Shield
S1 - [B] - Special 1 to Special 8
TotalPieces - [N] - Defines the total amount of component pieces that the monster uses. This value should match the number of enabled Boolean fields listed above
mDT - [B] - If equals 1, then enable the Death Mode for the monster. If equals 0, then this mode is disabled
mNU - [B] - If equals 1, then enable the Neutral Mode for the monster. If equals 0, then this mode is disabled
mWL - [B] - If equals 1, then enable the Walk Mode for the monster. If equals 0, then this mode is disabled
mGH - [B] - If equals 1, then enable the Get Hit Mode for the monster. If equals 0, then this mode is disabled
mA1 - [B] - If equals 1, then enable the Attack 1 (and Attack 2) Mode for the monster. If equals 0, then this mode is disabled
mBL - [B] - If equals 1, then enable the Block Mode for the monster. If equals 0, then this mode is disabled
mSC - [B] - If equals 1, then enable the Cast Mode for the monster. If equals 0, then this mode is disabled
mS1 - [B] - If equals 1, then enable the Skill 1 (to Skill4) Mode for the monster. If equals 0, then this mode is disabled
mDD - [B] - If equals 1, then enable the Dead Mode for the monster. If equals 0, then this mode is disabled
mKB - [B] - If equals 1, then enable the Knockback Mode for the monster. If equals 0, then this mode is disabled
mSQ - [B] - If equals 1, then enable the Sequence Mode for the monster. If equals 0, then this mode is disabled
mRN - [B] - If equals 1, then enable the Run Mode for the monster. If equals 0, then this mode is disabled
dDT - [N] - Defines the number of directions that the monster can face during Death Mode
dNU - [N] - Defines the number of directions that the monster can face during Neutral Mode
dWL - [N] - Defines the number of directions that the monster can face during Walk Mode
dGH - [N] - Defines the number of directions that the monster can face during Get Hit Mode
dA1 - [N] - Defines the number of directions that the monster can face during Attack 1 (and Attack 2) Mode
dBL - [N] - Defines the number of directions that the monster can face during Block Mode
dSC - [N] - Defines the number of directions that the monster can face during Cast Mode
dS1 - [N] - Defines the number of directions that the monster can face during Skill 1 (to Skill 4) Mode
dDD - [N] - Defines the number of directions that the monster can face during Dead Mode
dKB - [N] - Defines the number of directions that the monster can face during Knockback Mode
dSQ - [N] - Defines the number of directions that the monster can face during Sequence Mode
dRN - [N] - Defines the number of directions that the monster can face during Run Mode
A1mv - [B] - If equals 1, then enable the Attack 1 (and Attack 2) Mode while the monster is moving with the Walk mode or Run mode. If equals 0, then this mode is disabled while the monster is moving
SCmv - [B] - If equals 1, then enable the Cast Mode while the monster is moving with the Walk mode or Run mode. If equals 0, then this mode is disabled while the monster is moving
S1mv - [B] - If equals 1, then enable the Skill 1 (to Skill 4) Mode while the monster is moving with the Walk mode or Run mode. If equals 0, then this mode is disabled while the monster is moving
noGfxHitTest - [B] - If equals 1, then enable the mouse selection bounding box functionality around the monster. If equals 0, then the monster cannot be selected by the mouse
htTop - [N] - Define the pixel top offset around the monster for the mouse selection bounding box functionality. This field relies on the noGfxHitTest field being enabled
htLeft - [N] - Define the pixel left offset around the monster for the mouse selection bounding box functionality. This field relies on the noGfxHitTest field being enabled
htWidth - [N] - Define the pixel right offset around the monster for the mouse selection bounding box functionality. This field relies on the noGfxHitTest field being enabled
htHeight - [N] - Define the pixel bottom offset around the monster for the mouse selection bounding box functionality. This field relies on the noGfxHitTest field being enabled
restore - [N] - Determines if the monster should be placed on the inactive list, to be saved when the level unloads. If equals 0, then do not save the monster. If equals 1, then rely on other checks to determine to save the monster. If equals 2, then force save the monster
automapCel - [N] - Controls what index of the Automap tiles to use to display this monster on the Automap. This field relies on the noMap field being disabled
noMap - [B] - If equals 1, then the monster will not appear on the Automap. If equals 0, then the monster will normally appear on the Automap
noOvly - [B] - If equals 1, then no looping overlays will be drawn on the monster. If equals 0, then overlays will be drawn on the monster. (Overlay.txt)
isSel - [B] - If equals 1, then the monster is selectable and can be targeted. If equals 0, then the monster cannot be selected
alSel - [B] - If equals 1, then the player can always select the monster, regardless of being an ally or enemy. If equals 0, then ignore this
noSel - [B] - If equals 1, then the player can never select the monster. If equals 0, then ignore this
shiftSel - [B] - If equals 1, then the player can target this monster when holding the Shift key and clicking to use a skill. If equals 0, then the monster cannot be targeted while the player is holding the Shift key
corpseSel - [B] - If equals 1, then the monster's corpse can be with the mouse cursor. If equals 0, then the monster's corpse cannot be selected with the mouse cursor
isAtt - [B] - If equals 1, then the monster can be attacked. If equals 0, then the monster cannot be attacked
revive - [B] - If equals 1, then the monster is allowed to be revived by the Necromancer Revive skill. If equals 0, then the monster cannot be revived by the Necromancer Revive skill
limitCorpses - [B] - If equals 1, then the monster's corpse will be placed into a pool with all other corpses with this field checked. Once that pool reaches the max (50), the corpses at the beginning of the pool start getting removed
critter - [B] - If equals 1, then the monster will be flagged as a critter, which gives some special case handling such as not creating impact sounds and differently handling its spawn placement in presets. If equals 0, then ignore this
small - [B] - If equals 1, then the monster will be classified as a small type, which can affect what types of missiles can be used on the monster (Example: Barbarian Grim Ward size) or how the monster is knocked back. If equals 0, then ignore this. If this field is enabled, then the large field should be disabled, to avoid confusion
large - [B] - If equals 1, then the monster will be classified as a large type, which can affect what types of missiles can be used on the monster (Example: Barbarian Grim Ward size) or how the monster is knocked back. If equals 0, then ignore this. If this field is enabled, then the small field should be disabled, to avoid confusion
soft - [B] - If equals 1, then the monster's corpse is classified as soft bodied, meaning that its corpse can be used by certain corpse skills such as Barbarian Find Potion, Find Item, or Grim Ward. If equals 0, then the monster's corpse cannot be used for these skills
inert - [B] - If equals 1, then the monster will never attack its enemies. If equals 0, then ignore this
objCol - [B] - If equals 1 and the monster class is "barricadedoor", "barricadedoor2", or "evilhut", then the monster will place an invisible object with collision. If equals 0, then ignore this
deadCol - [B] - If equals 1, then the monster's corpse will have collision with other units. If equals 0, then the monster's corpse will not have collision
unflatDead - [B] - If equals 1, then ignore the corpse draw order for rendering the Sprite on top of others, while the monster is dead. If equals 0, then the monster's corpse will have a normal corpse draw order
Shadow - [B] - If equals 1, then the monster will project a shadow on the ground. If equals 0, then the monster will not project a shadow
noUniqueShift - [B] - If equals 1 and the monster is a Unique monster, then the monster will not have random color palette transform shifts. If equals 0, then the non-Unique monster will have random color palette transform shifts
compositeDeath - [B] - If equals 1, then the monster's Death Mode and Dead mode will make use of its component system. If equals 0, then the monster will default to using the Hand-To-Hand weapon class and no component system
localBlood - [N] - Controls the color of the monster's blood based on the region locale. If equals 0, then do not change the blood to green and keep it red. If equals 1, then change the monster's special components to use the green blood locale. If equals 2, then change the blood to green
Bleed - [N] - Controls if the monster will create blood missiles. If equals 0, then the monster will never bleed. If equals 1, then the monster will randomly create the "blood1" or "blood2" missiles when hit. If equals 2, then the monster will randomly create the "blood1", "blood2", "bigblood1", or "bigblood2" missiles when hit
Light - [N] - Controls the monster's minimum Light Radius size (measured in grid sub-tiles)
light-r - [N] - Controls the red color value of the monster's Light Radius (Uses a value from 0 to 255)
light-g - [N] - Controls the green color value of the monster's Light Radius (Uses a value from 0 to 255)
light-b - [N] - Controls the blue color value of the monster's Light Radius (Uses a value from 0 to 255)
Utrans & Utrans(N) & Utrans(H) - [N] - Modifies the color palette transform for the monster respectively in Normal, Nightmare, and Hell difficulty.
Code | Description |
0 | Cold |
1 | Poison |
2 | Level 0 |
3 | Level 1 |
4 | Level 2 |
5 | Level 3 |
6 | Level 4 |
7 | Miscellaneous |
255 | Special case handler. If hostile, then select the Cold transform. If not hostile, then select the Poison transform. |
InfernoLen - [N] - The frame length to hold the channel cast time of the inferno skill. This is used for when the monster has the "inferno" state, or for Diablo when he is using the "DiabLight" skill
InfernoAnim - [N] - The exact frame in the channel animation to loop back and start at again
InfernoRollback - [N] - The exact frame in the channel animation to determine when to roll back to the InfernoAnim frame
ResurrectMode - [O] - Controls which monster mode to set on the monster when it is resurrected. Referenced from the Code column in MonMode.txt
ResurrectSkill - [O] - Controls what skill should the monster use when it is resurrected (Skills.txt)
SpawnUniqueMod - [O] - Controls what unique modifier the monster should always spawn with (MonUMod.txt)
MonType.txt
This file handles the classification, naming conventions and element of monsters
This is used by the monstats.txt data file
Data Fields
type - [O] - Defines the unique monster type ID
equiv1 - [O] - Points to the index of another Monster Type to reference as a parent. This is used to create a hierarchy for Monster Types where the parents will have more universal settings shared across the related children
strplur - [O] - Uses a string for the plural form of the monster type. This is used by Function 22 of the descfunc field from ItemStatCost.txt, based on the monster type selected
element - [O] - Defines the monster's element type. This can be used for the Necromancer's Raise Skeletal Mage skill for determining what elemental type a Skeletal Mage should be based on the monster it was raised from (If the monster has no element, then the skeletal mage element will be randomly selected).
Code | Description |
(empty) | Any Element |
pois | Poison |
cold | Cold |
fire | Fire |
ltng | Lightning |
MonUMod.txt
This file controls the different monster modifiers for special monsters, including Unique and Champion monsters
Any column field name starting with "*" is considered a comment field and is not used by the game
The "(N)" text in field names signifies to use that specific value for games in Nightmare difficulty
The "(H)" text in field names signifies to use that specific value for games in Hell difficulty
Data Fields
uniquemod - [O] - This is a reference field to define the monster modifier
id - [N] - Defines the unique numeric ID for the monster modifier. Used as a reference in other data files
enabled - [B] - If equals 1, then this monster modifier will be an available option for monsters to spawn with. If equals 0, then this monster modifier will never be used
version - [N] - Defines which game version to use this monster modifier (<100 = Classic mode | 100 = Expansion mode)
xfer - [B] - If equals 1, then this monster modifier can be transferred from the Boss monster to his Minion monsters, including auras. If equals 0, then the monster modifier will never be transferred
champion - [B] - If equals 1, then this monster modifier will only be used by Champion monsters. If equals 0, then the monster modifier can be used by any type of special monster
fPick - [N] - Controls if this monster modifier is allowed on the monster based on the function code and the parameters it checks.
Code | Description |
0 (or empty) | Ignore this |
1 | Monster class must have the Attack 1 mode (checks "mA1" field from monstats.txt) |
2 | Monster class cannot be flagged as Melee (checks "IsMelee" field from monstats.txt) Monster class cannot have the No Multishot flag (checks "nomultishot" field from monstats.txt) |
3 | Monster class must have the Walk mode (checks "mWL" field from monstats.txt) |
exclude1 - [N] - This controls which Monster Types should not have this monster modifier (Uses the type field from MonType.txt)
cpick & cpick (N) & cpick (H) - [N] - Modifies the chances that this monster modifier will be chosen for a Champion monster, compared to other monster modifiers. The higher the value is, then the more likely this modifier will be chosen. This value acts as a numerator and a denominator. All "cpick" values get summed together to give a total denominator, used for the random roll. For example, if there are 3 possible monster modifiers, and their "cpick" values are 3, 4, 6, then their chances to be chosen are 3/13, 4/13, and 6/13 respectively
upick & upick (N) & upick (H) - [N] - Modifies the chances that this monster modifier will be chosen for a Unique monster, compared to other monster modifiers. The higher the value is, then the more likely this modifier will be chosen. This value acts as a numerator and a denominator. All "upick" values get summed together to give a total denominator, used for the random roll. For example, if there are 3 possible monster modifiers, and their "upick" values are 3, 4, 6, then their chances to be chosen are 3/13, 4/13, and 6/13 respectively
constants - [N] - These values control a special list of numeric parameters for special monsters. The row that each constant appears in the data file is unrelated. You can treat this column almost like a separate data file that controls other aspects of special monsters. See the description next to each value for more specific clarification on each constant.
MonSounds.txt
This file controls the sounds that play for each of a monster's actions
This file points to a Sound entry from Sounds.txt for all it's entries
This file is used by the monstats.txt file
Data Fields
ID - [O] - Defines the unique name ID for the monster sound
Attack1 - [O] - Play this sound when the monster performs Attack 1 and Attack 2, respectively.
Weapon1 - [O] - Play this sound when the monster performs Attack 1 and Attack 2, respectively. This acts as an extra sound that can play with the Attack1 sounds.
Att1Del - [N] - Controls the amount of game frames to delay playing the Attack1 sounds, respectively
Wea1Del - [N] - Controls the amount of game frames to delay playing the Weapon1 sounds, respectively
Att1Prb - [N] - Controls the percent chance (out of 100) to play the Attack1 sounds, respectively
Wea1Vol - [N] - Controls the volume of the Weapon1 sounds, respectively. Uses a range between 0 to 255, where 255 is the maximum volume
HitSound - [O] - Play this sound when the monster gets hit or knocked back.
DeathSound - [O] - Play this sound when the monster dies.
HitDelay - [N] - Controls the amount of game frames to delay playing the HitSound
DeaDelay - [N] - Controls the amount of game frames to delay playing the DeathSound
Skill1 - [O] - Play this sound when the monster uses the skill linked in the related Skill1 field from MonStats.txt.
Footstep - [O] - Play this sound while the monster is walking or running.
FootstepLayer - [O] - Play this sound while the monster is walking or running. This acts as an extra sound that can play with the Footstep sound.
FsCnt - [N] - Controls the footstep count which is used to determine how often to play the Footstep and FootstepLayer sound. A higher value would mean that the sounds would play more often
FsOff - [N] - Controls the footstep offset which is used for calculating when to play the next Footstep and FootstepLayer sound, based on the current animation frame and the animation rate. A higher value would mean that the sounds would play less often
FsPrb - [N] - Controls the probability to play the Footstep and FootstepLayer sound, with a random chance out of 100
Neutral - [O] - Play this sound while the monster is in Neutral, Walk, or Run mode. Also play this sound when the monster ID equals "vulture1" while using Skill1 or the ID equals "batdemon1" while using Skill4.
NeuTime - [N] - Controls the amount of game frames to delay between re-playing the Neutral sound after it finishes
Init - [O] - Play this sound when the monster spawns and is not dead and is not playing its Neutral sound. Sound entry from Sounds.txt
Taunt - [O] - Play this sound when the server requests that the monster should play its Taunt. This is typically used for quest or story related moments. Sound entry from Sounds.txt
Flee - [O] - Play this sound when the monster is told to flee. This depends on when the monster AI is told to play this sound. Sound entry from Sounds.txt
CvtMo1 - [O] - This is used to convert the mode for playing the sound. This field defines the original mode that the monster is using. (MonMode.txt for the list of possible inputs)
CvtSk1 - [O] - Defines the skill that the monster is using. If the monster uses a specific skill, then the game can change the monster's mode for sound functionalities to another mode to change how sounds are generally handled. Points to a Skill in the Skills.txt file
CvtTgt1 - [O] - Defines the mode to convert the sound to when the monster is using the relative skill from the CvtSk1 field. This does not actually change the monster's mode; only what mode it sounds like. (MonMode.txt for the list of possible inputs)
NPC.txt
This file controls how each town NPC manipulates their store prices
Data Fields
NPC - [O] - Points to the matching "ID" value in the monstats.txt file. This should not be changed
buy mult - [N] - Used to calculate the item's price when it is bought by the NPC from the player. This number is a fraction of 1024 in the following formula: [cost] * [buy mult] / 1024
sell mult - [N] - Used to calculate the item's price when it is sold by the NPC to the player. This number is a fraction of 1024 in the following formula: [cost] * [sell mult] / 1024
rep mult - [N] - Used to calculate the cost to repair an item. This number is a fraction of 1024 in the following formula: [cost] * [rep mult] / 1024. This is then used to influence the repair cost based on the item durability and charges
questflag A - [N] - If the player has this quest flag progress, then apply the relative additional price calculations. Referenced by the Code value of the Quest Flags Table
questbuymult A - [N] - Same functionality as the buy mult field, except it applies after it and relies on the questflag A field
questsellmult A - [N] - Same functionality as the sell mult field, except it applies after it and relies on the questflag A field
questrepmult A - [N] - Same functionality as the rep mult field, except it applies after it and relies on the questflag A field
max buy & max buy (N) & max buy (H) - [N] - Sets the maximum price that the NPC will pay, when the player sells an item in Normal Difficulty, Nightmare Difficulty, and Hell Difficulty, respectively
Objects.txt
This file controls the functionalities of all objects found in area levels
The order of each object defined in this file will convey what ID value it has, and thus should not be changed
This file uses the following files: ObjMode.txt, objpreset, ObjType.txt, Shrines.txt
Objects are always set to be using a specific mode, which controls which fields to use for functionalities. There are 8 possible Object modes, each tied to an ID number. Specific fields are indexed to match each of these modes (ObjMode.txt)
Number | ObjectMode | Token |
0 | Neutral | NU |
1 | Operating | OP |
2 | Opened | ON |
3 | Special 1 | S1 |
4 | Special 2 | S2 |
5 | Special 3 | S3 |
6 | Special 4 | S4 |
7 | Special 5 | S5 |
Data Fields
Class - [O] - Defines the unique type class of the object which is used to reference this object. These are also defined in the objpreset.txt file
Name - [O] Used as the display name of the object when being highlighted by the player
*ID - [N] - This field is not read directly, but can be used as an Index for objects
Token - [O] - Determines what files to use to display the graphics of the object. These are defined by the ObjType.txt file
Selectable0 - [B] - If equals 1, then the object can be selected by the player and highlighted when hovered on by the mouse cursor. If equals 0, then the object cannot be selected and will not highlight when the player hovers the mouse over it
SizeX & SizeY - [N] - Controls the amount of sub tiles that the object occupies using X and Y coordinates. This is generally used for measuring the object's size when trying to spawn objects in rooms and controlling their distances apart
FrameCnt0 - [N] - Controls the frame length of the object's mode. If this equals 0, then that mode will be skipped
FrameDelta0 - [N] - Controls the animation frame rate of how many frames to update per delta (Measured in 256ths)
CycleAnim0 - [B] - If equals 1, then the object's current animation will loop back to play again when it finishes. If equals 0, then the object will generally play the Opened mode after playing the Operating mode
Lit0 - [N] - Controls the Light Radius distance value for the object. If this value equals 0, then the object will not emit a Light Radius
BlocksLight0 - [B] - If equals 1, then the object will draw a shadow. If equals 0, then the object will not draw a shadow
HasCollision0 - [B] - If equals 1, then the object will have collision. If equals 0, then the object will not have collision, and units can walk through it
IsAttackable0 - [B] - If equals 1, then the player can target this object to be attacked, and the player will use the Kick skill when operating the object. If the object has the Class equal to "CompellingOrb" or "SoulStoneForge", then instead of using the Kick skill, players will use the Attack skill when operating the object. If equals 0, then ignore this, and the player will not use a skill or animation when operating the object
Start0 - [N] - Controls the frame for where the object will start playing the next animation
EnvEffect - [B] - If equals 1, then enable the object to update its mode based on the game's time of day. This can mean that when the object is spawned, and it is current day time and the object is in Opened or Operating mode, then it will reset back to Neutral mode. Also, if the current time is dusk, night, or dawn and the object is in Neutral mode, then it will change to Operating mode. If equals 0, then the object will not update its mode based on the time of day
IsDoor - [B] - If equals 1, then the object will be treated as a door when the game handles its collision, animation properties, tooltips, and commands. If equals 0, then ignore this
BlocksVis - [B] - If equals 1, then the object will block the player's line of sight to see anything beyond the object. If equals 0, then ignore this. This field relies on the IsDoor field being enabled
Orientation - [N] - Determines the object's orientation type, which can affect mouse selection priority of the object when a unit is being rendered in front of or behind the object (such as a door object covering a unit and how the mouse selection should handle that). This also affects the randomization of the coordinates when spawning the object near the edge of a room.
Code | Description |
0 (or other #) | Center |
1 | Right |
2 | Left |
OrderFlag0 - [N] - Controls how the object's Sprite is drawn, which can affect how it is displayed in Perspective game camera mode.
Code | Description |
0 | Do nothing |
1 | Flat floor |
2 | Wall |
PreOperate - [B] - If equals 1, then enable a random chance that the object will spawn in already in Opened mode. The game will choose a 1/14 chance that this can happen when the object is spawned. If equals 0, then ignore this
Mode0 - [B] - If equals 1, then confirm that this object has the correlating mode. If equals 0, then this object will not have the correlating mode. This flag can affect how the object functions work
Xoffset & Yoffset - [N] - Controls the offset values in the X and Y directions for the object's visual graphics. This is measured in game pixels
Draw - [B] - If equals 1, then draw the object's shadows. If equal's 0, then do not draw the object's shadows
Red - [N] - Controls the Red color gradient of the object's Light Radius. This field depends on the Lit0 field having a value greater than 0
Green - [N] - Controls the Green color gradient of the object's Light Radius. This field depends on the Lit0 field having a value greater than 0
Blue - [N] - Controls the Blue color gradient of the object's Light Radius. This field depends on the Lit0 field having a value greater than 0
HD - [B] - If equals 1, then the object will be flagged to have a Head composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
TR - [B] - If equals 1, then the object will be flagged to have a Torso composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
LG - [B] - If equals 1, then the object will be flagged to have a Legs composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
RA - [B] - If equals 1, then the object will be flagged to have a Right Arm composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
LA - [B] - If equals 1, then the object will be flagged to have a Left Arm composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
RH - [B] - If equals 1, then the object will be flagged to have a Right Hand composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
LH - [B] - If equals 1, then the object will be flagged to have a Left Hand composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
SH - [B] - If equals 1, then the object will be flagged to have a Shield composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
S1 - [B] - If equals 1, then the object will be flagged to have a Special # composite piece, and the game will use the component system to handle the object's mouse selection collision box. If equals 0, then ignore this
TotalPieces - [N] - Defines the total amount of composite pieces. If this value is greater than 1, then the game will treat the object with the multiple composite piece system, and the player can hover the mouse over and select the object's different components
SubClass - [N] - Determines the object's class type by declaring a specific value. This is used by the various functions (OperateFn, PopulateFn and InitFn) for knowing how to handle specific types of objects.
Code | Description |
0 | None |
1 | Shrine |
2 | Obelisk |
4 | Portal (With a source & destination) |
8 | Trappable |
16 | Fixed Portal |
32 | Well |
64 | Waypoint |
128 | Hidden |
Xspace & Yspace - [N] - Controls the X and Y distance delta values between adjacent objects whe they are being populated together. This field is only used by the PopulateFn field. (Values 3 and 4 for the Add Barrels and Add Crates functions respectively)
NameOffset - [N] - Controls the vertical offset of the name tooltip's position above the object when the object is being selected. This is measured in pixels
MonsterOK - [B] - If equals 1, then if a monster operates the object, then the object will run its operate function. If equals 0, then then if a monster operates the object, then the object will not run its operate function
ShrineFunction - [N] - Controls what shrine function to use (Code field in Shrines.txt) when the object is told to do its Skill command
Restore - [B] - If equals 1, the game will restore the object in an inactive state when the area level repopulates after a player loads back into it. If equals 0, then the game will not restore the object
Parm0 - [N] - Used as possible parameters for various functions for the object
Lockable - [B] - If equals 1, then the object will have a random chance to spawn with the locked attribute and have a display tooltip name with the "lockedchest" [O] This only works when the object has the InitFn value equal to 3. If equals 0, then ignore this
Gore - [N] - Controls if an object should call its PopulateFn when it is chosen as an object that can spawn in a room. Objects with a gore value greater than 2 will not be populated in rooms
Sync - [B] - If equals 1, then the object's animation rate will always match the FrameDelta0 field (depending on the object's mode) which means the client and server will have synced animations. If equals 0, then the animation rate will have random visual variation
Damage - [N] - Controls the amount of damage dealt by the object when it performs an OperateFn that deals damage such as triggering a pulse trap or an explosion
Overlay - [B] - If equals 1, then add and remove an overlay on the object based on its current mode. If equals 0, then ignore this. This field will only work with specific object Classes and will use specific Overlays for those objects.
Object Class | Overlay |
SpecialChest100 KhalimHeartChest KhalimEyeChest KhalimBrainChest HoradricCubeChest HoradricScrollChest StaffOfKingsChest ConsolationChest | multigleam |
SevenTombsReceptacle | horadric_light |
TaintedSunShrine | horadric_light |
CollisionSubst - [B] - If equals 1, then the game will handle the bounding box around the object for mouse selection. The game will use the object's pixel size and Left, Top, Width and Height field values to determine the collision size. If equals 0, then ignore this
Left - [N] - Controls the starting X position offset value for drawing the bounding collision box around the object for mouse selection. Depends on the CollisionSubst field being enabled
Top - [N] - Controls the starting Y position offset value for drawing the bounding collision box around the object for mouse selection. Depends on the CollisionSubst field being enabled
Width - [N] - Controls the ending X position offset value for drawing the bounding collision box around the object for mouse selection. Depends on the CollisionSubst field being enabled
Height - [N] - Controls the ending Y position offset value for drawing the bounding collision box around the object for mouse selection. Depends on the CollisionSubst field being enabled
OperateFn - [N] - Defines a function that the game will use when the player clicks on the object
Code | Description |
0 | Do nothing |
1 | Spawn Item And Maybe Monster - General function to operate an object, spawn items. Also can randomly spawn a monster and/or trigger a trap. |
2 | Shrine - General function for Shrine objects. Uses fields from the Shrines.txt file for determining specific Shrine functions. |
3 | Spawn Item Sometimes - General function to operate the object and spawn random items. Has a 20% chance to spawn a random item. Can also randomly trigger a trap. |
4 | Chest Operate - General function for opening chest objects and spawning random items. Handles key interaction functionality if the chest object is locked |
5 | Barrel Operate - General function for breaking barrel objects and randomly spawning items or possibly a monster |
6 | Quest Tome Operate - Handles updating The Forgotten Tower quest progress |
7 | Barrel Exploding Operate - Explode the object and also explode adjacent Exploding Barrel object Classes |
8 | Door Operate - General function for opening and closing door objects |
9 | Quest Cairn Stone Operate - Handle operating the 5 Cairn Stone objects based on the player's progress for the Search for Cain quest and if the player has the deciphered Scroll of Inifuss item. Also removes the Scroll of Inifuss item once successfully operated. |
10 | Quest Gibbet Operate - Handle operating the object and updating the player's progress for the Search for Cain quest. This is used for the cage object that Deckard Cain is trapped in. |
11 | Brazier Operate - Switch the object from Neutral mode to Operating/Opened mode, or vice versa |
12 | Quest Inifuss Operate - Handle dropping the Bark Scroll item, based on the player's progress for the Search for Cain quest |
13 | Tiki Operate - Switch the object from Neutral mode to Operating mode, or vice versa |
14 | Spawn Item - General function to operate an object and have it spawn random items. Can also remove the object's collision and randomlytrigger a trap. |
15 | Town Portal Operate - Controls the Town Portal functionalities, including how to teleport players back to town or to the current level, and handling how players interact with other player Town Portals |
16 | Trap Door Operate - Open a door type object and then control its level warp capabilities |
17 | Obelisk 1 - Use the transaction UI if the player has a gem in their inventory, and operate the object |
18 | Secret Door Operate - Handle operating an object and removing its collision |
19 | Armor Rack Operate - Activate the object to spawn a random armor item |
20 | Weapon Rack Operate - Activate the object to spawn a random weapon item |
21 | Quest Malus Operate - Handle dropping the Horadric Malus item, based on the player's progress for the Tools of the Trade quest |
22 | Well Operate - Handle healing the player and keeping track of the charges and regeneration of charges for the well object |
23 | Waypoint Operate - Handle activating a waypoint object and using the Waypoint UI when clicking on an activated waypoint object |
24 | Quest Tainted Sun Altar Operate - Create the Amulet of the Viper item and other treasure items based on The Horadric Staff quest progress and the number of players in the game. Also update the progress for the Tainted Sun quest. |
25 | Quest Seven Tombs Receptacle Operate - Handle using the Horadric Staff item with the transaction UI to operate the object |
26 | Bookshelf Operate - Randomly create either tomes or scrolls of Identify or Town Portal |
27 | Teleport Pad Operate - Teleport the player to another part of the room |
28 | Quest Lam Esens Tome Operate - Handle dropping the Lam Esen's Tome item, based on the player's progress for the Lam Esen's Tome quest |
29 | Breakable Operate - Animate the object and remove its collision |
30 | Exploding - Create an explosion around the object |
31 | Quest Gidbinn Operate - Handle dropping the Decoy Gidbinn item, based on the player's progress for the Blade of the Old Religion quest |
32 | Player Bank Operate - Control accessing the Stash UI while in town for the Bank object Class |
33 | Wirt Spurt - Create the Wirt's leg item and animate the object |
34 | Arcane Portal - Control how the warp object transitions the player from the Palace Cellar Level 3 to the Arcane Sanctuary |
35 | Return null |
36 | Return null |
37 | Return null |
38 | Return null |
39 | Quest Horadric Cube Chest Operate - Create the Horadric Cube item and other treasure items based on The Horadric Staff quest progress and the number of players in the game |
40 | Quest Horadric Scroll Chest Operate - Create the Horadric Scroll item and other treasure items based on The Horadric Staff quest progress and the number of players in the game |
41 | Quest Staff of Kings Chest Operate - Create the Staff of Kings item and other treasure items based on The Horadric Staff quest progress and the number of players in the game |
42 | Quest Arcane Tome Operate - Handles updating The Arcane Sanctuary quest progress |
43 | One Way Portal Operate - Controls the functionalities of the "DurielPortal" one way warp object |
44 | Quest Beneath The City Stairs Operate - Handles warp object operates based on the Khalim's Flail quest progress |
45 | Quest Beneath The City Lever Operate - Handles operating an object based on the Khalim's Flail quest progress |
46 | Hell Gate Operate - Handles how to transition the player to Act 4 based on The Guardian quest progress |
47 | Stairs Operate - Handles how the stairs object opens or warp the player to another level |
48 | Jack In The Box Operate - Handles the operating the object and having it spawn items and set its mode to Special 2. |
49 | Quest Soulstone Forge Operate - Handle operating the object based on The Hellforge quest progress and how it spawns items. Also remove the Hellforge Hammer weapon from the player. |
50 | Quest Mephisto Door Operate - Handles how the stairs object opens or warp the player to another level |
51 | Delay Spawn Operate - Waits until the object is done operating before updating events |
52 | Quest Diablo Seal Operate - Handle operating a Diablo Seal object while also tracking the progress on the other related Diablo Seal objects (5 in total). |
53 | Quest Compelling Orb Operate - Handle operating the object based on the Khalim's Flail quest progress and The Blackened Temple progress. Also remove the Khalim's Flail weapon from the player. |
54 | Quest Diablo Seal 1 Operate - Handle operating a Diablo Seal object Class and getting a spawn point for monsters. Also calls function 52. |
55 | Quest Diablo Seal 3 Operate - Handle operating a Diablo Seal object Class and getting a spawn point for monsters. Also calls function 52. |
56 | Quest Diablo Seal 5 Operate - Handle operating a Diablo Seal object Class and getting a spawn point for monsters. Also calls function 52. |
57 | Quest Khalim Heart Chest Operate - Create the Khalim's Heart item and other treasure items based on the Khalim's Flail quest progress and the number of players in the game |
58 | Quest Khalim Eye Chest Operate - Create the Khalim's Eye item and other treasure items based on the Khalim's Flail quest progress and the number of players in the game |
59 | Quest Khalim Brain Chest Operate - Create the Khalim's Brain item and other treasure items based on the Khalim's Flail quest progress and the number of players in the game |
60 | Return null |
61 | Town Gate - Handles how the gate object opens and closes |
62 | Handles the modes of one of the Ancient's statues based on the player's progress of the Rite of Passage quest |
63 | Same as function 62 |
64 | Same as function 62 |
65 | Quest Ancient Altar Operate - Handle displaying quest text and disabling the player's town portals, based on the player's progress of the Rite of Passage quest. |
66 | Quest Ancient Gateway Operate - Handle opening the door object based on the player's progress of the Rite of Passage quest. |
67 | Quest Frozen Anya Operate - Handles the object displaying quest text or validating that the player has the Malah's Potion item and updating the Prison of Ice quest |
68 | Evil Urn - Handle triggering a trap from the object |
69 | Quest Ancient Invisible Operate - Handle displaying the A5Q6InitAncients string conversation text based on the player's progress of the Rite of Passage quest. |
70 | Quest Last Exit Operate - Handle transitioning the player to the from the Throne of Destruction level to the Worldstone Chamber level |
71 | Quest Summit Door Operate - Handle opening the door object based on the player's progress of the Rite of Passage quest. |
72 | Quest Player Last Portal Operate - Handle transitioning the player to completing the game after completing the Destruction's End quest |
73 | Quest Tyrael Portal To Expansion Operate - Handle transitioning the player to Act 5 after completing the Act 4 Terror's End quest |
PopulateFn - [N] - Defines a function that the game will use to spawn this object
Code | Description |
0 | Do not spawn the object |
1 | Add Clumped Group - Handles creating multiple of these objects randomly in a room, based on the object's size and Class. This function only handles specific object classes such as caskets, urns, and baskets. |
2 | Add Single Shrine - Handles the creation of a shrine object |
3 | Add Simple Objects - Handles randomly spawning the object in a room, based on the object's size. |
4 | Add Barrels - Handle creating multiple barrel or exploding barrel Class objects in a room. |
5 | Add Crates - Handle creating multiple crate or urn Class objects in a room. |
6 | Add Corpse - Use function 3 to handle spawning the object. Also call a random chance to spawn the "Flies" object class on top of the objects that spawn. |
7 | Add Staked Corpses - Handles how to specifically spawn the "RogueCorpse1" and "RogueCorpse2" objects, based on their sizes and the locations in the room. Also call a random chance to spawn the "Flies" object class on top of the objects that spawn. |
8 | Add Well - Handles the creation of one of these objects randomly in a room based on the object's size. A level can have a maximum of 4 these objects that spawn. |
9 | Add One - Handles the creation of one of these objects randomly in a room based on the object's size. |
InitFn - [N] - Defines a function to control how the object works while active and when initially activated by a player
Code | Description |
0 | Do nothing |
1 | ObjectInitShrine - General function for determining which type of Shrine function to pick for the Shrine object. (Shrines.txt file for a list of shrine types) This also uses the "Parm0" field to define the Shrine Type • If equals 0, default to health shrine • If equals 1, then use Health Shrine • If equals 2, then use Mana Shrine • If equals 3, then pick a random stats shrine with a 10% chance to spawn a surprise shrine |
2 | ObjectInitTrappable - Handle a random chance to give the object 1 of the 9 random traps. This random chance depends on the area level's monster level. |
3 | ObjectInitChest - Run function 1, and also determine if the object should be Locked or not. The random chance to make the objectLocked depends on the area level's monster level. |
4 | QuestObjectTowerTomeInit - If The Forgotten Tower quest is active, then set the object to run in Special 0 Mode. |
5 | Do nothing |
6 | QuestObjectStoneInit - Sets the object's mode to be Opened or Neutral, depending on the progress with the Portal to Tristram for the Search for Cain quest. |
7 | QuestObjectGibbetInit - Sets the object's mode, depending on the progress with Cain's Cage for the Search for Cain quest. |
8 | ObjectInitDungeonTorch - Sets the object's mode to Opened |
9 | Quest Object Inifuss Init - Sets the object's mode, depending on the progress with the Tree for the Search for Cain quest. |
10 | ObjectInitBonfire - If the current level is Act 1 Rogue Encampment, then tell the object to do a periodic skill, otherwise set the object mode to Opened. |
11 | ObjectInitTownPortal - Initializes the object's mode and adds the level ID as an attribute to keep track of. |
12 | ObjectInitPermanentPortal - Handles specific level transitions for permanent portals found throughout the game |
13 | QuestObjectStoneSoundInit - Attaches the object to the Search for Cain quest functions |
14 | ObjectInitDungeonTorch2 - Sets the object's mode to Operating |
15 | QuestObjectMalusInit - Attaches the object to the Tools of the Trade quest functions |
16 | ObjectInitWell - Sets the object's attributes for a well including amount of charges This also uses the "Parm2" field to define the amount of Life healed |
17 | ObjectInitWaypoint - Handles setting up the waypoint mechanic to the object for the current area level |
18 | QuestObjectJerhyn1Init - Handle where to place Jerhyn (near the palace entrance) based on Arcane Sanctuary quest progress |
19 | QuestObjectJerhyn2Init - Handle where to place Jerhyn (inside the palace) based on The Seven Tombs quest progress |
20 | QuestObjectTaintedSunAltarInit - Attaches the object to the Tainted Sun quest functions |
21 | QuestObjectSevenTombsReceptacleInit - Setup the object to be a receptacle for the Horadric Staff, based on The Seven Tombs quest progress |
22 | ObjectInitFire - Setup the object to act as fire |
23 | QuestObjectLamEsensTomeInit - Attaches the object to the Lam Esen's Tome quest functions |
24 | ObjectInitTrap1 - Handle setting up the object frame count and making sure it has full stats |
25 | QuestObjectGidbinnInit - Attaches the object to the Blade of the Old Religion quest functions |
26 | TestObjectInit - Sets the object's mode to Operating |
27 | ObjectInitTrappablePoison - Sets up the random chance of 333/1000 for the object to have a trap that creates a poison nova |
28 | ObjectInitGold - Create a random amount of gold piles (between 1 to 10) in random locations around the object |
29 | QuestObjectInitArcanePortal - Setup the object to link area levels between the Palace Cellar Level 3 and the Arcane Sanctuary |
30 | QuestObjectHaremBlockerInit - Setup the object's collision based on the Arcane Sanctuary quest progress |
31 | QuestObjectHoradricCubeChestInit - Sets up information about the object |
32 | QuestObjectHoradricScrollChestInit - Sets up information about the object |
33 | QuestObjectStaffOfKingsChestInit - Sets up information about the object |
34 | ObjectInitHellTorch - Randomly set the object's mode to Operating |
35 | Return null |
36 | Return null |
37 | QuestObjectDurielPassagewayInit - Decide between setting the object's mode to Opened or Neutral, based on the progress of the The Seven Tombs quest |
38 | QuestObjectTyraelDoorInit - Decide between setting the object's mode to Opened or Neutral, based on the progress of the The Seven Tombs quest |
39 | QuestObjectGidbinnTownAltarInit - Decide between setting the object's mode to Opened or Neutral, based on the progress of the The Blade of the Old Religion quest |
40 | Return null |
41 | QuestObjectBeneathTheCityStairsInit - Decide between setting the object's mode to Opened or Neutral, based on the progress of the Khalim's Flail quest |
42 | QuestObjectBeneathTheCityLeverInit - If the Khalim's Flail quest is complete, then set the object's mode to Opened |
43 | QuestObjectDarkWandererInit - Create the "darkwanderer" monster and order to walk to the object's location. This depends on the players character save from having witnessed this event before. |
44 | QuestObjectInitHellGate - Decide between setting the object's mode to Opened or Neutral, based on the progress of the The Guardian quest |
45 | QuestObjectMephistoBridgeInit - Decide between setting the object's mode to Opened or Neutral, based on the progress of the The Guardian quest. If the object is not Opened, then also tell it to do its unique event. |
46 | ObjectTrappedSoulInit - Determine where to spawn the "trappedsoul1" and "trappedsoul2" monster classes in the area level. |
47 | QuestObjectForgottenTowerChestInit - Decide between setting up the chest object, relying on the Forgotten Tower quest being in progress |
48 | QuestObjectSoulstoneForgeInit - Decide between setting the object's mode to Opened or Neutral, based on the progress of the Hell's Forge quest |
49 | QuestObjectHratliStartInit - Handle placing Hratli near the starting point of Act 3, based on the player's Act 3 prologue progress |
50 | QuestObjectHratliEndInit - Handle placing Hratli near his forge, if the player has progressed past the Act 3 prologue |
51 | ObjectJackInTheBoxInit - If the object is in Opened or Opening mode, then tell the object to do a periodic item skill event |
52 | QuestObjectNatalyaInit - Handle placing Natalya at her location based on the player's progress of The Guardian quest |
53 | QuestObjectMephistoDoorInit - Handle setting the object to Opened mode based on the player's progress of destroying the orb for The Blackened Temple quest |
54 | QuestObjectCainStartInit - Handle creating the Cain unit in the Rogue Encampment based on the player's progress of The Search for Cain quest |
55 | QuestObjectDiabloStartInit - Handle the spawning event of Diablo based on the player's progress of activating the seal objects in the Chaos Sanctuary |
56 | QuestObjectDiabloSealInit - Do nothing |
57 | ObjectInitBetterChest - Initialize the chest object, and give it the special magical property |
58 | ObjectInitFissure - Tell the object to do a periodic skill event at random times |
59 | ObjectVileDoggieInit - If the object is in Neutral mode, then set the object to Operating mode and tell it to do a unique event |
60 | QuestObjectCompellingOrbInit - Set the object to Opened based on the progress of The Blackened Temple quest |
61 | QuestObjectCainPortalInit - Set the object to Operating mode and tell it to do a unique event |
62 | QuestCagedWussie1Init - Spawn the "act5pow" units based on the player's progress of the Rescue on Mount Arreat quest |
63 | QuestMoeInit - Setup the Korlic statue object with quest data based on the Right of Passage quest progress |
64 | QuestLarryInit - Setup the Madawc statue object with quest data based on the Right of Passage quest progress |
65 | QuestCurlyInit - Setup the Talic statue object with quest data based on the Right of Passage quest progress |
66 | QuestAnyaInsideTownInit - Handle for creating the Anya NPC in town, based on the progress of the Prison of Ice quest |
67 | QuestAnyaOutsideTownInit - Handle this object during the progress of the Prison of Ice quest and tell it to do its unique event |
68 | QuestNihlathakInsideTownInit - Create the Nihlathak NPC in town, based on the progress of the Prison of Ice quest |
69 | QuestNihlathakOutsideTownInit - Create the "Nihlathak Boss" super unique monster, based on the progress of the Prison of Ice quest |
70 | QuestLarzukStartInit - Do nothing |
71 | QuestLarzukEndInit - Object placeholder to create the "Larzuk" NPC in town |
72 | QuestAncientTomeInit - Set the tome object mode to Opened or Neutral based on the progress of The Rite of Passage quest |
73 | QuestAncientGatewayInit - Set the door object mode to Opened or Neutral based on the progress of The Rite of Passage quest |
74 | QuestFrozenAnyaInit - Handle this object during the progress of the Prison of Ice quest and tell it to do its unique event |
75 | QuestLastExitInit - Set the Throne of Destruction exit object mode to Operating or Opened based on the progress of the Eve of Destruction quest |
76 | QuestSummitDoorInit - Set this door object mode to Operating or Opened based on the progress of the Rite of Passage quest |
77 | QuestPlayerLastPortalInit - Set the last portal object mode to Operating or Opened based on the progress of the Eve of Destruction quest |
78 | QuestTyraelPortalToExpansionInit - Set this object mode to Operating or Opened based on the progress of the Terror's End quest |
79 | QuestZooInit - Attempt a random chance based on successfully selecting a "zoo" type monster from the entire list of possible monsters (monstats.txt). If selected, then send the quest update command to all players, based on the Eve of Destruction quest. |
ClientFn - [N] - Defines a function that runs on the object from the game's client side.
Code | Description |
0 | Do nothing |
1 | Ambient Sound - Always return true |
2 | Ripple - Tells the object to randomly play between its Operating animation and loop back to its Neutral animation |
3 | Hell Fire - Same as function 2, except sound will also be processed |
4 | Drinker - Tells the object to randomly play between its Special 0 animation and loop back to its Neutral animation. Also processes sound. |
5 | Gesturer - Tells the object to randomly play between its Special 0 / Special 1 animation and loop back to its Neutral animation. Also processes sound. |
6 | Turner - Tells the object to randomly play between its Special 0 animation and loop back to its Neutral animation. Uses different tick counts than function 4. Also processes sound. |
7 | Skeleton - Tells the object to randomly play between its Operating animation and loop back to its Neutral animation. |
8 | Duriel Entrance - If the object is not in Neutral mode then preload the Duriel monster |
9 | Client Smoke - Controls how the object can be removed from the client based on distance to a player and if the object has a specific tick count. |
10 | Bubbles - Tells the object to randomly play between its Operating animation and loop back to its Neutral animation. Uses different tick counts than function 7. |
11 | Floaters - Always return true |
12 | Altar - If the object is not in Neutral mode then preload the Ancients statues |
13 | Invisible Ancient - If the object is in its Neutral mode and the player operating the object has not completed the Rite of Passage quest, then handle the control of operating the object |
14 | Bonfire - Updates the object's animation modes based on the time of day |
15 | Frozen Anya - If the object is in Neutral mode then play the "NPCalert" overlay. |
16 | Last Exit - If the object is in its Operating mode, then modify the animation frames |
17 | Zoo - Handle the creation of monsters if monsters need to be created |
18 | Keeper - Randomly play the "barbarian_grunt_small_1" sound |
RestoreVirgins - [B] - If equals 1, then when the object has been used, the game will not restore the object in an inactive state when the area level repopulates after a player loads back into it. If equals 0, then ignore this
BlockMissile - [B] - If equals 1, then missiles can collide with this object. If equals 0, then missiles will ignore and fly through this object
DrawUnder - [N] - Controls the targeting priority of the object
Code | Description |
0 | The object will not change its targeting priority |
1 | The object's target priority will equal a corpse only when the object is opened |
2 | The object's target priority always equals a corpse |
OpenWarp - [B] - If equals 1, then this object will be classified as an object that can be opened to warp to another area, and the UI will be notified to display a tooltip for opening or entering, based on the object's mode. If equals 0, then ignore this
AutoMap - [N] - Used to display a tile in the Automap to represent the object. Defines which cell number to use in the tile list for the Automap. If this value equals 0, then this object will not display on the Automap. (Automap.txt)
ObjGroup.txt
This file controls what group of possible Objects to spawn in a part of an area level.
This file uses the following files: objects.txt
The order of each Object Group defined in this file will convey what ID value it has, which is referenced by the Levels.txt file
The order of these Object Groups should not be changed
Data Fields
GroupName - [O] - This is a reference field to define the Object Group name
*ID - [N] - This field is not read directly, but can be used as an Index for groups
ID0 - [N] - Uses the ID field from Objects.txt as an index to choose which Objects are assigned to this Object Group
Density0 - [N] - Controls the number of Objects to spawn in the area level. This is also affected by the Object's populate function defined by the PopulateFn field from the objects.txt file. The maximum value allowed is 128
Prob0 - [N] - Controls the probability that the Object will spawn in the area level. This is calculated in order so the first probability that is successful will be chosen. This also means that these field values should add up to exactly 100 in total to guarantee that one of the objects spawn.
ObjPreset.txt
This file controls which Objects are preloaded in a preset, based on the Act number
Data Fields
Index - [N] - Assigns a unique numeric ID to the Object Preset so that it can be properly referenced
Act - [N] - Defines the Act number used for each Object Preset. Uses values between 1 to 5
ObjectClass -[O] - Uses the Class field from Objects.txt, which assigns an Object to this Object Preset
Overlay.txt
This file controls the overlay graphics related to States, auras, cast animations, curses, and buffs
Data Fields
overlay - [O] - Defines the name of the overlay, used in other data files
Filename - [O] - Defines which DCC file to use for the Overlay
version - [N] - Defines which game version to use this Overlay (0 = Classic mode | 100 = Expansion mode)"'>
Character - [O] - Used for name categorizing Overlays for unit translation mapping
PreDraw - [B] - If equals 1, then display the Overlay in front of Sprites. If equals 0, then display the Overlay behind Sprites
1ofN - [N] - Controls how to randomly display Overlays. This value will randomly add to the current index of the Overlay to possibly use another Overlay that is indexed after this current Overlay. The formula is as follows: Index = Index + RANDOM(0, ["1ofN"]-1)
Xoffset - [N] - Sets the horizontal offset of the overlay on the unit. Positive values move it toward the left and negative values move it towards the right
Yoffset - [N] - Sets the vertical offset of the overlay on the unit. Positive values move it down and negative values move it up
Height1 - [N] - These are additional values added to Yoffset. Only 1 of these Height1 fields are added, and which field gets added depends on the OverlayHeight value from MonStats2.txt (Example: If the "OverlayHeight" value is 4, then use the "Height4" field). Furthermore, If the "OverlayHeight" value is 0, then ignore these "Height" fields and add a default value of 75 to "Yoffset". Player unit types will always use "Height2"
AnimRate - [N] - Controls the animation frame rate of the Overlay. The value is the number of frames that will update per second
LoopWaitTime - [N] - Controls the number of periodic frames to wait until redrawing the Overlay. This only works with Overlays that are a loop type
Trans - [N] - Controls the alpha mode for how the Overlay is displayed, which can affect transparency and blending. Referenced by the Code value of the Transparency Table
InitRadius - [N] - Controls the starting Light Radius value for the Overlay (Max = 18)
Radius - [N] - Controls the maximum Light Radius value for the Overlay. This can only be greater than or equal to InitRadius. If greater than, the Light Radius will increase in size per frame, starting from InitRadius until it matches this "Radius" value (Max = 18)
Red - [N] - Controls the Red color gradient of the Light Radius
Green - [N] - Controls the Green color gradient of the Light Radius
Blue - [N] - Controls the Blue color gradient of the Light Radius
NumDirections - [N] - The number of directions in the cell file
LocalBlood - [N] - Controls how to display green blood or VFX on a unit.
Code | Quest Progress |
0 | null |
1 | Transform the default red blood splatter to green blood |
2 | Change the monster palette to green |
PetType.txt
This file controls the various statistics for each type of pet from all the classes summon Skills
Data Fields
PetType - [O] - Defines the name of the pet type, used in the PetType column in Skills.txt
group - [N] - Used as an ID field, where if pet types share the same group value, then only 1 pet of that group is allowed to be alive at any time. If equals 0 (or null), then ignore this
basemax - [N] - This sets a baseline maximum number of pets allowed to be alive when skill levels are reset or changed
warp - [B] - If equals 1, then the Pet will teleport to the player when the player teleports or warps to another area. If equals 0, then the pet will die instead
range - [B] - If equals 1, then the Pet will die if the player teleports or warps to another area and is located more than 40 grid tiles in distances from the Pet. If equals 0, then ignore this
partysend - [B] - If equals 1, then tell the Pet to do the Party Location Update command (find the location of its Player) when its health changes. If equals 0, then ignore this
unsummon - [B] - If equals 1, then the Pet can be unsummoned by the Unsummon skill function. If equals 0, then the Pet cannot be unsummoned
automap - [B] - If equals 1, then display the Pet on the Automap. If equals 0, then hide the pet on the Automap
name - [O] Used to define the Pet's name on its party frame
drawhp - [B] - If equals 1, then display the Pet's Life bar under the party frame. If equals 0, then hide the Pet's Life bar under the party icon
icontype - [N] - Controls the functionality for how to display the Pet Icon and number of Pets counter
Code | Description |
0 | Do not display the Pet icon |
1 | Display the Pet icon and do not show the Pet counter |
2 | Display the Pet icon and show the Pet counter |
baseicon - [O] - Define which DC6 file to use for the default Pet's icon in its party frame
mclass1 - [O] - Defines the alternative pet to use for the PetType by using that specific unit's hcIDx from Monstats.txt
micon1 - [O] - Defines which DC6 file to use for the related "mclass" Pet's icon in its party frame
Properties.txt
This file defines how item modifiers work. It takes a stat defined from ItemStatCost.txt and uses a function to handle the stat's "min", "max" and "parameter" values.
Used by the following data files: UniqueItems.txt, SetItems.txt, QualityItems.txt, Sets.txt, Runes.txt
Data Fields
code - [O] - Defines the property ID. Used as a reference in other data files
func1 - [N] - Code function used to define the Property. Uses numeric ID values to define what function to use.
Function ID | Function Name | Parameters | Description |
0 | null | ||
1 | ItemModsSetValueRegular | stat set | • Modify the stat to be randomly calculated between its "min" and "max" values • Sets the stat value to its "max" value if the item is High Quality (Superior) |
2 | ItemModsSetValueBaseToMax | stat set | Modify the stat to always be set to its "max" value |
3 | ItemModsSetValueRegular2 | stat set | Same as function 1, but consecutive calls of this function will use the same stat value as the previous call |
4 | ItemModsSetValueBaseToMax2 | stat set | Same as function 2, but consecutive calls of this function will use the same stat value as the previous call |
5 | ItemModsSetMinDamage | set | Sets the minimum damage value for an item |
6 | ItemModsSetMaxDamage | set | Sets the maximum damage value for an item (dependent on its minimum value) |
7 | ItemModsSetDamagePct | set | Sets the damage percent of the item based on its percentage damage "min" and "max" values |
8 | ItemModsSetSpeed | stat set | Modify the stat to be randomly calculated between its "min" and "max" values |
9 | ItemModsSetSingleSkill | stat set | • Used for modifying a single skill level • Requires the stat's "min" and "max" values for the skill's level modification • Requires the stat's "parameter" value for the skill ID |
10 | ItemModsSetTabSkills | stat set | • Used for modifying the levels of skills from askill tab • The skill tab level modification is defined through the stat's value • The skill tab ID is defined through the stat's "parameter" value. The stat's "parameter" value is defined as the class ID and the number of tabs that the class has: • 0-2 = Amazon (Bow and Crossbow Skills / Javelin and Spear Skills / Passive and Magic Skills) • 3-5 = Sorceress (Fire Spells / Lightning Spells / Cold Spells) • 6-8 = Necromancer (Summoning Spells / Poison and Bone Spels / Curses) • 9-11 = Paladin (Combat Skills / Defensive Auras / Offensive Auras) • 12-14 = Barbarian (Warcries / Combat Masteries / Combat Skills) • 15-17 = Druid (Shape Shifting / Elemental / Summoning) • 18-20 = Assassin (Traps / Martial Arts / Shadow Disciplines) |
11 | ItemModsSetSkillOnAttack | stat set | • Used for item event modifiers to cast a skill • Requires the stat's param value as the skill ID • Requires the stat's "min" value as the percentchance to cast the skill (if 0, then default to 5) • Requires the stat's "max" value as the skill's level |
12 | ItemModsSetRandomParam | stat set | • Uses the stat's "min" and "max" value as a random selection of the stat's "parameter" value |
13 | ItemModsSetMaxDurability | stat set | • Modify the stat to be randomly calculated between its "min" and "max" values • Sets the stat value to its "max" value if the item is High Quality (Superior) • Always sets the current durability to its maximum durability after the calculation of the stat value |
14 | ItemModsSetSockets | • Determines the number of sockets on an item • If the stat has "min" and "max" values, then calculate a random number of sockets between these values. Otherwise, use the stat's "parameter" value as the number of sockets • The max number of sockets depends on the stat's "max" size, the item's inventory grid size, or the hard cap of 6 sockets maximum | |
15 | ItemModsSetMin | stat set | • Always use the stat's "min" value • If the stat is physical minimum damage, then set the item's minimum damage to the stat's value. Otherwise, simply set the stat's value to its "min" value. |
16 | ItemModsSetMax | stat set | • Always use the stat's "max" value • If the stat is physical maximum damage, then set the item's maximum damage to the stat's value. Otherwise, simply set the stat's value to its "max" value. |
17 | ItemModsSetParam | stat set | • Use the stat's "parameter" value. Otherwise, calculate a random value between the stat's "min" and "max" value. Otherwise,use 0. • If the stat is physical maximum damage, then set the item's maximum damage to the stat's value |
18 | ItemModsSetByTime | stat | • Modifies the stat based on the current game's time of day, and the stat's preferred time period. The closer the current game's time of day is to the stat's preferred time period, then the stronger the stat's value will be, based on its "min" and "max" values • Requires the stat's "parameter" value as the time period. The allowed time periods are: • 0 = Day • 1 = Dusk • 2 = Night • 3 = Dawn |
19 | ItemModsSetChargedSkill | stat | • Used for creating a stat for a charged skill. • Requires the stat's "parameter" value as the skill ID • Requires the stat's "min" value to calculate the value MaxCharges (maximum number of charges) • If that value equals 0, then default to 5 max charges • If that value is less than 0, then equal to the following calculation: MaxCharges = |MaxCharges| + |MaxCharges| * [CURRENT ITEM LEVEL] / 8 • MaxCharges cannot exceed 255 • Requires the stat's "max" value as the skill's level • The spawned number of charges is calculated as the following: • Random(0 and (MaxCharges - MaxCharges / 8)) + MaxCharges / 8 + 1 |
20 | ItemModsSetIndestructible | Adds the Indestructible stat to an item | |
21 | ItemModsSetValueRegPropValParam | stat set val | Modify the stat to be randomly calculated between its "min" and "max" values and use the Property "val" value to offset the stat ID |
22 | ItemModsSetValueRegParam | stat set | Modify the stat to be randomly calculated between its "min" and "max" values and use the stat's "parameter" value to offset the stat ID |
23 | ItemModsSetEthereal | Used to add the Ethereal stat to an item, only if the item has Durability | |
24 | ItemModsSetParamAndValue | stat set | • Modify the stat's value to be randomly calculated between its "min" and "max" values and use the stat's "parameter" value to offset the stat ID • Consecutive calls of this function will use the same stat value as the previous call |
25 to 35 | null | null | |
36 | ItemModsSetValueRegPropValParamSwapped | stat set val | • Switches the usage of the Property "val" value with the stat's value • The Property "val" value is used as the stat value • The stat's value (based on its "min" and "max" values) is used at the Property "val" value |
stat1 - [O] - Stat applied by the property. Used by the func1 field as a possible parameter using a Stat entry from ItemStatCost.txt. A stat is comprised of a "min" and "max" value which it uses to calculate the actual numeric value. Stats also can have a "parameter" value, depending on its function
set1 - [B] - Used by the func1 field as a possible parameter. If equals 1, then set the stat value regardless of its current value. If equals 0, then add to the stat value
val1 - [N] - sed by the func1 field as a possible input parameter for additional function calculations
QualityItems.txt
This file controls the groups item modifiers for High Quality (Superior) item types.
The game will randomly choose between one of these High Quality groups, if it is allowed for the item type.
Data Fields
mod1code - [O] - Controls the item properties for the item affix (Uses the Code field from Properties.txt)
mod1param - [N] - The "parameter" value associated with the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
mod1min - [N] - The "min" value to assign to the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
mod1max - [N] - The "max" value to assign to the listed property (mod). Usage depends on the (Function ID field from Properties.txt)
armor - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on both torso armor and helmet item types. If equals 0, then ignore this
weapon - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on melee weapon item types (except scepters, wands, and staves). If equals 0, then ignore this
shield - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on shield item types. If equals 0, then ignore this
scepter - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on scepter item types. If equals 0, then ignore this
wand - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on wand item types. If equals 0, then ignore this
staff - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on staff item types. If equals 0, then ignore this
bow - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on bow or crossbow item types. If equals 0, then ignore this
boots - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on boots item types. If equals 0, then ignore this
gloves - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on gloves item types. If equals 0, then ignore this
belt - [B] - If equals 1, then allow this High Quality (Superior) modifier to be applied on belt item types. If equals 0, then ignore this.
RarePrefix.txt
This file controls the list of strings that are randomly selected to be used as the prefix part of the name when generating Rare items
Rare Prefixes are chosen at random from the list define in the data file
These item affixes will appear at the start of a Rare item's name
Data Fields
name - [O] - Uses a string key to define the Rare Prefix name
version - [N] - Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode)
itype1 - [O] - Controls what item types are allowed for this Rare Prefix to spawn on (Uses the Code field from ItemTypes.txt)
etype1 - [O] - Controls what item types are excluded for this Rare Prefix to spawn on (Uses the Code field from ItemTypes.txt)
RareSuffix.txt
This file controls the list of strings that are randomly selected to be used as the suffix part of the name when generating Rare items
Rare Suffixes are chosen at random from the list define in the data file
These item affixes will appear at the end of a Rare item's name
Data Fields
name - [O] - Uses a string key to define the Rare Suffix name
version - [N] - Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode)
itype1 - [O] - Controls what item types are allowed for this Rare Prefix to spawn on (Uses the Code field from ItemTypes.txt)
etype1 - [O] - Controls what item types are excluded for this Rare Prefix to spawn on (Uses the Code field from ItemTypes.txt)
Runes.txt
This file controls the creation of Rune Words and their various modifiers.
Data Fields
Name - [O] - Controls the string key that is used to the display the name of the item when the Rune Word is complete
complete - [B] - If equals 1, then the Rune Word can be crafted in-game. If equals 0, then the Rune Word cannot be crafted in-game
server - [B] - If equals 1, then the Rune Word can only be crafted on Ladder realm games. If equals 0, then the Rune Word can be crafted in all game types
itype1 - [O] - Controls what item types are allowed for this Rune Word (Uses the Code field from ItemTypes.txt)
etype1 - [O] - Controls what item types are excluded for this Rune Word (Uses the Code field from ItemTypes.txt)
Rune1 - [O] - Controls what runes are required to make the Rune Word. The order of each of these fields matters. (Uses the Code field from Misc.txt)
T1Code1 - [O] - Controls the item properties that the Rune Word provides (Uses the Code field from Properties.txt)
T1Param1 - [N] - The stat's "parameter" value associated with the related property (T1Code1). Usage depends on the (Function ID field from Properties.txt)
T1Min1 - [N] - The stat's "min" value to assign to the related property (T1Code1). Usage depends on the (Function ID field from Properties.txt)
T1Max1 - [N] - The stat's "max" value to assign to the related property (T1Code1). Usage depends on the (Function ID field from Properties.txt)
SetItems.txt
Thisfile controls the item modifiers for each Set item in a Set
Data Fields
index - [O] - Links to a string key for displaying the Set item name
set - [O] - Defines the Set to link to this Set Item (must match the Index field from Sets.txt)
item - [O] - Defines the baseline item code to use for this Set item (must match the code value from AMW.txt)
rarity - [N] - Modifies the chances that this Unique item will spawn compared to the other Set items. This value acts as a numerator and a denominator. Each "rarity" value gets summed together to give a total denominator, used for the random roll for the item. For example, if there are 3 possible Set items, and their "rarity" values are 3, 5, 7, then their chances to be chosen are 3/15, 5/15, and 7/15 respectively. (The minimum "rarity" value equals 1)
lvl - [N] - The item level for the item, which controls what object or monster needs to be in order to drop this item
lvl req - [N] - The minimum character level required to equip the item
chrtransform - [O] - Controls the color change of the item when equipped on a character or dropped on the ground. If empty, then the item will have the default item color. Referenced from the Code column in Colors.txt
invtransform - [O] - Controls the color change of the item in the inventory UI. If empty, then the item will have the default item color. Referenced from the Code column in Colors.txt
invfile - [O] - An override for the invfile field from AMW.txt. Uses the item field by default
flippyfile - [O] - An override for the flippyfile field from AMW.txt. Uses the item field by default
dropsound - [O] - An override for the dropsound field from AMW.txt. Uses the item field by default
dropsfxframe - [N] - An override for the dropsfxframe field from AMW.txt. Uses the item field by default
usesound - [O] - An override for the usesound field from the AMW.txt. Uses the item field by default
cost mult - [N] - Multiplicative modifier for the Set item's buy, sell, and repair costs
cost add - [N] - Flat integer modification to the Set item's buy, sell, and repair costs. This is added after the "cost mult" has modified the costs
add func - [N] - Controls how the additional Set item properties (aprop#a & aprob#b) will function on the Set item based on other related set items are equipped
Code | Description |
0 (or empty) | Additional Set item properties will function like normal item properties, ignoring the Set |
1 | Additional Set item properties will be added depending on which specific Set item is equipped. Each Set item has their own index depending on their order in data and the "set" they belong to. For example, if a Set item is defined first in the list, that that it has the index equal to 1, which means this function will make "aprop1a" and "aprop1b" fields only be added to a Set Item when that specific Set item of index 1 is equipped. |
2 | Additional Set item properties will be added depending the number of related Set items equipped. For example, if 2 Set items are equipped, then the "aprop1a", "aprop1b", "aprop2a", and "aprop2b" fields will be added to the Set item. |
prop1 - [O] - Controls the item properties that are add baseline to the Set Item (Uses the Code field from Properties.txt)
par1 - [N] - The stat's "parameter" value associated with the related property (prop1). Usage depends on the (Function ID field from Properties.txt)
min1 - [N] - The stat's "min" value to assign to the related property (prop1). Usage depends on the (Function ID field from Properties.txt)
max1 - [N] - The stat's "max" value to assign to the related property (prop1). Usage depends on the (Function ID field from Properties.txt)
aprop1a - [O] - Controls the item properties that are added to the Set Item when other pieces of the Set are also equipped (Uses the Code field from Properties.txt)
apar1a - [N] - The stat's "parameter" value associated with the related property (aprop1a). Usage depends on the (Function ID field from Properties.txt)
amin1a - [N] - The stat's "min" value to assign to the related property (aprop1a). Usage depends on the (Function ID field from Properties.txt)
amax1a - [N] - The stat's "max" value to assign to the related property (aprop1a). Usage depends on the (Function ID field from Properties.txt)
aprop1b - [O] - Controls the item properties that are added to the Set Item when other pieces of the Set are also equipped. Each of these numbered fields are paired with the related "aprop#a" field as an additional item property. (Uses the Code field from Properties.txt)
apar1b - [N] - The stat's "parameter" value associated with the related property (aprop1b). Usage depends on the (Function ID field from Properties.txt)
amin1b - [N] - The stat's "min" value to assign to the related property (aprop1b). Usage depends on the (Function ID field from Properties.txt)
amax1b - [N] - The stat's "max" value to assign to the related property (aprop1b). Usage depends on the (Function ID field from Properties.txt)
diablocloneweight - [N] - The amount of weight added to the diablo clone progress when this item is sold. When offline, selling this item will instead immediately spawn diablo clone.
Sets.txt
This file controls the item modifiers for Set bonus statistics when the player has equipped enough Set Items
Data Fields
index - [O] - Defines the specific Set ID
name - [O] - Uses a string for displaying the Set name in the inventory tooltip
version - [N] - Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode)
PCode2a - [O] - Controls the each of the different pairs of Partial Set item properties. These are applied when the player has equipped the related # of Set items. This is the first part of the pair for each Partial Set bonus. (Uses the Code field from Properties.txt)
PParam2a - [N] - The stat's "parameter" value associated with the relative property (PCode#a). Usage depends on the (Function ID field from Properties.txt)
PMin2a - [N] - The stat's "min" value associated with the listed relative (PCode#a). Usage depends on the (Function ID field from Properties.txt)
PMax2a - [N] - The stat's "max" value to assign to the listed relative (PCode#a). Usage depends on the (Function ID field from Properties.txt)
PCode2b - [O] - Controls the each of the different pairs of Partial Set item properties. These are applied when the player has equipped the related # of Set items. This is the second part of the pair for each Partial Set bonus. (Uses the Code field from Properties.txt)
PParam2b - [N] - The stat's "parameter" value associated with the relative property (PCode#b). Usage depends on the (Function ID field from Properties.txt)
PMin2b - [N] - The stat's "min" value associated with the listed relative (PCode#b). Usage depends on the (Function ID field from Properties.txt)
PMax2b - [N] - The stat's "max" value to assign to the listed relative (PCode#b). Usage depends on the (Function ID field from Properties.txt)
FCode1 - [O] - Controls the each of the different Full Set item properties. These are applied when the player has all Set item pieces equipped (Uses the Code field from Properties.txt)
FParam1 - [N] - The stat's "parameter" value associated with the relative property (FCode#b). Usage depends on the (Function ID field from Properties.txt)
FMin1 - [N] - The stat's "min" value associated with the listed relative (FCode#b). Usage depends on the (Function ID field from Properties.txt)
FMax1 - [N] - The stat's "max" value to assign to the listed relative (FCode#b). Usage depends on the (Function ID field from Properties.txt)
Shrines.txt
This file controls the functionalities of shrine objects found in area levels
Data Fields
Name - [O] - This is a reference field to define the Shrine index
Code - [N] - Code function used to define the Shrine's function. Uses ID values listed below to define what function to use.
Code | Parameter | Description |
0 | None | |
1 | Gain full Life and Mana | |
2 | Gain full Life | |
3 | Gain full Mana | |
4 | Arg0 = Life percent consumed Arg1 = Mana percent added | Exchange your current Life to restore Mana |
5 | Arg0 = Mana percent consumed Arg1 = Life percent added | Exchange your current Mana to restore Life |
6 | Arg0 = Defense percent | Increases Defense |
7 | Arg0 = Attack Rating percent Arg1 = Physical Damage percent | Increases Physical Damage and Attack Rating |
8 | Arg0 = Resist Fire percent | Increases Fire Resistance |
9 | Arg0 = Resist Cold percent | Increases Cold Resistance |
10 | Arg0 = Resist Lightning percent | Increases Lightning Resistance |
11 | Arg0 = Resist Poison percent | Increases Poison Resistance |
12 | Arg0 = Bonus Skill Levels | Increases all Skill levels |
13 | Arg0 = Mana Recharge percent | Increases Mana Recharge Rate |
14 | Arg0 = Stamina percent | Gain infinite Stamina |
15 | Arg0 = Bonus Experience percent | Temporarily gain bonus Experience from kills |
16 | Temporarily reverse your character's Name (Not Used) | |
17 | Create a neutral Town Portal back to the current Act Town | |
18 | Randomly select a gem in your inventory and upgrade its level (Otherwise, create a random chipped gem) | |
19 | Arg0 = Life percent damage Arg1 = Range to find units | Release a nova of fireballs that cause any player or monster to lose a percentage of Life |
20 | Causes the nearest monster to upgrade a Unique or Champion type | |
21 | Arg0 = Minimum potions Arg1 = Maximum potions | Deal Fire damage to nearby monsters and create a random number of Exploding Potions |
22 | Arg0 = Minimum potions Arg1 = Maximum potions | Create Poison Gas that damages nearby monsters and create a random number of Choking Gas Potions |
Arg0 - [N] - Integer value used as a possible parameter for the Code function
Duration in frames - [N] - Duration of the effects of the Shrine (Calculated in Frames, where 25 Frames = 1 Second)
reset time in minutes - [N] - Controls the amount of time before the Shrine is available to use again. Each value of 1 equals 1200 Frames or 48 seconds. A value of 0 means that the Shrine is a one-time use
StringName - [O] - Uses a string to display as the Shrine's name
StringPhrase - [O] - Uses a string to display as the Shrine's activation phrase when it is used
effectclass - [N] - Used to define the Shrine's archetype which is involved with calculating region stats
LevelMin - [N] - Define the earliest area level where the Shrine can spawn. Area levels are determined from Levels.txt
Skills.txt
This file controls all skill functionalities. Skills are abilities used by all units in the game.
This file uses many other data files, and other data files will reference fields in this file to verify certain functionalities.
Data Fields
skill - [O] - Defines the unique name ID for the skill, which is how other files can reference the skill. The order of the defined skills will determine their ID numbers, so they should not be reordered
*ID - [N] - This field is not read directly, but can be used as an Index for skills
charclass - [O] - Assigns the skill to a specific character class which affects how skill item modifiers work and what skills the class can learn. Referenced from the Code column in PlayerClass.txt
SkillDesc - [O] - Controls the skill's tooltip and general UI display. Points to the SkillDesc field from SkillDesc.txt
srvstfunc - [N] - Server Start function. This controls how the skill works when it is starting to cast, on the server side. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | StartAttack - Check that the attack is melee or ranged. If the attack is ranged, then verify the ammunition. | |
2 | StartKick - Calculate the damage and attack the target unit with a Hand-To-Hand hit class. | |
3 | StartUnsummon - Validate that the target unit is not a monster or player and that the unit is owned by the caster unit. Check that the pet can be unsummoned ("unsummon" in PetType.txt) | |
4 | AmaStartCheckQuantity - Verify that the caster unit has enough weapon ammunition | |
5 | AmaStartJab - Return true. | |
6 | calc1 calc4 | AmaStartPowerStrike - Validate the target enemy and attempt to attack it. Use "calc1" to control the percentage increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
7 | calc1 calc2 calc3 calc4 | AmaStartImpale - Validate the target enemy and attempt to attack it. Use "calc1" to control the percentage increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. Use "calc2" to control the percent chance of losing weapon durability. Use "calc3" to control the flat amount of durability lost. |
8 | aurarangecalc calc1 calc3 | AmaStartStrafe - Attempt to find nearby valid targets and shoot them. Use "aurarangecalc" to control the range to find targets. Use "calc1" and "calc3" to control the minimum and maximum amount of shots fired. |
9 | calc1 | AmaStartFend - Find a valid target to attack in melee and then perform multiple attacks to nearby enemies. Use "calc1" to control the max targets to attack. |
10 | calc1 calc4 | AmaStartLightningStrike - Validate the target enemy and attempt to attack it to deal a random amount of lightning damage. Use "calc1" to control the percentage increase for damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
11 | srvmissilea calc2 | SorStartInferno - Continuously create missiles while the caster has the "inferno" state, and adjust the animations and modes based on the inferno frames. Use "calc2" to control the monster channel duration. |
12 | aurarangecalc | SorStartTelekinesis - Validate the range distance and the target type |
13 | SorStartThunderStorm - Validate the skill use and setup targeting parameters | |
14 | SorStartHydra - Validate the target location | |
15 | NecStartRaiseSkeleton - Check for a valid target corpse that can be raised | |
16 | calc1 calc4 | NecStartPoisonDagger - Validate the target enemy and attempt to attack it. Use "calc1" to control the percentage increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
17 | NecStartCorpseExplosion - Check for a valid target corpse that can explode | |
18 | NecStartAttract - Return true | |
19 | NecStartBonePrison - Validate that the target is an enemy and make sure that the target is not located in town | |
20 | NecStartIronGolem - Validate that the target is an identified item located on the ground | |
21 | NecStartRevive - Check for a valid target corpse that canbe revived | |
22 | AssStartPsychicHammer - Check for a valid target player or monster | |
23 | AssStartProgressiveAttack - Reset internal variable used for keeping track of skill steps. | |
24 | calc1 | AssStartDragonTalon - Use "calc1" to control the number of attacks. |
25 | AssStartDragonClaw - Reset internal variable used for keeping track of skill steps. | |
26 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec prgcalc1 prgcalc2 prgcalc3 | AssStartBladeFury - Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. If the caster unit does not have the "inferno" state, then add it and handle the animation frames. If the caster unit does have the "inferno" state, then periodically create missiles. |
27 | Param4 Param8 | AssStartDragonTail - Validate the target to attack and calculate the kick damage. Use "Param4" to control the attack speed. Use "Param8" to control if the attack should always hit. |
28 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec auralencalc | AssStartBladeShield - Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Add the "aurastate" state that lasts a duration controlled by "auralencalc". |
29 | calc1 calc4 | PalStartSacrifice - Validate the target enemy unit and determine if the caster unit can melee attack it. Use "calc1" to control the percentage increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
30 | Do nothing | |
31 | calc2 | PalStartCharge - Validate the target enemy unit and determine if the caster unit can melee attack it. Adjust the caster unit's movement speed. Do special adjustments for the "duriel" and "clawviper1" monster attack modes. Use "calc2" to add bonus movement speed percentage while charging. |
32 | aurastate calc1 calc2 calc3 calc4 | BarStartBash - Validate the target enemy and attack it. Use "calc1" to control the physical damage percent increase. Use "calc2" to control the flat damage increase. Use "calc3" to control the attack speed bonus. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. Applies "aurastate" to self. |
33 | BarStartFindHeart - Check for a valid target corpse that can spawn potions. This relies on the "soft" and "noSel" flags from the MonStats2.txt file. | |
34 | BarStartFindItem - Check for a valid target corpse that can spawn items. This relies on the "soft" and "noSel" flags from the MonStats2.txt file. | |
35 | calc1 calc2 calc3 | PalStartVengeance - Validate the target enemy and attack it. Use the calculation fields to control fire, cold, and lightning damage percentages added to the attack. |
36 | PalStartHolyShield - Check that the player has a shield equipped | |
37 | calc1 | AmaStartFend2 - Find nearby enemy targets to melee attack. Use "calc1" to control the maximum number of targets to attack. |
38 | aurastate auralencalc auraevent1 auraeventfunc1 auraevent2 auraeventfunc2 auraevent3 auraeventfunc3 | BarStartWhirlwind - Stop any skills and validate the target location. Modify the caster unit's collision to only collide with walls and objects and save the target location. Apply the "aurastate" state with the length controlled. Applies "auraevents" if they exist. |
39 | aurastate calc1 calc2 calc4 | BarStartBerserk - Validate the target enemy unit and determine if the caster unit can melee attack it. Use "calc1" to control the percentage increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. Use "calc2" to control the duration for how long the caster unit has the state. |
40 | aurarangecalc | BarStartLeap - Adjust the caster unit collision, validate the target location, and store the location in a parameter. If the caster unit is in a monster, then handle how the monster can attack the target while leaping. |
41 | BarStartLeapAttack - Adjust the caster unit collision, validate the target location, and store the location in a parameter. Make the caster unit uninterruptable after landing in order to melee attack a nearby target. | |
42 | MonStartFirehit - If the caster unit is a player, then use the BarStartBash function (Code 32). Otherwise make the caster attack the target while in "Skill 1" mode and deal damage | |
43 | MonStartMagottEgg - Make the unit unattackable, unselectable, and unable to be hit by missiles | |
44 | MonStartMaggotUp - Set the unit to have ground collision and adjust the collision and pathing. Teleport the unit to a viable location in the area. | |
45 | MonStartMaggotDown - Make the unit unattackable, unselectable, and unable to be hit by missiles. Adjust the unit's collisionto not have pathing. | |
46 | MonStartAndariel - Validate the target unit and store the target's location in a parameter | |
47 | calc1 | MonStartJump - Validate the target location. Return false if the caster unit has the "freeze" state. Use the "calc1" field to control the damage percent bonus. Make the caster unit attack the target, if possible. |
48 | MonStartSwarmMove - Find and validate a path to the target. | |
49 | MonStartNest - Validate the caster unit's location and modify its collision | |
50 | MonStartQuickStrike - Validate the target unit and attack it | |
51 | MonStartSubmerge - Make the unit unattackable, unselectable, and unable to be hit by missiles | |
52 | MonStartEmerge - Make the unit unattackable, unselectable, and unable to be hit by missiles | |
53 | calc2 | MonStartDiabLight - Add the "inferno" state to the caster unit. Use "calc2" to control the number of frames to add to the animation while channeling and save it in a parameter. |
54 | MonStartDiabRun - Validate the target unit and save its location in parameters | |
55 | calc1 calc2 | MonStartMosquito - Validate the target unit and use the calculation fields to control the minimum and maximum number of animation loops for the skill. |
56 | calc1 calc4 | DruStartChargeUpAttack - Validate the target enemy and attempt to attack it. Use "calc1" to control the percentage increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
57 | aurastate | DruStartRabies - Validate the "aurastate" state. Reset internal variables used to keep track of hits. |
58 | calc1 | DruStartFireClaws - Validate the target enemy and attempt to attack it. Use "calc1" to control the percentage increase for physical damage dealt. |
59 | calc1 | MonStartImpInferno - Add the "inferno" state to the caster unit. Use "calc1" to control the number of frames to add to the animation while channeling and save it in a parameter. |
60 | calc1 calc2 calc3 | MonStartBatSuckBlood - Validate the target enemy and attempt to attack it. Use "calc1" to control the damage penalty percentage. Use "calc2" to control the life steal percent. Use "calc3" to control the mana steal percent. |
61 | MonStartSelfResurrect - Validate that the caster unit is a monster, then resurrect the monster, making it have proper pathing, be attackable, selectable, and able to be hit by missiles. | |
62 | MonStartSpawner - Save the monster's position, class, and mode as parameters | |
63 | srvmissilea | MonStartCorpseCycler - Validate that the caster unit is a monster. Check for the "noSel" state on the target (MonStats2.txt) or add it on the target. Create the missile at the target location and corpse explode the corpse on the client. |
64 | MonStartFrenzy - Validate that the target is an enemy. Reset internal variables used to keep track of frames and attacks. | |
65 | StartThrow - Validate that the caster unit has enough ammunition and durability | |
66 | auraevent1 auraeventfunc1 auraevent2 auraeventfunc2 auraevent3 auraeventfunc3 | ApplyPassiveAuraEvents - Check each of the aura events on the skill and apply the event handler to use the aura event functions |
67 | BarStartFrenzy - Resets internal variables used to keep track of frames and attacks. | |
68 | calc2 | BarStartDoubleSwing - Uses "calc2" to apply an attack rate bonus. |
srvdofunc - [N] - Server Do function. This controls how the skill works when it finishes being cast, on the server side. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | DoAttack - If using a ranged weapon, then launch the weapon's missile. Otherwise, perform a standard melee attack to deal damage. | |
2 | srvoverlay aurastate auratargetstate auralencalc | DoApplyDamage - Apply the overlay on the target unit when dealing damage. Apply the "auratargetstate" state on the target, if possible, with "auralencalc" controlling its duration. Apply the "aurastate" state on the caster unit, if possible. |
3 | DoThrow - Check that primary equipped weapon is a throwing weapon and handle launching the weapon's missile | |
4 | DoUnsummon - Remove the pet from the caster owner | |
5 | DoLeftThrow - Check that non-primary equipped weapon is a throwing weapon and handle launching the weapon's missile | |
6 | auratargetstate auralencalc aurarangecalc | AmaDoInnerSight - Apply the "auratargetstate" state to all units in the area with a radius controlled by "aurarangecalc", that lasts a duration controlled by "auralencalc". The state can use any of the aura stats and their related calculation values. |
7 | calc1 calc4 | AmaDoJab - Attempt to attack the target unit. Use "calc1" to control the percent increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
8 | srvmissilea srvmissileb calc1-3 | AmaDoMultipleShot - Shoot a number of missiles toward a target location. If the weapon class is a bow then use "srvmissilea", otherwise use "srvmissileb" as the missile to create. Use "calc1" to control the number of missiles created. Use "calc2" to control the activation frame for each missile created. Use "calc3" to control the number of triggering missiles. |
9 | aurastate auralencalc calc1 calc4 | BarDoFrenzy - Attack with both weapons on a target or to nearby targets. Add the "aurastate" state to the caster unit, with a duration controlled by "auralencalc". Use "calc1" to control the percentage increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
10 | srvmissilea srvmissileb calc1 | AmaDoGuidedArrow - Shoot a missile that will change its path to find a nearby target to hit. If the weapon class is a bow then use "srvmissilea", otherwise use "srvmissileb" as the missile to create. Use "calc1" to control the physical damage dealt by the missile. |
11 | aurastate aurastat1 srvmissilea/b/c calc1 | AmaDoChargedStrike - Create the number of missiles with randomized pathing. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use "calc1" to control the number of missiles created. |
12 | aurarangecalc srvmissilea srvmissileb calc2 Param6 | AmaDoStrafe - Use "aurarangecalc" to control the range to find a target. If the weapon class is a bow then use "srvmissilea", otherwise use "srvmissileb" as the missile to create. Use "calc2" to control the percent increase for physical damage dealt. Use "Param6" to control what percent within the entire animation to trigger rolling back the loop within the animation. |
13 | calc1 calc4 Param2 | AmaDoFend - Attempt to attack the target unit or nearby enemies with multiple attacks. Use "calc1" to control the percent increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. Use "Param2" to control what percent within the entire animation to trigger rolling back the loop within the animation. |
14 | aurastate aurastat1 srvmissilea/b/c calc1 calc2 | AmaDoLightningStrike - Damage the target and create a missile that bounces to different targets. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use "calc1" to control the range of the missile to find a nearby target. Use "calc2" top control the number target chain jump hits for the missile. |
15 | PetType calc2 calc3 | AmaDoDopplezon - Create a pet unit that is a duplicate of the caster unit. Use "calc1" to control the life percent of the pet. Use "calc3" to control the Life percent increase on the pet unit based on the caster's Life. Use "calc2" to control the duration that the pet exists. Apply the "dopllezon_appear" overlay on the pet. |
16 | PetType calc1 calc2 | AmaDoValkyrie - Create a pet unit with generated item equipment and stats. Use "calc1" to control the life percent of the pet. Use "calc2" to control the item level for the generated items on the pet. |
17 | aurastate aurastat1 srvmissilea/b/c calc1 | SorDoChargedBolt - Create a number of missiles that have a randomized path. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use "calc1" to control the number of missiles created. |
18 | aurastate auralencalc | SorDoFrozenArmor - Apply the state on the target unit with its length controlled by "auralencalc". |
19 | srvmissilea calc1 | SorDoInferno - Create the missile where "calc1" controls the range. Continue creating missiles while having the "inferno" state. |
20 | aurarangecalc calc1 calc2 | SorDoStaticField - Apply damage to all units in the area. Use "aurarangecalc" to control the damage radius. Use "calc1" to control the Life percent damage. Use "calc2" to control the minimum damage dealt. |
21 | calc1 | SorDoTelekinesis - If the target is a monster or player, then deal damage and use "calc1" to control the knockback chance. If the target is an item, then ensure that the item type is a scroll, gold, or potion. If the target is a object, then call the object's operate function. |
22 | aurastate aurastat1 srvmissilea/b/c calc1 | SorDoFrostNova - Shoot missiles in a circular array. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use "calc1" to add to the velocity of the missiles created. |
23 | aurastate auralencalc | SorDoBlaze - Add the "aurastate" state on the caster with a duration controlled by "auralencalc". Apply any aura stats or events. |
24 | srvmissilea srvmissileb calc1 | SorDoFirewall - Create 2 "srvmissilea" missiles in opposite directions and create 2 "srvmissileb" missiles also at those locations. Use "calc1" to control how many different groups of these missiles can exist at once. |
25 | aurastate auralencalc | SorDoEnchant - Add the "aurastate" state on the target with a duration controlled by "auralencalc". Apply any aura stats or events. |
26 | srvmissilea calc1 | SorDoChainLightning - Create the missile, which can jump off targets hit, where "calc1" controls the number of missile chain jump hits |
27 | SorDoTeleport - Check that the level allows teleporting ("Teleport" in Levels.txt), then validate the target location and warp the unit to that location. | |
28 | srvmissilea | SorDoMeteor - Check that the target location is valid to spawn the missile, then create it |
29 | aurastate auralencalc srvmissilea Param7 | SorDoThunderStorm - While the caster unit has the "aurastate" state with the "auralencalc" duration, find nearby a nearby enemy and shoot the missile. Use "Param7" to control the radius size for finding nearby enemies. |
30 | auratargetstate aurarangecalc auralencalc | NecDoAmplifyDamage - Apply the "auratargetstate" state on enemies in an area where "aurarangecalc" controls the radius and "auralencalc" controls the duration. Also apply and aura stats, events, and filters. |
31 | PetType calc1 calc2 | NecDoRaiseSkeleton - Validate the target corpse and then create a pet unit. Use "calc1" to control the life percent of the pet. Use "calc2" to control the percent chance to spawn the skeleton with a shield (only works for the "necroskeleton" monster). |
32 | NecDoApplyDamage - Validate the target enemy and perform damage from the attacker | |
33 | calc1 calc2 calc3 calc4 | AssDoPsychicHammer - Validate that the target unit is a monster or player and is not in town. Use the calculation fields to control the chance to knockback the target if it is a monster, unique monster, boss, or player, respectively. |
34 | aurastate auralencalc aurastat1 aurastat2 aurastatcalc2 | AssDoProgressiveAttack - Attempt to attack the target unit and deal damage. Calculate the progressive damage. Use "auralencalc" to determine the length of the charges. Use "aurastat1" to control the progressive charges. Use "aurastat2" as a stat when the player attacks and has no charges. Use "aurastatcalc2" to control that stat's value. |
35 | aurastate auralencalc aurastat1 aurastat2 aurastatcalc2 | AssDoDualProgressiveAttack - Check that the player has 2 weapons equipped. Attempt to attack the target unit twice with a frame delay, and use the "AssDoProgressiveAttack" (Code = 34) function for each attack. |
36 | aurastate aurastat1 srvmissilea/b/c calc1 | ApplyClawsOfThunderLvl2 - Shoot missiles in a circular array. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use "calc1" to add to the velocity of the missiles created. |
37 | aurastate aurarangecalc aurastat1 srvmissilea/b/c | ApplyClawsOfThunderLvl3 - Shoot missiles in an arc array. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use "aurarangecalc" to control how many missiles are created, only if there are no values from the progressive charge calculation fields ("prgcalc1") |
38 | aurastate aurarangecalc aurastat1 | AssDoAreaDamage - Deal damage to enemies in an area at a target location. Use the progressive calculation fields to determine the radius increase per charge, controlled by the "aurastate" state and the "aurastat1" value, otherwise use "aurarangecalc" for the radius. |
39 | aurastate aurarangecalc aurastat1 srvmissilea/b/c | AssMissileDisc - Create a disc of randomly positioned missiles. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use the progressive calculation fields to determine the radius increase per charge, controlled by the "aurastate" state and the "aurastat1" value, otherwise use "aurarangecalc" for the radius. |
40 | aurastate aurastat1 srvmissilea/b/c | ApplyRoyalStrikeLvl1 - Create a missile at a target location. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. |
41 | aurastate aurarangecalc aurastat1 srvmissilea/b/c | ApplyChaosIce - Create multiple missiles from the caster unit. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use the progressive calculation fields to determine the number of missiles created per charge, controlled by the "aurastate" state and the "aurastat1" value. Use "aurarangecalc" for the radius. |
42 | calc2 calc3 calc4 Param1 Param2 | AssDoDragonTalon - Attempt to melee attack the target unit multiple times. Use the progressive fields to control the charge functions. Use each calculation field to control the percent chance to knockback for a monster, boss, or player unit. Use the parameters to control a linear calculation for the percentage of bonus physical damage dealt. |
43 | aurastate aurarangecalc aurastat1 srvmissilea/b/c | AssDoShockField - Create multiple missiles using the lob function. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use the progressive calculation fields to determine the number of missiles created per charge, controlled by the "aurastate" state and the "aurastat1" value. Use "aurarangecalc" for the radius. |
44 | PetType | AssDoBladeSentinel - Summon a pet at the target location and cause it to oscillate |
45 | PetType | AssDoWakeOfFireSentry - Summon a pet at the target location |
46 | calc1 calc4 | AssDoDragonClaw - Attempt to attack the target unit twice with a frame delay. Use "calc1" to control the percent increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. Use the progressive fields to determine progressive damage changes. |
47 | aurastate auratargetstate auralencalc aurarangecalc | AssDoCloakOfShadows - Apply the "aurastate" state on the caster unit with a duration controlled by "auralencalc". Apply the "auratargetstate" state on nearby enemies in a radius controlled by "aurarangecalc". Use any applicable aura stats or filters. |
48 | aurastate aurastat1 srvmissilea/b/c | AssDoBladeFury - Create a missile after a frame delay. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use the progressive calculation fields to modify the delay between creating the next missile, based on the charges. |
49 | PetType Param5 Param6 | AssDoShadowWarrior - Create a pet unit with generated item equipment and stats. Use "Param5" and "Param6" to control the item level for the generated items on the pet. |
50 | aurarangecalc calc1 | AssDoDragonTail - Attempt to attack a target unit and deal damage in an area. Use the progressive fields to control the charge functions. Use "aurarangecalc" to control the radius. Use "calc1" to control the percent increase in damage dealt. |
51 | aurarangecalc calc1 calc2 Param4 | AssDoMindBlast - Randomly damage and convert enemies in an area. Use "aurarangecalc" to control the radius, or if using the progressive charges, then use their field values instead. Use "calc1" to control the chance to convert enemies. Use "calc2" to control the duration enemies are converted. Use "Param4" to add an additional randomized duration value. |
52 | calc1 | AssDoDragonFlight - Teleport the caster to the target unit and attempt to attack it. Use the progressive fields to control the charge functions. Use "calc1" to control the percent increase for physical damage dealt. |
53 | aurastate aurarangecalc aurastat1 | AssDoAreaDamage2 - Deal damage to enemies in an area around the caster. Use the progressive calculation fields to determine the radius increase per charge, controlled by the "aurastate" state and the "aurastat1" value, otherwise use "aurarangecalc" for the radius. |
54 | aurastate aurarangecalc aurastat1 | AssDoBladeShield - Deal damage to enemies in an area around the caster. Use the progressive calculation fields to determine the radius increase per charge, controlled by the "aurastate" state and the "aurastat1" value, otherwise use "aurarangecalc" for the radius. |
55 | aurarangecalc calc1 calc2 calc3 EType | NecDoCorpseExplosion - Hide the target corpse and deal damage in an area. Use "aurarangecalc" to control the radius. Use "calc1" and "calc2" to control the min and max percent damage dealt based on the max Life from the corpse unit. Use "calc3" to control the percent of damage converted to elemental. |
56 | PetType | NecCreateGolem - Create a pet unit with defined stats. If the skill has the "TargetableOnly" and "TargetCorpse" flag enabled, then the summoned pet will copy the modifiers of the corpse. |
57 | PetType | NecCreateIronGolem - Validate that the target is an identified item on the ground. Remove the item and create the pet, inheriting properties from the item. |
58 | PetType | NecDoRevive - Validate that the target is a corpse that can be revived, then revive the monster, applying any valid stats |
59 | auratargetstate auralencalc aurarangecalc | NecDoAttract - Validate that the target is a monster and can have its AI changed. Apply the "auratargetstate" state on any valid monsters in an area controlled by "aurarangecalc" which lasts a duration controlled by "auralencalc". |
60 | PetType calc2 srvmissilea | NecDoBoneWall - Create the pet, and then create 2 missiles that shoot in opposite directions, where "calc2" controls the number of sub missiles to create within each of these missile parameters. |
61 | auratargetstate auralencalc aurarangecalc aurastat2-6 | NecDoConfuse - Validate that the target is a monster and can have its AI changed. Apply the "auratargetstate" state on any valid monsters in an area controlled by "aurarangecalc" which lasts a duration controlled by "auralencalc". |
62 | PetType | NecDoBonePrison - Create a number of pets around the target unit. |
63 | srvmissilea | NecDoPoisonExplosion - Validate that the target corpse can explode, then update the corpse to be unselectable and create a radial ring of poison missiles. |
64 | calc2 Param4 | PalDoSacrifice - Attack and deal damage to the target. Deal damage to the caster based on a percentage of life controlled by "calc2" and "Param4". |
65 | aurastate auratargetstate aurarangecalc | PalDoMight - Apply the aurastate" state to the caster. Apply the "auratargetstate" state to nearby units, where "aurarangecalc" controls the radius size. |
66 | aurastate auratargetstate aurarangecalc | PalDoHolyFire - Apply the aurastate" state to the caster. Apply the "auratargetstate" state to nearby units, where "aurarangecalc" controls the radius size. Deal damage to the nearby units in the area. |
67 | calc1 calc4 | PalDoCharge - Listen for the event frames and attempt to attack the target unit to deal damage. Use "calc1" to control the percent increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
68 | aurastate auralencalc srvmissilea | BarDoBattleCry - Create a circular array of missiles and add the "aurastate" state to the caster unit where the duration is controlled by "auralencalc" |
69 | calc1 Param3 Param4 | BarDoFindHeart - Validate the target corpse, then update the corpse to be unselectable and roll a random chance to create a potion. Use "calc1" to control the chance of finding a potion. Use "Param3" and "Param4" to control the chance for finding a mana potion and rejuvenation potion. Potions depend on the current Act level and Game Difficulty. |
70 | aurastate calc1 calc2 calc3 calc4 | BarDoDoubleSwing - Validate the target enemy and attack it based on the animation sequence frame to determine if it is the first attack or second attack. Uses the BarStartBash function (Code 32 for "srvstfunc"). |
71 | auratargetstate auralencalc | BarDoTaunt - Validate that the target is a monster and can have its AI changed to force it to attack the caster. Apply the "auratargetstate" state on the target, which lasts a duration controlled by "auralencalc". If there is no target selected, then find the nearest target within a radius value of 20. |
72 | calc1 Param1 Param2 Param3 Param4 | BarDoFindItem - Validate the target corpse, then update the corpse to be unselectable and roll a random chance to spawn a treasure class item. Use "calc1" to control the chance of finding an item. Use the parameter values to control the chances for finding Low Quality, Normal, High Quality, and Magic items. |
73 | srvmissilea calc1 | PalDoBlessedHammer - Create a missile in a spiral path pattern. Use "calc1" to control the damage percent bonus when the caster has the "concentration" state. |
74 | calc1 | BarDoDoubleThrow - Launch the weapon missile, where "calc1" controls the bonus damage percent |
75 | srvmissilea/b/c | BarDoGrimWard - Validate the target corpse, then update the corpse to be unselectable and create the "srvmissilea" missile. If the target unit has the "large" flag enabled (MonStats2.txt) then use "srvmissileb" instead. If the target unit has the "small" flag enabled (MonStats2.txt) then use "srvmissilec" instead. |
76 | aurastate calc1 | BarDoWhirlwind - If the caster unit is at the target location, then remove the aura and stop whirlwinding. Otherwise, find nearby enemies and deal damage, where "calc1" controls the damage bonus. |
77 | calc1 calc2 | BarDoLeap - Validate the target position and caster's collision, and move the unit. Use "calc1" to control the range, and "calc2" to control the speed. |
78 | calc1 calc2 calc4 | BarDoLeapAttack - Validate the target position and the caster's collision, and move the unit. Make the unit attack the target, if nearby, or find another nearby target. Use "calc2" to control the speed. Use "calc1" to control the percent increase for physical damage dealt. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
79 | auratargetstate auralencalc calc1 Param5 | PalDoConversion - Validate that the target is a monster and can have its AI changed to fight alongside the player. Apply the "auratargetstate" state on the target, which lasts a duration controlled by "auralencalc". Use "calc1" to control the chance to convert. Use "Param5" to enable a expire effect. |
80 | srvmissilea srvoverlay | PalDoFistOfTheHeavens - Create the missile and apply the overlay on the target unit |
81 | aurastate auratargetstate aurarangecalc | PalDoHolyFreeze - Apply the "aurastate" state on the caster, and apply the "auratargetstate" on any nearby enemies with a radiuscontrolled by "aurarangecalc". |
82 | aurastate aurarangecalc calc1 calc2 calc3 | PalDoRedemption - Apply the "aurastate" state on the caster. Use "aurarangecalc" to control the radius of the aura, which will look for valid corpses to redeem. Use "calc1" to control the chance to redeem. Use "calc2" to control the life gain. Use "calc3" to control the mana gain. |
83 | MonDoFirehit - Apply damage to the target | |
84 | calc1 | MonDoMaggotEgg - Spawn a number of units around the caster and kill the caster. Use "calc1" to control the number of spawned units. |
85 | srvmissilea | MonDoShamanFire - Get the missile and possibly add the monster's number in class to the missile ID to get another missile ID instead, and then fire that missile |
86 | calc1 | MonDoMaggotDown - Check for the proper frame count and then heal the caster by a percentage of Life controlled by "calc1" |
87 | MonDoMaggotLay - Spawn a unit in 1 of 8 possible directions nearby the target location | |
88 | srvmissilea | MonDoAndariel - For multiple frames, spawn a missile in 1 of 8 possible directions |
89 | MonDoJump - Validate the target path and check for the completion of the animation or the arrival to destination, then update the unit's collision. Handle special cases for the "sandleaper1" monster frame counts. | |
90 | calc1 calc2 | MonDoSwarmMove - Check for the skill flag to stop the sequence, otherwise reset the sequence. Use "calc1" to control the animation starting frame at the beginning of the sequence. Use "calc2" to control the animation frame when ending the sequence. |
91 | sumoverlay | MonDoNest - Make the caster unit interruptable. Create the monster saved in the function parameter and make that monster unable to reward Experience and Item Drops, and add the overlay on that monster. |
92 | srvmissilea | MonDoQuickStrike - Apply damage to the target. Check for the monster's missile frame and then launch the missile. |
93 | srvmissilea | MonDoGargoyleTrap - Create the missile in one of the allowed directions that is closest to the target unit |
94 | MonDoSubmerge - When on the last frame, set the animation sequence rate to 0 and clear the frame events | |
95 | srvmissilea calc1 calc3 | MonDoMonsterInferno - Continuously create missiles based on the monster's Inferno fields (MonStats2.txt). Use "calc1" to adjust the missile range. Use "calc3" to adjust the density when to create the next missile. |
96 | calc1 calc2 | MonDoZakarumHeal - Heal the ally target by a random percentage of the target's life, where "calc1" controls the min percent and "calc2" controls the max percent |
97 | srvoverlay | MonDoResurrect - Validate that the monster is dead and can be resurrected. Make the monster have proper collision, be attackable, be selectable, able to be hit by missiles, not provide Experience, and not provide item drops. Also update the monster's mode and add an overlay. |
98 | MonDoTeleport - Validate the target location and teleport the unit. Adjust the location if the monster has a boss owner. | |
99 | srvmissilea calc1 calc2 | MonDoPrimePoisonNova - Create 2 rings of missiles. Use "calc1" to control the number of missile subloops. Use "calc2" to control how many missiles are created per ring. Use the missile's "Param1" and "Param2" values to control its velocity per ring (Missiles.txt). |
100 | srvoverlay | MonDoDiabCold - Deal elemental damage to the target and apply the overlay. Adjust the Freeze Length using the "ELen" fields from the skill. |
101 | srvmissilea calc1 | MonDoFingerMageSpider - Create the missile with a facing opposite of the target or caster unit, and use "calc1" to control the missile's subloops. |
102 | srvmissilea calc1 | MonDiabWallMaker - Create a number of missiles with a randomized path and range. Use "calc1" to control the number of missiles created. |
103 | calc1 Param1 Param2 Param3 Param4 Param5 Param6 | MonDoDiabRun - Move the caster unit with increased speed towards a target, and then attack the target, dealing damage. Use "calc1" to control the increase in movement speed. The 6 parameter values controls the run animation's stop frame length, stop event frame, start event frame, start frame length, loop repeat event frame, loop frame length, and loop start event frame. |
104 | summon | MonDoDiabPrison - Create multiple of the "summon" units around the target, based on the type of unit that is being targeted |
105 | srvmissilea calc1 | MonDoDesertTurret - Create a number of missiles in 8 possible directions. Use "calc1" to control the number of missiles created. |
106 | srvmissilea | MonDoArcaneTower - Create a circular array of missiles |
107 | calc3 Param1 | MonDoMosquito - Validate that the caster is in melee range for the target and then deal damage, including randomized poison damage, mana drain, and stamina drain. Use "calc3" to control the heal percentage on the caster based on the damage dealt. Use "Param1" to control the animation frame to start the repeat loop. |
108 | calc1 | MonDoRegurgitatorEat - Validate that the target corpse is a monster and then remove it and heal the caster by a percentage of the target's life, controlled by "calc1" |
109 | aurastate auralencalc calc1 | MonDoFrenzy - Attempt to attack the target unit, dealing damage. Add the "aurastate" state to the caster unit, with a duration controlled by "auralencalc". Use "calc1" to control the percentage increase for physical damage dealt. |
110 | srvmissilea | MonDoHireFireMissile - Launch the weapon missile to the target. Use "srvmissilea" if the weapon missile is "arrow" or "bolt". |
111 | Param4 | MonDoFetishAura - Apply an aura to nearby "fetish1" or "fetishblow1" monster types, increasing their attack rate. Use "Param4" to control the radius. |
112 | auratargetstate aurarangecalc auaralencalc Param5 Param6 Param7 | MonDoCurse - Apply a random curse to enemy units in an area. Randomly select between the following curses: Amplify Damage, Weaken, Life Tap, Decrepify, Lower Resist. Use "aurarangecalc" to control the radius. Use "auralencalc" to control the duration. Use "Param5" and "Param6" to control the resistance percentage change for the Lower Resist curse. Use "Param7" to control the Decrepify attack speed and movement speed change. |
113 | ItemDoBookSkill - Check the caster's inventory for an item that has the "Book" or "Scroll" Item Type (ItemTypes.txt), and then use that item's skill and update its quantity. | |
114 | PetType calc1 calc2 | DruDoRaven - Create the pet unit and make it unattackable. Use "calc1" to control the pet's bonus Life percent. Use "calc2" to control the summoned pet's unit level. |
115 | PetType calc1 calc2 | DruCreateVineCreature - Create the pet unit in the "Skill 1" mode. Use "calc1" to control the pet's bonus Life percent. Use "calc2" to control the summoned pet's unit level. |
116 | aurastate auralencalc | DruDoWerewolf - Add/Remove the "aurastate" state on the caster, depending if the caster unit does or does not have the state. Use "auralencalc" to control the state duration |
117 | srvmissilea calc1 | DruDoFireStorm - Create a number of missiles that move in a randomized pattern. Use "calc1" to control the number of missiles created. |
118 | srvmissilea calc1 | DruDoTwister - Create a number of missiles that move in a randomized pattern. Use "calc1" to control the number of missiles created. |
119 | PetType calc1 calc2 | DruCreateTotem - Create the pet unit at a valid target location. Use "calc1" to control the pet's bonus Life percent. Use "calc2" to control the summoned pet's unit level. |
120 | aurastate auralencalc calc2 | DruDoFeralRage - After hitting the target, apply the state on the caster unit with a duration controlled by "auralencalc" and with the capability to stack with charges. Use "calc2" to control the max charges. |
121 | auratargetstate calc1 | DruDoRabies - Attack the target to deal damage. Apply the "auratargetstate" where its duration is controlled by the "ELen" field. Use "calc1" to control the percent increase in physical damage. |
122 | calc1 calc2 calc3 | DruDoHunger - Attempt to attack the target, dealing damage and restoring Life and Mana. Use Use "calc1" to control the percent change in physical damage. Use "calc2" and "calc3" to control the life steal and mana steal gained from the attack damage. |
123 | srvmissilea | DruDoVolcano - Validate the target location and then create the missile |
124 | aurastate auralencalc Param4 | DruDoArmageddon - Apply the "aurastate" state on the caster unit which lasts a duration controlled by "auralencalc". Use "Param4" to control the duration between sending an event state update. |
125 | srvmissilea | MonDoWakeOfFire - Create a missile from the source unit with a saved direction |
126 | srvmissilea calc2 Param2 | MonDoImpInferno - Based on the animation frames set in MonStats2.txt, create a missile where "calc2" controls the missile's range (and also "Param1" from Missiles.txt). |
127 | calc1 | MonDoBatSuckBlood - Deal damage to the target and then use "calc1" to control the percentage of max Life healed on the caster unit |
128 | calc1 srvoverlay | MonDoCryHelp - If the caster is a monster, then command the caster to attack the target for a duration controlled by "calc1". Apply the overlay on the target. |
129 | aurastate | MonDoImpTeleport - If the target location is on the ground, then warp the unit to that location. If the type of unit targeted is the "barricadetower" or "siegebeast1" and the caster unit type is "imp1", then add the "attached" state to the caster unit, and update the AI, animation events, and stats to be not interactable. |
130 | srvmissilea calc1 | MonDoVineAttack - Create a number of missiles in a random spread pattern with 4 possible spread directions. Use "calc1" to control the number of missiles created. |
131 | auratargetstate calc1 | MonDoOverseerWhip - Validate that the target is a living monster. If the target unit type is "minion1", then perform a random chance to bloodlust the target. Use "calc1" to control the percent chance to bloodlust the target, which will apply the "auratargetstate" state on the target. If bloodlust does not happen, then change the monster class and AI to the suicide minion. |
132 | srvmissilea | MonDoImpFireMissile - Based on the monster's number in class, increment the index of the linked "srvmissilea" missile and then create that missile based on the index. |
133 | MonDoImpregnate - Validate that the target is a friendly dead monster and that it does not have the "pregnant" state. Then add the "pregnant" state to the target and create a "painworm1" type monster. | |
134 | srvmissilea aurarangecalc | MonDoSiegeBeastStomp - Deal damage to nearby enemies in an aura where "aurarangecalc" controls the radius of the damage |
135 | sumoverlay | MonDoSpawner - Create the monster saved in the parameter with the added overlay, with no Experience provided, and with no item spawning. |
136 | srvmissilea calc1 | MonDoDeathMauler - Validate the target location and then create the missile with an animation rate controlled by "calc1". The missile's range is modified based on the distance from the caster. |
137 | aurastate | MonDoFenrisRage - Validate that the target is an enemy corpse that has not been used. Apply the state on the caster, adding any aura events on the caster. |
138 | srvmissilea calc1 calc2 | MonDoBaalInferno - Shoot multiple missiles from the caster unit to a target location. Use "calc1" to control the number of missiles created. Use "calc2" to control the range of the missiles. Check the inferno frame events for the monster (MonStats2.txt). |
139 | srvmissilea | MonDoBaalCold - Validate the target location and then create the missile using the directions from the saved parameters. |
140 | MonDoBaalTentacle - Based on the monster class of the caster, create a number of "baaltentacle1" summoned monsters randomly positioned in a location with a radius size of 9. Make sure these monsters do not provide exp or reward items. | |
141 | aurarangecalc calc1 calc2 calc3 EType Param5 Param6 | MonDoBaalCorpseExplosion - Find a nearby dead monster and then do the "NecDoCorpseExplosion" function (Code = 55) except where "Param5" and "Param6" control the baseline radius and radius increase per skill level. |
142 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 aurarangecalc | AssDoAreaAttack - Deal attack damage in an area. Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, use the proper "progcalc#" value to control the radius, based on the number of progressive charges. Otherwise, default to using "aurarangecalc" for the radius. |
143 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 srvmissilea/b/c | ApplyRoyalStrikeLvl2 - Create a number of missiles that move in a randomized pattern. Use the "srvmissilea" missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the "aurastate" field and "aurastat1" fields. Use "aurarangecalc" value by default for the number of missiles created, or use the appropriate progressive calculation fields, based on the number of progressive charges. |
144 | PetType calc1 | SorDoHydra - Validate the target location and create 3 pets, where "calc1" controls their duration and bonus life percent. |
145 | aurastate aurarangecalc Param4 | DruApplyHurricane - Apply the state on the caster with the radius controlled by "aurarangecalc" and the frame state updates to deal radius damage controlled by "Param4". |
146 | aurastate aurarangecalc srvmissilea Param4 | DruApplyArmageddon - Update the state on the caster unit based on the events, and then create a missile in a radius controlled by "aurarangecalc" at a periodic frame interval controlled by "Param4". |
147 | MonApplyAttached - Get the source unit of the caster and update the caster's pathing to follow the source unit, like a rider attached to its mount. | |
148 | srvmissilea | MonDoDoomKnightMissile - Create the "srvmissilea" using either the lob function or the normal linear function, depending on the "lob" flag. Also select the missile or up to 3 index values higher, depending on the monster's graphics variation for the "Special 3" component variation. |
149 | srvmissilea | MonDoNecroMageMissile - Create the "srvmissilea" using either the lob function or the normal linear function, depending on the "lob" flag. Also select the missile or up to 3 index values higher, depending on the monster's graphics variation for the "Special 4" component variation. |
150 | calc1 calc2 calc4 | PalDoSmite - Validate the target enemy and that the target is in melee range, and then attempt to attack the target. Use "calc1" to control the percent increase for physical damage dealt. Use "calc2" to control the stun length. Use "calc4" to control the percent of damage converted to elemental, if the "Etype" field is used. |
151 | srvmissilea calc1 | SorDoChainLightning2 - Launch the missile that can do chain hits to other nearby enemies. Use "calc1" to control the number of chain hits. |
152 | srvmissilea calc1 calc3 | MonDoDiabloLight - Shoot a missile from the caster to the target location, adhering to the caster's inferno animation frames (MonStats2.txt). Use "calc1" to control the missile range, otherwise default to using the missile's "Param2" value calculated with its current level. Use "calc3" to control the periodic frame count for how often to create the missile. |
srvstopfunc - [N] - Server Stop function. This controls how the skill cleans up after ending. This uses a code value to call a function, affecting how certain fields are used. Only used by "Whirlwind".
Code | Parameters | Description |
0 | Do nothing | |
1 | aurastate | BarStopWhirlwind - Handles changing the collision, pathing, and aura state of the caster. |
prgstack - [B] - If equals 1, then all srvprgfunc1 functions will execute, based on the current number of progressive charges. If equals 0, then only the relative srvprgfunc1 function will execute, based on the current number of progressive charges
srvprgfunc1 - [N] - Controls what srvdofunc is used when executing the progressive skill with a charge number equal to 1, 2, and 3, respectively. This field uses the same functions as the srvdofunc field
prgcalc1 - [C] - Used as a possible parameter for calculating values when executing the progressive skill with a charge number equal to 1, 2, and 3, respectively
prgdam - [N] - Calls a function to modify the progressive damage dealt
Code | Parameters | Description |
0 | Do nothing | |
1 | aurastat1calc1tgtoverlay | ModifyProgressiveDamage - Modify the percentage of the physical damage dealt and apply an overlay on the target |
2 | aurastat1calc1 | ModifyProgressiveSteal - Modify the percentage of the life steal and mana steal gained |
3 | aurastat1ETypeParam2 | ModifyProgressiveElemental - If the progressive damage elemental type equals Cold, then at 3 charges, modify the Freeze Length based on the Cold Length and a divisor (using Param2) |
4 | aurastat1ETypecalc1Param5 | ModifyProgressiveElementalConvert - Convert a percentage of the physical damage dealt to elemental damage, based on the "calc1" field. If the elemental type equals Cold, then at 3 charges, modify the Freeze Length based on the Cold Length and a divisor (using Param5) |
srvmissile - [O] - Used as a parameter for controlling what main missile is used for the server functions used (Missile field from Missiles.txt)
decquant - [B] - If equals 1, then the unit's ammo quantity will be updated each time the skill's srvdofunc is called. If equals 0, then ignore this
lob - [B] - If equals 1, then missiles created by the skill's functions will use the missile lobbing function, which will cause the missile fly in an arc pattern. If equals 0, then missiles that are created will use the normal linear function
srvmissilea - [O] - Used as a parameter for controlling what secondary missile is used for the server functions used (Missile field from Missiles.txt)
useServerMissilesOnRemoteClients - [X] [N] - Control new missile changes per player skill. Values of 1 will force enable it for that skill. Skills that have matching server/client missiles sets for the skill get auto enabled. Setting this to a value greater than 1 will force it to skip this auto enable logic. If equals 0, then ignore this. Note: this feature is disabled
srvoverlay - [O] - Creates an overlay on the target unit when the skill is used. This is a possible parameter used by various skill functions (overlay field from Overlay.txt)
aurafilter - [N] - Controls different flags that affect how the skill's aura will affect the different types of units. Uses an integer value to check against different bit fields. For example, if the value equals 4354 (binary = 1000100000010) then that returns true for the 4096 (binary = 1000000000000), 256 (binary = 0000100000000), and 2 (binary = 0000000000010) bit field values. (See SuperCalc for a helpful calculator for this)
Bit Field Value | Binary Equivalent Value | Description |
1 | 00000000000000000001 | Find Players |
2 | 00000000000000000010 | Find Monsters |
4 | 00000000000000000100 | Find Undead Monsters |
8 | 00000000000000001000 | Find Missiles |
16 | 00000000000000010000 | Find Objects |
32 | 00000000000000100000 | Find Items |
64 | 00000000000001000000 | Limit number of targets |
128 | 00000000000010000000 | Attackable units only |
256 | 00000000000100000000 | Make sure the target is not in town |
512 | 00000000001000000000 | No missile barriers to center |
1024 | 00000000010000000000 | Missile units only |
2048 | 00000000100000000000 | Custom check function |
4096 | 00000001000000000000 | Find dead units only |
8192 | 00000010000000000000 | Units not in town |
16384 | 00000100000000000000 | No bosses |
32768 | 00001000000000000000 | Run a target check function, checking for unit types and player alignment |
65536 | 00010000000000000000 | Allies |
131072 | 00100000000000000000 | Target in melee range |
262144 | 01000000000000000000 | No Act boss units (the "primeevil" field in monstats.txt) |
524288 | 10000000000000000000 | Units not in the Just Hit state |
aurastate - [O] - Links to a state that can be applied to the caster unit when casting the skill, depending on the skill function used (state field from States.txt)
auratargetstate - [O] - Links to a state that can be applied to the target unit when using the skill, depending on the skill function used (state field from States.txt)
auralencalc - [C] - Controls the aura state duration on the unit (where 25 Frames = 1 second). If this value is empty, then the state duration will be controlled by other functions, or it will last forever. This can also be used as a parameter for certain skill functions
aurarangecalc - [C] - Controls the aura state's area radius size, measured in grid sub-tiles. This can also be used as a parameter for certain skill functions
aurastat1 - [O] - Controls which stat modifiers will be altered or added by the aura state (Stat field from ItemStatCost.txt)
aurastatcalc1 - [C] - Controls the value for the relative aurastat1 field
auraevent1 - [O] - Controls what event will trigger the relative auraeventfunc1 field function. (event field from Events.txt)
auraeventfunc1 - [N] - Controls the function used when the relative auraevent1 event is triggered. Referenced by the Code value of the Event Functions Table
passivestate - [O] - Links to a state that can be applied by the passive skill, depending on the skill function used (state field from States.txt)
passiveitype - [O] - Links to an Item Type to define what type of item needs to be equipped in order to enable the passive state (Code field from Itemtypes.txt)
passivereqweaponcount - [N] - Controls how many equipped weapons are needed for this passive state to be enabled. If the value equals 1, then the player must have 1 weapon equipped for this passive state to be enabled. If the value equals 2, then the player must be dual wielding weapons for this passive state to be enabled. If the value equals 0, then ignore this field
passivestat1 - [O] - Assigns stat modifiers to the passive skill (Stat field from ItemStatCost.txt)
passivecalc1 - [C] - Controls the value for the relative passivestat1 field
summon - [O] - Controls what monster is summoned by the skill (ID field from MonStats.txt). This field's usage will depend on the skill function used. This field can also be used as reference for AI behaviors and for SkillDesc.txt
PetType - [O] - Links to a pet type data to control how the summoned unit is displayed on the UI (PetType column in PetType.txt)
petmax - [C] - Used skill functions that summon pets to control how many summon units are allowed at a time
summode - [O] - Defines the animation mode that the summoned monster will be initiated with. Referenced from the Code column in MonMode.txt
sumskill1 - [O] - Assigns a skill to the summoned monster. Points to another Skill. This can be useful for adding a skill to a monster to transition its synergy bonuses
sumsk1calc - [C] - Controls the skill level for the designated sumskill1 field when the skill is assigned to the monster
sumumod - [N] - Assigns a monster modifier to the summoned monster (ID field from MonUMod.txt)
sumoverlay - [O] - Creates an overlay on the summoned monster when it is first created (overlay field from Overlay.txt)
stsuccessonly - [B] - If equals 1, then the following sound and overlay fields will only play when the skill is successfully cast, instead of always being used even when the skill cast is interrupted. If equals 0, then the following sound and overlay fields will always be used when the skill is cast, regardless if the skill was interrupted or not
stsound - [O] - Controls what client sound is played when the skill is used, based on the client starting function (Sound field from Sounds.txt)
stsoundclass - [O] - Controls what client sound is played when the skill is used by the skill's assigned class (charclass), based on the client starting function (Sound field from Sounds.txt). If the unit using the skill is not the same class as the "charclass" value for the skill, then this sound will not play
stsounddelay - [B] - If equals 1, then use the weapon's hit class to determine the delay in frames (where 25 frames = 1 second) before playing the skill's start sound. If equals 0, then the skill's start sound will play immediately.
Hit Class | Sound Used | Sound Delay |
None | None | 0 frames |
Hand-To-Hand | weapon_punch_1 | 6 frames |
One Handed Swing Small | weapon_1hs_small_1 | 6 frames |
One Handed Swing Large | weapon_1hs_large_1 | 6 frames |
Two Handed Swing Small | weapon_2hs_small_1 | 8 frames |
Two Handed Swing Large | weapon_2hs_large_1 | 8 frames |
One Handed Thrust | weapon_1ht_1 | 6 frames |
Two Handed Thrust | weapon_2ht_1 | 6 frames |
Club | weapon_1hs_large_1 | 6 frames |
Staff | weapon_staff_1 | 6 frames |
Bow | None | 0 frames |
Crossbow | None | 0 frames |
Claw | None | 0 frames |
weaponsnd - [B] - If equals 1, then play the weapon's hit sound when hitting an enemy with this skill. The sound chosen is based on the weapon's hit class. Also use the sound delay based on the weapon's hit class to determine the delay in frames (where 25 frames = 1 second) before playing the weapon hit sound (stsounddelay for the types of hit class sounds and delays used). If equals 0, then do not play the weapon hit sound when hitting an enemy with the skill attack
dosound - [O] - Controls the sound for the skill each time the cltdofunc is used (Sound field from Sounds.txt)
dosound a - [O] - Used as a possible parameter for playing additional sounds based on the cltdofunc used(Sound field from Sounds.txt)
tgtoverlay - [O] - Used as a possible parameter for adding an Overlay on the target unit, based on the cltdofunc used (overlay field from Overlay.txt)
tgtsound - [O] - Used as a possible parameter for playing a sound located on the target unit, based on the cltdofunc used (Sound field from Sounds.txt)
prgoverlay - [O] - Used as a possible parameter for adding an Overlay on the caster unit for progressive charge-up skill functions, based on the cltdofunc used and how many progressive charges the caster unit has (overlay field from Overlay.txt)
prgsound - [O] - Used as a possible parameter for playing a sound when using the skill for progressive charge-up skill functions, based on the cltdofunc used and how many progressive charges the caster unit has (Sound field from Sounds.txt)
castoverlay - [O] - Used as a possible parameter for adding an Overlay on the caster unit when using the skill, based on the Client Start/Do function used (overlay field from Overlay.txt)
cltoverlaya - [O] - Used as a possible parameter for adding additional Overlays on the caster unit, based on the Client Start/Do function used (overlay field from Overlay.txt)
cltstfunc - [N] - Client Start function. This controls how the skill works when it is starting to cast, on the client side. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | StartAttack - Check that the weapon is not a "Missile Potion" item type and if the player has enough ammunition if it is a ranged weapon | |
2 | StartThrow - Check that the player has enough ammunition | |
3 | StartUnsummon - Check that the target is a monster owned by the player and that the monster's Pet Type has "unsummon" enabled (PetType.txt) | |
4 | StartLeftAttack - Return true | |
5 | AssStartPsychicHammer - Check that the target is a valid player or monster | |
6 | calc1 | AssStartDragonClaw - Validate that the target is a proper enemy, and use the skill's "calc1" field to save the number of kicks to be used by the skill |
7 | aurastate | AssStartCloakOfShadows - Check that the player does not already have the state |
8 | prgoverlay prgsound seqinput | AssStartBladeFury - Add the overlay and sound if the player does not have the "inferno" state. If the player does not have the "inferno" state, then add it. Otherwise set the player's animation sequence frame. |
9 | Param4 | AssStartDragonTail - Adjust the player's attack speed using the skill's parameter |
10 | AssStartDragonFlight - Validate that the target is an enemy monster or player | |
11 | AmaStartCheckQuantity - Check that the player has enough ammunition for the weapon | |
12 | AmaStartJab - Validate the skill and prepare to track the max targets to attack | |
13 | aurarangecalc calc1 calc3 | AmaStartStrafe - Use the skill's calculation fields to track the minimum and maximum number of shots. Use the skill's "aurarangecalc" value to count nearby valid targets. Have the caster unit face the first valid target found. |
14 | calc1 | AmaStartFend - Find at least an initial valid target and prepare to track the max targets to attack |
15 | prgoverlay prgsound | SorStartInferno - Add the overlay and sound if the player does not have the "inferno" state. If the player does not have the "inferno" state, then add it. Otherwise set the player's animation sequence frame. |
16 | aurarangecalc | SorStartTelekinesis - Check the range of the skill using the "aurarangecalc" value and ensure there is a valid monster or player to target in the area |
17 | SorStartHydra - Check for a valid area and ensure that the skill cannot be used in town | |
18 | cltmissilec | NecStartCurse - Validate and launch the client missile |
19 | cltmissilec | NecStartTeeth - Validate and create the missile to launch in a direction based on the cast position |
20 | NecStartRaiseSkeleton - Check that the target corpse is valid | |
21 | NecStartCExplosion - Check that there is a valid enemy corpse | |
22 | NecStartBonePrison - Check for a valid area and ensure that the skill cannot be used in town | |
23 | NecStartIronGolem - Check that the target item on the ground is valid and that it is identified | |
24 | cltmissilea cltmissileb cltmissilec | NecStartRevive - Validate that the target monster can be revived. Based on the monster's "OverlayHeight" value (MonStats2.txt), create 1 of the 3 client missiles in a random direction. If the monster's "OverlayHeight" value equals 1, then create "cltmissileb". If the monster's "OverlayHeight" value equals 3, then create "cltmissilec". |
25 | dosound a Param1 | PalStartCharge - If the player is in melee range of the target, then start an attack. If the caster unit is a player then play the "dosound a" sound. If the caster unit is a monster, then play the monster's skill sound (MonSounds.txt). Ensure that the target is not in an uninterruptable state. Adjust the movement speed of the caster unit. Set the caster unit's movement velocity speed percent so the skill's "Param1" value. Add movement parameters for the skill function. |
26 | BarStartFindHeart - Check that the target corpse is valid and has not been used yet | |
27 | cltcalc1 | BarStartDoubleSwing - Adjust the caster unit's attack speed based on the "cltcalc1" field |
28 | BarStartFindItem - Check that the target corpse is valid and has not been used yet | |
29 | aurarangecalc | BarStartLeap - Check that the caster unit is not in an uninterruptible state. If the caster unit is a monster, then find a valid location past the target unit. If the caster unit is not a monster, then find a valid location and ensure that the target location is not in town. Store the target location. The target range is controlled by the "aurarangecalc" field. |
30 | BarStartLeapAttack - Check that the caster unit is not in an uninterruptible state. If the player is in melee range of the target, then start an attack. Validate the target location, checking for proper player collision. Store the target location. | |
31 | BarStartWhirlwind - Check that the caster unit is not in an uninterruptible state. Modify the caster unit's collision to only collide with walls and objects. Adjust the caster unit's velocity. Add movement parameters for the skill function. Minimum whirlwind distance equals 5. | |
32 | cltmissilea cltmissileb | MonStartMaggotUp - Set the caster unit to be attackable and selectable. If the current area level is in Act 2, then create the "cltmissileb" missile, otherwise create the "cltmissilea" missile. Find a valid location, checking for collision, and then warp the caster unit to that location. |
33 | MonStartMaggotDown - Set the unit to no longer be attackable or selectable and remove its collision | |
34 | MonStartAndariel - Validate the target enemy and store the target unit's location for the skill function | |
35 | MonStartSwarmMove - Find a valid path with a proper distance, and set movement parameters | |
36 | MonStartNest - Validate the monster class, store the target location, and set the collision in the caster unit's location to be a monster collision | |
37 | MonStartSubmerge - Set the unit to no longer be attackable or selectable | |
38 | MonStartEmerge - Set the unit to be attackable or selectable | |
39 | MonStartResurrect - Unhide the unit | |
40 | cltcalc1 | MonStartDiabLight - Use the "cltcalc1" field to calculate a periodic delay for spawning missile and store that value in a parameter |
41 | MonStartDiabRun - Clear all function flags on the skill | |
42 | calc1 calc2 | MonStartMosquito - Validate the target enemy. Use the "calc1" and "calc2" fields as min and max values to randomly select a value to control a loop count, and store that loop count as a parameter for the skill function. |
43 | cltmissilea | MonStartCurse - Validate and launch the client missile |
44 | MonStartHellMeteor - Create the following missiles: "hellmeteordown", "hellmeteorball", "hellmeteorup", "hellmeteorball", "hellmeteorlaunch1", "hellmeteorlaunch2" | |
45 | aurastate cltoverlaya cltoverlayb | DruStartWereWolf - Add the "cltoverlayb" overlay to the caster unit if the unit has the "aurastate" state. Otherwise, add the "cltoverlaya" overlay to the caster unit. |
46 | aurastate aurastat1 cltmissilea prgsound | MonStartBaalTaunt - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile. Create the "baal taunt control" missile. Play the "prgsound" sound. |
47 | aurastate aurastat1 cltcalc1 cltmissilea cltmissileb cltmissilec | MonStartCatapultDropMissile - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Create the missile and use the "cltcalc1" value to set the missile's fall rate. |
48 | cltmissilea | MonStartTeleport2 - Create the missile at the target location |
49 | cltmissilea cltmissileb cltcalc1 | MonStartVines - Create the "cltmissilea" missile. Use the "cltcalc1" value to control the number of created "cltmissileb" missiles. |
50 | MonStartDeathSentry - Validate the target enemy and store the target unit's location for the skill function | |
51 | sMonStartFenrisRage - Validate the target enemy corpse. Store the target unit's location and unit class for the skill function. | |
52 | calc2 | MonStartInfernoSentry - Add the "inferno" state to the caster unit if it is not already added. Use the "calc1" field to control the animation frame tick and store the value for the skill function. |
53 | calc1 | AmaStartFend2 - Find at least an initial valid target and track the max targets to attack using the "calc1" value. Have the caster unit face the target unit. |
cltdofunc - [N] - Client Do function. This controls how the skill works when it finishes being cast, on the client side. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | DoAttack - If this is a ranged attack, then launch the client missile. Otherwise, apply damage to the target. | |
2 | DoThrow - If the weapon is a "Missile Potion" item type then launch a missile using the lob function. Otherwise, launch a missile with the normal linear function. | |
3 | AssDoPsychicHammer - Validate the "AssStartPsychicHammer" function | |
4 | AssDoDragonClaw - Check the number of attacks. Roll back the animation by 100%. | |
5 | prgcalc1 prgcalc2 prgcalc3 aurarangecalc aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssDoShockField - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Get the number of missiles using the "progcalc#" values, based on the number of progressive charges. Get the range by using the "aurarangecalc" field. Create the calculated number of missiles using the lob function. |
6 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssDoBladeFury - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Get the number of missiles using the "progcalc#" values, based on the number of progressive charges. Every periodic delay create a client missile and set the Z position to 15. If the caster unit has the "inferno" state, then repeat the sequence do frame. |
7 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssDoDragonTail - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Create the client missile and set the caster unit's mode event. |
8 | aurarangecalc cltmissilea cltmissileb | AssDoMindblast - Create the "cltmissilea" missile at the target location. Use the "aurarangecalc" field to calculate the area radius value of the missile. Set the missile's spawn class to "cltmissileb". |
9 | prgcalc1 prgcalc2 prgcalc3 aurarangecalc aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssDoMissileDisc - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Get the number of missiles using the "progcalc#" values, based on the number of progressive charges. Get the radius by using the "aurarangecalc" field. Create a ring of client missiles where the number of missile depends on the size of the radius value. |
10 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssClawsOfThunderLvl2 - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Create the client missile where its velocity is calculated based on the skill level instead of the missile level. |
11 | prgcalc1 prgcalc2 prgcalc3 aurarangecalc aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssClawsOfThunderLvl3 - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Get the number of missiles using the "progcalc#" values, based on the number of progressive charges. Use the "aurarangecalc" field to calculate the number of missiles. Create the client missiles using random pattern directions. |
12 | prgoverlay prgsound aurastate aurastat1 | AssTigerStrike - Based on the "progressive" flag, if the caster unit has the "aurastate" state, or if the "aurastat1" field value is greater than 0, determine whether to add the overlay and sound on the caster unit. If the caster unit has progressive charges, then increase the index of the overlay and the sound by 1 per charge and add those overlay and sounds instead. |
13 | prgoverlay prgsound aurastate aurastat1 | AssCobraStrike - Based on the "progressive" flag, if the caster unit has the "aurastate" state, or if the "aurastat1" field value is greater than 0, determine whether to add the overlay and sound on the target unit. If the caster unit has progressive charges, then increase the index of the overlay and the sound by 1 per charge and add those overlay and sounds instead. |
14 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssRoyalStrikeMeteorLvl1 - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Create the selected client missile at the target location. |
15 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssRoyalStrikeChaosIce - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Get the number of missiles using the "progcalc#" values, based on the number of progressive charges. Create the number of selected client missiles using randomized directions. |
16 | dosound a dosound b | AmaDoJab - On the frame event of type "Sound", if the caster unit is a player then play the "dosound a" sound, or if the caster unit is a monster than play the "dosound b" sound |
17 | cltmissilea cltmissileb calc1 calc2 | AmaDoMultipleShot - If the weapon class is not equal to a "bow" then use "cltmissileb", otherwise use "cltmissilea". Use the "calc1" value to determine the number of missiles to create. Use the "calc2" value to determine the activation frame of the missiles. Create the missiles. |
18 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AmaDoGuidedArrow - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Create the selected client missile with flags of either following a target or going to a location to be retargeted later. |
19 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | AmaDoChargedStrike - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Use the "calc1" value to determine the number of missiles to create. Create the missiles that move in a randomized path towards the direction. |
20 | aurarangecalc cltmissilea cltmissileb Param6 | AmaDoStrafe - Use "aurarangecalc" to determine the skill range. The max targets and current target are controlled by a saved parameter. If the weapon class is not equal to a "bow" then use "cltmissileb", otherwise use "cltmissilea". Use the "Param6" value to determine the percentage of animation frames to rollback. Find the next target to attack. Create a client missile, making the caster unit face the direction, and update the target count parameter. |
21 | Param2 | AmaDoFend - Use the weapon range to determine the skill range. Find the next valid target to attack and then update the maximum targets to attack next time. Use the "Param2" value to determine the percentage of animation frames to rollback. Based on the hit class, determine what weapon sound to play. |
22 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 calc2 | AmaDoLightningStrike - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Use the "calc1" value to determine the range of the missile to find the next target. Use the "calc2" value to determine the maximum number of chain hits for the missile. Create the missile targeting the target unit. |
23 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | SorDoChargedBolt - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Use the "calc1" value to determine the number of missiles to create. Create the missiles that move in a randomized path towards the direction. |
24 | cltmissilea cltmissileb calc1 | SorDoInferno - Randomly select between either "cltmissilea" or "cltmissileb". Use the "calc1" value to determine the range of the missile. Create the client missile and adjust the caster unit's animation frames. If the caster unit still has the "inferno" state, then repeat the animation do frame. |
25 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec cltcalc1 | SorDoFrostNova - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Use the "cltcalc1" value to determine the additional velocity to add to the missiles created. Create a ring of missiles. |
26 | cltmissilea calc1 | SorDoFirewall - Validate the target location. Validate that the missile create has a missile linked in its "SubMissile1" field (Missiles.txt). Use the "calc1" value to determine the maximum number of fire wall spawning missiles. Create 2 of the "cltmissilea" missiles thar are launched in opposite directions. Create 1 of the "cltmissilea" missile's sub missile. |
27 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec cltcalc1 | SorDoChainLightning - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Use the "calc1" value to determine the maximum number of chain hits for the missile. Create the missile targeting the target unit and update the number of chain hits in a parameter. |
28 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | SorDoMeteor - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Validate that the target location is valid and then create the missile. |
29 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | SorDoFrozenOrb - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch the selected client missile. |
30 | aurarangecalc cltmissilea | NecDoCurse - Use "aurarangecalc" to determine the radius of the skill and always subtract a value of 3 (Min value = 2). Create the client missile at the cursor location and also create a light at the location with RGB values equal to 255, 0, 0. |
31 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | NecDoRaiseSkeleton - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch the selected client missile facing the directions saved in the parameters. |
32 | cltmissilea cltmissileb cltmissilec tgtsound | NecDoCExplosion - Create "cltmissilea" at the target location facing a random direction. If the target monster is "small" then spawn 1 "cltmissilea". If the target monster is "large" then spawn 3 "cltmissilea" missiles in a radius value of 3, and if that missile has a "SubMissile1" value, then also spawn 4 sub missiles in a radius value of 2. If the target monster is neither "small" nor "large", then spawn 2 "cltmissilea" missiles in a radius value of 2, and spawn 3 of its sub missiles in a radius value of 1. (Missiles.txt and MonStats2.txt). Spawn 1 "cltmissileb" normally. Spawn 1 "cltmissilec" missile with its level equal to 2. If there is no target enemy, then play the "tgtsound" sound. |
33 | cltmissilea cltmissileb cltmissilec tgtsound | NecDoPoisonExplosion - Create "cltmissilea" at the target location facing a random direction. Spawn an inner and outer radial ring of "cltmissileb" missiles, based on the missile's "Param1" and "Param2" values (Missiles.txt). Spawn 1 "cltmissilec" missile with its level equal to 2. If there is no target enemy, then play the "tgtsound" sound. |
34 | cltmissilea cltcalc1 | PalDoSacrifice - Validate the target enemy and spawn the client missile in a random direction, where the missile can receive additional range that is randomly selected between 0 and the "cltcalc1" value. |
35 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | PalDoBlessedHammer - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch the selected client missile with a spiral path. |
36 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | PalDoFistOfHeavens - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch the selected client missile and save the target unit type and ID as parameters. |
37 | PalDoCharge - Setup a sequence of frames to play the animation. If the caster unit is a player or monster, then play its attack sound at the sound frame event. Set the unit's animation and frame length and order the unit to move to a location or the previously targeted unit. If the player does not need to move, then attack the target or a nearby target. | |
38 | BarDoFindHeart - If the target is valid, then set the mode event and create blood missiles from the monster ("bleed" in MonStats2.txt) | |
39 | BarDoDoubleSwing - If the caster unit's animation sequence frame is less than 6, then play the weapon sound and have the character turn to face the target. Otherwise, have the caster unit find a proper target and face that target. | |
40 | BarDoFindItem - If the target is valid ("soft" MonStats2.txt), then set the mode event and create blood missiles from the monster ("bleed" in MonStats2.txt) | |
41 | cltmissilea cltmissileb cltmissilec | BarDoGrimWard - If the target is valid ("soft" MonStats2.txt) and there is valid space at that target's location, then create one of the following missiles. By default, use the "cltmissilea" missile. If the monster is large ("large" in MonStats2.txt), then use the "cltmissilec" missile. If the monster is small ("large" in MonStats2.txt), then use the "cltmissileb" missile. Also, always create a "corpseexplosion" missile. |
42 | BarDoDoubleThrow - Check that the attacking weapon is throwable and shoot a missile based on the weapon's missile class. If the weapon's item type is a "Missile Potion" (ItemTypes.txt), then use the lobbing missile launch function, otherwise use the normal linear missile launch function. | |
43 | BarDoLeap - Check different flags and parameters to determine when to stop leaping. There are special cases to handle the "sandleadper1" and "ancientbarb1" monsters. | |
44 | BarDoLeapAttack - Check different flags and parameters to determine when to stop leaping. After leaping, if there is a valid target, then attack the target. | |
45 | BarDoWhirlwind - Continue to whirlwind based until at reaching the target location or if the skill flags have been changed. | |
46 | MonDoMagottEgg - Set the unit's animation sequence rate to 0 | |
47 | MonDoMaggotDown - When the unit's animation frame reaches 0, then set the unit's animation sequence rate to 0 | |
48 | cltmissilea | MonDoAndariel - Based on the unit's current direction, launch the missile in one of 8 directions |
49 | calc1 calc2 | MonDoSwarmMove - Set the unit's animation sequence start and stop frames based on the skill's calculation values |
50 | MonDoNest - Remove the monster collision at the target location | |
51 | cltmissilea | MonDoGargoyleTrap - Launch the missile in one of 4 directions. |
52 | MonDoSubmerge - This equals the "MonDoMaggotDown" function (Code = 47) | |
53 | aurarangecalc cltmissilea cltcalc1 | MonDoFetishAura - Create a disc of missiles where "aurarangecalc" controls the disc radius size (Minimum value = 1) and "cltcalc1" controls the density of missiles created (higher value means less missiles). |
54 | cltmissilea cltmissileb calc1 | sMonDoFetishInferno - Randomly create 2 of either "cltmissilea" or "cltmissileb" missiles. Use "calc1" to determine the range of the missile if it is greater than 0, otherwise use the missile's "Param2" value (Missiles.txt). |
55 | cltmissilea calc1 calc2 | MonDoPrimePoisonNova - Creates 8 missiles in different directions using a velocity set by the missile's "Param1" value (Missiles.txt). Then uses "calc2" to control how many additional missiles to create using a velocity set by the missile's "Param2" value. Uses "calc1" to set the missile's subloops. |
56 | cltmissilea cltcalc1 calc1 | MonDoDiabLight - Create the missile at an interval controlled by the "cltcalc1" value. Use "calc1" to determine the range of the missile if it is greater than 0, otherwise use the missile's "Param2" value (Missiles.txt). Also use the monster's inferno values to set the animation frames (MonStats2.txt) |
57 | cltmissilea calc1 | MonDoFingerMageSpider - Create the missile with its subloops controlled by "calc1" and have that missile positioned and face the caster unit |
58 | cltmissilea calc1 | MonDiabWallMaker - Create a number of missiles controlled by the "calc1" value where their pathing and direction is randomized |
59 | calc1 Param1 Param2 Param3 Param4 Param5 Param6 | MonDoDiabRun - Modifies the caster unit's movement speed by a percentage controlled by "calc1" and controls its animations to adhere to this run mode. The 6 parameter values controls the run animation's stop frame length, stop event frame, start event frame, start frame length, loop repeat event frame, loop frame length, and loop start event frame. |
60 | cltmissilea calc1 | MonDoDesertTurret - Fire a number of missiles controlled by the "calc1" value that are directed in 8 possible directions |
61 | cltmissilea | MonDoArcaneTower - Fire missiles in all possible directions with particles |
62 | Param1 | MonDoMosquito - Check that the caster unit cannot melee the target and then repeat the animation for a number of loops saved in a parameter, where "Param1" controls the frame to repeat the animation. |
63 | cltmissilea cltmissileb | MonDoRegurgitatorEat - Create 1 "cltmissilea" missile in a random direction. Create 5 "cltmissileb" missiles in a radius value of 4. |
64 | MonDoQueenDeath - Repeatedly loop the animation using hardcoded frame counts, and then set the unit to Dead mode when finished | |
65 | aurarangecalc cltmissileb | MonDoCurseRadius - Find a valid target and create a "cursecenter" missile. Then create the "cltmissileb" missile with a radius controlled by "aurarangecalc" |
66 | MonDoHireFireMissile - Use the lob launch function or normal linear launch function when creating the missile | |
67 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | DruDoFirestorm - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch a number of selected client missiles, controlled by the "calc1" value. These missiles has randomized directions and pathing, and they have an increased animation rate. |
68 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | DruDoTwister - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch a number of selected client missiles, controlled by the "calc1" value. These missiles start with a linear direction and then change to randomized pathing. |
69 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | DruDoTornado - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch a number of selected client missiles, controlled by the "calc1" value. These missiles start with a linear direction and then change to randomized pathing, and they have an increased animation rate. |
70 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | MonDoWakeofFire - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch the selected missile in the opposite direction. |
71 | cltmissilea cltmissileb cltcalc1 cltcalc2 | MonDoInferno - Randomly create 1 of either "cltmissilea" or "cltmissileb" missiles. Use "cltcalc1" to control the missile's Z offset. Use "cltcalc2" to control add to the missile's range, which is also determined by the missile's "Param2" value (Missiles.txt) |
72 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec cltcalc1 | MonDoImpFireBall - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch the missile to the target location. Use the "cltcalc1" value to control the missile's Z offset value. |
73 | cltmissileb | MonDoTeleport2 - Create the missile at the caster unit's location with its skill level set to 1 |
74 | cltmissileb | MonDoTeleport3 - Create the missile at the caster unit's location with its skill level set to 1. Also create a particle and add it tothe target unit. |
75 | Param1 Param2 Param3 Param4 | MonDoSiegeBeastStomp - Shake the camera screen, where the parameters control the magnitude, shake build up duration, shake loop duration, and shake fade duration (controlled in frames where 25 frames = 1 second). |
76 | cltmissilea cltmissileb calc1 | MonDoDeathMauler - Continuously create "cltmissileb" missiles as the trail missile's using the missile's "Param1" and "Param2" values (Missiles.txt) to control the frequency and range/frames of the missile's creation. Create the "cltmissilea" missile with an animation rate controlled by "calc1", set this missile to not draw, and update its range and activation frame delay based on the "cltmissileb" missile's "Param1" and "Param2" values. |
77 | cltmissilea cltmissileb cltcalc1 calc1 | MonDoInfernoSentry - Randomly create 1 of either "cltmissilea" or "cltmissileb" missiles. Use "cltcalc1" to control the missile's Z offset. Use "calc1" to control the missile range duration. Repeat the Do frame while the caster unit has the "inferno" state. |
78 | cltmissilea cltmissileb prgsound | MonDoDeathSentry - Create the "cltmissilea" missile at the target location and play the "prgsound" sound. Then create the "cltmissileb" missile at the target location. |
79 | cltmissilea | MonDoFenrisRage - Create the "cltmissilea" missile at the target location |
80 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 calc2 | MonDoBaalInferno - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Create a number of the selected missiles where "calc1" controls the number of missiles created, and "calc2" controls the range duration of the missiles. Repeat the Do frame while the caster unit has the "inferno" state. |
81 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | MonDoBaalCold - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Launch the selected missile to the target location. |
82 | Param5 Param6 | MonStartBaalCExplode - Use "Param5" and "Param6" to calculate the baseline and increase per skill level change in the radius to find a target. Search for valid dead targets and create a "baalcorpseexplodedelay" missile for each target found. |
83 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 cltmissilea cltmissileb cltmissilec aurarangecalc Param2 | ApplyRoyalStrikeLvl2 - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Get the number of missiles using the "progcalc#" values, based on the number of progressive charges, and if they are equal to or less than 0, then use the "aurarangecalc" value instead. Create the missile, using the "Param2" value to control the number of chain hits that the missile bounces. |
84 | cltmissilea prgoverlay | SorDoThunderStorm - Launch the missile at the target's position, with a starting Z position equal to 280 and a starting velocity equal to -40. Also add the overlay to the target unit. |
85 | ItemDoOpenWounds - Create a blood missile from the unit every 5 frames ("bleed" in MonStats2.txt) | |
86 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec aurarangecalc | PalDoSanctuary - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Use the "aurarangecalc" value to determine the radius to randomly create missiles and also the number of missiles to create. |
87 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec cltcalc1 cltcalc2 cltcalc3 | SorApplyShiverArmor - Based on the "progressive" flag, the "aurastate" field, or the "aurastat1" field, validate the "cltmissilea" missile or use the other missiles based on the "aurastat1" value. Create the selected missile using the lob function. Use "cltcalc1" to control the delay between creating missiles. Use "cltcalc2" to control the radius to create the missile. Use "cltcalc3" to control the vertical height of the missile when it is created. |
88 | MonApplyAttached - Attach the source unit on the caster unit. | |
89 | cltmissilec cltmissiled cltcalc1 | MonDoVineBeast - Validate that the caster unit is a monster type. Validate that the skill used is the "Vine Attack" skill and get its stats, otherwise use a default level 1 "Vine Attack" skill. Use the "cltcalc1" value to determine the frame delay between creating missiles and also the minimum distance between missiles created. If the current mode of the unit is "Walk" then randomly choose between creating the "cltmissilec" or "cltmissiled" missile. If the current mode of the unit is "Neutral" then kill any existing old missile and create the "cltmissiled". |
90 | cltmissilea cltmissileb cltmissilec prgsound cltcalc1 cltcalc2 | DruDoHurricane - Play the "prgsound" sound and stop playing it if the caster unit is in town. Use "cltcalc1" to how many sets of 3 missiles to create at a time, at a random height. Randomly choose between one of the 3 missiles to create each time, and use "cltcalc2" to control the maximum Z height position of the missile. |
91 | cltmissilea cltmissileb | DruDoVolcano - Create both missiles at the valid target position |
92 | cltmissilea cltmissileb cltcalc1 cltcalc2 cltcalc3 aurarangecalc | DruDoArmageddon - Create both missiles with a negative fall rate and slide rate. Use the "aurarangecalc" value to control a radius value, but this value is not used. Use the "cltcalc1" value to control the frame count for determining the starting height and offset. Use the "cltcalc2" value to control the missile fall rate per frame. Use the "cltcalc3" value to control the missile slide rate per frame. |
93 | cltmissileb | MonDoCorpseCycler - Validate the target unit, and create the "cltmissileb" missile on the target and 3 blood missiles ("bleed" in MonStats2.txt) |
94 | cltmissilea | MonDoDoomKnightMissile - Create the "cltmissilea" using either the lob function or the normal linear function, depending on the "lob" flag. Also select the missile or up to 3 index values higher, depending on the monster's graphics variation for the "Special 3" component variation. |
95 | cltmissilea | MonDoNecroMageMissile - Create the "cltmissilea" using either the lob function or the normal linear function, depending on the "lob" flag. Also select the missile or up to 3 index values higher, depending on the monster's graphics variation for the "Special 4" component variation. |
96 | aurarangecalc aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | SorDoChainLightning2 - Based on the "progressive" flag or the "aurastate" field, create the "cltmissilea" missile. Otherwise, use one of the 3 client missiles based on the "aurastat1" value. Create the missile and use the "calc1" value to set the number of chain hits. |
cltstopfunc - [N] - Client Stop function. This controls how the skill cleans up after ending. This uses a code value to call a function, affecting how certain fields are used. Only used for "Whirlwind"
Code | Parameters | Description |
0 | Do nothing | |
1 | SkillBarRemoveWhirlwind - Handles changing the collision and pathing of the caster, and also stops the whirlwind sound. |
cltprgfunc1 - [N] - Controls which Client Do function is used when the skill is executed while having a progressive charge number equal to 1, 2, and 3, respectively. (uses cltdofunc values)
cltmissile - [O] - Used as a parameter for controlling what main missile is used for the client functions used (Missile field from Missiles.txt)
cltmissilea - [O] - Used as a parameter for controlling what secondary missile is used for the client functions used (Missile field from Missiles.txt)
cltcalc1 - [C] - Use as a possible parameter for controlling values for the client functions
warp - [B] - If equals 1 and the skill uses a function that involves warping/teleporting, then check for a scene transition loading screen, if necessary. If equals 0, then ignore this
immediate - [B] - If equals 1 and the skill has a periodic function, then immediately perform the skill's function when the periodic skill is activated. If equals 0, then wait until the skill's first periodic delay before performing the skill's function
enhanceable - [B] - If equals 1, then the skill will be included in the plus to all skills item modifier. If equals 0, then the skill will not be included in the plus to all skills item modifier
attackrank - Controls the skill's AI score value for determining what is the best target for the AI. The higher the value, then the more likely the AI will select a target with this skill equipped
noammo - [B] - If equals 1, then the skill will not check that weapon's ammo when performing an attack. This relies on the Shoots field from ItemTypes.txt. If equals 0, then the weapon will consume its ammo when being used by the skill
range - Determines how the unit uses the skill, which affects the weapon requirements and the type of attack used
Code | Description |
none | No restrictions to use the skill |
h2h | This is a melee skill, which requires a melee weapon |
rng | This is a ranged skill, which requires a ranged weapon |
both | This is both a melee and ranged skill, which can use either a melee or ranged weapon |
loc | This is a location based skill, which ignores the weapon equipped and instead uses the player's location |
weapsel - [N] - If the unit can dual wield weapons, then this field will control how the weapons are used for the skill
Code | Description |
0 | Use the Left or Right Hand weapon |
1 | Use the Left Hand weapon |
2 | Use the Left and/or Right Hand weapon |
3 | Always use both weapons |
4 | Ignore the weapon used |
itypea1 - [O] - Controls what Item Types are included, or allowed, when determining if this skill can be used (Code field from ItemTypes.txt)
etypea1 - [O] - Controls what Item Types are excluded, or not allowed, when determining if this skill can be used (Code field from ItemTypes.txt)
itypeb1 - [O] - Controls what alternate Item Types are included, or allowed, when determining if this skill can be used (Code field from ItemTypes.txt). This acts as a second set of Item Types to check
etypeb1 - [O] - Controls what alternate Item Types are excluded, or not allowed, when determining if this skill can be used (Code field from ItemTypes.txt). This acts as a second set of Item Types to check
anim - [O] - Controls the animation mode that the player character will use when using this skill. Setting the mode to Sequence (SQ) will cause the player character to play a time controlled animation sequence, utilizing certain sequence fields. Referenced from the Token column in PlrMode.txt
seqtrans - [O] - Uses the same inputs as the anim field. If the "anim" field equals SQ (Sequence) and this field equals SC (Cast), then the sequence animation speed can be modified by the faster cast rate stat modifier
monanim - [O] - Controls the animat on mode that the monster will use when using this skill. This is similar to the anim field except with monster units using the skill instead of player units. Referenced from the Token column in MonMode.txt
seqnum - [N] - If the unit is a player and the anim used for the skill is a Sequence, then this field will control the index of which sequence animation to use. These sequences are specifically designed for certain skills, and each sequence has a set number of frames using certain animations.
Code | Description |
0 (or empty) | Do nothing |
1 | Jab |
2 | Sacrifice |
3 | Chastise |
4 | Charge |
5 | Defiance |
6 | Inferno |
7 | Strafe |
8 | Impale |
9 | Fend |
10 | Whirlwind |
11 | Double Swing |
12 | Lightning |
13 | Leap |
14 | Leap Attack |
15 | Double Throw |
16 | Tiger Fist |
17 | Projection |
18 | Arctic Blast |
19 | Triple Kick |
20 | Dragon Breath |
21 | Dragon Flight |
22 | Druid Unmorph |
23 | Assassin Blade Fury |
seqinput - [N] - For skills that can repeat, this controls the number of frames to wait before the "Do" frame in the sequence. This acts as a delay in frames (25 Frames = 1 second) to wait within the sequence animation before it is allowed to be cast again or for looping back to the start of the sequence, such as for the Sorceress Inferno skill
durability - [B] - If equals 1 and when the player character ends an animation mode that was not Attack 1, Attack 2, or Throw, then check the quantity and durability of the player's items to see if the valid weapons are out of ammo or are broken. If equals 0, then ignore this
UseAttackRate - [B] - If equals 1, then the current attack speed should be updated after using the skill, relative to the "attackrate" stat (ItemStatCost.txt), and if the skill was an attacking skill. If equals 0, then the attack speed will not be updated after using the skill
LineOfSight - [N] - Controls the skill's collision filters for valid target locations when it is being cast
Code | Description |
0 | No collision filter |
1 | Missile Barrier |
2 | Player Path - Walls, no pathing, objects, doors, no player pathing |
3 | Player Monster - Monsters, Players |
4 | Player Flying - Missile barriers, doors |
5 | Radial Barrier - Missile barriers, doors, walls |
TargetableOnly - [B] - If equals 1, then the skill will require a target unit in order to be used. If equals 0, then ignore this
SearchEnemyXY - [B] - If equals 1, then when the skill is cast on a target location, it will automatically search in different directions in the target area to find the first available enemy target. If equals 0, then ignore this. This field can be overridden if the SearchEnemyNear field is enabled
SearchEnemyNear - [B] - If equals 1, then when the skill is cast on a target location, it will automatically find the nearest enemy target. If equals 0, then ignore this
SearchOpenXY - [B] - If equals 1, then automatically search in a radius of size 7 in around the clicked target location to find an available unoccupied location to use the skill, testing for collision. If equals 0, then ignore this. This field can be overridden if the SearchEnemyNear or SearchEnemyXY field is enabled
SelectProc - [N] - Uses a function to check that the target is a corpse with various parameters before validating the usage of the skill
Code | Description |
0 | Do nothing |
1 | CorpseExplode - Check that the target is a corpse |
2 | RaiseSkeleton - Check that the target is a monster corpse, and that the corpse was a unit that has a velocity (if the unit does not move, then the corpse cannot be used) |
3 | Revive - Use the RaiseSkeleton function (Code = 2) and that the monser has a switchable AI |
4 | HeartMonster - Check that the target is a monster corpse and that the monster has the "soft" flag enabled (MonStats2.txt) |
5 | ItemMonster - Check that the target is a monster corpse |
6 | WardMonster - Check that the target is a monster corpse and that the monster has the "soft" flag enabled (MonStats2.txt) |
TargetCorpse - [B] - If equals 1, then the skill is allowed to target corpses. If equals 0, then skill cannot target corpses
TargetPet - [B] - If equals 1, then the skill is allowed to target pets (summons and mercenaries). If equals 0, then the skill cannot target pets
TargetAlly - [B] - If equals 1, then the skill is allowed to target ally units. If equals 0, then the skill cannot target ally units
TargetItem - [B] - If equals 1, then the skill is allowed to target items on the ground. If equals 0, then the skill cannot target items
AttackNoMana - [B] - If equals 1, then then when the caster does not have enough mana to cast the skill and attempts to use the skill, the caster will default to using the Attack skill. If equals 0, then attempting to use the skill without enough mana will do nothing
TgtPlaceCheck - [B] - If equals 1, then check that the target location is available for spawning a unit, testing collision. If equals 0, then ignore this. This is only used for skills that monsters use to spawn new units
KeepCursorStateOnKill - [B] - If equals 1, then the mouse click hold state will continue to stay active after killing a selected target. If equals 0, then after killing the target, the mouse click hold state will reset
ContinueCastUnselected - [B] - If equals 1, then while the mouse is held down and there is no more target selected, then the skill will continue being used at the mouse's location. If equals 0, then while the mouse is held down and there is no more target selected, then the player character will cancel the skill and move to the mouse location
ClearSelectedOnHold - [B] - If equals 1, then when the mouse is held down, the target selection will be cleared. If equals 0, then ignore this
ItemEffect - [N] - Uses a Server Do function ("srvdofunc") for handling how the skill is used when it is triggered by an item, on the server side
ItemCltEffect - [N] - Uses a Client Do function ("cltdofunc") for handling how the skill is used when it is triggered by an item, on the client side
ItemTgtDo - [B] - If equals 1, then use the skill from the enemy target instead of the caster. If equals 0, then ignore this
ItemTarget - [N] - Controls the targeting behavior of the skill when it is triggered by an item.
ItemUseRestrict – [B] - If equals 1, then use the state restriction defined in the restrict field from States.txt when being triggered by an item.
Code | Description |
0 (or empty) | Default to targeting the attacker |
1 | Target the caster |
2 | Target a random location in a radius with a size of 20. Also tests collision. |
3 | Target a random nearby corpse |
4 | Target the attacker, and if that attacker is not found then target a previous attacker or the previous attacker's location |
ItemCheckStart - [B] - If equals 1, then use the skill's srvstfunc when the skill is trigged by an item. If equals 0, then the skill's Server Start function is ignored
ItemCltCheckStart - [B] - If equals 1, then when the skill is triggered by an item, and if the target is dead and the skill has a cltstfunc, then add the "corpse_noselect" to the target. If equals 0, then ignore this
ItemCastSound - [O] - Play a sound when the skill is used by an item event. (Sound field from Sounds.txt)
ItemCastOverlay - [O] - Add a cast overlay when the skill is used by an item event. (overlay field from Overlay.txt)
skpoints - [C] - Controls the number of Skill Points needed to level up the skill
reqlevel - [N] - Minimum character level required to be allowed to spend Skill Points on this skill
maxlvl - [N] - Maximum base level for the skill from spending Skill Points. Skill levels can be increased beyond this through item modifiers
reqstr - [N] - Minimum Strength attribute required to be allowed to spend Skill Points on this skill
reqdex - [N] - Minimum Dexterity attribute required to be allowed to spend Skill Points on this skill
reqint - [N] - Minimum Intelligence attribute required to be allowed to spend Skill Points on this skill
reqvit - [N] - Minimum Vitality attribute required to be allowed to spend Skill Points on this skill
reqskill1 - [O] - Points to a Skill field to act as a prerequisite skill. The prerequisite skill must be least base level 1 before the player is allowed to spend Skill Points on this skill.
restrict - [N] - Controls how the skill is used when the unit has a restricted state (restrict field from States.txt)
Code | Description |
0 | None - The skill cannot be used when the unit has a restricted state |
1 | Any - The skill can be used in when the unit has any restricted state |
2 | State Only - The skill can only be used when the unit has a restricted state ("State1" to "State3") |
3 | Pop State - The skill can be used at any time but when used, it will remove the unit's restrict States |
State1 - [O] - Points to a state field from States.txt. Used as parameters for the restrict field to control what specific States will restrict the usage of the skill
localdelay - [C] - Controls the Casting Delay duration for this skill after it is used (25 frames = 1 second)
globaldelay - [C] - Controls the Casting Delay duration for all other skills with Casting Delays after this skill is used (25 frames = 1 second)
leftskill - [B] - If equals 1, then the skill will appear on the list of skills to assign for the Left Mouse Button. If equals 0, then the skill will not appear on the Left Mouse Button skill list
rightskill - [B] - If equals 1, then the skill will appear on the list of skills to assign for the Right Mouse Button. If equals 0, then the skill will not appear on the Right Mouse Button skill list
repeat - [B] - If equals 1 and the skill has no "anim" mode declared, then on the client side, the unit's mode will repeat its current mode (this can also happen if the unit has the "inferno" state). If equals 0, then the unit will have its mode set to Neutral when starting to use the skill
alwayshit - [B] - If equals 1, then skills that rely on attack rating and defense will ignore those stats and will always hit enemies. If equals 0, then ignore this
usemanaondo - [B] - If equals 1, then the skill will consume mana on its do function instead of its start function. If equals 0, then the skill will consume mana on its start function, which is the general case for skills
startmana - [N] - Controls the required amount of mana to start using the skill. This can control skills that reduce in mana cost per level to not fall below this amount. (srvst routine)
minmana - [N] - Controls the minimum amount of mana to use the skill. This can control skills that reduce in mana cost per level to not fall below this amount. (srvdo routine)
manashift - [N] - This acts as a multiplicative modifier to control the precision of the mana cost after calculating the total mana cost with the mana and lvlmana fields. Mana is calculated in 256ths in code which equals 8 bits. This field acts as a bitwise shift value, which means it will modify the mana value by the power of 2. For example, if this value equals 5 then that means divide the mana value of 256ths by 2^5 = 32 (or multiply the mana by 32/256). A value equal to 8 means 256/256 which means that the mana of 256ths value is not shifted
mana - [N] - Defines the base mana cost to use the skill at level 1
lvlmana - [N] - Defines the change in mana cost per skill level gained
interrupt - [B] - If equals 1, then the casting the skill will be interruptible such as when the player is getting hit while casting a skill. If equals 0, then the skill should be uninterruptible
InTown - [B] - If equals 1, then the skill can be used while the unit is in town. If equals 0, then the skill cannot be used in town
aura - [B] - If equals 1, then the skill will be classified as an aura, which will make the skill execute its function periodically (perdelay), based on the if the aurastate state is active. Aura skills will also override a preexisting state if that state matches the skill's "aurastate" state. If equals 0, then ignore this
periodic - [B] - If equals 1, then the skill will execute its function periodically (perdelay), based on the if the aurastate state is active. If equals 0, then ignore this
perdelay - [C] - Controls the periodic rate that the skill continuously executes its function. Minimum value equals 5. This field requires periodic or aura field to be enabled
finishing - [B] - If equals 1, then the skill will be classified as a finishing move, which can affect how progressive charges are consumed when using the skill and how the skill's description tooltip is displayed. If equals 0, then ignore this
prgchargestocast - [N] - Controls how many progressive charges are required to cast the skill
prgchargesconsumed - [N] - Controls how many progressive charges are consumed when the skill attack hits an enemy
passive - [B] - If equals 1, then the skill will be treated as a passive, which can mean that the skill will not show up in the skill selection menu and will not run a server do function. If equals 0, then the skill is an active skill that can be used
progressive - [B] - If equals 1, then the skill will use the progressive calculations to act as a charge-up skill that will add charges. This is only used for certain skill functions and will generally require the usage of the prgcalc1 and aurastat fields. If equals 0, then ignore this
scroll - [B] - If equals 1, then the skill can appear as a scroll version in the skill selection UI, if the skill allows for the scroll mechanics and if the player has the skill's scroll item in the inventory. If equals 0, then ignore this
calc1 - [C] - It is used as a possible parameter for skill functions or as a numeric input for other calculation fields
Param1 - [N] - It is used as a possible parameter for skill functions or as a numeric input for other calculation fields
InGame - [B] - If equals 1, then the skill is enabled to be used in-game. If equals 0, then the skill will be disabled in-game
ToHit - [N] - Baseline bonus Attack Rating that is added to the attack when using this skill at level 1
LevToHit - [N] - Additional bonus Attack Rating when using this skill, calculated per skill level
ToHitCalc - [C] - Calculates the bonus Attack Rating when using the skill. This will override the ToHit and LevToHit fields if it is not blank
ResultFlags - [N] - Controls different flags that can affect how the target reacts after being hit by the missile. Uses an integer value to check against different bit fields by using the "&" operator. For example, if the value equals 5 (binary = 101) then that returns true for both the 4 (binary = 100) and 1 (binary = 1) bit field values. Referenced by the Bit Field Value of the Result Flags Table
HitFlags - [N] - Controls different flags that can affect the damage dealt when the target is hit by the missile. Uses an integer value to check against different bit fields by using the "&" operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values. Referenced by the Bit Field Value of the Hit Flags Table
HitClass - [N] - Defines the skill's damage routines when hitting, mainly used for determining hit sound effects and overlays. Uses an integer value to check against different bit fields by using the "&" operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values. There are binary masks to check between Base Hit Classes and Hit Class Layers, which can distinguish bewteen overlays or sounds are displayed.
Bit Field Value | Binary Equivalent Value | Description |
Base Hit Classes | ||
0 | 00000000 | None |
1 | 00000001 | Hand to Hand |
2 | 00000010 | One Handed Swing Small |
3 | 00000011 | One Handed Swing Large |
4 | 00000100 | Two Handed Swing Small |
5 | 00000101 | Two Handed Swing Large |
6 | 00000110 | One Handed Thrust |
7 | 00000111 | Two Handed Thrust |
8 | 00001000 | Club |
9 | 00001001 | Staff |
10 | 00001010 | Bow |
11 | 00001011 | Crossbow |
12 | 00001100 | Claw |
13 | 00001101 | Do Overlay |
Hit Class Layers | ||
16 | 00010000 | Double Layer |
32 | 00010100 | Fire Layer |
48 | 00011110 | Cold Layer |
64 | 01000000 | Lightning Layer |
80 | 01010000 | Poison Layer |
96 | 01100000 | Stun Layer |
112 | 01110000 | Bash Layer |
128 | 10000000 | Thorns Layer |
144 | 10010000 | Sanctuary Layer |
160 | 10100000 | Silent Voice Layer |
176 | 10110000 | Goo Layer |
Kick - [B] - If equals 1, then a separate function is used to calculate the physical damage dealt by the skill, ignoring the following damage fields. This function will factor in the player character's Strength and Dexterity attributes (or Monster's level) to determine the baseline damage dealt. If equals 0, then ignore this
HitShift - [N] - Controls the percentage modifier for the skill's damage. This value cannot be less than 0 or greater than 8. This is calculated in 256ths.
Value | Description | Percentage |
8 | 256/256 | 100% |
7 | 128/256 | 50% |
6 | 64/256 | 25% |
5 | 32/256 | 12.5% |
4 | 16/256 | 6.25% |
3 | 8/256 | 3.125% |
2 | 4/256 | 1.5625% |
1 | 2/256 | .78125% |
0 | 1/256 | .390625% |
SrcDam - [N] - Controls the percentage modifier for how much weapon damage is transferred to the skill's damage (Out of 128). For example, if the value equals 64, then 50% (64/128) of the weapon's damage will be added to the skill's damage
MinDam - [N] - Minimum baseline physical damage dealt by the skill
MinLevDam1 - [N] - Controls the additional minimum physical damage dealt by the skill, calculated using the leveling formula between 5 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number
MaxDam - [N] - Maximum baseline physical damage dealt by the skill
MaxLevDam1 - [N] - Controls the additional maximum physical damage dealt by the skill, calculated using the leveling formula between 5 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number
DmgSymPerCalc - [C] - Determines the percentage increase to the physical damage dealt by the skill
EType - [O] - Defines the type of elemental damage dealt by the skill. If this field is empty, then the related elemental fields below will not be used. Referenced by the Code value of the Elemental Types Table
EMin - [N] - Minimum baseline elemental damage dealt by the skill
EMinLev1 - [N] - Controls the additional minimum elemental damage dealt by the skill, calculated using the leveling formula between 5 level thresholds of the skill's current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number
EMax - [N] - Maximum baseline elemental damage dealt by the skill
EMaxLev1 - [N] - Controls the additional maximum elemental damage dealt by the skill, calculated using the leveling formula between 5 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field
EDmgSymPerCalc - [C] - Determines the percentage increase to the total elemental damage dealt by the skill
ELen - [N] - The baseline elemental duration dealt by the skill. This is calculated in frame lengths where 25 Frames = 1 second. These fields only apply to appropriate elemental types with a duration
ELevLen1 - [N] - Controls the additional elemental duration added by the skill, calculated using the leveling formula between 3 level thresholds of the missile's current level. The level thresholds are levels 2-8, 9-16, 17 and beyond. These 3 level thresholds correlate to each field number. These fields only apply to appropriate elemental types with a duration
ELenSymPerCalc - [C] - Determines the percentage increase to the total elemental duration dealt by the skill
aitype - [N] - Controls what the skill's archetype for how the AI will handle using this skill. This mostly affects the mercenary AI and Shadow Warrior AI, but some types are used for general AI.
Code | Description |
0 | None |
1 | Buff |
2 | Debuff |
3 | Summon |
4 | Melee |
5 | Ranged |
6 | Aura |
7 | Teleport |
8 | Heal |
9 | Resurrect |
10 | Passive |
11 | Area Range |
12 | Steal |
13 | Move Attack |
aibonus - [N] - This is only used with the Shadow Master AI. This value is a flat integer rating that gets added to the AI's parameters when deciding which skill is most likely to be used next. The higher this value, then the more likely this skill will be used by the AI
cost mult - [N] - Multiplicative modifier of an item's gold cost, only when the item has a stat modifier with this skill. This will affect the item's buy, sell, and repair costs (Calculated in 1024ths)
cost add - [N] - Flat integer modification of an item's gold cost, only when the item has a stat modifier with this skill. This will affect the item's buy, sell, and repair costs. This is added after the cost mult has modified the costs.
SkillDesc.txt
This file controls a skill's tooltip description and how it is displayed on the Skill Tree
Used by the following data files: Missiles.txt, Monstats.txt, Skills.txt
Data Fields
SkillDesc - [O] - The name of the skill description, as a reference for associated Data files
SkillPage - [N] - Determines which page on the Skill tree to display the skill
Code | Description |
0 | Do not display on any skill tree page |
1 | Skill Tree Page 1 |
2 | Skill Tree Page 2 |
3 | Skill Tree Page 3 |
SkillRow - [N] - Determines which row on the Skill tree page to display the skill
Code | Description |
0 | Do not display on the skill tree page |
1 | Row 1 |
2 | Row 2 |
3 | Row 3 |
4 | Row 4 |
5 | Row 5 |
6 | Row 6 |
SkillColumn - [N] - Determines which column on the Skill tree page to display the skill
Code | Description |
0 | Do not display on any skill tree page |
1 | Left Column |
2 | Middle Column |
3 | Right Column |
ListRow - [N] - Determines which row the skill will be listed in, for the skill select UI.
Code | Description |
0 | Common Skill Row |
1 | Skill Tree 1 Row |
2 | Skill Tree 2 Row |
3 | Skill Tree 3 Row |
(Other) | Skill will not appear in the Skill Selection UI |
IconCel - [N] - Determines the icon asset for displaying the skill, using the Frame# of the Sprite (See Common Folders). It will use Frame+1 for the "when pressed" icon visual. The sprite path can be changed in _ProfileHD.json or _ProfileLV.json
HireableIconCel - [N] - Determines the icon asset for displaying the skill, using the Frame# of the Sprite (See Common Folders). There is no "when pressed" icon visual. The sprite path can be changed in _ProfileHD.json or _ProfileLV.json
str name - [O] - Uses a string to display as the skill name
str short - [O] - Uses a string to display as the skill description in shortcuts or when selecting a skill
str long - [O] - Uses a string to display as the skill description on the Skill Tree
str alt - [O] - Uses a string to display the skill name on the Character Screen when the skill is selected
descdam - [N] - Use a function to calculate a skill's damage and determine how to display it. These functions sometimes require certain skill fields, especially the damage related fields.
Code | Parameters | Description |
0 | null | |
1 | ddam calc1 ddam calc2 | Calculates the basic Attack damage (Uses function 7) "ddam calc1" is used as a percent bonus "ddam calc2" is used as a flat number bonus |
2 | Calculates the character's kick damage | |
3 | Calculates the character's throwing weapon damage | |
4 | Calculates the character's left throwing weapon damage | |
5 | Calculates damage using the equipped weapon damage and the linked skill's physical and elemental damage | |
6 | Similar to function 5 Calculates the damage of the skill but with carry-over of elemental damage from the source, such as a missile direct hit and then a missile explosion | |
7 | ddam calc1 ddam calc2 | Calculates the damage of a skill, including damage bonuses "ddam calc1" is used as a percent bonus "ddam calc2" is used as a flat number bonus |
8 | ddam calc1 ddam calc2 | Calculates the elemental damage of a skill as a periodic damage (every 25 frames = 1 second) "ddam calc1" is used as a multiplier of the damage (If equals 0 then default to 1) "ddam calc2" is used as a divisor of the damage (If equals 0 then default to 1) |
9 | Calculates the elemental damage of a skill as a periodic damage (every 25 frames = 1 second) The damage is always multiplied by 3 | |
10 | Calculates damage based on the shield equipped and the damage provided by the skill Holy Shield. Also adds a damage percent bonus based on the linked skill's Param3 & Param4 values, plus the stat bonuses from Strength and Dexterity | |
11 | Calculates damage by obtaining the current weapon damage, and then adds the following: Fire percent damage based on the linked skill's Calc1 field Cold percent damage based on the linked skill's Calc2 field Lightning percent damage based on the linked skill's Calc3 field | |
12 | Calculates a skill's damage based on the status of the Concentration Aura state If the game is in Expansion, then use the linked skill's Calc1 field to define the bonus damage when using Concentration If the game is in Classic, then use the Concentration skill's damage percent increase to define the bonus damage when using Concentration | |
13 | Calculates throwing damage, where it adds a damage percent bonus defined by the linked skill's Calc1 field | |
14 | Calculates the damage of a skill, and uses the linked skill's Param5 field as an overall damage percent penalty | |
15 | Calculates the total damage by adding a damage percent bonus from the linked skill's Param1 & Param2 linear increase calculation, the progressive increase from charges from the linked skill, and the boot damage | |
16 | Calculates the total damage by adding a damage percent bonus from the linked skill's Calc1 value, the progressive increase from charges from the linked skill, and the boot damage | |
17 | ddam calc1 ddam calc2 | Calculates the damage of a skill and displays the physical damage and the elemental damage separately "ddam calc1" is used as a percent bonus "ddam calc2" is used as a flat number bonus |
18 | ddam calc1 ddam calc2 | Calculates the damage of a skill, including damage bonuses (Uses function 7) "ddam calc1" is used as a percent bonus "ddam calc2" is used as a flat number bonus |
19 | ddam calc1 ddam calc2 | Calculates the damage of a dual wielding attack. If not dual wielding, then it calculates a normal attack damage "ddam calc1" is used as a percent bonus "ddam calc2" is used as a flat number bonus |
20 | ddam calc1 ddam calc2 | Same as function 19, but does not add elemental damage |
21 | Calculates the throwing weapon damage with the linked skill's elemental damage added | |
22 | Calculates the throwing weapon damage for dual wielding throwing weapons and displays them as two values | |
23 | Calculates the damage of a skill and displays the physical damage and elemental damage separately (Similar to function 17) | |
24 | Calculates damage using the equipped weapon damage and the linked skill's physical and elemental damage (Similar to function 5) | |
25 | ddam calc1 ddam calc2 | Same as function 5 with a percentage multiplier to min and max. |
26 | ddam calc1 ddam calc2 | Calculates weapon damage and skill damage as two values. |
ddam calc1 - [C] - Integer calc value used as a possible parameter for the descdam function
p1dmelem - [O] - Used for skills that have charge-ups to display the damage on the Character Screen, controls the elemental type for that charge
p1dmmin - [C] - Used for skills that have charge-ups to display the damage on the Character Screen, controls the minimum damage for that charge
p1dmmax - [C] - Used for skills that have charge-ups to display the damage on the Character Screen, controls the maximum damage for that charge
descatt - [N] - Used to display the overall Attack Rating of the skill in the Character Screen
Code | Description |
0 | null |
1 | Displays the overall Attack Rating the character's primary weapon |
2 | If the character can dual wield two weapons, then display the overall Attack Rating for each weapon |
3 | Displays the overall Attack Rating for throwing the right-hand weapon |
4 | Displays the overall Attack Rating for throwing the left-hand weapon |
5 | Displays the overall Attack Rating for a skill marked with the "finishing" flag |
descmissile1 - [O] - Links a missile from Missiles.txt to be used as a reference value for calculations
descline1 - [N] - Uses an ID value to select a description function to format the string value. Displays this text as the current level and next level description lines in the skill tooltip.
Code | Parameters | Description |
0 (or empty) | None | |
13 | desctexta desccalca desccalcb | Calculates the Life value of the monster referenced from the "summon" field in the linked skill. Also multiplies this value with [desccalca] as a Life Percent bonus or adds to this value with [desccalcb] as a Life Add bonus. Inserts this calculated Life value into [desctexta] and output that string |
31 | desctexta desctextb desccalca desccalcb | Performs the calculation using the "AiCurseDivisor" from DifficultyLevels.txt based on the current game's difficulty mode: [desccalca] / [AiCurseDivisor] / [desccalcb] If this value is equals to 1, then insert the calculated value into [desctexta] and output that string |
34 | desctexta | Calculates the Damage value of the monster referenced from the "summon" field in the linked skill. Then this function inserts that value into [desctexta] and outputs that string |
36 | desctexta desctextb desccalca desccalcb | Performs the calculation of a value: [desccalca] / [desccalcb] If this value is equals to 1, then insert the value into [desctexta] and output that string |
40 | desctexta desctextb desccalca | Use [desccalca] as a code to change the color of the string 0 = White (R=255, G=255, B=255) Inserts [desctextb] into [desctexta] and outputs that string |
56 | Gets the quantity of the item that is connected to the linked skill and inserts this value into the "scrollbooktext" string and outputs that string | |
74 | desctexta desccalca | Inserts [desccalca] into [desctexta] and outputs that string |
75 | desctexta desccalca desccalcb | Inserts [desccalca] and [desccalcb] into [desctexta] and outputs that string |
76 | desctexta desctextb desccalca | Inserts [desctextb] and [desccalca] into [desctexta] andoutputs that string |
77 | desctexta desctextb desccalca desccalcb | Inserts [desctextb], [desccalca], and [desccalcb] into [desctexta] and outputs that string |
desctexta1 - [O] - String value used as the first possible string parameter for the descline1 function
desctextb1 - [O] - String value used as the second possible string parameter for the descline1 function
desccalca1 - [C] - Integer calculation value used as the first possible numeric parameter for the descline1 function
desccalcb1 - [C] - Integer calculation value used as the second possible numeric parameter for the descline1 function
dsc2line1 - [N] - Uses an ID value to select a description function to format the string value. Displays this text as a pinned line, after the skill description. (Uses the same function codes as descline1)
dsc2texta1 - [O] - String value used as the first possible string parameter for the dsc2line1 function
dsc2textb1 - [O] - String value used as the second possible string parameter for the dsc2line1 function
dsc2calca1 - [C] - Integer Calc value used as the first possible numeric parameter for the dsc2line1 function
dsc2calcb1 - [C] - Integer Calc value used as the second possible numeric parameter for the dsc2line1 function
dsc3line1 - [N] - Uses an ID value to select a description function to format the string value. Displays this text as a pinned line at the bottom of the skill tooltip. (Uses the same function codes as descline1)
dsc3texta1 - [O] - String value used as the first possible string parameter for the dsc3line1 function
dsc3textb1 - [O] - String value used as the second possible string parameter for the dsc3line1 function
dsc3calca1 - [C] - Integer Calc value used as the first possible numeric parameter for the dsc3line1 function
dsc3calcb1 - [C] - Integer Calc value used as the second possible numeric parameter for the dsc3line1 function
Sounds.txt
Thisfile controls settings for all sounds in the game
The order of each sound defined in this file will convey what ID value it has. This existing order should not be changed.
Data Fields
Sound - [O] - Defines the unique name ID for the sound, which is how other files can reference the sound
Redirect - [O] - Points the sound so the index of another sound in the data file. If this field is not empty, the game will use the redirected sound instead of this sound. This can be used when playing the game in the new graphics mode
Channel - [O] - Declares which channel the sound is initialized in. This can affect how different volume or sound settings handle this sound.
FileName - [O] - Defines the file path and name of the sound file to play
IsLocal - [B] - If equals 1, then this sound is considered a localized sound and will change based on the game's localization setting. If equals 0, then ignore this
IsMusic - [B] - If equals 1, then the sound is flagged as a music sound, which affects how music related settings handle this sound. If equals 0, then ignore this
IsAmbientScene - [B] - If equals 1, then the sound is flagged as an ambient scene sound, which affects how the game handles the sound when the player transitions between areas. If equals 0, then ignore this
IsAmbientEvent - [B] - If equals 1, then the sound is flagged as an ambient event sound, which affects how the game treats the sound when the player transitions between areas. If equals 0, then ignore this
IsUI - [B] - If equals 1, then the sound is flagged as a UI sound, which affects how UI related settings handle this sound. If equals 0, then ignore this
Volume Min - [N] - Controls the minimum volume of the sound. Uses a range of 0 to 255
Volume Max - [N] - Controls the maximum volume of the sound. If both Volume Min and Volume Max fields differ in value, then the sound will randomly select a volume value in between these values when it is played. Uses a range of 0 to 255
Pitch Min - [N] - Controls the minimum pitch percentage of the sound
Pitch Max - [N] - Controls the maximum pitch percentage of the sound. If both Pitch Min and Pitch Max fields differ in value, then the sound will randomly select a pitch value in between these values when it is played
Group Size - [N] - Defines a sound Group by declaring a size value. When the sound has this value greater than 0, then this sound is declared as the group's base sound. Any link to use a sound should use the base sound, to signify that the game should use this group of sounds. This field's value controls the number of sounds indexed after base sound that should be added to the group. For example, if the sound has a "Group Size" value equal to 5, then this sound is declared as the group's base sound, and the next 4 sounds indexed after this base sound will be added to the group
Group Weight - [N] - Controls the chance to pick the sound when it is part of a group with other sounds. If all sounds in the group do not have a "Group Weight" value, then the group sounds will play in historical order. This value controls a weighted random chance, meaning that all related sounds have their weights added together for a total chance and each sound's weight value is rolled against that total value to determine if the sound is successfully picked. The higher this value, the more likely the sound will be picked. This is only used when the sound is part of a group ("Group Size")
Loop - [B] - If equals 1, then the sound will replay itself after it finishes playing. If equals 0, then the sound will only play once
Fade In - [N] - Controls how long to gradually increase the sound's volume starting from 0 when the sound starts playing. Measured in audio game ticks, where 1 game frame is 40 audio ticks, and the game runs at 25 frames per second
Fade Out - [N] - Controls how long to gradually decrease the sound's volume to 0 when the sound stops playing. Measured in audio game ticks, where 1 game frame is 40 audio ticks, and the game runs at 25 frames per second
Defer Inst - [B] - If equals 1, then when a duplicate instance of this sound plays the game will stop that request. If equals 0, then ignore this
Stop Inst - [B] - If equals 1, then when a duplicate instance of this sound plays the previous instance of the sound will stop and the new instance of the sound will play. If equals 0, then ignore this
Duration - [N] - Controls the length of time to play the sound. When the sound has been playing for this length of time, then the sound will stop. If this equals 0, then ignore this functionality
Compound - [N] - Controls the game tick time limit for when a sound can join in playing based on the previous sound played in the Group. If equals 0, then the sound will not be compounded
Falloff - [N] - Defines the range of falloff for hearing the sound, based on distance. Uses a code to determine the range value presets.
Code | Description |
0 | Short - falloff range is 60 to 400 pixels |
1 | Medium - falloff range is 60 to 700 pixels |
2 | Large - falloff range is 200 to 1000 pixels |
3 | Ambient - falloff range is 400 to 1500 pixels |
4 | Voice - falloff range is 2000 pixels (no falloff) |
LFEMix - [N] - Controls the percentage (out of 100) of the sound's Low-Frequency Effects channel
3dSpread - [N] - Controls the 3D spread angle of the sound. This only works if the sound is considered a 3D sound (Is2D)
Priority - [N] - Controls which if the sound should play before other sounds when too many sounds are playing at once. This value is compared to the priority value of other sounds, and the sound that has the higher priority will play first. Sounds belonging to the player will get an increased priority value of 80
Stream - [B] - If equals 1, then the sound will be file streamed into the game when called to play. If equals 0, then the entire sound will be loaded into the game before playing
Is2D - [B] - If equals 1, then the sound is considered a 2D sound and will not have 3D spread settings. If equals 0, then the sound is considered a 3D sound and will use the 3D spread settings
Tracking - [B] - If equals 1, then the sound will track a unit and will update its position to follow that unit. If equals 0, then the sound will not move and will be stationary
Solo - [B] - If equals 1, then reduce the volume of other sounds while this sound is playing. If equals 0, then ignore this
Music Vol - [B] - If equals 1, then the sound's volume will be affected by the music volume in the game options menu. If equals 0, then ignore this
Block 1 - [N] - Defines an offset time value in the sound. If this sound is used in a Sound Environment then these fields control when to periodically update the current song sound to an offset. If this sound is not used in a Sound Environment and Block 1 is used and the Loop field is enabled, then use this block value as the time in the sound when to start looping. If this equals -1, then the field is ignored
HDOptOut - [B] - If equals 1, then the sound will not play in the new graphics mode. If equals 0, then the sound will play in the new graphics mode
Delay - [N] - Adds a delay to the starting tick of the sound when the sound starts playing. Measured in audio game ticks, where 1 game frame is 40 audio ticks, and the game runs at 25 frames per second.
SoundEnviron.txt
This file controls the music and ambient sounds that are played while the player is in the area level
The order of each Sound Environment defined in this file will convey what ID value it has
This file points to a Sound entry from Sounds.txt for all it's entries
This file is used by Levels.txt
Data Fields
Handle - [O] - A reference field to define the name of the Sound Environment
Index - [O] - A reference field to define the ID/Index for the Environment
Song - [O] - Play this sound as the background music while the player is in an area level
Day Ambience - [O] - Play this sound as an ambient sound while it is currently daytime in the game
HD Day Ambience - [O] - Play this sound as an ambient sound while it is currently daytime in the game while playing in the new graphics mode
Night Ambience - [O] - Play this sound as an ambient sound while it is currently nighttime in the game
HD Night Ambience - [O] - Play this sound as an ambient sound while it is currently nighttime in the game while playing in the new graphics mode
Day Event - [O] - Play this sound at a random range and variance in the background when it is currently daytime in the game
HD Day Event - [O] - Play this sound at a random range and variance in the background when it is currently daytime in the game while playing in the new graphics mode
Night Event - [O] - Play this sound at a random range and variance in the background when it is currently nighttime in the game
HD Night Event - [O] - Play this sound at a random range and variance in the background when it is currently nighttime in the game while playing in the new graphics mode
Event Delay - [N] - Controls the baseline number of frames to wait before playing the Day Event or Night Event sound, depending on the time of day. This only applies when the game is being played in SD mode. This value is used in the following calculation to get a random time to play the next event sound: [Event Delay] - [Event Delay] / 3 + RANDOM(0, ([Event Delay] / 3 * 2 + 1))
HD Event Delay - [N] - Controls the baseline number of frames to wait before playing the Day Event or Night Event sound, depending on the time of day. This only applies when the game is being played in the new graphics mode. This value is used in the following calculation to get a random time to play the next event sound: [Event Delay] - [Event Delay] / 3 + RANDOM(0, ([Event Delay] / 3 * 2 + 1))
Indoors - [B] - If equals 1 then, if the current sound being played in the area level with this Sound Environment is "event_thunder_1", then the sound will be obstructed. If equals 0, then ignore this
Material 1 - [N] - Controls the material of the Sound Environment, which affects which footstep sounds are played. Uses a code to define a specific material.
Code | Description |
0 | None |
1 | Dirt |
2 | Indoor Stone |
3 | Outdoor Stone |
4 | Sand |
5 | Snow |
6 | Wood |
HD Material 1 - [N] - Controls the material of the Sound Environment, which affects which footstep sounds are played. Uses a code to define a specific material. This only applies when the game is being played in the new graphics mode. See Material 1 for the code descriptions.
SFX EAX Environ - [N] - Determines an environment preset for default sound reverberation settings.
Code | Description |
0 | Generic |
1 | Padded Cell |
2 | Room |
3 | Bathroom |
4 | Livingroom |
5 | Stone Room |
6 | Auditorium |
7 | Concert Hall |
8 | Cave |
9 | Arena |
10 | Hanger |
11 | Carpeted Hallway |
12 | Hallway |
13 | Stone Corridor |
14 | Alley |
15 | Forest |
16 | City |
17 | Mountains |
18 | Quarry |
19 | Plain |
20 | Parking Lot |
21 | Sewer Pipe |
22 | Underwater |
23 | Drugged |
24 | Dizzy |
25 | Psychotic |
26 | Programmer Test (A long distant echo) |
SFX EAX Room Vol - [N] - Room effect level at mid frequencies
SFX EAX Room HF - [N] - Relative room effect level at high frequencies
SFX EAX Decay Time - [N] - Reverberation decay time at mid frequencies
SFX EAX Decay HF - [N] - High-frequency to mid-frequency decay time ratio
SFX EAX Reflect - [N] - Early reflections level relative to room effect
SFX EAX Reflect Delay - [N] - Initial reflection delay time
SFX EAX Reverb - [N] - Late reverberation level relative to room effect
SFX EAX Rev Delay - [N] - Late reverberation delay time relative to initial reflection.
The following are sound reverberation settings for Voice sounds
VOX EAX Environ - [N] - Determines an environment preset for default sound reverberation settings.
Code | Description |
0 | Generic |
1 | Padded Cell |
2 | Room |
3 | Bathroom |
4 | Livingroom |
5 | Stone Room |
6 | Auditorium |
7 | Concert Hall |
8 | Cave |
9 | Arena |
10 | Hanger |
11 | Carpeted Hallway |
12 | Hallway |
13 | Stone Corridor |
14 | Alley |
15 | Forest |
16 | City |
17 | Mountains |
18 | Quarry |
19 | Plain |
20 | Parking Lot |
21 | Sewer Pipe |
22 | Underwater |
23 | Drugged |
24 | Dizzy |
25 | Psychotic |
26 | Programmer Test (A long distant echo) |
VOX EAX Room Vol - [N] - Room effect level at mid frequencies
VOX EAX Room HF - [N] - Relative room effect level at high frequencies
VOX EAX Decay Time - [N] - Reverberation decay time at mid frequencies
VOX EAX Decay HF - [N] - High-frequency to mid-frequency decay time ratio
VOX EAX Reflect - [N] - Early reflections level relative to room effect
VOX EAX Reflect Delay - [N] - Initial reflection delay time
VOX EAX Reverb - [N] - Late reverberation level relative to room effect
VOX EAX Rev Delay - [N] - Late reverberation delay time relative to initial reflection
InheritEnvironment - [B] - If equals 1, then this sound environment will inherit certain values from the existing environment and overwrite other values with its own.
Overwritten Values |
Song |
Day Ambience |
HD Day Ambience |
Night Ambience |
HD Night Ambience |
Day Event |
HD Day Event |
Night Event |
HD Night Event |
Event Delay |
HD Event Delay |
States.txt
This file defines the different States used by the game and controls how they function. States are basically passive behaviors applied to units that can apply various effects.
This file is used by the following data files: CubeMain.txt, MonProp.txt, Overlay.txt, Runes.txt, Sets.txt, SetItems.txt, Skills.txt, UniqueItems.txt
Data Fields
state - [O] - Defines the unique name ID for the state
group - [N] - Assigns the state to a group ID value. This means that only 1 state with that group ID can be active at any time on a unit. If this value is empty, then ignore this
remhit - [B] - If equals 1, then this state will be removed when the unit is hit. If equals 0, then ignore this
nosend - [B] - If equals 1, then this state change will not be sent to the client. If equals 0, then ignore this
transform - [B] - If equals 1, then this state will be flagged to change the unit's appearance and reset its animations when it is applied. If equals 0, then ignore this
aura - [B] - If equals 1, then this state will be treated as an aura. If equals 0, then ignore this
curable - [B] - If equals 1, then this state can be cured (This can be checked by NPC healing or the Paladin Cleansing skill). If equals 0, then ignore this
curse - [B] - If equals 1, then this state will be flagged as a curse. If equals 0, then ignore this
active - [B] - If equals 1, then the state will be classified as an active state which enables the cltactivefunc and srvactivefunc fields. If equals 0, then ignore this
restrict - [B] - If equals 1, then this state will restrict the usage of certain skills (This connects with the restrict field from the Skills.txt file). If equals 0, then ignore this
disguise - [B] - If equals 1, then this state will be flagged as a disguise, meaning that the unit's appearance is changed, which can affect how the animations are treated when being used. If equals 0, then ignored this
attblue - [B] - If equals 1, then the state will make the related Attack Rating value in the character screen be colored blue. If equals 0, then ignore this
damblue - [B] - If equals 1, then the state will make related Damage value in the character screen be colored blue. If equals 0, then ignore this
armblue - [B] - If equals 1, then the state will make Defense value (Armor) in the character screen be colored blue. If equals 0, then ignore this
rfblue - [B] - If equals 1, then the state will make Fire Resistance value in the character screen be colored blue. If equals 0, then ignore this
rlblue - [B] - If equals 1, then the state will make Lightning Resistance value in the character screen be colored blue. If equals 0, then ignore this
rcblue - [B] - If equals 1, then the state will make Cold Resistance value in the character screen be colored blue. If equals 0, then ignore this
stambarblue - [B] - If equals 1, then the state will make the Stamina Bar UI in the HUD be colored blue. If equals 0, then ignore this
rpblue - [B] - If equals 1, then the state will make Poison Resistance value in the character screen be colored blue. If equals 0, then ignore this
attred - [B] - If equals 1, then the state will make the related Attack Rating value in the character screen be colored red. If equals 0, then ignore this
damred - [B] - If equals 1, then the state will make related Damage value in the character screen be colored red. If equals 0, then ignore this
armred - [B] - If equals 1, then the state will make Defense value (Armor) in the character screen be colored red. If equals 0, then ignore this
rfred - [B] - If equals 1, then the state will make Fire Resistance value in the character screen be colored red. If equals 0, then ignore this
rlred - [B] - If equals 1, then the state will make Lightning Resistance value in the character screen be colored red. If equals 0, then ignore this
rcred - [B] - If equals 1, then the state will make Cold Resistance value in the character screen be colored red. If equals 0, then ignore this
rpred - [B] - If equals 1, then the state will make Poison Resistance value in the character screen be colored red. If equals 0, then ignore this
exp - [B] - If equals 1, then a unit with this state will give exp when killed or will gain exp when killing another unit. If equals 0, then ignore this
plrstaydeath - [B] - If equals 1, then the state will persist on the player after that player is killed. If equals 0, then ignore this. state stays after death
monstaydeath - [B] - If equals 1, then the state will persist on the monster (non-boss) after that monster is killed. If equals 0, then ignore this
bossstaydeath - [B] - If equals 1, then the state will persist on the boss after that boss is killed. If equals 0, then ignore this
hide - [B] - If equals 1, then the state will hide the unit when dead (corpse and death animations will not be drawn). If equals 0, then ignore this
hidedead - [B] - If equals 1, then the state will be used to destroy units with invisible corpses. If equals 0, then ignore this
shatter - [B] - If equals 1, then the state causes ice shatter missiles to create when the unit dies. If equals 0, then ignore this
udead - [B] - If equals 1, then the state flags the unit as a used dead corpse and the unit cannot be targeted for corpse skills. If equals 0, then ignore this
life - [B] - If equals 1, then this state will cancel out the monster's normal life regeneration. If equals 0, then ignore this
green - [B] - If equals 1, then the state overrides the color changes the unit and the unit will be colored green. If equals 0, then ignore this
pgsv - [B] - If equals 1, then the state is flagged as part of a progressive skill which relates to charge-up skill functionalities. If equals 0, then ignore this
nooverlays - [B] - If equals 1, then the standard way for States to add overlays will be disabled. If equals 0, then ignore this
noclear - [B] - If equals 1, then when this state is applied on the unit, it will not clear stats that have this state from the state's previous application. If equals 0, then ignore this
bossinv - [B] - If equals 1, then the unit with this state will use the state's source unit's (in this case, the unit's boss) inventory for generating the unit's equipped item graphics. If equals 0, then ignore this
meleeonly - [B] - If equals 1, then the state will make the all the unit's attack become melee attacks. If equals 0, then ignore this
notondead - [B] - If equals 1, then the state will not play its On function (function that happens when the state is applied) if the unit is dead. If equals 0, then ignore this
overlay1 - [O] - Controls which overlay to use for normally displaying the state (Uses the overlay field from Overlay.txt). The usage depends on the specific state defined and/or the function using the state. Typically, States use "overlay1" for the Front overlay and "overlay2" for the Back overlay. Other cases can have States use each overlay field as the Front Start, Front End, Back Start, and Back End, respectively
pgsvoverlay - [O] - Controls which overlay to use when the state has progressive charges on the unit, such as for the charge-up stat when using Assassin Martial Arts charge-up skills (Uses the overlay field from Overlay.txt)
castoverlay - [O] - Controls which overlay to use when the state is initially applied on the unit (Uses the overlay field from Overlay.txt)
removerlay - [O] - Controls which overlay to use when the state is removed from the unit (Uses the overlay field from Overlay.txt)
stat - [O] - Controls the stat associated with the stat. This is also used when determining how to add the progressive overlay (Uses the Stat field from ItemStatCost.txt)
setfunc - [N] - Controls the client side set functions for when the state is initially applied on the unit
Code | Parameters | Description |
0 | Do nothing | |
1 | stat | Creates the overlay used for a progressive state. Can only be used if the pgsv flag is enabled and the pgsvoverlay field has a value. |
2 | Changes the area level's room lighting based on a skill's aurarangecalc field from the Skills.txt file. Gets the skill by looking at the "modifierlist_skill" stat defined in ItemStatsCost.txt | |
3 | Updates a skill's level. Gets the skill by looking at the "modifierlist_skill" stat defined in the ItemStatsCost.txt file. | |
4 | Sets the source unit for the state. Gets the "source_unit_type" and "source_unit_id" stats defined in the ItemStatsCost.txt file. | |
5 | Changes the monster's class type to another monster's class type. Gets the "shortparam1" stat defined in the ItemStatsCost.txt file and uses stat's parameter to get the class type that the unit should change to. Only works for monster units. Has a special case where if the class the monster changed from was the "baalthrone" monster (defined in monstats.txt), then also set the path of the monster to move a direction. | |
6 | Gets the skill by looking at the "modifierlist_skill" stat defined in the ItemStatsCost.txt file and then creates the overlays defined in the "castoverlay" and "overlay#" fields | |
7 | Plays a sound from the "prgsound" field of a skill from the Skills.txt file. Gets the skill by looking at the "modifierlist_skill" stat defined in the ItemStatsCost.txt file. | |
8 | Gets the skill by looking at the "modifierlist_skill" stat defined in the ItemStatsCost.txt file and then creates the overlays defined in the "overlay1", "overlay2" and "overlay3" fields | |
9 | Calls the updates passive skills function which updates the values of any skill with a "passivestate" field defined in the Skills.txt file | |
10 | skill | Creates the missile defined in the "skill" parameter's "cltmissile" field and hides the targeted unit |
11 | Hides the unit, by disabling the drawing of its visuals | |
12 | Hides the unit, by disabling the drawing of its visuals and shadows | |
13 | Initializes the particle for attaching to the unit by getting the offset of the source unit's Special component | |
14 | Tells the unit to use the "SKILL1" command and resets its direction | |
15 | Sets the monster mode to neutral and sets its flag to a pet | |
16 | Sets up the overlays for a charge up skill. Gets the skill by looking at the "modifierlist_skill" stat defined in the ItemStatsCost.txt file. Applies all the overlays defined the "overlay#" fields, based on the number of skill charges on the unit. | |
17 | missile | Creates the missile defined in the "missile" parameter |
18 | missile | Creates blood on the targeted unit and creates the missile defined in the "missile" parameter |
19 | Sets the global skill cooldown to 0 |
remfunc - [N] - Controls the client side remove functions for when the state is removed from the unit
Code | Description |
0 | Do nothing |
1 | Removes the "pgsvoverlay" overlay. This function relies on the "pgsv" being enabled. |
2 | Removes the state's source unit |
3 | Removes the overlays defined in the "castoverlay" and all of the "overlay#" fields |
4 | Removes the "cltprgsound" from the related skill. To get the skill, this looks at the "modifierlist_skill" stat defined in the ItemStatsCost.txt file. |
5 | Removes the overlays defined in the "castoverlay", "overlay1", "overlay2", and "overlay3" fields |
6 | Calls the updates passive skills function which updates the values of any skill with a "passivestate" field defined in the Skills.txt file |
7 | Checks that the related unit is a monster and that the skill used is the "Nest" skill defined in the Skills.txt file. If true, then it removes the related unit's collision pattern. |
8 | Hides the unit, by disabling the drawing of its visuals and shadows |
9 | Removes particles attached to the unit or the position of the unit |
10 | Gets the related unit's position and creates a "monstercorpseexplode" and "pain worm appear" missile defined from the Missiles.txt file |
11 | Removes the overlays defined in all of the "overlay#" fields |
12 | Sets the global skill cooldown to 0 |
missile - [O] - Used as a possible parameter for the setfunc field (Uses the Missile field from Missiles.txt)
skill - [O] - Used as a possible parameter for the setfunc field (Uses the Skill field from Skills.txt)
itemtype - [O] - Defines a potential ItemType that can be affected by the state's color change
itemtrans - [O] - Controls the color change of the item when the unit has this state. Referenced from the Code column in Colors.txt
colorpri - [N] - Defines the priority of the state's color change, when compared to other current sates on the unit. The current state that has the highest color priority on the unit will be used and other state colors will be ignored. If multiple current States share the same color priority value, then the game will choose the state with the lower ID value (based on where in the list of States in the data file that the state is defined)
colorshift - [N] - Controls which index of the color shift palette to use.
ID | Description |
0 (or empty) | Do nothing |
1 | First Hue Rotation |
25 | First Hue Rotation and Darken |
49 | First Hue Rotation and Lighten |
73 | Color to Grey |
74 | Color to Black |
75 | First No Red Rotation |
100 | Color to Red |
101 | Color to Orange |
102 | Color to Yellow |
103 | Color to Grass |
104 | Color to Green (There is a special case to not turn the player unit green) |
105 | Color to Teal |
106 | Color to Aqua |
107 | Color to Light Blue |
108 | Color to Blue |
109 | Color to Purple |
110 | Color to Magenta |
111 | Color to Some Funky Red |
112 | Color to RGB Red |
113 | Color to RGB Green |
114 | Color to RGB Blue |
light-r - [N] - Controls the state's change of the red color value of the Light radius (Uses a value from 0 to 255)
light-g - [N] - Controls the state's change of the green color value of the Light radius (Uses a value from 0 to 255)
light-b - [N] - Controls the state's change of the blue color value of the Light radius (Uses a value from 0 to 255)
onsound - [O] - Plays a sound when the state is initially applied to the unit. Links to a Sound from Sounds.txt
offsound - [O] - Plays a sound when the state is removed from the unit. Links to a Sound from Sounds.txt
gfxtype - [N] - Controls the how to handle the unit graphics transformation based on the unit type (This relies on the disguise field being enabled). If equals 1, then use this on a monster type unit. If equals 2, then use this on a player type unit. Otherwise, ignore this
gfxclass - [N] - Control's the unit class used for handling the unit graphics transformation. This field relies on what unit type was used in the gfxtype field. If gfxtype equals 1 for monster type units, then this field will rely on the hcIDx field from MonStats.txt. If "gfxtype" equals 2, then this field will use the character class numeric ID.
IDFile | Description |
0 | Amazon |
1 | Sorceress |
2 | Necromancer |
3 | Paladin |
4 | Barbarian |
5 | Druid |
6 | Assassin |
cltevent - [N] - Controls the event to check on the client side to determine when to use the function defined in the clteventfunc field (Uses an event defined in the Events.txt file)
clteventfunc - [N] - Controls the client Unit event function that is called when the event is determined in the cltevent field (Uses the functions defined in the Events.txt file)
IDFile | Description |
0 | Do nothing |
1 | Sorceress Apply Chilling Armor • Requires on the "hitbymissile" event defined in the "cltevent" field • Uses the related skill with this state and it's related missile fields to fire a missile at a target |
cltactivefunc - [N] - Controls the Client Do function that is called every frame while the state is active (the cltdofunc field in Skills.txt). This relies on the "active" field being enabled
srvactivefunc - [N] - Controls the Server Do function that is called every frame while the state is active (the srvdofunc field in Skills.txt). This relies on the "active" field being enabled
canstack - [B] - If equals 1, then this state can stack with duplicate forms of itself (This is only usable with the "poison" state). If equals 0, then ignore this.
sunderfull - [X] [B] - If equals 1, then this state will reapply any negative resistance stats at full potential when calculating pierce immunity if the immunity was broken. If equals 0, then reapply at the normal reduced efficiency (currently 1/5).
sunder-res-reduce – [X] [B] - If equals 1, then this state will apply pierce resistance at reduced effectiveness (currently 1/5) when calculating pierce resistance if an immunity was broken. If equals 0, then apply pierce resistance at normal effectiveness.
SuperUniques.txt
This file defines the Super Unique monsters and their properties. Super Unique monsters are considered the special boss monsters that have static encounters in the game.
This file uses the following data files: MonSounds.txt, monstats.txt, MonUMod.txt, TreasureClassEx.txt
Data Fields
Superunique - [O] - Defines the unique name ID for the Super Unique monster
Name - [O] - Uses a string for the Super Unique monster's name
Class - [O] - Defines the baseline monster type for the Super Unique monster, which this monster will use for default values. This uses the ID field from MonStats.txt
hcIDx - [N] - Defines the unique numeric ID for the Super Unique monster. The existing IDs are hardcoded for specific scripts with the specified Super Unique monsters
MonSound - [O] - Defines what set of sounds to use for the Super Unique monster. Uses the ID field from MonSounds.txt. If this field is empty, then the Super Unique monster will default to using the monster class sounds
Mod1 (to Mod3) - [N] - Controls which monster modifier to assign to the Super Unique monster. Uses the id field from MonUMod.txt
MinGrp - [N] - Controls the min amount of Minion monsters that will spawn with the Super Unique monster
MaxGrp - [N] - Controls the max amount of Minion monsters that will spawn with the Super Unique monster. This value must be equal to or higher than MinGrp. If this value is greater than it, then a random number will be chosen between the MinGrp and MaxGrp values
AutoPos - [B] - If equals 1, then the Super Unique monster will randomly spawn within a radius of its designated position. If equals 0, then the Super Unique monster will spawn at exact coordinates of its designated position
Stacks - [B] - If equals 1, then this Super Unique monster can spawn more than once in the same game. If equals 0, then this Super Unique monster can only spawn once in the same game
Replaceable - [B] - If equals 1, then the room where the Super Unique monster spawns in can be replaced during the creation of a level preset. If equals 0, then the room cannot be replaced and will remain static
Utrans & Utrans(N) & UTrans(H) - [N] - Modifies the color transform for the unique monster respectively in Normal, Nightmare, or Hell difficulty. If this value is greater than or equal to 30, then the value will default to 2, which is the monster's default color palette shift. If the value is 0 or is empty, then a random value will be chosen
TC & TC(N) & TC(H) - [O] - Controls the Treasure Class to use when the Super Unique monster is killed respectively in Normal, Nightmare, or Hell difficulty. This is linked to the corresponding Treasure Class
TreasureClassEx.txt
This file controls the Treasure Class linked to a monster drop. Treasure Classes are groups of item types and their chances of dropping from a monster.
This is used by the following data files: monstats.txt, SuperUniques.txt
Data Fields
Treasure Class - [O] - Defines the unique Treasure Class ID, that is referenced in other files
group - [N] - Assigns the Treasure Class to a group ID value, which will connect this Treasure Class with other Treasure Classes, as a potential Treasure Class to use for an itemdrop. When determining which Treasure Class to use for an item drop, the game will iterate through all Treasure Classes that share the same group. This field works with the level field to determine an ideal Treasure Class to use for the monster drop. Treasure Classes that share the same group should be in contiguous order
level - [N] - Defines the level of a Treasure Class. Monsters who have a Treasure Class will pick the Treasure Class that a level value that is less than or equal to the monster's level. This is ignored for Boss monsters
Picks - [N] - Controls how to handle the calculations for item drops. If this value is positive, then this value will control how many item drop chances will be rolled for the Treasure Class using the "Prob#" fields as probability values. If this value is negative, then this value functions as the total guaranteed quantity of item drops from the Treasure Class, and each "Prob#" field now defines the quantity of items generated from its related "Item#" field. If this field is empty, then default to a value of 1
Unique - [N] - Modifies the item ratio drop for a Unique Quality item. A higher value means a better chance of being chosen. (ItemRatio.txt for an explanation for how the Item Quality is chosen)
Set - [N] - Modifies the item ratio drop for a Set Quality item. A higher value means a better chance of being chosen. (ItemRatio.txt for an explanation for how the Item Quality is chosen)
Rare - [N] - Modifies the item ratio drop for a Rare Quality item. A higher value means a better chance of being chosen. (ItemRatio.txt for an explanation for how the Item Quality is chosen)
Magic - [N] - Modifies the item ratio drop for a Magic Quality item. A higher value means a better chance of being chosen. (ItemRatio.txt for an explanation for how the Item Quality is chosen)
NoDrop - [N] - Controls the probability of no item dropping by the Treasure Class. The higher this value, then the more likely no item will drop from the monster. This can be automatically be affected by the number of players currently in the game
Item1 - [O] - Defines a potential ItemType or other Treasure Class that can drop from this Treasure Class. Linking another Treasure Class in this field means that there is a chance to use that Treasure Class group of items which the game will then calculate a selection from that Treasure Class, and so on
Prob1 - [N] - The individual probability for each related Item1 drop. The higher this value, then the more likely the Item1 field will be chosen. The chance a drop is picked is calculated by summing all Prob1 field values and the NoDrop value for a total denominator value, and then having each Prob1 value and the NoDrop value rolling their chance out of the total denominator value for a drop.
UniqueAppellation.txt
This file controls the list of strings that are randomly selected to be used as an extra suffix when generating unique monster names
The game has a 50% chance to randomly use Unique Appellation when generating the Unique monster name.
• If a Unique Appellation is not added, then the game will generate a unique monster name using the string called Monster1Format (ID: 1721)
• If a Unique Appellation is added, then the game will generate a unique monster name using the string called Monster2Format (ID: 1722)
Data Fields
Name - [O] - A string key, which is used as a potential selection for generating a unique monster's name
UniqueItems.txt
This file defines each Unique item and controls their item modifiers.
The row order of items should not be changed because it defines their ID value.
Any column field name starting with "*" is considered a comment field and is not used by the game.
Data Fields
index - [O] - Points to a string key value to use as the Unique item's name
version - [N] - Defines which game version to create this item (0 = Classic mode | 100 = Expansion mode)
enabled - [B] - If equals 1, then this item can be created and dropped. If equals 0, then this item cannot be dropped
ladder - [B] - If equals 1, then this item can only be created and dropped in online Battle.net Ladder games. If equals 0, then this item can be created and dropped in any game mode
rarity - [N] - Modifies the chances that this Unique item will spawn compared to the other Unique items. This value acts as a numerator and a denominator. Each "rarity" value gets summed together to give a total denominator, used for the random roll for the item. For example, if there are 3 possible Unique items, and their "rarity" values are 3, 5, 7, then their chances to be chosen are 3/15, 5/15, and 7/15 respectively. (The minimum "rarity" value equals 1) (Only works for games in Expansion mode)
nolimit - [B] - Requires the quest field from AMW.txt to be enabled. If equals 1, then this item can be created and will automatically be identified. If equals 0, then ignore this
lvl - [N] - The item level for the item, which controls what object or monster needs to be in order to drop this item
lvl req - The minimum character level required to equip the item
code - [O] - Defines the baseline item code to use for this Unique item (must match the code field from AMW.txt)
carry1 - [B] - If equals 1, then players can only carry one of these items in their inventory. If equals 0, then ignore this
cost mult - [N] - Multiplicative modifier for the Unique item's buy, sell, and repair costs
cost add - [N] - Flat integer modification to the Unique item's buy, sell, and repair costs. This is added after the cost mult has modified the costs
chrtransform - [O] - Controls the color change of the item when equipped on a character or dropped on the ground. If empty, then the item will have the default item color. Referenced from the Code column in Colors.txt
invtransform - [O] - Controls the color change of the item in the inventory UI. If empty, then the item will have the default item color. Referenced from the Code column in Colors.txt
invfile - [O] - An override for the invfile field from AMW.txt. By default, the Unique item will use what was defined by the baseline item from the "item" field
flippyfile - [O] - An override for the "flippyfile" field from the weapon.txt, Armor.txt, or Misc.txt files. By default, the Unique item will use what was defined by the baseline item from the "item" field
dropsound - [O] - An override for the "dropsound" field from the weapon.txt, Armor.txt, or Misc.txt files. By default, the Unique item will use what was defined by the baseline item from the "item" field
dropsfxframe - [N] - An override for the "dropsfxframe" field from the weapon.txt, Armor.txt, or Misc.txt files. By default, the Unique item will use what was defined by the baseline item from the "item" field
usesound - [O] - An override for the "usesound" field from the weapon.txt, Armor.txt, or Misc.txt files. By default, the Unique item will use what was defined by the baseline item from the "item" field
prop1 - [O] - Controls the item properties for the Unique item (Uses the Code field from Properties.txt)
par1 - [N] - The stat's "parameter" value associated with the related property (prop#). Usage depends on the (Function ID field from Properties.txt)
min1 - [N] - The stat's "min" value to assign to the related property (prop#). Usage depends on the (Function ID field from Properties.txt)
max1 - [N] - The stat's "max" value to assign to the related property (prop#). Usage depends on the (Function ID field from Properties.txt)
diablocloneweight - [N] - The amount of weight added to the diablo clone progress when this item is sold. When offline, selling this item will instead immediately spawn diablo clone.
UniquePrefix.txt
This file controls the list of strings that are randomly selected to be used as the prefix when generating unique monster names
This is always added to every unique monster name
Data Fields
Name - [O] - A string key, which is used as a potential selection for generating a unique monster's name
UniqueSuffix.txt
This file controls the list of strings that are randomly selected to be used as the suffix when generating unique monster names
This is always added to every unique monster name
Data Fields
Name - [O] - A string key, which is used as a potential selection for generating a unique monster's name
WanderingMon.txt
This file controls the list of monsters that can be used as good NPC units to randomly place in certain area levels. The "ActInfo.txt" file controls the statistics on when to spawn wandering monsters, and this file simply controls the list of possible monsters to choose from.
Data Fields
class - [O] - Uses a monster "ID" defined from the monstats.txt file. Monsters defined here are added to a list which is used to randomly pick a monster to spawn in an area level.
Reference Data Files
The following files are considered hardcoded reference files used for specific fields or as indices for other data files.
ArmType.txt
Name | Token |
Lite | lit |
Medium | med |
Heavy | hvy |
BodyLocs.txt
Body Location | Code |
None | |
Head | head |
Neck | neck |
Torso | tors |
Right Arm | rarm |
Left Arm | larm |
Right Ring | rrin |
Left Ring | lrin |
Belt | belt |
Feet | feet |
Gloves | glov |
Colors.txt
Index | Code | Color |
0 | whit | White |
1 | lgry | Light Grey |
2 | dgry | Dark Grey |
3 | blac | Black |
4 | lblu | Light Blue |
5 | dblu | Dark Blue |
6 | cblu | Crystal Blue |
7 | lred | Light Red |
8 | dred | Dark Red |
9 | cred | Crystal Red |
10 | lgrn | Light Green |
11 | dgrn | Dark Green |
12 | cgrn | Crystal Green |
13 | lyel | Light Yellow |
14 | dyel | Dark Yellow |
15 | lgld | Light Gold |
16 | dgld | Dark Gold |
17 | lpur | Light Purple |
18 | dpur | Dark Purple |
19 | oran | Orange |
20 | bwht | Bright White |
CompCode.txt
component | code |
nil | nil |
light | lit |
medium | med |
heavy | hev |
heavy | hvy |
skarmor | des |
roguearmor/brhead | brv |
axe | axe |
flail | fla |
handaxe | hax |
mace | mac |
scimitar | scm |
buckler | buc |
large shield | lrg |
kite shield | kit |
small shield | sml |
long sword | lsd |
wand | wnd |
short sword | ssd |
club | clb |
torch | tch |
battleaxe | btx |
halberd | hal |
large axe | lax |
maul | mau |
scythe | scy |
war hammer | whm |
whip | whp |
javelin | jav |
exploding pot | opl |
gas potion | gpl |
short bow | sbw |
long bow | lbw |
long battle bow | lbb |
short battle bow | sbb |
pike | pik |
spear | spr |
trident | tri |
falchion | flc |
saber | sbr |
glaive | glv |
poleaxe | pax |
broad sword | bsd |
flamberge | flb |
waraxe | wax |
warscythe | wsc |
warsword | wsd |
claymore | clm |
dk weapon | smc |
skmage fire | fir |
skmage ltng | lht |
skmage cold | cld |
skmage pois | pos |
dk rh spell | rsp |
dk lh spell | lsp |
dk unholy | unh |
dk part | rsg |
misc part 1 | bld |
misc part 2 | shr |
misc part 3 | lhr |
misc part 4 | hbd |
misc part 5 | tkt |
headress1 | bab |
headress2 | pha |
headress3 | fan |
headress4 | pon |
zealot head 1 | hd1 |
zealot head 2 | hd2 |
zealot head 3 | hd3 |
zealot head 4 | hd4 |
zealot torso 1 | zz1 |
zealot torso 2 | zz2 |
zealot torso 3 | zz3 |
zealot torso 4 | zz4 |
zealot torso 5 | zz5 |
zealot torso 6 | zz6 |
zealot torso 7 | zz7 |
flying scim | red |
thornhulkhead2 | th2 |
thornhulkhead3 | th3 |
thornhulkhead4 | th4 |
thornhulkhead5 | th5 |
fetish weap 1 | fbl |
fetish weap 2 | fsp |
young NPC head | yng |
old NPC head | old |
bearded NPC head | brd |
goatee NPC head | got |
NPC part 1 | fez |
NPC part 2 | rol |
NPC part 3 | bsk |
NPC part 4 | buk |
NPC part 5 | sak |
NPC part 6 | ban |
NPC part 7 | fsh |
NPC part 8 | snk |
fem brown hair | brn |
fem black hair | blk |
fem NPC leg 1 | srt |
fem NPC leg 2 | lng |
fem NPC leg 3 | dln |
fem NPC tor 1 | btp |
fem NPC tor 2 | mtp |
fem NPC tor 3 | stp |
fem NPC tor 4 | svt |
dk head 1 | col |
dk head 2 | hod |
dk head 3 | hrn |
siege beast tr | lnk |
siege beast s1 | tur |
siege beast s3 | mlk |
full helm | fhm |
great helm | ghm |
pow hand | bhn |
pow head | hed |
Composit.txt
Name | Token |
Head | HD |
Torso | TR |
Legs | LG |
Right Arm | RA |
Left Arm | LA |
Right Hand | RH |
Left Hand | LH |
Shield | SH |
Special 1 | S1 |
Special 2 | S2 |
Special 3 | S3 |
Special 4 | S4 |
Special 5 | S5 |
Special 6 | S6 |
Special 7 | S7 |
Special 8 | S8 |
CubeMod.txt
cubemod type | Code |
None | |
Amethyst | ame |
Ruby | rub |
Sapphire | sap |
Topaz | top |
Emerald | eme |
Diamond | dim |
Skull | sku |
Magic | mag |
Rare | rar |
Unique | unq |
Crafted | crf |
ElemTypes.txt
elemental type | Code |
None | |
Fire | fire |
Lightning | ltng |
Magic | mag |
Cold | cold |
Poison | pois |
Life Drain | life |
Mana Drain | mana |
Stamina Drain | stam |
Stun | stun |
Random | rand |
Burning | burn |
Freeze | frze |
Events.txt
event | *description |
hitbymissile | Unit is hit by a missile |
damagedinmelee | Unit takes damage from a melee attack |
damagedbymissile | Unit takes damage from a missile |
attackedinmelee | Unit is attacked by a melee attack |
doactive | Unit used a skill |
domeleedamage | Unit dealt damage with a melee attack |
domissiledamage | Unit dealt damage with a missile |
domeleeattack | Unit used a melee attack |
domissileattack | Unit used a missile attack |
kill | Unit killed another Unit |
killed | Unit dies |
absorbdamage | Unit takes damage |
levelup | Unit gained a Level |
death | Monster dies |
HitClass.txt
Index | Hit Class | Code |
0 | None | |
1 | Hand To Hand | hth |
2 | One Hand Swing vs. Small | 1hss |
3 | One Hand Swing vs. Large | 1hsl |
4 | Two Hand Swing vs. Small | 2hss |
5 | Two Hand Swing vs. Large | 2hsl |
6 | One Hand Thrust | 1ht |
7 | Two Hand Thrust | 2ht |
8 | Club | club |
9 | Staff | staf |
10 | Bow | bow |
11 | Crossbow | xbow |
12 | Claw | claw |
13 | Overlay | over |
LowQualityItems.txt
Name |
Crude |
Cracked |
Damaged |
Low Quality |
MissCalc.txt
code | *description |
par1 | The Param1 field value |
par2 | The Param2 field value |
par3 | The Param3 field value |
par4 | The Param4 field value |
par5 | The Param5 field value |
cpa1 | The CltParam1 field value |
cpa2 | The CltParam2 field value |
cpa3 | The CltParam3 field value |
cpa4 | The CltParam4 field value |
cpa5 | The CltParam5 field value |
hpa1 | The sHitPar1 field value |
hpa2 | The sHitPar2 field value |
hpa3 | The sHitPar3 field value |
chp1 | The cHitPar1 field value |
chp2 | The cHitPar2 field value |
chp3 | The cHitPar3 field value |
dpa1 | The dParam1 field value |
dpa2 | The dParam2 field value |
lvl | The current Missile Level |
edmn | Elemental Damage Min |
edmx | Elemental Damage Max |
edln | Elemental Damage Length |
edns | Elemental Damage Min (256ths) |
edxs | Elemental Damage Max (256ths) |
damn | Physical Damage Min |
damx | Physical Damage Max |
dmns | Physical Damage Min (256ths) |
dmxs | Physical Damage Max (256ths) |
rang | The Range field value |
sl12 | par1 + (lvl - 1) * par2 |
sd12 | ((110 * lvl) * (par2 - par1)) / (100 * (lvl + 6)) + par1 |
sl34 | par3 + (lvl - 1) * par4 |
sd34 | ((110 * lvl) * (par4 - par3)) / (100 * (lvl + 6)) + par3 |
cl12 | cpa1 + (lvl - 1) * cpa2 |
cd12 | ((110 * lvl) * (cpa2 - cpa1)) / (100 * (lvl + 6)) + cpa1 |
cl34 | cpa3 + (lvl - 1) * cpa4 |
cd34 | ((110 * lvl) * (cpa4 - cpa3)) / (100 * (lvl + 6)) + cpa3 |
shl1 | hpa1 + (lvl - 1) * hpa2 |
shd1 | ((110 * lvl) * (hpa2 - hpa1)) / (100 * (lvl + 6)) + hpa1 |
chl1 | chp1 + (lvl - 1) * chp2 |
chd1 | ((110 * lvl) * (chp2 - chp1)) / (100 * (lvl + 6)) + chp1 |
dl12 | dpa1 + (lvl - 1) * dpa2 |
dd12 | ((110 * lvl) * (dpa2 - dpa1)) / (100 * (lvl + 6)) + dpa1 |
MonAI.txt
AI - [O] - Defines a unique reference used by the AI field from MonStats.txt
*aip1 - [O] - Description of the AI behavior attached to the corresponding aip1 fields in MonStats.txt
*eol - [N] - End of Line
MonMode.txt
Index | name | token | code |
0 | death | DT | DT |
1 | neutral | NU | NU |
2 | walk | WL | WL |
3 | gethit | GH | GH |
4 | attack 1 | A1 | A1 |
5 | attack 2 | A2 | A2 |
6 | block | BL | BL |
7 | cast | SC | SC |
8 | skill 1 | S1 | S1 |
9 | skill 2 | S2 | S2 |
10 | skill 3 | S3 | S3 |
11 | skill 4 | S4 | S4 |
12 | dead | DD | DD |
13 | knockback | GH | KB |
14 | sequence | xx | xx |
15 | run | RN | RN |
MonPlace.txt
code |
place_nothing |
place_NPC_pack |
place_unique_pack |
place_champion |
place_rogue_warner |
place_bloodraven |
place_rivermonster_right |
place_rivermonster_left |
place_tightspotboss |
place_amphibian |
place_tentacle_ns |
place_tentacle_ew |
place_fallennest |
place_fetishnest |
place_talkingrogue |
place_talkingguard |
place_dumbguard |
place_fallen |
place_fallenshaman |
place_maggot |
place_maggotegg |
place_mosquitonest |
place_fetish |
place_fetishshaman |
place_impgroup |
place_imp |
place_miniongroup |
place_minion |
place_bloodlord |
place_deadminion |
place_deadimp |
place_deadbarb |
place_reanimateddead |
place_group25 |
place_group50 |
place_group75 |
place_group100 |
ObjMode.txt
Name | Token |
Neutral | NU |
Operating | OP |
Opened | ON |
Special 1 | S1 |
Special 2 | S2 |
Special 3 | S3 |
Special 4 | S4 |
Special 5 | S5 |
ObjType.txt
This file is too large to be displayed herePlayerClass.txt
Player Class | Code |
Amazon | ama |
Sorceress | sor |
Necromancer | nec |
Paladin | pal |
Barbarian | bar |
Expansion | |
Druid | dru |
Assassin | ass |
PlrMode.txt
Name | Token | Code |
death | DT | DT |
neutral | NU | NU |
walk | WL | WL |
run | RN | RN |
gethit | GH | GH |
town neutral | TN | TN |
town walk | TW | TW |
attack 1 | A1 | A1 |
attack 2 | A2 | A2 |
block | BL | BL |
cast | SC | SC |
throw | TH | TH |
kick | KK | KK |
skill 1 | S1 | S1 |
skill 2 | S2 | S2 |
skill 3 | S3 | S3 |
skill 4 | S4 | S4 |
dead | DD | DD |
sequence | GH | SQ |
knockback | GH | KB |
PlrType.txt
Name | Token |
Amazon | AM |
Sorceress | SO |
Necromancer | NE |
Paladin | PA |
Barbarian | BA |
Expansion | |
Druid | DZ |
Assassin | AI |
SkillCalc.txt
code | *Description |
ln12 | par1 + (lvl - 1) * par2 |
dm12 | ((110 * lvl) * (par2 - par1)) / (100 * (lvl + 6)) + par1 |
ln34 | par3 + (lvl - 1) * par4 |
dm34 | ((110 * lvl) * (par4 - par3)) / (100 * (lvl + 6)) + par3 |
ln56 | par5 + (lvl - 1) * par6 |
dm56 | ((110 * lvl) * (par6 - par5)) / (100 * (lvl + 6)) + par5 |
ln78 | par7 + (lvl - 1) * par8 |
dm78 | ((110 * lvl) * (par8 - par7)) / (100 * (lvl + 6)) + par7 |
par1 | The Param1 field value |
par2 | The Param2 field value |
par3 | The Param3 field value |
par4 | The Param4 field value |
par5 | The Param5 field value |
par6 | The Param6 field value |
par7 | The Param7 field value |
par8 | The Param8 field value |
lvl | The current Skill Level (with bonuses) |
edmn | Elemental Damage Min |
edmx | Elemental Damage Max |
edln | Elemental Damage Length |
toht | Attack Rating Bonus (ToHit) Calculation |
mana | Mana Cost Calculation |
mps | Mana Cost Per Second Calculation |
math | Attack Rating (ToHit) Mastery |
madm | Physical Damage Mastery |
macr | Critical Hit Mastery |
m1en | Elemental Damage Min for SkillDesc descmissile1 |
m1ex | Elemental Damage Max for SkillDesc descmissile1 |
m1el | Elemental Damage Length for SkillDesc descmissile1 |
m2en | Elemental Damage Min for SkillDesc descmissile2 |
m2ex | Elemental Damage Max for SkillDesc descmissile2 |
m2el | Elemental Damage Length for SkillDesc descmissile2 |
m3en | Elemental Damage Min for SkillDesc descmissile3 |
m3ex | Elemental Damage Max for SkillDesc descmissile3 |
m3el | Elemental Damage Length for SkillDesc descmissile3 |
m1rn | Range for SkillDesc descmissile1 |
m2rn | Range for SkillDesc descmissile2 |
m3rn | Range for SkillDesc descmissile3 |
edns | Elemental Damage Min (256ths) |
edxs | Elemental Damage Max (256ths) |
ulvl | The caster unit's current Level |
blvl | The base Skill Level (without bonuses) |
usmc | Mana Cost (256ths) |
m1eo | Elemental Damage Min for SkillDesc descmissile1 (256ths) |
m1ey | Elemental Damage Max for SkillDesc descmissile1 (256ths) |
m2eo | Elemental Damage Min for SkillDesc descmissile2 (256ths) |
m2ey | Elemental Damage Max for SkillDesc descmissile2 (256ths) |
me3o | Elemental Damage Min for SkillDesc descmissile3 (256ths) |
me3y | Elemental Damage Max for SkillDesc descmissile3 (256ths) |
enma | Elemental Damage Min with Elemental Mastery |
exma | Elemental Damage Max with Elemental Mastery |
edma | Elemental Damage Length with Elemental Mastery |
enms | Elemental Damage Min with Elemental Mastery (256ths) |
exms | Elemental Damage Max with Elemental Mastery (256ths) |
len | The auralencalc field value |
clc1 | The calc1 field value |
clc2 | The calc2 field value |
clc3 | The calc3 field value |
clc4 | The calc4 field value |
rng | The aurarangecalc field value |
ast1 | The aurastatcalc1 field value |
ast2 | The aurastatcalc2 field value |
ast3 | The aurastatcalc3 field value |
ast4 | The aurastatcalc4 field value |
ast5 | The aurastatcalc5 field value |
ast6 | The aurastatcalc6 field value |
pst1 | The passivecalc1 field value |
pst2 | The passivecalc2 field value |
pst3 | The passivecalc3 field value |
pst4 | The passivecalc4 field value |
pst5 | The passivecalc5 field value |
pets | The petmax field value |
skpt | The skpoints field value |
pnma | Physical Damage Min (Skill Only) |
pxma | Physical Damage Max (Skill Only) |
pnms | Physical Damage Min (Skill Only) (256ths) |
pxms | Physical Damage Max (Skill Only) (256ths) |
mael | Elemental Damage Mastery |
mapi | Throwing Pierce Mastery |
manc | Throwing No Consume Mastery |
par9 | The Param9 field value |
pa10 | The Param10 field value |
pa11 | The Param11 field value |
pa12 | The Param12 field value |
ln91 | par9 + (lvl - 1) * pa10 |
dm91 | ((110 * lvl) * (pa10 - par9)) / (100 * (lvl + 6)) + par9 |
ln21 | pa11 + (lvl - 1) * pa12 |
dm21 | ((110 * lvl) * (pa12 - pa11)) / (100 * (lvl + 6)) + pa11 |
clc5 | The calc5 field value |
clc6 | The calc6 field value |
pst6 | The passivecalc6 field value |
StorePage.txt
Store Page | Code |
Armor Page | armo |
Weapons Page | weap |
Magic Page | mag |
Misc Page | misc |
Commonly Referenced Data Tables
The following tables are frequently used for various files, but do not have a file of their own.
Elemental Types Table
Code | Description |
(empty) | None |
fire | Fire |
ltng | Lightning |
mag | Magic |
cold | Cold (Uses "ELen") |
pois | Poison (Uses "ELen") |
life | Life Drain |
mana | Mana Drain |
stam | Stamina Drain |
stun | Stun (Uses "ELen") |
rand | Randomly select between Fire, Lightning, Magic, Cold, or Poison. (If the related "El#Dur" field equals 0, then default the value to 25) |
burn | Burning (Uses "ELen") |
frze | Freeze (Uses "ELen") |
Event Functions Table
Code | Parameters | Description |
0 | Do nothing | |
1 | srvmissilea | SorApplyChillingArmor - Shoot a missile at the target unit |
2 | cltoverlaya calc1 | SorApplyFrozenArmor - Deal skill damage with the freeze length controlled by the calc field and apply an overlay to the attacker |
3 | cltoverlaya | SorApplyShiverArmor - Deal elemental skill damage and apply an overlay to the attacker |
4 | auratargetstate calc1 calc2 calc3 calc4 | NecApplyIronMaiden - Deal damage to the attacking unit using the calc fields as damage modifiers, based on the state being active. If the target monster is equal to "bloodgolem" then calculate a life steal and also create the "steallife" overlay on the golem's caster unit. |
5 | auratargetstate calc1 prgoverlay | NecApplyLifeTap - If the target has the "auratargetstate" state, then apply a percentage heal to the attacker that is determined by the calc field. Also apply an overlay to the attacker when the attack is healed. |
6 | ItemApplyAttackerTakesDamage - Deal physical damage to the attacker | |
7 | ItemApplyKnockback - Determine a chance to knockback the attacker monster | |
8 | ItemApplyHowl - Apply terror to the monster, changing its AI to run away | |
9 | ItemApplyDimVision - Based on a random chance, apply the "Dim Vision" skill to the enemy attacker with a random skill level between 1 to 20. | |
10 | ItemApplyAttackerTakesLtngDamage - Deal lightning damage to the attacker | |
11 | ItemApplyAttackerTakesFireDamage - Deal fire damage to the attacker | |
12 | ItemApplyAttackerTakesColdDamage - Deal cold damage to the attacker, and apply a cold length that is modified based on the level difference between the attacker and defender | |
13 | ItemApplyDamageToMana - Add mana to the source unit, based on a percentage of the damage taken. Also add a "stealmana" overlay to the source unit. | |
14 | ItemApplyFreeze - Based on a random chance, deal damage to the enemy attacker and apply a freeze length | |
15 | ItemApplyOpenWounds - Based on a random chance, apply open wounds on the target, using the "openwounds" state | |
16 | ItemApplyCrushingBlow - Based on a random chance, deal crushing blow percentage life damage to the enemy attacker and apply the "bash" overlay | |
17 | ItemApplyManaAfterKill - Add mana to the source unit and add a "stealmana" overlay | |
18 | ItemApplyHealAfterDemonKill - If a Demon enemy is killed, then add life to the source unit and add a "steallife" overlay | |
19 | ItemApplySlow - Apply the "slowed" state to the target | |
20 | ItemApplyHitOrAttack - Based on a random chance, cast a skill on the target when the source unit attacks | |
21 | ItemApplyGetHit - Based on a random chance, cast a skill on the attacker when the source unit gets hit | |
22 | aurastate aurastat1 aurastat2 | NecApplyBoneArmor - Calculates the minimum and maximum damage to absorb based on the aura stat values. If no remaining absorbing damage is left, then remove the state. |
23 | calc2 calc3 | NecApplyBloodGolemSteal - Calculate a life steal for the attacking unit and its boss unit. Also create the "steallife" overlay on the both units. |
24 | aurastate calc1 calc2 prgoverlay | SorApplyEnergyShield - If the "aurastate" state is active, then calculate the percentage of damage taken by the source unit that should be absorbs and the amount of mana that should be consumed by the percent absorbed. Also apply an overlay on the source unit. If the source unit runs out of mana, then remove the state. |
25 | aurastate aurastat1 aurastat2 | DruApplyCycloneArmor - Calculates the minimum and maximum elemental damage to absorb based on the aura stat values. If no remaining absorbing damage is left, then remove the state. |
26 | Param5 | NecApplyBloodGolemShare - Controls the percentage of damage taken by the source unit that should be transferred to the source unit's boss. |
27 | NecApplyClayGolemSlow - Apply the "slowed" state to the target | |
28 | ItemApplyHealAfterKill - Add life to the source unit and add a "steallife" overlay | |
29 | ItemApplyRestInPeace - Apply the "restinpeace" state on the enemy unit | |
30 | ItemApplyOnDeath - Based on a random chance, cast a skill when the source unit dies | |
31 | ItemApplyReanimate - Based on a random chance, revive a dead monster that is not a champion or unique. | |
32 | aurarangecalcHitClass | SkillApplyRadiusDamage - Use a skill's damage to deal damage in an area based on the skill's hit class |
33 | aurastatcalc1 aurastatcalc2 passiveitype passivereqweaponcount sumskill1 sumsk1calc | SkillActivateSubskill - Based on a random chance controlled by the "aurastatcalc1" value, cast a skill (determined by "sumskill1") with a skill level controlled by "sumsk1calc". If "aurastatcalc2" value is greater than 0, then factor the "passiveitype" and "passivereqweaponcount" fields for determining if the skill should be cast or not. |
Hit Flags Table
Bit Field Value | Binary Equivalent Value | Description |
1 | 00000000001 | Do not add physical damage |
2 | 00000000010 | Do not add any damage |
4 | 00000000100 | No Life Steal |
8 | 00000001000 | No Mana Steal |
16 | 00000010000 | No Stamina Steal |
32 | 00000100000 | Use Source Damage |
128 | 00010000000 | No Triggered Events |
256 | 00100000000 | Bypass Undead |
512 | 01000000000 | Bypass Demons |
1024 | 10000000000 | Bypass Beasts |
Inventory Transform Table
Code | Color |
0 | No color change |
1 | Grey |
2 | Grey 2 |
3 | Gold |
4 | Brown |
5 | Grey Brown |
6 | Inventory Grey |
7 | Inventory Grey 2 |
8 | Inventory Grey Brown |
Player Spell Table
Code | Parameters | Description |
0 | Do nothing | |
1 | spellicon | SkillItemIdentify - Sets the spell icon. Identifies anitem. |
2 | SkillItemTownPortal - The player creates a town portal | |
3 | state stat1, calc1 stat2, calc2 stat3, calc3 len | SkillItemHealPotion 1. Applies a "state" on the player that is controlled by the "len" field 2. This function requires that the stat parameters be either "hitpoints", "hpregen", "mana", or "manarecovery" 3. Calculates a flat amount of these stats to restore to the player, based on the class and Vitality/Energy attribute for Life/Mana stats |
4 | state stat1, calc1 stat2, calc2 stat3, calc3 len | SkillItemHealPotion2 1. Applies a "state" on the player that iscontrolled by the "len" field 2. This function requires that the statparameters be either "hitpoints", "hpregen", "mana", or "manarecovery" 3. Calculates a flat amount of these stats torestore to the player |
5 | stat1, calc1 stat2, calc2 stat3, calc3 | SkillItemHealPotion3 - Adds a percentage of the stat's"maxstat" value (ItemStatCost.txt) to the current stat. This percentage is determined by the related calculated value. |
6 | state cstate1 cstate2 len | SkillItemPotionAntidote - Clears the "cstate1" and "cstate2" States on the user and applies the "state" state with its duration controlled by the "len" field. |
7 | SkillItemTransmogrify - Opens the Horadric Cube UI | |
8 | SkillItemElixir - Get a stat from item's mod class and set it to the it's "value" stat | |
9 | state stat1, calc1 stat2, calc2 stat3, calc3 len | SkillItemHerb 1. Applies a "state" on the player that iscontrolled by the "len" field 2. Calculates a flat amount of the stats to set on the player 3. Has a special case where if the stat equals "staminarecoverybonus" then also set the current "stamina" stat to be equal to the "maxstamina" stat |
10 | SkillItemSkill - Cast a level 1 Sorceress Fire Ball skill at a targeted enemy or targeted location | |
11 | SkillItemSkillXY - Cast a level 1 Sorceress Fire Ball skill at a targeted location |
Quests Table
Code | Description |
0 | Not a quest item |
1 | Act 1 Prologue |
2 | Den of Evil |
3 | Sisters' Burial Grounds |
4 | Tools of the Trade |
5 | The Search for Cain |
6 | The Forgotten Tower |
7 | Sisters to the Slaughter |
8 | Act 2 Prologue |
9 | Radament's Lair |
10 | The Horadric Staff |
11 | The Tainted Sun |
12 | The Arcane Sanctuary |
13 | The Summoner |
14 | The Seven Tombs |
15 | Act 2 Traversed |
16 | Lam Esen's Tome |
17 | Khalim's Will |
18 | Blade of the Old Religion |
19 | The Golden Bird |
20 | The Blackened Temple |
21 | The Guardian |
22 | Act 4 Prologue |
23 | The Fallen Angel |
24 | Terror's End |
25 | The Hellforge |
26 | Rogue Warning |
27 | Guard in Town Warning |
28 | Guard in Desert Warning |
29 | Dark Wanderer Seen |
30 | Angel Warning |
31 | Respec from Akara Complete Act 5 Prologue |
32 | Siege on Harrogath |
33 | Rescue on Mount Arreat |
34 | Prison of Ice |
35 | Betrayal of Harrogath |
36 | Rite of Passage |
37 | Eve of Destruction |
Quest Flags Table
Code | Description |
0 | Act 1 Prologue Seen |
1 | Den of Evil Complete |
2 | Sisters' Burial Grounds Complete |
3 | Tools of the Trade Complete |
4 | The Search for Cain Complete |
5 | The Forgotten Tower Complete |
6 | Sisters to the Slaughter Complete |
7 | Act 1 Traversed |
8 | Act 2 Prologue Seen |
9 | Radament's Lair Complete |
10 | The Horadric Staff Complete |
11 | The Tainted Sun Complete |
12 | The Arcane Sanctuary Complete |
13 | The Summoner Complete |
14 | The Seven Tombs Complete |
15 | Act 2 Traversed |
16 | Act 3 Prologue Seen |
17 | Lam Esen's Tome Complete |
18 | Khalim's Will Complete |
19 | Blade of the Old Religion Complete |
20 | The Golden Bird Complete |
21 | The Blackened Temple Complete |
22 | The Guardian Complete |
23 | Act 3 Traversed |
24 | Act 4 Prologue Seen |
25 | The Fallen Angel Complete |
26 | Terror's End Complete |
27 | The Hellforge Complete |
28 | Act 4 Traversed |
29 | Rogue Warning Complete |
30 | Guard in Town Warning Complete |
31 | Guard in Desert Warning Complete |
32 | Dark Wanderer Seen |
33 | Angel Warning Complete |
34 | Act 5 Prologue Seen |
35 | Siege on Harrogath Complete |
36 | Rescue on Mount Arreat Complete |
37 | Prison of Ice Complete |
38 | Betrayal of Harrogath Complete |
39 | Rite of Passage Complete |
40 | Eve of Destruction Complete |
41 | Respec from Akara Complete |
Result Flags Table
Bit Field Value | Binary Equivalent Value | Description |
1 | 0000000000000001 | Hit |
2 | 0000000000000010 | Death |
4 | 0000000000000100 | Get Hit |
8 | 0000000000001000 | Knockback |
16 | 0000000000010000 | Block |
32 | 0000000000100000 | No Passive |
128 | 0000000010000000 | Dodge |
256 | 0000000100000000 | Avoid |
512 | 0000001000000000 | Evade |
4096 | 0001000000000000 | Ignore Friendly |
8192 | 0010000000000000 | Double Damage |
16384 | 0100000000000000 | Soft Hit |
32768 | 1000000000000000 | Two Hand-to-Hand Block |
Transparency Table
Code | Description |
0 | Transparency at 25% |
1 | Transparency at 50% |
2 | Transparency at 75% |
3 | Black Alpha Transparency |
4 | White Alpha Transparency |
5 | No Transparency |
6 | Dark Transparency (Unused) |
7 | Highlight Transparency (Used when mousing over the unit) |
8 | Blended |
Weapon Class Table
Code | Description |
1hs | One Handed Swing |
1ht | One Handed Thrust |
bow | Bow |
2hs | Two Handed Swing |
2ht | Two Handed Thrust |
1js | Left Jab Right Swing |
1jt | Left Jab Right Thrust |
1ss | Left Swing Right Swing |
1st | Left Swing Right Thrust |
stf | Staff |
xbw | Crossbow |
ht1 | One Hand-To-Hand |
ht2 | Two Hand-To-Hand |
Modder's Info
The following section will outline common folder locations, important modding tools, useful video guides and more.
Please be patient as this section (and the data guide in general) get improved over time.
File Types and Capabilities
The following table will outline the file types that exist, their purposes and our current abilities to edit them.
[L] = Legacy View Only, [R] = Resurrected View Only, [B] = Both Views, [X] = Unused
File Type | Purpose | Capability |
DC6 [L] | 2D images for items, icons and ui elements in the Legacy View | Fully Unlocked |
DCC [L] | Animated 2D images (DC6) for various visual effects | Fully Unlocked |
DS1 [B] | "Map" file which controls legacy visuals as well as monster/object placement and collision for both views | Fully Unlocked |
FLAC [B] | Audio files used for all in-game sounds | Open Standard |
JSON [B] | Plain text files used for a vast majority of Resurrected file linking and functions; Some legacy content also adapted to JSON | Open Standard |
MODEL [R] | 3D assets for Resurrected View which control unit, item and environment visuals in the "world view" | Partially Unlocked (Ep.9 Guide) |
PARTICLES [R] | 3D Visual Effects for Resurrected View which control missiles, overlays, and environmental decoration elements | Partially Unlocked (Ep.9 Guide) |
SPRITE [R] | 2D images for items, icons and ui elements in the Resurrected View. Can also be used by certain "widgets" for animated images | Fully Unlocked |
TBL [X] | String Definitions for all in-game text | Unused. Converted to JSON |
TEXTURE [R] | 2D images "wrapped" around various models and particles | Fully Unlocked |
TXT [B] | Tab-Delimited text files which control 95% of gameplay-related aspects | Fully Unlocked |
Recommended Modding Programs
The following table will outline the various user-made or open-source programs available to you.
While sometimes these specific programs are not required, they are recommended for their improved functionality, quality of life or compatibility.
Please keep in mind that while a project may be listed as active; it doesn't mean it gets frequent updates.
Program / Direct DL Link | Purpose | Version | Development Status | Author(s) |
AFJ's Sheet Editor | Used to edit TXT files | 0.61b | Inactive | AFJ |
Beacon | Used to advertise and browse active LAN games (optional advertising) | 1.0.7 | Active | Bonesy |
CascViewer | Used to extract files from compressed game storage | 2.3.0 | Unknown | Ladik |
D2Compare | Used to compare TXT file changes between versions (including custom filesets) | 1.0.2 | Active | Bonesy |
D2RHUD (SP) or D2RHUD (MP) | Used to draw a screen overlay that displays specified monster and player stats | --- | Active | Bonesy |
D2RLAN | Mod Launcher/Manager for LAN-based mods | 1.1.1 | Active | Bonesy |
D2RLaunch | Mod Launcher/Manager for Single-Player only mods | 1.4.9 | Active | Bonesy |
D2R Backup Buddy | Used to create automated character and stash file backups | 1.0.0 | Active | Bonesy |
MoPaH | Used primarily to replace embedded textures inside MODEL and PARTICLE files | 0.4 | Active | Bonesy |
Noesis | Used to extract MODELS and edit TEXTURES | 4.458 | Unknown | Rich Whitehouse, Jayn23 |
PKBlaster* | Used to change baked-in colors of PARTICLES. *Not guaranteed to work | 0.0.5 | Inactive | Leny, Bonesy |
SpriteEdit | Used to edit SPRITE files (2D Images) | 2.0 | Inactive | Cla$$ics, Bonesy |
WINDS1_Edit | Used to edit DS1 files | 1.0 | Inactive | Paul Siramy |
Visual Studio Code | Used to edit JSON files (Recommended) | --- | Active | Microsoft |
Scripts and Resources
Here are some user-created code snippets and collections that are likely to help with your day-to-day editing tasks and/or save you much time.
Resource | Purpose | Type | Author(s) |
AnimData Editor | Used to edit AnimData.d2 | EXE/BATCH | Paul Siramy |
CombinedDS1 Generator | Used to generate mapping cache file for custom maps | Powershell Script | Bonesy |
D2RLint | Used to error check various TXT files and functions for issues | EXE/BATCH | Cla$$ics |
String Translator | Used to convert specified english string to all other languages | Powershell Script | Bonesy |
SuperCalc | Provides monster, skill, and many other various modding-related calculators | Google Sheets | Bonesy |
Quest Icon Template | Provides all Quest Icons in pre-sliced and organized formats | Photoshop Template | Bonesy |
Skill Icon Template | Provides all Skill Icons in pre-sliced and organized formats | Photoshop Template | Bonesy |
Legacy Upscaled | Provides manually upscaled legacy item images in the D2R format | Images | Bonesy |
Commonly Edited Folders
The below table will list common reasons you might browse to these locations. It does not indicate all files or edits possible.
Location | Purpose | File Type(s) |
global | Mostly files for controlling Legacy View Mode, includes ui layouts: | DC6, DCC, DS1, FLAC, JSON, TXT |
hd | Files for controlling Resurrected View Mode: | FLAC, JSON, MODEL, PARTICLES, SPRITE, TEXTURE |
local | Files for strings (text) for Both View Modes: | FLAC, JSON |
global/excel | Files which control 95% of gameplay-related edits | TXT |
global/ui/layouts | Files which control the in-game UI paneling | JSON |
global/tiles | Files which control level/map generation. (D2R Visuals applied by JSON) | DS1 |
hd/character | Files for unit visuals and animations | MODEL, TEXTURE, JSON |
hd/env/preset | Files for level/map visuals for preset levels | JSON |
hd/env/vis | Files for level/map visuals for level types | JSON |
hd/global/excel | Files for adjusting controller and "quick-cast" settings | JSON |
hd/global/music | Files for controlling background and theme related sounds | FLAC |
hd/global/sfx | Files for controlling item, unit and UI related sounds | FLAC |
hd/global/ui | Files which control 2D Visuals for items, skill/quest icons and all other UI panels | SPRITE |
hd/items | Files which control the visuals for all items in Resurrected View | MODEL, TEXTURE, JSON |
hd/missiles | Files which control the visuals for the 3D models of all missiles in Resurrected View | MODEL, TEXTURE, JSON |
hd/overlays | Files which control the visuals for unit overlays in Resurrected View | JSON |
hd/vfx/particles | Files which contain the visual effects for missiles, overlays and environmental decoration | PARTICLES |
hd/vfx/textures | Files which control various visual aspects for both models and particles | TEXTURE |
local/lng/strings | Files which control all text displayed in the game | JSON |
Commonly Edited Files
The below table will list common reasons you might browse to these locations. It does not indicate all files or edits possible.
Filename | Location | Purpose | Recommended Editor |
AnimData.D2 | global | Controls the animation speed (breakpoints) of all units | AnimData Editor |
DataVersionBuild.txt | global | Defines the mod version to compare against the retail version | Notepad |
_ProfileHD.json | global/ui/layouts | Defines global variables and settings many layout JSON files use | Visual Studio Code |
_ProfileLV.json | global/ui/layouts | Defines global variables and settings many layout JSON files use. Used while "Low Vision Mode" is enabled in-game | Visual Studio Code |
Monsters.json | hd/character | Links entries from the ID field in MonStats.txt to their matching HD counterparts. Looks in the "enemy" or "npc" folders depending on the npc flag status | Visual Studio Code |
Items.json | hd/items | Links entries from the code field in AMW.txt to their matching HD counterparts (Models, Sprites and JSON files) JSON and Model files are located in hd/items, while Sprites are located in hd/global/ui/items | Visual Studio Code |
Sets.json | hd/items | Links entries from the index field in SetItems.txt to their matching HD counterparts (Models, Sprites and JSON files) JSON and Model files are located in hd/items, while Sprites are located in hd/global/ui/items Requires invfile in SetItems.txt to have any value specified | Visual Studio Code |
Uniques.json | hd/items | Links entries from the index field in UniqueItems.txt to their matching HD counterparts (Models, Sprites and JSON files) JSON and Model files are located in hd/items, while Sprites are located in hd/global/ui/items Requires invfile in UniqueItems.txt to have any value specified | Visual Studio Code |
Missiles.json | hd/missiles | Links entries from the Missile field in Missiles.txt to their matching HD counterparts in hd/missiles | Visual Studio Code |
ControllerSkillSettings.json | hd/global/excel | Defines the "quick-cast" settings for any altered/added skills. References the *ID values to define settings | Visual Studio Code |
Known File Limits
The below tables will list the known (or previously tested) limits for both .txt files and other file types
.TXT Limits
The values below were largely derived from this legacy post. Known changes in D2R are listed.
Limits that you may need to worry about are listed in yellow.
File Name | Known Limit | Special Notes |
Armor.txt | 1024 Rows | Items past 1024 cannot be spawned by racks |
Automagic.txt | 4096+ Rows | 2048+ Tested |
Gems.txt | 256 Rows | --- |
ItemStatCost.txt | 512 Rows | --- |
ItemTypes.txt | 65536 Rows | --- |
Levels.txt | 1024* Rows | Levels past 256 cannot be referenced by the cube (red portals) |
LvlPrest.txt | 32768 Rows | --- |
MagicPrefix/Suffix.txt | 2048 Rows | --- |
Missiles.txt | 32768 Rows | --- |
MonProp.txt | 32768* Rows | Entries past 1024 do not function correctly for some linking functions |
MonStats.txt | 32768* Rows | Entries past 1024 do not function correctly for some linking functions |
MonStats2.txt | 32768* Rows | Entries past 1024 do not function correctly for some linking functions |
Objects.txt | 585+ Rows | Likely 32768 Rows, but unconfirmed |
ObjType.txt | 585+ Rows | Likely 32768 Rows, but unconfirmed |
RarePrefix/Suffix.txt | 256 Rows | --- |
Runes.txt | 4096 Rows | --- |
SetItems.txt | 32768 Rows | --- |
Sets.txt | 4096 Rows | --- |
Skills.txt | 32768* Rows | Entries past 512 will not function correctly on item skills without editing the Save Bits for the appropriate stat |
SkillDesc.txt | 32768* Rows | Entries past 512 will not function correctly on item skills without editing the Save Bits for the appropriate stat |
States.txt | 512* Rows | Entries past 256 will not function on item States, for games created after it was first used |
SuperUniques.txt | 512* Rows | Likely 512 Rows, but unconfirmed |
UniqueItems.txt | 4096 Rows | --- |
D2R File Limits
The values below were personally tested/confirmed after various development projects or capability testing sessions.
File Name/Type | Known Limit | Special Notes |
Items.JSON | 3 Character Codes | TXT files support 4 characters codes, but Items.json does not |
Sprite File | 16384 Horizontal Pixels | Vertical Pixel Limit untested (Animated Sprites are placed horizontally) |
String File | 65536 String ID's | String ID's past 65536 will start replacing ID's 1+ (local/lng/strings) |
Video File | VP9 Encoded WEBM | This is the only "known-good" settings. I used (CloudConvert) |
Video Guides
The below tables will outline all of the video guides I have currently made. More will be added as i'm able. Others are also welcome to contribute.
Due to the upload date for some of the videos; certain limitations or information may be slightly inaccurate. Please check our Discord for active chat assistance.
All video guides contain timestamps/chapters for each subtask, and I strongly recommend taking advantage of them. (I tend to yammer a bit).
The Hitchhiker's Series
This series covers the more basic attributes of D2R Modding; such as file types, known limits, needed programs, etc.
Most of these videos will also show a brief demonstration of edits being applied; but is not the main focus of this series.
Ep. # | Title | Purpose | Direct Link |
1 | D2R File Types | Gives a broad overview of the new file types to D2R | https://youtu.be/nd62gkLCYrA |
2 | Modding 101 | Explains the different mod modes and how to set them up | https://youtu.be/QhSlhcDdx3g |
3 | Reference Files | Discusses "reference" files and how they're used | https://youtu.be/JPSv12oiHH4 |
4 | Strings | Outlines how in-game text is defined and it's associated limits | https://youtu.be/ytp_HGdQpV0 |
5 | New TXT Edits | Explains some of the new D2R only columns that have been added | https://youtu.be/P8bXzcQKgWs |
6 | Sprites | Demonstrates how Sprites function and explains the known limits | https://youtu.be/Pf-_Tu4xZSk |
7 | JSON Files | Provides an outline of the unique attributes for JSON file functionality in D2R | https://youtu.be/jhYSsDdB-Zc |
8 | Textures | Explains the varying types, usage and needed programs for this file types in D2R | https://youtu.be/Bvb-0Yf3kik |
9 | Models & Particles | Explains the currently limited modding aspects for these file types in D2R | https://youtu.be/jj9C9u5EdsU |
10 | TXT Files | Describes how the .txt files control varying gameplay aspects | https://youtu.be/PVFHaCut0HE |
The Catacombs Series
This series covers the more advanced attributes of D2R Modding; it assumes you've already watched The Hitchhiker's Series, linked above.
These videos will tend to focus on a specific modding task and show the editing process in actuality; doing my best to explain as I go.
None of these videos contain any editing - All videos are single-take, uncut walkthroughs; in order to provide realistic timeframes and demonstrate common mistakes.
Ep. # | Title | Purpose | Direct Link |
1 | Items | Demonstrates how to change item stats, graphics used, text displayed and Particle attachment | https://youtu.be/lIPAMnkCuss |
2 | Melee Splash Damage | Explains a single, adapatable method of enabling "melee splash" on items | https://youtu.be/8WCuE58oXZo |
3 | Particle Colors | Explains how to edit the Textures embedded inside a Particle, to control it's colors | https://youtu.be/UOCl7g5Bug0 |
4 | Custom Warp Levels | Demonstrates how to create a connection between two levels, using a custom warp entry and visual | https://youtu.be/_cJZ7u0bQZE |
5 | Placing New Monsters | Guides you through creating a new monster and manually placing it in a map file | https://youtu.be/4Pjw4xoU0bM |
6 | Custom Texture Models | Explains the process and reasoning needed for embedding textures into "new" 3D models | https://youtu.be/xPCPJf7qiLE |
7 | Adding Custom NPC | Explains how to assign "gossip" text to a monster (NPC dialogue) | https://youtu.be/87Zv1WuRh_Y |
8 | Creating New Sounds | Demonstrates how to add a "taunt" sound to a monster; can be used for other sound edits also | https://youtu.be/J3bbGzaAQTo |
9 | Item Drop Odds | Explains how the drop tables in D2R work, and outlining column functions to control them as desired | https://youtu.be/XlavLZ1pRV0 |
10 | Skill Icons | Shows you how to add or update skill icons (also applies to quest icons with different file locations) | https://youtu.be/pXrJ9haVDGM |
11 | Waypoints | Demonstrates how to add a waypoint to "Chaos Sanctuary" as an example | https://youtu.be/JSiMjojVl7c |
12 | Skills, Calcs, Descriptions | Explains how skills, their tooltips and calculations in general function for D2R | https://youtu.be/arKVMUQiKMM |
13 | Item "Corruption" Mechanics | Shows one method of creating the popular "corruption" style cube recipes using a new stat | https://youtu.be/2u9QlT7rQ40 |
14 | Color Dye System | Guides you through creating the needed stats and recipes which will allow players to control item color | https://youtu.be/LRQeFO0Y3Y4 |
15 | Expanding In-Game Storage | Demonstrates how to edit in-game storage panels to be desired size | https://youtu.be/WAPXnQhp63A |
16 | Creating a Kill/Death Tracker | Guides you through the advanced process of tracking most lifetime character kills/deaths | https://youtu.be/TxP_RdoCdOk |
17 | Creating a Passive CtC Skill | Explains one method of creating a passive skill which can trigger other skills, using an event-based chance% | https://youtu.be/mfKU7XydEBI |
18 | Colors, Colors, Colors | Explains advanced controls for things such as color palettes, variant shifts, MonUMods and state applications | https://youtu.be/5PT2P1DVaJU |
19 | Making Enemies into Players | Shows the process of changing a monster visual and animation to take on a players | https://youtu.be/FzDbz4yB87Q |
20 | Hardcoded Workarounds #1 | Demonstrates 3 different workarounds you can easily achieve to bypass hardcoded restrictions | https://youtu.be/vaW__qvecbs |
21 | Breakpoints/Animation Sequences | Explains the basics of how animation speeds are determined and edited | https://youtu.be/43i3vArQMcc |
22 | Custom Status/Indicator Icons | Guides you through editing a particle's texture mask(s) to create custom icons or alter the appearance | https://youtu.be/rDMwhBhfh3Q |
23 | Skill Filtering, Missile Functions, Particles | Outlines how missile functions, JSON files and particles can link to each other | https://youtu.be/K4A5M0BWvfI |