DIABLO II DATA FILE GUIDE

Table of Contents

actinfo.txt 3

armor.txt 4

automagic.txt 12

AutoMap.txt 15

belts.txt 17

books.txt 18

charstats.txt 19

cubemain.txt 22

difficultylevels.txt 27

experience.txt 29

gamble.txt 30

gems.txt 30

hireling.txt 50

hirelingdesc.txt 50

itemratio.txt 32

ItemStatCost.txt 38

ItemTypes.txt 47

LevelGroups.txt 52

Levels.txt 52

LvlMaze.txt 59

LvlPrest.txt 60

LvlSub.txt 62

LvlTypes.txt 63

LvlWarp.txt 63

MagicPrefix.txt 65

MagicSuffix.txt 67

Missiles.txt 70

misc.txt 93

monequip.txt 103

MonLvl.txt 104

MonPreset.txt 105

MonProp.txt 106

monseq.txt 106

monstats.txt 108

monstats2.txt 118

MonType.txt 125

monumod.txt 126

monsounds.txt 128

npc.txt 129

objects.txt 131

objgroup.txt 143

objpreset.txt 143

Overlay.txt 144

pettype.txt 145

Properties.txt 146

QualityItems.txt 149

RarePrefix.txt 150

RareSuffix.txt 151

Runes.txt 151

SetItems.txt 152

Sets.txt 155

shrines.txt 157

skills.txt 159

skilldesc.txt 202

sounds.txt 208

SoundEnviron.txt 211

states.txt 214

SuperUniques.txt 221

TreasureClassEx.txt 222

UniqueAppellation.txt 223

UniqueItems.txt 224

UniqueTitle.txt 227

UniqueSuffix.txt 227

weapons.txt 227

wanderingmon.txt 236

Reference Data Files. 237

actinfo.txt

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

act - Defines the ID for the Act

town - Uses an area level (“Name field” from levels.txt) to define the Act’s town area

start - Uses an area level (“Name field” from levels.txt) to define where the player starts in the Act

 

maxnpcitemlevel - Controls the maximum item level for items sold by the NPC in the Act

 

classlevelrangestart - 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 - 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 - Uses an index to determine which wandering monster class to use when populating areas (See wanderingmmon.txt for a list of possible monsters to spawn)

wanderingnpcrange - This is a modifier that gets added to the “wanderingnpcstart” value to randomly select an index

 

commonactcof - 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 (to waypoint9) - Uses an area level (“Name field” from levels.txt) as the designated waypoint selection in the Waypoint UI

 

wanderingMonsterPopulateChance - The percent chance (from 0 to 100) to spawn a wandering monster (See wanderingmmon.txt for a list of possible monsters to spawn)

wanderingMonsterRegionTotal - The maximum number of wandering monsters allowed at once

wanderingPopulateRandomChance - A secondary percent chance (from 0 to #) to determine whether to attempt populating with monsters. Only fails if random chance selects 0.

armor.txt

Overview

This file controls the functionalities for armor type items

 

This file is loaded together with other similar files in the following order: weapons.txt, armor.txt, misc.txt

These combined files form the items structure. Technically these files share the same fields, but some fields are exclusive for specific item types, so they are not displayed in the data files that do not need them.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

name - This is a reference field to define the item

version - Defines which game version to create this item (0 = Classic mode | 100 = Expansion mode)

compactsave - Boolean Field. 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 - Determines the chance that the item will randomly spawn (1/#). 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 - Boolean Field. If equals 1, then this item can be randomly spawned. If equals 0, then this item will never randomly spawn.

 

speed - If the item type is an armor, then this will affect the Walk/Run Speed reduction when wearing the armor. If the item type is a weapon, then this will affect the Attack Speed reduction when wearing the weapon.

reqstr - Defines the amount of the Strength attribute needed to use the item

reqdex - Defines the amount of the Dexterity attribute needed to use the item

 

durability - Defines the base durability amount that the item will spawn with.

nodurability - Boolean Field. If equals 1, then the item will not have durability. If equals 0, then the item will have durability.

 

level - 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 - Boolean Field. If equals 1, then display the item level next to the item name. If equals 0, then ignore this.

levelreq - Controls the player level requirement for being able to use the item

 

cost - 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 - Defines the gambling gold cost of the item on the Gambling UI

 

code - Defines a unique 3 letter/number code for the item. This is used as an identifier to reference the item.

namestr - String Key that is used for the base item name

 

magic lvl - Defines the magic level of the item, which can affect how magical item modifiers that can appear on the item (See automagic.txt)

auto prefix - Automatically picks an item affix name from a designated “group” value from the automagic.txt file, instead of using random prefixes. This is only used when the item is Magical quality.

 

alternategfx - 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 - Links to a “code” field to determine the normal version of the item

ubercode - Links to a “code” field to determine the Exceptional version of the item

ultracode - Links to a “code” field to determine the Elite version of the item

 

component - Determines the layer of player animation when the item is equipped. This uses a code referenced from the Composit.txt file.

Code

Description

0

Head

1

Torso

2

Legs

3

Right Arm

4

Left Arm

5

Right Hand

6

Left Hand

7

Shield

8

Special 1

9

Special 2

10

Special 3

11

Special 4

12

Special 5

13

Special 6

14

Special 7

15

Special 8

16

Do not display anything

invwidth & invheight - Defines the width and height of grid cells that the item occupies in the player inventory

 

hasinv - Boolean Field. If equals 1, then the item will have its own inventory allowing for the capability to socket gems, runes, or jewels. If equals 0, then the item cannot have sockets.

gemsockets - 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 “MaxSock1”, “MaxSock25” and “MaxSock40” fields from the ItemTypes.txt file.

gemapplytype - Determines which affect from a gem or rune will be applied when it is socketed into this item (See gems.txt)

Code

Description

0

Weapon

1

Armor or Helmet

2

Shield

 

flippyfile - 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)

invfile - Controls which DC6 file to use for displaying the item graphics in the inventory (uses the file name as the input)

uniqueinvfile - 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)

setinvfile - 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)

 

useable - Boolean Field. 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 - Boolean Field. 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 - Controls the minimum stack count or quantity that is allowed on the item. This field depends on the “stackable” field being enabled.

maxstack - Controls the maximum stack count or quantity that is allowed on the item. This field depends on the “stackable” field being enabled.

spawnstack - Controls the stack count or quantity that the item can spawn with. This field depends on the “stackable” field being enabled.

 

Transmogrify - Boolean Field. 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.

TMogType - Links to a “code” field to determine which item is chosen to transmogrify this item to.

TMogMin - 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.

TMogMax - 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.

 

type - Points to an Item Type defined in the ItemTypes.txt file, which controls how the item functions

type2 - 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 - Points to sound defined in the sounds.txt file. Used when the item is dropped on the ground.

dropsfxframe - Defines which frame in the “flippyfile” animation to play the “dropsound” sound when the item is dropped on the ground.

usesound - Points to sound defined in the sounds.txt file. Used when the item is moved in the inventory or used.

 

unique - Boolean Field. 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 - Boolean Field. 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 - Controls what type of transparency to use, based on the “transparent” field being enabled.

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

 

lightradius - 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 - Controls which belt type to use for belt items only. This field determines what index entry in the belts.txt file to use.

 

quest - 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.

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

questdiffcheck - Boolean Field. 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 - Points to the “Id” field from the Missiles.txt file, which determines what type of missile is used when using the throwing weapons

durwarning - Controls the threshold value for durability to display the low durability warning UI. This is only used if the item has durability.

qntwarning - Controls the threshold value for quantity to display the low quantity warning UI. This is only used if the item has stacks.

 

mindam - The minimum physical damage provided by the item

maxdam - The maximum physical damage provided by the item

 

StrBonus - 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 - 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 - Determines the starting index offset for reading the gems.txt file when determining what effects gems or runes will have the item based on the “gemapplytype” field. For example, if this value equals 9, then the game will start with index 9 (“Chipped Emerald”) and ignore the previously defined gems in the gems.txt file, which can mean that those ignored gems will not apply modifiers when socketed into the item.

bitfield1 - 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 - Minimum amount of this item type in Normal rarity that the NPC can sell at once

[NPC]Max - 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 - Minimum amount of this item type in Magical rarity that the NPC can sell at once

[NPC]MagicMax - 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 - 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 - Controls the color palette change of the item for the character model graphics

InvTrans - Controls the color palette change of the item for the inventory graphics

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

 

SkipName - Boolean Field. 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 - 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 - 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 - Boolean Field. 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 - Boolean Field. 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 - 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.

 

The following fields are exclusive to the armor.txt file, because these fields only work with Armor type items:

 

minac - The minimum amount of Defense that an armor item type can have

maxac - The maximum amount of Defense that an armor item type can have

 

block - Controls the block percent chance that the item provides (out of 100, but caps at 75).

 

rArm - 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 - 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 - 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 - 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 - 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 - 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”

automagic.txt

Overview

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.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - Defines the item affix name

version - Defines which game version to use this item affix (<100 = Classic mode | 100 = Expansion mode)

 

spawnable - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - The minimum character level required to equip an item that has this item affix

 

classspecific - Controls if this item affix should only be used for class specific items. This relies on the class specified in the “Class” field from ItemTypes.txt, for the specific item.

Code

Description

(empty)

Any Class

ama

Amazon only

bar

Barbarian only

pal

Paladin only

nec

Necromancer only

sor

Sorceress only

dru

Druid only

ass

Assassin only

class - Controls which character class is required for the class specific level requirement “classlevelreq” field

Code

Description

(empty)

None

ama

Amazon

bar

Barbarian

pal

Paladin

nec

Necromancer

sor

Sorceress

dru

Druid

ass

Assassin

classlevelreq - 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 “class” field. If equals null, then the class will default to using the “levelreq” field.

 

frequency - 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 - 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 (to mod3code) - Controls the item properties for the item affix (Uses the “code” field from Properties.txt)

mod1param (to mod3param) - The “parameter” value associated with the related property (mod#code). Usage depends on the property function (See the “func” field on Properties.txt)

mod1min (to mod3min) - The “min” value to assign to the listed related (mod#code). Usage depends on the property function (See the “func” field on Properties.txt)

mod1max (to mod3 max) - The “max” value to assign to the listed related (mod#code). Usage depends on the property function (See the “func” field on Properties.txt)

 

transformcolor - 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. (Uses Color Codes from the reference file colors.txt)

Code

Color

 

No color change

whit

White

lgry

Light Grey

dgry

Dark Grey

blac

Black

lblu

Light Blue

dblu

Dark Blue

cblu

Crystal Blue

lred

Light Red

dred

Dark Red

cred

Crystal Red

lgrn

Light Green

dgrn

Dark Green

cgrn

Crystal Green

lyel

Light Yellow

dyel

Dark Yellow

lgld

Light Gold

dgld

Dark Gold

lpur

Light Purple

dpur

Dark Purple

oran

Orange

bwht

Bright White

 

itype1 (to itype7) - Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt

etype1 (to etype5) - Controls what Item Types are forbidden to spawn with this item affix. Uses the “code” field from ItemTypes.txt

 

multiply - 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 - Flat integer modification to the item’s buy and sell costs, based on the item affix

AutoMap.txt

Overview

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.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

LevelName - 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 - 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 - Defines a group numeric ID for the range of cells, meaning that the game will try to use cells that match 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 - The start index value for valid “Cel#” field to choose for displaying on the Automap. If this value is equal to 255, then both the “StartSequence” and “EndSequence” are ignored in the “Cel#” field selection. If this value is equal to -1, then this field is ignored in the “Cel#” field selection.

EndSequence - The end index value for a valid “Cel#” field to choose for displaying on the Automap. If this value is equal to -1, then this field is ignored in the “Cel#” field selection.

 

Cel1 (to Cel4) - 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

Overview

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. Each of these belt types are a possible value that items in the armor.txt file can use in the “belt” field.

 

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 - This is a reference field to define the belt type

numboxes - 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 (to box 16left) - 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 (to box16right) - 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 (to box16top) - 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 (to box16bottom) - 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 (to defaultItemTypeCol4) - Specifies the default item type used for the populate belt and auto-use functionality on controller.

defaultItemCodeCol1 (to defaultItemCodeCol4) - 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

Overview

This file controls functionalities of book items (also called Tomes). This includes how they interact with their related scroll items.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - This is a reference field to define the book

ScrollSpellCode - Uses an item’s code to define as the scroll item for the book

BookSpellCode - Uses an item’s code to define as the book item

pSpell - Defines the item spell function to use when using the book

Code

Description

0

None

1

Identify

2

Town Portal

3

Health Potion (Flat Amount with special bonus for class and Vitality attribute)

4

Health Potion 2 (Flat Amount with no special bonus)

5

Health Potion 3 (Percentage)

6

Antidote Potion (Apply a state that can override other states)

7

Transmogrify (Used to open the Horadric Cube’s UI for transmogrification)

8

Elixir (Modify a stat)

9

Herb (Apply a state using item stats)

10

Skill (Cast the Fireball skill to a target unit)

11

Skill XY (Cast the Fireball skill to a location using X and Y coordinates)

SpellIcon - 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 - Defines which Skill to use for the scroll item (uses the “skill” field from skills.txt)

BookSkill - Defines which Skill to use for the book item (uses the “skill” field from skills.txt)

 

BaseCost - The starting gold cost to buy the book from an NPC

CostPerCharge - The additional gold cost added with the book’s “BaseCost” value, based on how many charges the book has

charstats.txt

Overview

This file controls the starting stats for each of the classes

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

class - The name of the character class (this cannot be changed)

str - Starting amount of the Strength attribute
dex - Starting amount of the Dexterity attribute
int - Starting amount of the Energy attribute
vit - Starting amount of the Vitality attribute

stamina - Starting amount of Stamina
hpadd - Bonus starting Life value (This value gets added with the "vit" field value to determine the overall starting amount of Life)
ManaRegen - Number of seconds to regain max Mana. (If this equals 0 then it will default to 300 seconds)
ToHitFactor - Starting amount of Attack Rating

WalkVelocity - Base Walk movement speed
RunVelocity - Base Run movement speed
RunDrain - Rate at which Stamina is lost while running

LifePerLevel - Amount of Life added for each level gained (Calculated in fourths and is divided by 256)
StaminaPerLevel - Amount of Stamina added for each level gained (Calculated in fourths and is divided by 256)
ManaPerLevel - Amount of Mana added for each level gained (Calculated in fourths and is divided by 256)

LifePerVitality - Amount of Life added for each point in Vitality (Calculated in fourths and is divided by 256)
StaminaPerVitality - Amount of Stamina added for each point in Vitality (Calculated in fourths and is divided by 256)

ManaPerMagic - Amount of Mana added for each point in Energy (Calculated in fourths and is divided by 256)

StatPerLevel - Amount of Attribute stat points earned for each level gained
SkillsPerLevel - Amount of Skill points earned for each level gained

LightRadius - Baseline radius size of the character's Light Radius
BlockFactor - Baseline percent chance for Blocking
MinimumCastingDelay - Global delay on all Skills after using a Skill with a Casting Delay (Calculated in Frames, where 25 Frames = 1 Second)

StartSkill - 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 (to Skill 10) - Skill that the character starts with and will always have available (Uses the "skill" field from skills.txt)

StrAllSkills - String key for displaying the item modifier bonus to all skills for the class (Ex: "+1 to Barbarian Skill Levels")
StrSkillTab1 - String key for displaying the item modifier bonus to all skills for the class's first skill tab (Ex: "+1 to Warcries")
StrSkillTab2 - String key for displaying the item modifier bonus to all skills for the class's second skill tab (Ex: "+1 to Combat Skills")
StrSkillTab3 - String key for displaying the item modifier bonus to all skills for the class's third skill tab (Ex: "+1 to Masteries")
StrClassOnly String key for displaying on item modifier exclusive to the class or for class specific items (Ex: "Barbarian only")

HealthPotionPercent - This scales the amount of Life that a Healing potion will restore based on the class
ManaPotionPercent This scales the amount of Mana that a Mana potion will restore based on the class

baseWClass - Base weapon class that the character will use by default when no weapon is equipped

Code

Description

hth

Hand to Hand (Default value if the value is empty)

1hs

One Handed Swing

1ht

One Handed Thrust

bow

Bow

2hs

Two Handed Swing

2ht

Two Handed Thrust

1js

Dual Wielding - Left Jab Right Swing

1jt

Dual Wielding - Left Jab Right Thrust

1ss

Dual Wielding - Left Swing Right Swing

1st

Dual Wielding - Left Swing Right Thrust

stf

Staff

xbw

Crossbow

ht1

One Hand to Hand

ht2

Two Hand to Hand

 

item1 (to item10) - Item that the character starts with (Uses ID pointer from Weapons.txt, Armor.txt or Misc.txt)

item1loc (to item10loc) - Location where the related item will be placed in the character's inventory

Code

Description

(empty)

Inventory grid (Default Value)

head

Head

neck

Neck

tors

Torso

rarm

Right Arm

larm

Left Arm

rrin

Right Ring

lrin

Left Ring

belt

Belt

feet

Feet

glov

Gloves

item1count (to item10count) - The amount of the related item that the character starts with

item1quality (to item10quality) - 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)

8

Crafted

9

Tempered

cubemain.txt

Overview

This file controls the recipes for the Horadric Cube

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

description - This is a reference field to define the cube recipe

enabled - Boolean field. If equals 1, then the recipe can be used in-game. If equals 0, then the recipe cannot be used in-game.

firstLadderSeason - Integer field. The first ladder season this cube recipe can be made on (inclusive). If blank or 0 then it is available in non-ladder.

lastLadderSeason - Integer field. The last ladder season this cube recipe is ladder-only (inclusive). Must be used in conjunction with firstLadderSeason.

min diff - The minimum game difficulty to use the recipe (0 = All Game Difficulties | 1 = Nightmare and Hell Difficulty only | 2 = Hell Difficulty only)

version - Defines which game version to use this recipe (0 = Classic mode | 100 = Expansion mode)

 

op - Uses a function as an additional input requirement for the recipe

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 (using “param” as the stat ID from ItemStatCost.txt) is greater than “value”

4

param

value

Require that the player’s current stat (using “param” as the stat ID from ItemStatCost.txt) is less than “value”

5

param

value

Require that the player’s current stat (using “param” as the stat ID from ItemStatCost.txt) is not equal to “value”

6

param

value

Require that the player’s current stat (using “param” as the stat ID from ItemStatCost.txt) is equal to “value”

7

param

value

Require that the player’s base stat (using “param” as the stat ID from ItemStatCost.txt) is greater than “value”

8

param

value

Require that the player’s base stat (using “param” as the stat ID from ItemStatCost.txt) is less than “value”

9

param

value

Require that the player’s base stat (using “param” as the stat ID from ItemStatCost.txt) is not equal to “value”

10

param

value

Require that the player’s base stat (using “param” as the stat ID from ItemStatCost.txt) is equal to “value”

11

param

value

Require that the player’s non-base stat (using “param” as the stat ID from ItemStatCost.txt) is greater than “value”

12

param

value

Require that the player’s non-base stat (using “param” as the stat ID from ItemStatCost.txt) is less than “value”

13

param

value

Require that the player’s non-base stat (using “param” as the stat ID from ItemStatCost.txt) is not equal to “value”

14

param

value

Require that the player’s non-base stat (using “param” as the stat ID from ItemStatCost.txt) is equal to “value”

15

param

value

Require that the input item’s current stat (using “param” as the stat ID from ItemStatCost.txt) is greater than “value”

16

param

value

Require that the input item’s current stat (using “param” as the stat ID from ItemStatCost.txt) is less than “value”

17

param

value

Require that the input item’s current stat (using “param” as the stat ID from ItemStatCost.txt) is not equal to “value”

18

param

value

Require that the input item’s current stat (using “param” as the stat ID from ItemStatCost.txt) is equal to “value”

19

param

value

Require that the input item’s base stat (using “param” as the stat ID from ItemStatCost.txt) is greater than “value”

20

param

value

Require that the input item’s base stat (using “param” as the stat ID from ItemStatCost.txt) is less than “value”

21

param

value

Require that the input item’s base stat (using “param” as the stat ID from ItemStatCost.txt) is not equal to “value”

22

param

value

Require that the input item’s base stat (using “param” as the stat ID from ItemStatCost.txt) is equal to “value”

23

param

value

Require that the input item’s non-base stat (using “param” as the stat ID from ItemStatCost.txt) is greater than “value”

24

param

value

Require that the input item’s non-base stat (using “param” as the stat ID from ItemStatCost.txt) is less than “value”

25

param

value

Require that the input item’s non-base stat (using “param” as the stat ID from ItemStatCost.txt) is not equal to “value”

26

param

value

Require that the input item’s non-base stat (using “param” as the stat ID from ItemStatCost.txt) 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 - Integer value used as a possible parameter for the “op” function

value - Integer value used as a possible parameter for the “op” function

 

class - Defines the recipe to be only usable by a defined class

Code

Description

(empty)

Any Class

ama

Amazon only

bar

Barbarian only

pal

Paladin only

nec

Necromancer only

sor

Sorceress only

dru

Druid only

ass

Assassin only

 

numinputs - Controls the number of items that need to be inside the cube for the recipe

input 1 (to input7) - Controls what items are required for the recipe. Uses the item’s unique code. Users can also add input parameters by adding a comma “,” to the input and using a code.

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 - Controls the first output item. Uses the item’s unique code. Users can also add output parameters by adding a comma “,” to the output and using a code.

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 (see the row count on MagicPrefix.txt)

suf=#

Force the output item to have an item suffix, where # equals the ID of the suffix (see 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 - Forces the output item level to be a specific level. If this field is used, then ignore the “plvl” and “ilvl” fields.

plvl - This is a numeric ratio that gets multiplied with the current player’s level, to add to the output item’s level requirement

ilvl - This is a numeric ratio that gets multiplied with “input 1” item’s level, to add to the output item’s level requirement

mod 1 (to mod 5) - Controls the output item properties (Uses the “code” field from Properties.txt)

mod 1 chance (to mod 5 chance) - The percent chance that the property will be assigned. If this equals 0, then the Property will always be assigned.

mod 1 param (to mod 5 param) - The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

mod 1 min (to mod 5 min) - The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

mod 1 max (to mod 5 max) - The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

 

output b - Controls the second output item. Uses the item’s unique code. Users can also add output parameters by adding a comma “,” to the output and using a code. (See “output” for more details)

b lvl - Forces the output item level to be a specific level. If this field is used, then ignore the “plvl” and “ilvl” fields.

b plvl - This is a numeric ratio that gets multiplied with the current player’s level, to add to the output item’s level requirement

b ilvl - This is a numeric ratio that gets multiplied with “input 2” item’s level, to add to the output item’s level requirement

b mod 1 (to b mod 5) - Controls the output item properties (Uses the “code” field from Properties.txt)

b mod 1 chance (to b mod 5 chance) - The percent chance that the property will be assigned. If this equals 0, then the Property will always be assigned.

b mod 1 param (to b mod 5 param) - The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

b mod 1 min (to b mod 5 min) - The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

b mod 1 max (to b mod 5 max) - The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

 

output c - Controls the third output item. Uses the item’s unique code. Users can also add output parameters by adding a comma “,” to the output and using a code. (See “output” for more details)

c lvl - Forces the output item level to be a specific level. If this field is used, then ignore the “plvl” and “ilvl” fields.

c plvl - This is a numeric ratio that gets multiplied with the current player’s level, to add to the output item’s level requirement

c ilvl - This is a numeric ratio that gets multiplied with “input 3” item’s level, to add to the output item’s level requirement

c mod 1 (to c mod 5) - Controls the output item properties (Uses the “code” field from Properties.txt)

c mod 1 chance (to c mod 5 chance) - The percent chance that the property will be assigned. If this equals 0, then the Property will always be assigned.

c mod 1 param (to c mod 5 param) - The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

c mod 1 min (to c mod 5 min) - The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

c mod 1 max (to c mod 5 max) - The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

difficultylevels.txt

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - This is a reference field to define the difficulty mode

 

ResistPenalty - Defines the baseline starting point for a player character’s resistances for Expansion mode

ResistPenaltyNonExpansion - Defines the baseline starting point for a player character’s resistances for Non-Expansion mode

DeathExpPenalty - Modifies the percentage of current level experience lost when a player character dies

 

MonsterSkillBonus - Adds additional skill levels to skills used by monsters (defined from monstats.txt)

MonsterFreezeDivisor - 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 - 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 - 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 - 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 - 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 - Percentage modifier for a Unique monster’s overall Damage and Attack Rating. This is applied after calculating the monster’s other modifications.

ChampionDamageBonus - Percentage modifier for a Champion monster’s overall Damage and Attack Rating. This is applied after calculating the monster’s other modifications.

 

PlayerDamagePercentVSPlayer - Percentage modifier for the total damage a player deals to another player

PlayerDamagePercentVSMercenary - Percentage modifier for the total damage a player deals to another player’s mercenary

PlayerDamagePercentVSPrimeEvil - Percentage modifier for the total damage a player deals to a Prime Evil boss

 

PlayerHitReactBufferVSPlayer – 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 - 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 - Percentage modifier for the total damage a player’s mercenary deals to another player

MercenaryDamagePercentVSMercenary - Percentage modifier for the total damage a player’s mercenary deals to another player’s mercenary

MercenaryDamagePercentVSBoss - Percentage modifier for the total damage a player’s mercenary deals to a boss monster

MercenaryMaxStunLength - The frame length for the maximum stun length allowed on a player’s mercenary (25 Frames = 1 second)

 

PrimeEvilDamagePercentVSPlayer - Percentage modifier applied to the total damage a Prime Evil boss deals to a player

PrimeEvilDamagePercentVSMercenary - Percentage modifier for the total damage a Prime Evil boss deals to a player’s mercenary

PrimeEvilDamagePercentVSPet - Percentage modifier for the total damage a Prime Evil boss deals to a player’s pet

 

PetDamagePercentVSPlayer - Percentage modifier for the total damage a player’s pet deals to another player

 

MonsterCEDamagePercent - 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 - 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 - 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 - 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 - 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 - 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 - 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 (See “GambleUltra”).

GambleUltra - 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

Overview

This file controls the experience required for each level by each class

Data Fields

Level - This is a reference field to define the level

 

Amazon - Controls the experience required for each level with the Amazon class

Sorceress - Controls the experience required for each level with the Sorceress class

Necromancer - Controls the experience required for each level with the Necromancer class

Paladin - Controls the experience required for each level with the Paladin class

Barbarian - Controls the experience required for each level with the Barbarian class

Druid - Controls the experience required for each level with the Druid class

Assassin - Controls the experience required for each level with the Assassin class

 

ExpRatio - 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

Overview

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 - This is a reference field to describe the Item

code - This is a pointer to “code” field from weapons.txt/armor.txt/misc.txt

gems.txt

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

name - This is a reference field to define the gem/rune name

letter - Defines the string that is concatenated together in the item tooltip when a rune is socketed into an item

transform - Controls the color change of the item after being socketed by the gem/rune. (Uses Color Codes from the reference file colors.txt)

Code

Color

0

White

1

Light Grey

2

Dark Grey

3

Black

4

Light Blue

5

Dark Blue

6

Crystal Blue

7

Light Red

8

Dark Red

9

Crystal Red

10

Light Green

11

Dark Green

12

Crystal Green

13

Light Yellow

14

Dark Yellow

15

Light Gold

16

Dark Gold

17

Light Purple

18

Dark Purple

19

Orange

20

Bright White

code - Defines the unique item code used to create the gem/rune

 

weaponMod1Code (to weaponMod3Code) - 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 (to weaponMod3Param) - The stat’s “parameter” value associated with the listed property (weaponMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

weaponMod1Min (to weaponMod3Min) - The stat’s “min” value associated with the listed property (weaponMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

weaponMod1Max (to weaponMod3 Max) - The stat’s “max” value to assign to the listed property (weaponMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

 

helmMod1Code (to helmMod3Code) - 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 (to helmMod3Param) - The stat’s “parameter” value associated with the listed property (helmMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

helmMod1Min (to helmMod3Min) - The stat’s “min” value associated with the listed property (helmMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

helmMod1Max (to helmMod3Max) - The stat’s “max” value to assign to the listed property (helmMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

 

shieldMod1Code (to shieldMod3Code) - 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 (to shieldMod3Param) - The stat’s “parameter” value associated with the listed property (shieldMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

shieldMod1Min (to shieldMod3Min) - The stat’s “min” value associated with the listed property (shieldMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

shieldMod1Max (to shieldMod3Max) - The stat’s “max” value to assign to the listed property (shieldMod1Code). Usage depends on the property function (See the “func” field on Properties.txt)

inventory.txt

Overview

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 - This is a reference field to define the type of inventory screen

 

invLeft - Starting X coordinate pixel position of the inventory panel

invRight - Ending X coordinate pixel position of the inventory panel (Includes the “invLeft” value with the inventory width size)

invTop - Starting Y coordinate pixel position of the inventory panel

invBottom - Ending Y coordinate pixel position of the inventory panel (Includes the “invTop” value with the inventory height size)

 

gridX - Column number size of the inventory grid, measured in the number of grid boxes to use

gridY - Column row size of the inventory grid, measured in the number of grid boxes to use

gridLeft - Starting X coordinate location of the inventory’s left grid side

gridRight - Ending X coordinate location of the inventory’s right grid side (Includes the “gridLeft” value with the grid width size)

gridTop - Starting Y coordinate location of the inventory’s top grid side

gridBottom - Ending Y coordinate location of the inventory’s bottom grid side (Includes the “gridTop” value with the grid height size)

gridBoxWidth - Width size of an inventory’s box cell

gridBoxHeight - Height size of an inventory’s box cell

 

rArmLeft - Starting X coordinate location of the Right Weapon Slot

rArmRight - Ending X coordinate location of the Right Weapon Slot (Includes the “rArmLeft” value with the “rArmWidth” value)

rArmTop - Starting Y coordinate location of the Right Weapon Slot

rArmBottom - Ending Y coordinate location of the Right Weapon Slot (Includes the “rArmTop” value with the “rArmHeight” value)

rArmWidth - The pixel width of the Right Weapon Slot

rArmHeight - The pixel Height of the Right Weapon Slot

 

torsoLeft - Starting X coordinate location of the Body Armor Slot

torsoRight - Ending X coordinate location of the Body Armor Slot (Includes the “torsoLeft” value with the “torsoWidth” value)

torsoTop - Starting Y coordinate location of the Body Armor Slot

torsoBottom - Ending Y coordinate location of the Body Armor Slot (Includes the “torsoTop” value with the “torsoHeight” value)

torsoWidth - The pixel width of the Body Armor Slot

torsoHeight - The pixel Height of the Body Armor Slot

 

lArmLeft - Starting X coordinate location of the Left Weapon Slot

lArmRight - Ending X coordinate location of the Left Weapon Slot (Includes the “lArmLeft” value with the “lArmWidth” value)

lArmTop - Starting Y coordinate location of the Left Weapon Slot

lArmBottom - Ending Y coordinate location of the Left Weapon Slot (Includes the “lArmTop” value with the “lArmHeight” value)

lArmWidth - The pixel width of the Left Weapon Slot

lArmHeight - The pixel Height of the Left Weapon Slot

 

headLeft - Starting X coordinate location of the Helm Slot

headRight - Ending X coordinate location of the Helm Slot (Includes the “headLeft” value with the “headWidth” value)

headTop - Starting Y coordinate location of the Helm Slot

headBottom - Ending Y coordinate location of the Helm Slot (Includes the “headTop” value with the “headHeight” value)

headWidth - The pixel width of the Helm Slot

headHeight - The pixel Height of the Helm Slot

 

neckLeft - Starting X coordinate location of the Amulet Slot

neckRight - Ending X coordinate location of the Amulet Slot (Includes the “neckLeft” value with the “neckWidth” value)

neckTop - Starting Y coordinate location of the Amulet Slot

neckBottom - Ending Y coordinate location of the Amulet Slot (Includes the “neckTop” value with the “neckHeight” value)

neckWidth - The pixel width of the Amulet Slot

neckHeight - The pixel Height of the Amulet Slot

 

rHandLeft - Starting X coordinate location of the Right Ring Slot

rHandLeft - Ending X coordinate location of the Right Ring Slot (Includes the “rHandLeft” value with the “rHandWidth” value)

rHandTop - Starting Y coordinate location of the Right Ring Slot

rHandBottom - Ending Y coordinate location of the Right Ring Slot (Includes the “rHandTop” value with the “rHandHeight” value)

rHandWidth - The pixel width of the Right Ring Slot

rHandHeight - The pixel Height of the Right Ring Slot

 

lHandLeft - Starting X coordinate location of the Left Ring Slot

lHandRight - Ending X coordinate location of the Left Ring Slot (Includes the “lHandLeft” value with the “lHandWidth” value)

lHandTop - Starting Y coordinate location of the Left Ring Slot

lHandBottom - Ending Y coordinate location of the Left Ring Slot (Includes the “lHandTop” value with the “lHandHeight” value)

lHandWidth - The pixel width of the Left Ring Slot

lHandHeight - The pixel Height of the Left Ring Slot

 

beltLeft - Starting X coordinate location of the Belt Slot

beltRight - Ending X coordinate location of the Belt Slot (Includes the “beltLeft” value with the “beltWidth” value)

beltTop - Starting Y coordinate location of the Belt Slot

beltBottom - Ending Y coordinate location of the Belt Slot (Includes the “beltTop” value with the “beltHeight” value)

beltWidth - The pixel width of the Belt Slot

beltHeight - The pixel Height of the Belt Slot

 

feetLeft - Starting X coordinate location of the Boots Slot

feetRight - Ending X coordinate location of the Boots Slot (Includes the “feetLeft” value with the “feetWidth” value)

feetTop - Starting Y coordinate location of the Boots Slot

feetBottom - Ending Y coordinate location of the Boots Slot (Includes the “feetTop” value with the “feetHeight” value)

feetWidth - The pixel width of the Boots Slot

feetHeight - The pixel Height of the Boots Slot

 

glovesLeft - Starting X coordinate location of the Gloves Slot

glovesRight - Ending X coordinate location of the Gloves Slot (Includes the “glovesLeft” value with the “glovesWidth” value)

glovesTop - Starting Y coordinate location of the Gloves Slot

glovesBottom - Ending Y coordinate location of the Gloves Slot (Includes the “glovesTop” value with the “glovesHeight” value)

glovesWidth - The pixel width of the Gloves Slot

glovesHeight - The pixel Height of the Gloves Slot

itemratio.txt

Overview

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 - This is a reference field to define the item ratio name

Version - Defines which game version to use this item ratio (0 = Classic mode | 100 = Expansion mode)

 

Uber - Boolean Field. 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 weapons.txt / armor.txt)

Class Specific - Boolean Field. If equals 1, then the item ratio will apply to class-based items (This will compare to the Item Type’s “Class” field to determine if the item is class specific)

 

Unique - Base value for calculating the Unique Quality chance. Higher value means rarer chance. (Calculated first)

UniqueDivisor - Modifier for changing the Unique Quality chance, based on the difference between the Monster Level and the Item’s base level

UniqueMin - 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 - Base value for calculating the Set Quality chance. Higher value means rarer chance. (Calculated after Unique)

SetDivisor - Modifier for changing the Set Quality chance, based on the difference between the Monster Level and the Item’s base level

SetMin - 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 - Base value for calculating the Rare Quality chance. Higher value means rarer chance. (Calculated after Set)

RareDivisor - Modifier for changing the Rare Quality chance, based on the difference between the Monster Level and the Item’s base level

RareMin - 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 - Base value for calculating the Magic Quality chance. Higher value means rarer chance. (Calculated after Rare)

MagicDivisor - Modifier for changing the Magic Quality chance, based on the difference between the Monster Level and the Item’s base level

MagicMin - 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 - Base value for calculating the High Quality (Superior) chance. Higher value means rarer chance. (Calculated after Magic)

HiQualityDivisor - Modifier for changing the High Quality (Superior) chance, based on the difference between the Monster Level and the Item’s base level

 

Normal - 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 - 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 (See 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 (See “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 (See “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 (See 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

Overview

This file controls the functionalities for each possible stat on a unit

 

These defined stats are used to form modifiers for the Properties.txt file

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Stat - Defines the unique pointer for this stat, which is used in other files

 

Send Other - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the stat will have a minimum value that cannot be reduced further than that value (See “MinAccr” field). If equals 0, then ignore this.

MinAccr - The minimum value of a stat. This is only used if the “fMin” field is enabled.

 

Encode - 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 (see 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 (see 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 as an unsigned integer.

 

keepzero - Boolean Field. 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 - 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:

[“op stat#”] = [“op stat#”] * [“LifePerVitality”] << (LIFE_SHIFT - 2)

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 - Used as a possible parameter value for the “op” function.

op base - Used as a possible parameter value for the “op” function.

op stat1 (to opstat3) - Used as a possible parameter value for the “op” function.

 

direct - Boolean Field. 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 - 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 - Boolean Field. 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 & itemevent2 - Uses an event that will activate the specified function defined by “itemeventfunc#”. This points to the ID of an event defined in the events.txt file.

event

Description

(empty)

Do nothing.

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

itemeventfunc1 & itemeventfunc2 - 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.

Code

Description

0

(or empty)

Do nothing.

1

Applies the effects of the Sorceress Chilling Armor skill

2

Applies the effects of the Sorceress Frozen Armor skill

3

Applies the effects of the Sorceress Shiver Armor skill

4

Applies the effects of the Necromancer Iron Maiden skill, causing damage taken to be dealt to the attacker

5

Applies the effects of the Necromancer Life Tap skill on monsters. Usable only on monsters when cast by players.

6

Attacker Takes Physical Damage

7

Applies knockback on the target, moving the target backwards from the attacker and being briefly stunned during this time. Chances depend on the “small” and “large” flags from the monstats2.txt file.

8

Applies the effects Barbarian Howl skill on monsters, causing them to run away in fear. Does not work on Champion or Unique monsters.

9

Applies the effects of the Necromancer Dim Vision skill to a target. Effectiveness is reduced from missile attacks.

10

Attacker Takes Lightning Damage

11

Attacker Takes Fire Damage

12

Attacker Takes Cold Damage

13

A percentage of damage taken will also reduce the user’s mana by that amount

14

Applies the Freeze effect on the target. Effectiveness is reduced from missile attacks.

15

Applies Open Wounds damage on the target, which causes life damage over time

16

Applies Crushing Blow damage on the target. Damage depends on if the target is a Player, Mercenary, Boss monster, Unique monster, Champion monster, or normal monster.

17

Restores mana to the user that performed the kill

18

Restores life to the user that performed the kill on a Demon monster

19

·         Applies the slow state on the target which reduces that target’s attack speed and movement speed

·         If the target is a player, Champion monster, Unique Monster, Boss, or mercenary, then the max slow value is 50

·         If the target is a Super monster, then the max slow value is 75

·         Otherwise, the max slow value is 90.

20

Use a skill against the target after the user is attacks or hits the enemy

21

Use a skill against the attacker after the user is hit by an attack. If there is no attacker, then the skill is cast at the user’s location

22

Applies the effects of the Necromancer Bone Armor skill, absorbing physical damage taken

23

·         Transfers damage dealt by a pet as healing that is split between the pet and its owner (Used by the Necromancer Blood Golem pet)

·         Uses the linked skill’s “calc2” field from the skills.txt file to determine the total healing percentage

·         Uses the linked skill’s “calc3” field from the skills.txt file to determine the healing percentage that is split to the pet’s owner

24

·         Absorb a percentage any damage taken and deals that damage to Mana instead of Life (Used by the Sorceress Energy Shield skill)

·         Uses the linked skill’s “calc1” and “calc2” fields from the skills.txt file to determine the mana to Damage ratio conversion

25

Apply the effects of the Druid Cyclone armor skill, absorbing Fire, Cold, and Lightning damage taken

26

·         Transfers damage taken from the pet to its owner (Used by the Necromancer Blood Golem pet)

·         The percentage of damage transferred is defined in the linked skill’s “Param5” field from the skills.txt file

27

·         Applies the “item_slow” stat which reduces the target’s attack speed and movement speed (Used by the Necromancer Clay Golem pet)

·         If the target is a Champion or Unique monster, then the max slow value is 50. Otherwise, the max slow value is 90.

28

Restores life to the user that performed a kill

29

Applies the “restinpeace” state which essentially the corpse of a killed monster, making it unusable

30

Cast a skill when the item event occurs, either with without a target

31

Reanimates the targeted enemy as a pet monster for the user. Only applies on units classified as monsters, and not Champions or Uniques.

32

Use a skill to deal area radius damage around the user

33

Use a skill’s linked sub-skill from the “sumskill1” in the skills.txt file

 

descpriority - 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 - Controls how the stat is displayed in tooltips. Uses an ID value to select a description function to format the string value.

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 theStrAllSkills” 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 the MonType.txt file based on the monster type selected, and inserts this value into the designated “descstr” string

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 namefield 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 namefield 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 - 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 - 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 - 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 - 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 - 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 (see “dgrpfunc” field)

dgrpfunc - 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, see that description for more details.

dgrpval - 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 - 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 - 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 - 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 - 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 - 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

Overview

This file controls the general statistics for each type of item, which is then used for the item type fields in other files

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

ItemType - This is a reference field to define the Item Type name

Code - Defines the unique pointer for this Item Type, which is used by the following files: weapons.txt, armor.txt, misc.txt, cubemain.txt, skills.txt, treasureclassex.txt

 

Equiv1 & Equiv2 - 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the item can be equipped by a character (also will require the “BodyLoc1” & “BodyLoc2” fields as parameters). If equals 0, then the item can only be carried in the inventory, stash, or Horadric Cube.

BodyLoc1 & BodyLoc2 - These are required parameters if the “Body” field is enabled. These fields specify the inventory slots where the item can be equipped.

Code

Description

(empty)

None

head

Head

neck

Neck

tors

Torso

rarm

Right Arm

larm

Left Arm

rrin

Right Ring

lrin

Left Ring

belt

Belt

feet

Feet

glov

Gloves

 

Shoots - Points to the index of another Item Type as the required equipped Item Type to be used as ammo

Quiver - Points to the index of another Item Type as the required equipped Item Type to be used as this ammo’s weapon

 

Throwable - Boolean Field. If equals 1, then it determines that this item is a throwing weapon. If equals 0, then ignore this.

Reload - Boolean Field. If equals 1, then the item (considered ammo in this case) will be automatically transferred from the inventory to the required “BodyLoc” when another item runs out of that specific ammo. If equals 0, then ignore this.

ReEquip - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then this item can spawn as a Rare quality. If equals 0, then ignore this.

Normal - Boolean Field. If equals 1, then this item will always have the Normal quality. If equals 0, then ignore this.

Beltable - Boolean Field. If equals 1, then this item can be placed in the character’s belt slots. If equals 0, then ignore this.

 

MaxSockets1 - 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 “MaxSocketsLevelThreshold1” value. The number of sockets is capped by the “gemsockets” value from the weapons.txt/armor.txt/misc.txt file.

MaxSocketsLevelThreshold1 - Defines the item level threshold between using the “MaxSockets1” and “MaxSockets2” field

MaxSockets2 - Determines the maximum possible number of sockets that can be spawned on the item when the item level is greater than the “MaxSocketsLevelThreshold1” value and less than or equal to the “MaxSocketsLevelThreshold2”. The number of sockets is capped by the “gemsockets” value from the weapons.txt/armor.txt/misc.txt file.

MaxSocketsLevelThreshold2 - Defines the item level threshold between using the “MaxSockets2” and “MaxSockets3” field

MaxSockets3 - Determines the maximum possible number of sockets that can be spawned on the item when the item level is greater than the “MaxSocketsLevelThreshold2” value. The number of sockets capped by the “gemsockets” value from the weapons.txt/armor.txt/misc.txt file.

 

TreasureClass - Boolean Field. If equals 1, then allow this Item Type to be used in default treasure classes. If equals 0, then ignore this.

Rarity - 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 - Determines if the Item Type should have class specific item skill modifiers

Code

Description

(empty)

No preference

ama

Amazon skills

bar

Barbarian skills

pal

Paladin skills

nec

Necromancer skills

sor

Sorceress skills

dru

Druid skills

ass

Assassin skills

Class - Determines if this item should be useable only by a specific class

Code

Description

(empty)

Any Class

ama

Amazon only

bar

Barbarian only

pal

Paladin only

nec

Necromancer only

sor

Sorceress only

dru

Druid only

ass

Assassin only

 

VarInvGfx - Tracks the number of inventory graphics used for this item type. This number much match the number of “InvGfx” fields used.

InvGfx1 (to InvGfx6) - Defines a DC6 file to use for the item’s inventory graphics. The amount of this fields used should match the value used in “VarInvGfx”

 

StorePage - 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.

Code

Description

armo

Armor Page

weap

Weapons Page

mag

Magic Page

misc

Misc Page

 

dualwieldclass1 (to dualwieldclass7) - Determines if the weapon can be dual wielded by a defined class. There are 7 fields to potentially allow all 7 classes.

Code

Description

ama

Amazon

bar

Barbarian

pal

Paladin

nec

Necromancer

sor

Sorceress

dru

Druid

ass

Assassin

hireling.txt

Overview

This file controls the unit statistics for player mercenaries and their related functions

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Hireling - This is a reference field to define the Hireling name

Version - Defines which game version to use this hireling (0 = Classic mode | 100 = Expansion mode)

Id - The unique identification number to define each hireling type

Class - This refers to the “hcIdx” field in MonStats.txt, which defines the base type of unit to use for the hireling

 

Act - The Act that the hireling belongs to (values 1 to 5 equal Act 1 to Act 5, respectively)

Difficulty - The difficulty mode associated with the hireling (1 = Normal | 2 = Nightmare | 3 = Hell)

Level - The starting level of the unit

 

Seller - This refers to the “hcIdx” field in MonStats.txt, which defines the unit NPC that sells this hireling

NameFirst & NameLast - 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 - 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 - 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 - The starting amount of Life at base Level

HP/Lvl - The amount of Life gained per Level

Defense - The starting amount of Defense at base Level

Def/Lvl - The amount of Defense gained per Level

Str - The starting amount of Strength at base Level

Str/Lvl - The amount of Strength gained per Level (Calculated in 8ths)

Dex - The starting amount of Dexterity at base Level

Dex/Lvl - The amount of Dexterity gained per Level (Calculated in 8ths)

AR - The starting amount of Attack Rating at base Level

AR/Lvl - The amount of Attack Rating gained per Level

Dmg-Min - The starting amount of minimum Physical Damage for attacks

Dmg-Max - The starting amount of maximum Physical Damage for attacks

Dmg/Lvl - The amount of Physical Damage gained per level, to be added to “Dmg-Min” and “Dmg-Max” (Calculated in 8ths)

ResistFire - The starting amount of Fire Resistance at base Level

ResistFire/Lvl - The amount of Fire Resistance gained per Level (Calculated in 4ths)

ResistCold - The starting amount of Fire Resistance at base Level

ResistCold/Lvl - The amount of Fire Resistance gained per Level (Calculated in 4ths)

ResistLightning - The starting amount of Fire Resistance at base Level

ResistLightning/Lvl - The amount of Fire Resistance gained per Level (Calculated in 4ths)

ResistPoison - The starting amount of Fire Resistance at base Level

ResistPoison/Lvl - The amount of Fire Resistance gained per Level (Calculated in 4ths)

 

HireDesc - This accepts a string key, which is used to display as the special description of the hireling in the hire UI window

 

DefaultChance - 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 (to Skill6) - 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 (to Mode6) - Uses a monster mode to determine the hireling’s behavior when using the related Skill (Uses the numeric ID of the monster mode, not the Token)

ID

Token

Description

0

DT

Death / Reset

1

NU

Neutral

2

WL

Walk

3

GH

Get Hit

4

A1

Attack 1

5

A2

Attack 2

6

BL

Block

7

SC

Cast

8

S1

Skill 1

9

S2

Skill 2

10

S3

Skill 3

11

S4

Skill 4

12

DD

Dead

13

GH

Knockback

14

xx

Sequence

15

RN

Run

Chance1 (to Chance6) - 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 (to ChancePerLvl6) - 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 (to Level6) - The starting Level for the related Skill.

LvlPerLvl1 (to LvlPerLvl6) - 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 - 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 - 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 - 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 - This is the maximum Gold cost to resurrect this hireling

equivalentcharclass – Determines what class this hireling is treated like under the hood when calculating skill level bonuses and gear restrictions.

hirelingdesc.txt

Overview

This file controls attributes about player mercenaries that relate to the monster class but not the specific statblocks.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

id – The id of the hireling monster class as defined in monstats.txt

alternateVoice – Boolean field. 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.

LevelGroups.txt

Overview

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 - Defines the unique name pointer for the level group, which is used in other files

Id - Defines the unique numeric ID for the level group, which is used in other files

GroupName – String Field. Used for displaying the name of the level group, such as when all levels in a group have been desecrated.

 

Levels.txt

Overview

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 - Defines the unique name pointer for the area level, which is used in other files

Id - Defines the unique numeric ID for the area level, which is used in other files

Pal - 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 - 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 - 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.

QuestFlagEx - 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.

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

 

Layer - 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 & SizeX(N) & SizeX(H) - 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 & SizeY(N) & SizeY(H) - 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 - Specifies the location offset coordinates (measured in tile size) for the origin point of the area level in the world.

 

Depend - 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 - 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 - Boolean Field. 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 - Boolean Field. If equals 1, then random bubbles will animate on the tiles that are flagged as water tiles. If equals 0, then ignore this.

NoPer - Boolean Field. 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 - Boolean field. If equals 1, then the level will check the player’s line of sight before drawing monsters. If equals 0, then ignore this.

FloorFilter - Boolean field. 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 - Boolean field. 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 - Boolean field. If equals 1, then draw the areas in levels that are not covered by floor tiles. If equals 0, then ignore this.

 

DrlgType - Determines the type of Dynamic Random Level Generation used for building and handling different elements of the area level. Uses a numeric code to handle which type of DRLG is used.

Code

Description

0

None

1

Maze

2

Preset

3

Outdoor

LevelType - Defines the Level Type used for this area level. Uses the Level Type’s ID, which is determined by what order it is defined in the LvlType.txt file.

SubType - Controls the group of tile substitutions for the area level (see LvlSub.txt). There are defined sub types to choose from.

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 - Controls which theme number to use in a Level Substitution (See LvlSub.txt). The allowed values are 0 to 4, which convey which “Prob#”, “Trials#”, and “Max#” field to use from the LvlSub.txt file. If this equals -1, then there is no sub theme for the area level.

SubWaypoint - Controls the level substitutions for adding waypoints in the area level (see LvlSub.txt). This uses a defined sub type to choose from (See “SubType”). This will depend on the room having a waypoint tile.

SubShrine - Controls the level substitutions for adding shrines in the area level (see LvlSub.txt). This uses a defined sub type to choose from (See “SubType”). This will depend on the room allowing for a shrine to spawn.

 

Vis0 (to Vis7) - 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 (to Warp7) - Uses the “Id” field from LevelWarp.txt, which defines which Level Warp to use when exiting the area level. This is connected with the definition of the related “Vis#” field. If this equals -1, then no Level Warp is specified which should also mean that the related “Vis#” field is not defined.

 

Intensity - 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 - Controls the red value of the area level’s ambient colors. Uses a value between 0 and 255.

Green - Controls the green value of the area level’s ambient colors. Uses a value between 0 and 255.

Blue - Controls the blue value of the area level’s ambient colors. Uses a value between 0 and 255.

 

Portal - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - 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.

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

 

WarpDist - 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 & MonLvl(N) & MonLvl(H) - 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 & MonLvlEx(N) & MonLvlEx(H) - 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 & MonDen(N) & MonDen(H) - 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 & MonUMin(N) & MonUMin(H) - 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” field being defined.

MonUMax & MonUMax(N) & MonUMax(H) - 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 - Boolean Field. If equals 1, then allow Wandering Monsters to spawn on this area level (see wanderingmon.txt). This field depends on the related “MonDen” field being defined. If equals 0, then ignore this.

MonSpcWalk - 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 - 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 “mon#” and “umon#” fields or “nmmon#” fields, depending on the game difficulty.

mon1 (to mon25) - Defines which monsters can spawn on the area level for Normal Difficulty. Uses the monster “Id” field from the monstats.txt file.

rangedspawn - Boolean Field. If equals 1, then for the first monster, try to pick a ranged type. If equals 0, then ignore this.

nmon1 (to nmon25) - Defines which monsters can spawn on the area level for Nightmare Difficulty and Hell Difficulty. Uses the monster “Id” field from the monstats.txt file.

umon1 (to umon25) - Defines which monsters can spawn as Unique monsters on this area level for Normal Difficulty. Uses the monster “Id” field from the monstats.txt file.

 

cmon1 (to cmon4) - Defines which Critter monsters can spawn on the area level. Uses the monster “Id” field from the monstats.txt file. Critter monsters are determined by the “critter” field from the monstats2.txt file.

cpct1 (to cpct4) - Controls the percent chance (out of 100) to spawn a Critter monster on the area level.

camt1 (to camt4) - Controls the amount of Critter monsters to spawn on the area level after they succeeded their random spawn chance from the related “cpct#” field.

 

Themes - 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 - Uses the “Index” field from SoundEnviron.txt, which controls what music is played while the player is in the area level

 

Waypoint - 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 - String Field. Used for displaying the name of the area level, such as when in the UI when the Automap is being viewed.

LevelWarp - String Field. Used 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 - String Field. Used for displaying the UI popup title string when the player enters the area level.

 

ObjGrp0 (to ObjGrp7) - Uses a numeric ID to define which possible Object Groups to spawn in this area level (See 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 (to ObjPrb7) - 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 – Defines what group this level belongs to. Used for condensing level names in desecrated (terror) zones messaging. See LevelGroups.txt.

LvlMaze.txt

Overview

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 - 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 - This refers to the “Id” field from the Levels.txt file

 

Rooms & Rooms(N) & Rooms(H) - 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 - Controls the length and width sizes of each room (ds1 map files) that is added to the Level Maze. This is measured in tile sizes.

 

Merge - 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

Overview

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.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - This is a reference field to define the Level Preset

Def - Defines the unique numeric ID for the Level Preset. This is referenced in other files.

LevelId - 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the Level Preset allow for wall transparency to function. If equals 0, then walls will always appear solid.

Outdoors - Boolean Field. 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 - Boolean Field. If equals 1, then the game will animate the tiles in the Level Preset. If equals 0, then ignore this.

KillEdge - Boolean Field. If equals 1, then the game will remove tiles that border the size of the Level Preset. If equals 0, then ignore this.

FillBlanks - Boolean Field. 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 - 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 - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - 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 “File#” fields to build the Level Preset. This is how the Level Presets have variety when the area level is being built.

File1 (to File6) - 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 - 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#” field from LevelType.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 select which “File#” fields to use from LevelTypes.txt and add their associated bit values together for a total value. This total value is the bitmask value.

LvlSub.txt

Overview

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 - This is a reference field to describe the Level Substitution

Type - This refers to the “SubType” field from the Levels.txt file. This defines a group that multiple substitutions can share.

File - Specifies the name of which ds1 file to use. The ds1 files contain data for building Level Presets.

 

CheckAll - Boolean Field. If equals 1, then substitute each tile in the room. If equals 0, then substitute random tiles in the room.

BordType - 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 - Controls the tile size of a cluster for substituting tiles. This evenly affects both the X and Y size values of a room.

Dt1Mask - 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 selecting a tile for substitution. Each “File#” field from LevelType.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 select which “File#” fields to use from LevelTypes.txt and add their associated bit values together for a total value. This total value is the bitmask value.

 

Prob0 (to Prob4) - 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 (to Trials4) - 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 equals to 0.

Max0 (to Max4) - The maximum number of clusters of tiles to substitute randomly. This field depends on the “CheckAll” field being equals to 0.

LvlTypes.txt

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - This is a reference field to define the Level Type

 

File 1 (to File 32) - 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 - 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

Overview

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 - This is a reference field to define the Level Warp

Id - 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 - 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 - 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 - 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 - 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 - Boolean Field. 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 - 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 - Boolean Field. 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 - 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 - 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

Overview

This file controls what item affixes (groups of item modifiers) are applied as the prefix for an item

These item affixes will appear at the start of an 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.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - Defines the item affix name

version - Defines which game version to use this item affix (<100 = Classic mode | 100 = Expansion mode)

 

spawnable - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - The minimum character level required to equip an item that has this item affix

 

classspecific - Controls if this item affix should only be used for class specific items. This relies on the class specified in the “Class” field from ItemTypes.txt, for the specific item.

Code

Description

(empty)

Any Class

ama

Amazon only

bar

Barbarian only

pal

Paladin only

nec

Necromancer only

sor

Sorceress only

dru

Druid only

ass

Assassin only

class - Controls which character class is required for the class specific level requirement “classlevelreq” field

Code

Description

(empty)

None

ama

Amazon

bar

Barbarian

pal

Paladin

nec

Necromancer

sor

Sorceress

dru

Druid

ass

Assassin

classlevelreq - 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 “class” field. If equals null, then the class will default to using the “levelreq” field.

 

frequency - 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 - 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 (to mod3code) - Controls the item properties for the item affix (Uses the “code” field from Properties.txt)

mod1param (to mod3param) - The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

mod1min (to mod3min) - The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

mod1max (to mod3 max) - The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

 

transformcolor - 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. (Uses Color Codes from the reference file colors.txt)

Code

Color

 

No color change

whit

White

lgry

Light Grey

dgry

Dark Grey

blac

Black

lblu

Light Blue

dblu

Dark Blue

cblu

Crystal Blue

lred

Light Red

dred

Dark Red

cred

Crystal Red

lgrn

Light Green

dgrn

Dark Green

cgrn

Crystal Green

lyel

Light Yellow

dyel

Dark Yellow

lgld

Light Gold

dgld

Dark Gold

lpur

Light Purple

dpur

Dark Purple

oran

Orange

bwht

Bright White

 

itype1 (to itype7) - Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt

etype1 (to etype5) - Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt

 

multiply - 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 - Flat integer modification to the item’s buy and sell costs, based on the item affix

MagicSuffix.txt

Overview

This file controls what item affixes (groups of item modifiers) are applied as the suffix for an item

These item affixes will appear at the end of 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.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - Defines the item affix name

version - Defines which game version to use this item affix (<100 = Classic mode | 100 = Expansion mode)

 

spawnable - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - The minimum character level required to equip an item that has this item affix

 

classspecific - Controls if this item affix should only be used for class specific items. This relies on the class specified in the “Class” field from ItemTypes.txt, for the specific item.

Code

Description

(empty)

Any Class

ama

Amazon only

bar

Barbarian only

pal

Paladin only

nec

Necromancer only

sor

Sorceress only

dru

Druid only

ass

Assassin only

class - Controls which character class is required for the class specific level requirement “classlevelreq” field

Code

Description

(empty)

None

ama

Amazon

bar

Barbarian

pal

Paladin

nec

Necromancer

sor

Sorceress

dru

Druid

ass

Assassin

classlevelreq - 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 “class” field. If equals null, then the class will default to using the “levelreq” field.

 

frequency - 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 - 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 (to mod3code) - Controls the item properties for the item affix. (Uses the “code” field from Properties.txt)

mod1param (to mod3param) - The “parameter” value associated with the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

mod1min (to mod3min) - The “min” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

mod1max (to mod3 max) - The “max” value to assign to the listed property (mod). Usage depends on the property function (See the “func” field on Properties.txt)

 

transformcolor - 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. (Uses Color Codes from the reference file colors.txt)

Code

Color

 

No color change

whit

White

lgry

Light Grey

dgry

Dark Grey

blac

Black

lblu

Light Blue

dblu

Dark Blue

cblu

Crystal Blue

lred

Light Red

dred

Dark Red

cred

Crystal Red

lgrn

Light Green

dgrn

Dark Green

cgrn

Crystal Green

lyel

Light Yellow

dyel

Dark Yellow

lgld

Light Gold

dgld

Dark Gold

lpur

Light Purple

dpur

Dark Purple

oran

Orange

bwht

Bright White

 

itype1 (to itype7) - Controls what Item Types are allowed to spawn with this item affix. Uses the “code” field from ItemTypes.txt

etype1 (to etype5) - Controls what Item Types are excluded to spawn with this item affix. Uses the “code” field from ItemTypes.txt

 

multiply - 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 - Flat integer modification to the item’s buy and sell costs, based on the item affix

Missiles.txt

Overview

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.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Missile - 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 - Uses an ID value to select a function for the missile’s behavior while active every frame on the client side. This is more about handling the local graphics while the missile is moving.

Code

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 the created 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 missile periodically after an initial delay controlled by “CltParam1”. “CltParam2” controls the periodic rate to spawn the sub missile and “CltParam3” controls the 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 and request 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 subloops controlled 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 spawn rate in a random position in a radius.

62

 

ProcessNihlathak - This function handles the missile visuals 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 random direction.

·         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 - Uses an ID value 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.

Code

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 - Uses an ID value to select a specialized function for the missile’s behavior while active every frame on the server side

Code

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 the periodic 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 - Uses an ID value to select a specialized function for the missile’s behavior when hitting something on the server side

Code

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 a defined 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 a specified 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 - Uses an ID value to select a specialized function that gets called before damaging a unit on the server side

Code

Parameters

Description

0

(or empty)

 

Default

1

DmgCalc1

DamageFireArrow - Converts a percentage of physical damage to 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 (See 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 (See 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

o   If “sHitPar2” equals 0, then do not modify the damage

o   If “sHitPar2” equals 1, then only modify the damage if the monster is an Undead type

o   If “sHitPar2” equals 2, then only modify the damage if the monster is a Demon type

o   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

o   If “sHitPar2” equals 0, then modify the damage

o   If “sHitPar2” equals 0, then do not modify the damage

SrvCalc1 - Numeric calculation field. Used as a parameter for the “pSrvDoFunc” field.

Param1 (to Param5) - Integer field. Used as a parameter for the “pSrvDoFunc” field.

CltCalc1 - Numeric calculation field. Used as a parameter for the “pCltDoFunc” field.

CltParam1 (to CltParam5) - Integer field. Used as a parameter for the “pCltDoFunc” field.

SHitCalc1 - Numeric calculation field. Used as a parameter for the “pSrvHitFunc” field.

sHitPar1 (to sHitPar3) - Integer field. Used as a parameter for the “pSrvHitFunc” field.

CHitCalc1 - Numeric calculation field. Used as a parameter for the “pCltHitFunc” field.

cHitPar1 (to cHitPar3) - Integer field. Used as a parameter for the “pCltHitFunc” field.

DmgCalc1 - Numeric calculation field. Used as a parameter for the “pSrvDmgFunc” field.

dParam1 & dParam2 - Integer field. Used as a parameter for the “pSrvDmgFunc” field.

 

Vel - 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 - 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 - 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 - 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 - 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 - 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 - Controls the missile’s Light Radius size (measured in grid sub-tiles)

Flicker - 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 - Controls the red color value of the missile’s Light Radius (Uses a value from 0 to 255)

Green - Controls the green color value of the monster’s Light Radius (Uses a value from 0 to 255)

Blue - Controls the blue color value of the monster’s Light Radius (Uses a value from 0 to 255)

 

InitSteps - 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 - 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 - Boolean Field. 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 - Defines which DCC missile file to use for the visual graphics of the missile

animrate - Controls the visual speed of the missile’s animation graphics. The overall missile animation rate is calculated as the following: 256 * [“animrate”] / 1024

AnimLen - 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 - 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 - 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 - Boolean Field. 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 - The starting frame of the sequence animation. This requires that the “SubLoop” field is enabled.

SubStop - 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 - 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the missile will use the next delay. If equals 0, then ignore this.

NextDelay - 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 - 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 - 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 - Boolean Field. 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 - 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 - Boolean Field. If equals 1, then the missile can be attacked and destroyed. If equals 0, then the missile cannot be attacked.

 

ToHit - Boolean Field. 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 - Boolean Field. If equals 1, then the missile will always process an explosion when it is killed, which can use a server hit function (See “pSrvHitFunc”) and can use the “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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 the Multi-Shot monster modifier.

Holy - 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 - Boolean Field. If equals 1, then the missile can be affected by the “slowmissiles” state (See states.txt). If equals 0, then the missile will ignore the “slowmissiles” state.

ReturnFire - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Controls the percentage chance (out of 100) that the target unit will be knocked back when hit by the missile

Trans - 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 - Boolean Field. 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 - Boolean Field. 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 - 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 - 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.

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

HitFlags - 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.

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

 

HitShift - 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 - Boolean Field. 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 - 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 - Boolean Field. If equals 1 and the source unit is currently wielding a 2-Handed weapon, then the source damage (see “SrcDamage”) is reduced by 50%. If equals 0, then ignore this.

SrcMissDmg - 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 - Minimum baseline physical damage dealt by the missile

MinLevDam1 (to MinLevDam5) - 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 - Maximum baseline physical damage dealt by the missile

MaxLevDam1 (to MaxLevDam5) - 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 - Calculation Field. Determines the percentage increase to the physical damage dealt by the missile based on specified skill levels.

 

EType - 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.

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

burn

Burning (Uses “ELen”)

frze

Freeze (Uses “ELen”)

EMin - Minimum baseline elemental damage dealt by the missile

MinELev1 (to MinELev5) - 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 - Maximum baseline elemental damage dealt by the missile

MaxELev1 (MaxELev5) - 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 - Calculation Field. Determines the percentage increase to the elemental damage dealt by the missile based on specified skill levels.

ELen - 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 (to ELevLen3) - 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 - 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 - The number of directions allowed by the missile, based on the DCC file used (see “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 - Boolean Field. 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 - 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 - Points to a “Sound” field defined in the sounds.txt file. Used when the missile is created and while it is alive.

HitSound - Points to a “Sound” field defined in the sounds.txt file. Used when the collides with a target.

 

ProgSound - Points to a “Sound” field defined in the sounds.txt file. Used for a programmed special event based on the client function.

ProgOverlay - 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 - Points to the “Missile” field for another missile. Used for the missile created on the client when this missile explodes.

 

SubMissile1 (to SubMissile3) - Points to the “Missile” field for another missile. Used for creating a new missile based on the server function used.

HitSubMissile1 (to HitSubMissile4) - Points to the “Missile” field for another missile. Used for a new missile after a collision, based on the server function used.

CltSubMissile1 (to CltSubMissile3) - Points to the “Missile” field for another missile. Used for creating a new missile based on the client function used.

CltHitSubMissile1 (to CltHitSubMissile4) - Points to the “Missile” field for another missile. Used for a new missile after a collision, based on the client function used.

misc.txt

Overview

This file controls the functionalities for miscellaneous type items, such as the non-weapons and non-armor items.

 

This file is loaded together with other similar files in the following order: weapons.txt, armor.txt, misc.txt

These combined files form the items structure. Technically these files share the same fields, but some fields are exclusive for specific item types, so they are not displayed in the data files that do not need them.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

name - This is a reference field to define the item

version - Defines which game version to create this item (0 = Classic mode | 100 = Expansion mode)

compactsave - Boolean Field. 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 - Determines the chance that the item will randomly spawn (1/#). 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 - Boolean Field. If equals 1, then this item can be randomly spawned. If equals 0, then this item will never randomly spawn.

 

speed - If the item type is an armor, then this will affect the Walk/Run Speed reduction when wearing the armor. If the item type is a weapon, then this will affect the Attack Speed reduction when wearing the weapon.

reqstr - Defines the amount of the Strength attribute needed to use the item

reqdex - Defines the amount of the Dexterity attribute needed to use the item

 

durability - Defines the base durability amount that the item will spawn with.

nodurability - Boolean Field. If equals 1, then the item will not have durability. If equals 0, then the item will have durability.

 

level - 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 - Boolean Field. If equals 1, then display the item level next to the item name. If equals 0, then ignore this.

levelreq - Controls the player level requirement for being able to use the item

 

cost - 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 - Defines the gambling gold cost of the item on the Gambling UI

 

code - Defines a unique 3 letter/number code for the item. This is used as an identifier to reference the item.

namestr - String Key that is used for the base item name

 

magic lvl - Defines the magic level of the item, which can affect how magical item modifiers that can appear on the item (See automagic.txt)

auto prefix - Automatically picks an item affix name from a designated “group” value from the automagic.txt file, instead of using random prefixes. This is only used when the item is Magical quality.

 

alternategfx - 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 - Links to a “code” field to determine the normal version of the item

ubercode - Links to a “code” field to determine the Exceptional version of the item

ultracode - Links to a “code” field to determine the Elite version of the item

 

component - Determines the layer of player animation when the item is equipped. This uses a code referenced from the Composit.txt file.

Code

Description

0

Head

1

Torso

2

Legs

3

Right Arm

4

Left Arm

5

Right Hand

6

Left Hand

7

Shield

8

Special 1

9

Special 2

10

Special 3

11

Special 4

12

Special 5

13

Special 6

14

Special 7

15

Special 8

16

Do not display anything

invwidth & invheight - Defines the width and height of grid cells that the item occupies in the player inventory

 

hasinv - Boolean Field. If equals 1, then the item will have its own inventory allowing for the capability to socket gems, runes, or jewels. If equals 0, then the item cannot have sockets.

gemsockets - 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 “MaxSock1”, “MaxSock25” and “MaxSock40” fields from the ItemTypes.txt file.

gemapplytype - Determines which affect from a gem or rune will be applied when it is socketed into this item (See gems.txt)

Code

Description

0

Weapon

1

Armor or Helmet

2

Shield

 

flippyfile - 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)

invfile - Controls which DC6 file to use for displaying the item graphics in the inventory (uses the file name as the input)

uniqueinvfile - 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)

setinvfile - 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)

 

useable - Boolean Field. 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 - Boolean Field. 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 - Controls the minimum stack count or quantity that is allowed on the item. This field depends on the “stackable” field being enabled.

maxstack - Controls the maximum stack count or quantity that is allowed on the item. This field depends on the “stackable” field being enabled.

spawnstack - Controls the stack count or quantity that the item can spawn with. This field depends on the “stackable” field being enabled.

 

Transmogrify - Boolean Field. 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.

TMogType - Links to a “code” field to determine which item is chosen to transmogrify this item to.

TMogMin - 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.

TMogMax - 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.

 

type - Points to an Item Type defined in the ItemTypes.txt file, which controls how the item functions

type2 - 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 - Points to a “Sound” field defined in the sounds.txt file. Used when the item is dropped on the ground.

dropsfxframe - Defines which frame in the “flippyfile” animation to play the “dropsound” sound when the item is dropped on the ground.

usesound - Points to a “Sound” field defined in the sounds.txt file. Used when the item is moved in the inventory or used.

 

unique - Boolean Field. 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 - Boolean Field. 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 - Controls what type of transparency to use, based on the “transparent” field being enabled.

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

 

lightradius - 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 - Controls which belt type to use for belt items only. This field determines what index entry in the belts.txt file to use.

 

quest - 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.

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

questdiffcheck - Boolean Field. 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 - Points to the “Id” field from the Missiles.txt file, which determines what type of missile is used when using the throwing weapons

durwarning - Controls the threshold value for durability to display the low durability warning UI. This is only used if the item has durability.

qntwarning - Controls the threshold value for quantity to display the low quantity warning UI. This is only used if the item has stacks.

 

mindam - The minimum physical damage provided by the item

maxdam - The maximum physical damage provided by the item

 

StrBonus - 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 - 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 - Determines the starting index offset for reading the gems.txt file when determining what effects gems or runes will have the item based on the “gemapplytype” field. For example, if this value equals 9, then the game will start with index 9 (“Chipped Emerald”) and ignore the previously defined gems in the gems.txt file, which can mean that those ignored gems will not apply modifiers when socketed into the item.

bitfield1 - 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 Value

Binary 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 - Minimum amount of this item type in Normal rarity that the NPC can sell at once

[NPC]Max - 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 - Minimum amount of this item type in Magical rarity that the NPC can sell at once

[NPC]MagicMax - 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 - 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 - Controls the color palette change of the item for the character model graphics

InvTrans - Controls the color palette change of the item for the inventory graphics

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

 

SkipName - Boolean Field. 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 - 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 - 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 - Boolean Field. 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 - Boolean Field. 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 - 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.

 

The following fields are exclusive to the misc.txt file because these fields only used with Miscellaneous type items:

 

autobelt - Boolean Field. 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 - Links to another item’s “code” field. Used by the function 18 in the “Code” field from the shrines.txt file to know what a selected gem’s upgrade will be when the player uses the gem shrine.

 

multibuy - Boolean Field. 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 - 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 - Uses an ID value to select a spell function when the item is used. This depends on the item type.

Code

Parameters

Description

0

 

Do nothing

1

spellicon

SkillItemIdentify - Sets the spell icon. Identifies an item.

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 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

5

stat1, calc1

stat2, calc2

stat3, calc3

 

SkillItemHealPotion3 - Adds a percentage of the stat’s “maxstat” value (see 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 is controlled 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 equals 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

state - 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 & cstate2 - 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 - Calculates the frame length of a state. Used as a parameter for a “pspell” function.

stat1 (to stat3) - 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 (to calc3) - Calculates the value of the relative “stat#” field. Used as a parameter for a “pspell” function.

 

spelldesc - Uses an ID value to select a function to format a string and add this string to 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 file.

3.    If the “stat1” value equals “mana” or “manarecovery” then adjust the calculated value based on the relative “ManaPotionPercent” value from charstats.txt file.

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 & spelldescstr2 - String Key. Used as a parameter for the “spelldesc” function.

spelldesccalc - Calculates the numeric equation. Used as a parameter for the “spelldesc” function.

spelldesccolor - Uses a code number to change the color of the string used in the “spelldesc” function.

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)

monequip.txt

Overview

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 - 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 - 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 - 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 (to item3) - Item that the be equipped on the monster (Uses ID pointer from Weapons.txt, Armor.txt or Misc.txt)

loc1 (to loc3) - 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.

Code

Description

(empty)

None

head

Head

neck

Neck

tors

Torso

rarm

Right Arm

larm

Left Arm

rrin

Right Ring

lrin

Left Ring

belt

Belt

feet

Feet

glov

Gloves

mod1 (to mod3) - 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

Overview

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

Data Fields

Level - An integer value to determine how to scale the monster’s statistics when at a specific level

 

The following are used for the following game type: Non-Ladder Battle.net / Singleplayer / Open Battle.net / TCP

AC & AC(N) & AC(H) - Percentage multiplier for increasing the Monster’s Defense (multiplies with the “AC” field in monstats.txt)

TH & TH(N) & TH(H) - Percentage multiplier for increasing the Monster’s Attack Rating (multiplies with the “A1TH” and “A2TH” fields in monstats.txt)

HP & HP(N) & HP(H) - Percentage multiplier for increasing the Monster’s Life (multiplies with the “MinHP” and “MaxHP” fields in monstats.txt)

DM & DM(N) & DM(H) - Percentage multiplier for increasing the Monster’s Damage (multiplies with the “A1MinD”, “A1MaxD”, “A2MinD”, “A2MaxD”, “El1MinD”, “El1MaxD”, “El2MinD”, “El2MaxD”, “El3MinD”, and “El3MaxD” fields in monstats.txt)

XP & XP(N) & XP(H) - Percentage multiplier for increasing the Experience provided to the player when killing the Monster (multiplies with the “Exp” fields in monstats.txt)

 

The following are used only for the Ladder Battle.net game type

L-AC & L-AC(N) & L-AC(H) - Percentage multiplier for increasing the Monster’s Defense (multiplies with the “AC” field in monstats.txt)

L-TH & L-TH(N) & L-TH(H) - Percentage multiplier for increasing the Monster’s Life (multiplies with the “A1TH” and “A2TH” fields in monstats.txt)

L-HP & L-HP(N) & L-HP(H) - Percentage multiplier for increasing the Monster’s Life (multiplies with the “MinHP” and “MaxHP” fields in monstats.txt)

L-DM & L-DM(N) & L-DM(H) - Percentage multiplier for increasing the Monster’s Damage (multiplies with the “A1MinD”, “A1MaxD”, “A2MinD”, “A2MaxD”, “El1MinD”, “El1MaxD”, “El2MinD”, “El2MaxD”, “El3MinD”, and “El3MaxD” fields in monstats.txt)

L-XP & L-XP(N) & L-XP(H) - Percentage multiplier for increasing the Experience provided to the player when killing the Monster (multiplies with the “Exp” fields in monstats.txt)

MonPreset.txt

Overview

This file controls which monsters are preloaded in a preset, based on the Act number

Data Fields

Act - Defines the Act number used for each Monster Preset. Uses values between 1 to 5.

Place - Defines either a Super Unique monster from superuniques.txt, or 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

Overview

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 - Defines the monster that should gain the Property. Points to the matching “Id” value in the monstats.txt file.

 

prop1 (to prop6) - Defines with Property to apply to the monster (Uses the “code field from Properties.txt)

chance1 (to chance6) - The percent chance that the related property (prop#) will be assigned. If this value equals 0, then the Property will always be applied.

par1 (to par6) - The “parameter” value associated with the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

min1 (to min6) - The “min” value to assign to the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

max1 (to max6) - The “max” value to assign to the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

monseq.txt

Overview

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 - 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 - Defines which monster mode animation to use for the sequence

Code

Description

DT

Death

NU

Neutral

WL

Walk

GH

Get Hit

A1

Attack 1

A2

Attack 2

BL

Block

SC

Cast

S1

Skill 1

S2

Skill 2

S3

Skill 3

S4

Skill 4

DD

Dead

GH

Knockback

xx

Sequence

RN

Run

 

frame - 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 - Defines the numeric animation direction that the frame use. Most animations have between 8 to 64 maximum directions.

event - 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

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Id - Controls the unique name ID to define the monster. This must match the same value in the monstats2.txt file.

BaseId - 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 - 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 - 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 - String Key. Used to define the monster’s name, such as in the Life bar UI when it is being targeted.

MonStatsEx - Controls a pointer to the “Id” of a monster to define which entry to use in the monstats2.txt file. This should always match the same “Id” value for the monster in this file.

MonProp - Points to the “Id” field from the MonProp.txt file. Used to add special modifiers to the monster.

MonType - Points to the “type” field from the MonType.txt file. Used to handle the monster’s classification.

AI - Points to a type of AI script to use for the monster (See monai.txt).

DescStr - String Key. Used to add a string to appear as an additional description below the Life bar UI when the monster is being targeted.

Code - Controls the token used for choosing the proper cells to display the monster’s graphics

enabled - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - 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 - Controls the X & Y offsets for where another monster is displaced when being spawned by this monster.

spawnmode - Defines the animation mode that the spawned monsters will be initiated with

Token

Description

DT

Death / Reset

NU

Neutral

WL

Walk

GH

Get Hit

A1

Attack 1

A2

Attack 2

BL

Block

SC

Cast

S1

Skill 1

S2

Skill 2

S3

Skill 3

S4

Skill 4

DD

Dead

GH

Knockback

xx

Sequence

RN

Run

 

minion1 & minion2 - 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 - Boolean Field. 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 - Boolean Field. 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 - The minimum number of minions that can spawn with this monster. Uses the “minion1” and “minion2” fields. The actual number is a random value chosen between the “PartyMin” and “PartyMax” field values.

PartyMax - The maximum number of minions that can spawn with this monster. Uses the “minion1” and “minion2” fields. The actual number is a random value chosen between the “PartyMin” and “PartyMax” field values.

MinGrp - 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 - 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 - 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 - Determines the movement velocity of the monster, which can be the monster’s baseline walk speed.

Run - Determines the run speed of the monster as opposed to walk speed. This is only used if the monster has a Run mode.

Rarity - 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 - Determines the monster’s level. This value for Nightmare and Hell difficulty can be overridden by the area level’s “MonLvl#” or “MonLvl#Ex” value (See Levels.txt), unless the monster’s “boss” and “noRatio” fields are enabled.

 

MonSound - Points to the “Id” field of a monster sound from the monsounds.txt file. This is used to control the monsters assigned sounds, when the monster is spawned as a Normal monster.

UMonSound - Points to the “Id” field of a monster sound from the monsounds.txt file. This is used to control the monsters assigned sounds, when the monster is spawned as a Unique or Champion monster.

 

threat - 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 - 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 - 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 (to aip8) - Defines numeric parameters used to control various functions of the monster’s AI. These fields depend on which AI script is being used (See monai.txt, and the “AI” field in monstats.txt)

 

MissA1 & MissA2 - 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 (to MissS4) - 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 - Points to the “Missile” field from Missiles.txt to determine which missile to use when the monster is in Cast mode

MissSQ - Points to the “Missile” field from Missiles.txt to determine which missile to use when the monster is in Sequence mode

 

Align - 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 (also see monequip.txt). If equals 0, then ignore this.

inTown - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the monster is classified as a Demon type. If equals 0, then ignore this.

flying - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the monster is not allowed to spawn with the Multi-Shot unique monster modifier (See monumod.txt). If equals 0, then ignore this.

neverCount - Boolean Field. 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 - Boolean Field. If equals 1, then pet AI scripts will ignore this monster (See monai.txt). If equals 0, then pet AI will attack this monster.

deathDmg - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Determines what type of items the monster is allowed to hold in its right arm (see ItemTypes.txt). A blank value means it can hold any item.

leftArmItemType – Determines what type of items the monster is allowed to hold in its left arm (see ItemTypes.txt). A blank value means it can hold any item.

canNotUseTwoHandedItems – Boolean Field. If equals 1, then the monster can not items marked as two handed (see weapons.txt)

 

SendSkills - 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 (to Skill8) - Points to a skill from the “skill” field in the skills.txt file. This gives the monster the skill to use (requires “Sk#mode”)

Sk1mode (to Sk8mode) - 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” defined in the monseq.txt file, which handle a specific set of frames to place a sequence animation.

Token

Description

DT

Death / Reset

NU

Neutral

WL

Walk

GH

Get Hit

A1

Attack 1

A2

Attack 2

BL

Block

SC

Cast

S1

Skill 1

S2

Skill 2

S3

Skill 3

S4

Skill 4

DD

Dead

GH

Knockback

RN

Run

Sk1lvl (to Sk8lvl) - Controls the base skill level of the related skill on the monster

 

Drain - Controls the monster’s overall Life and Mana steal percentage. This can also be affected by the “LifeStealDivisor” and “ManaStealDivisor” fields from the difficultylevels.txt file. If equals 0, then the monster will not have Life or Mana steal.

coldeffect - 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 - Sets the monster’s Physical Damage Resistance stat

ResMa - Sets the monster’s Magic Resistance stat

ResFi - Sets the monster’s Fire Resistance stat

ResLi - Sets the monster’s Lightning Resistance stat

ResCo - Sets the monster’s Cold Resistance stat

ResPo - Sets the monster’s Poison Resistance stat

 

DamageRegen - Controls the monster’s Life regeneration per frame. This is calculated based on the monster’s maximum life: Regeneration Rate = (Life * “DamageRegen”) / 16

SkillDamage - 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 - Boolean Field. If equals 1, then use this file’s fields to determine the monster’s baseline stats (“minHP”, “maxHP”, “AC”, “Exp”, “A1MinD”, “A1MaxD”, “A1TH”, “A2MinD”, “A2MaxD”, “A2TH”, “S1MinD”, “S1MaxD”, “S1TH”). If equals 0, then use the MonLvl.txt file to determine the monster’s baseline stats.

ShieldBlockOverride - 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 - The monster’s percent chance to block an attack

Crit - The percent chance for the monster to score a critical hit when attacking an enemy, which causes the attack to deal double damage

minHP - The monster’s minimum amount of Life when spawned

maxHP - The monster’s maximum amount of Life when spawned

AC - The monster’s Defense value

Exp - The amount of Experience that is rewarded to the player when the monster is killed

A1MinD - The minimum damage dealt by the monster when it is using the Attack 1 (A1) animation mode

A1MaxD - The maximum damage dealt by the monster when it is using the Attack 1 (A1) animation mode

A1TH - The monster’s Attack Rating when it is using the Attack 1 (A1) animation mode

A2MinD - The minimum damage dealt by the monster when it is using the Attack 2 (A2) animation mode

A2MaxD - The maximum damage dealt by the monster when it is using the Attack 2 (A2) animation mode

A2TH - The monster’s Attack Rating when it is using the Attack 2 (A2) animation mode

S1MinD - The minimum damage dealt by the monster when it is using the Skill 1 (S1) animation mode

S1MaxD - The maximum damage dealt by the monster when it is using the Skill 1 (S1) animation mode

S1TH - The monster’s Attack Rating when it is using the Skill 1 (S1) animation mode

 

El1Mode (to El3Mode) - Determines which animation mode will trigger an additional elemental damage type when used

Token

Description

DT

Death / Reset

NU

Neutral

WL

Walk

GH

Get Hit

A1

Attack 1

A2

Attack 2

BL

Block

SC

Cast

S1

Skill 1

S2

Skill 2

S3

Skill 3

S4

Skill 4

DD

Dead

GH

Knockback

xx

Sequence

RN

Run

El1Type (to El3Type) - Defines the type of elemental damage. This field is used when El#Mode is not null.

Code

Description

fire

Fire

ltng

Lightning

mag

Magic

cold

Cold

pois

Poison

life

Life Drain

mana

Mana Drain

stam

Stamina Drain

stun

Stun

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

frze

Freeze

El1Pct (to El3Pct) - 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 (to El3MinD) - The minimum element damage applied to the attack. This field is used when El#Mode is not null.

El1MaxD (to El3MaxD) - The maximum element damage applied to the attack. This field is used when El#Mode is not null.

El1Dur (to El3Dur) - 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 - Defines which Treasure Class is used by the monster when it is killed. Points to the “Treasure Class” field from the TreasureClassEx.txt file. Used for normal monster types.

TreasureClassChamp - Defines which Treasure Class is used by the monster when it is killed. Points to the “Treasure Class” field from the TreasureClassEx.txt file. Used for Champion monster types.

TreasureClassUnique - Defines which Treasure Class is used by the monster when it is killed. Points to the “Treasure Class” field from the TreasureClassEx.txt file. Used for Unique monster types.

TreasureClassQuest - Defines which Treasure Class is used by the monster when it is killed. Points to the “Treasure Class” field from the TreasureClassEx.txt file. Used for quest related monster drops (See “TCQuestId” and “TCQuestCP”).

TreasureClassDesecrated - Defines which Treasure Class is used by the monster when it is killed while desecrated (Terrorized). Points to the “Treasure Class” field from the TreasureClassEx.txt file. Used for normal monster types.

TreasureClassDesecratedChamp - Defines which Treasure Class is used by the monster when it is killed while desecrated (Terrorized). Points to the “Treasure Class” field from the TreasureClassEx.txt file. Used for Champion monster types.

TreasureClassDesecratedUnique - Defines which Treasure Class is used by the monster when it is killed while desecrated (Terrorized). Points to the “Treasure Class” field from the TreasureClassEx.txt file. Used for Unique monster types.

 

 

TCQuestId - Checks to see if the player has does not have a quest flag progress. If not, then use the “TreasureClass4” field, based on the game’s current difficulty.

Code

Quest Progress

0

Act 1 Prologue Seen

1

Den of Evil Completed

2

Sisters’ Burial Grounds Completed

3

Tools of the Trade Completed

4

The Search for Cain Completed

5

The Forgotten Tower Completed

6

Sisters to the Slaughter Completed

7

Act 1 Traversed

8

Act 2 Prologue Seen

9

Radament’s Lair Completed

10

The Horadric Staff Completed

11

Tainted Sun Completed

12

Arcane Sanctuary Completed

13

The Summoner Completed

14

The Seven Tombs Completed

15

Act 2 Traversed

16

Act 3 Prologue Seen

17

Lam Esen's Tome Completed

18

Khalim's Will Completed

19

Blade of the Old Religion Completed

20

The Golden Bird Completed

21

The Blackened Temple Completed

22

The Guardian Completed

23

Act 3 Traversed

24

Act 4 Prologue Seen

25

The Fallen Angel Completed

26

Terror's End Completed

27

Hell's Forge Completed

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 Completed

36

Rescue on Mount Arreat Completed

37

Prison of Ice Completed

38

Betrayal of Harrogath Completed

39

Rite of Passage Completed

40

Eve of Destruction Completed

41

Respecialization from Akara is Completed

TCQuestCP - Controls which Quest Checkpoint, or current progress within a quest (based on the “TCQuestId” value), is needed to use the “TreasureClass4” 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 - 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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

Overview

This file controls additional functionalities and statistics for every monster in the game.

 

This file is treated as a continuation of the monstats.txt file, and therefore its amount of entries should be identical with the monstats.txt file.

Data Fields

Id - Controls the unique name ID to define the monster. This must match the same value in the monstats.txt file.

 

Height - 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 - Determines the height value of overlays (See Overlay.txt) for the monster

pixHeight - Determines the pixel height value for the damage bar when the monster is selected

 

SizeX & SizeY - Determines the tile grid size of the monster which is use for handling placement when the monster spawns or uses movement skills

spawnCol - 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 - 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 - Defines the monster’s base weapon class, which can affect how the monster attacks

Code

Description

hth

Hand to Hand (Default value if the value is empty)

1hs

One Handed Swing

1ht

One Handed Thrust

bow

Bow

2hs

Two Handed Swing

2ht

Two Handed Thrust

1js

Dual Wielding - Left Jab Right Swing

1jt

Dual Wielding - Left Jab Right Thrust

1ss

Dual Wielding - Left Swing Right Swing

1st

Dual Wielding - Left Swing Right Thrust

stf

Staff

xbw

Crossbow

ht1

One Hand to Hand

ht2

Two Hand to Hand

HitClass - 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.

Code

Description

0

None

1

Hand to Hand

2

One Handed Swing Small

3

One Handed Swing Large

4

Two Handed Swing Small

5

Two Handed Swing Large

6

One Handed Thrust

7

Two Handed Thrust

8

Club

9

Staff

10

Bow

11

Crossbow

12

Claw

13

Do Overlay

 

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 - Head visual

TRv - Torso visual

LGv - Legs visual

RAv - Right Arm visual

LAv - Left Arm visual

RHv - Right Hand visual

LHv - Left Hand visual

SHv - Shield visual

S1v (to S8v) - 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.

HD - Head

TR - Torso

LG - Legs

RA - Right Arm

LA - Left Arm

RH - Right Hand

LH - Left Hand

SH - Shield

S1 (to S8) - Special 1 to Special 8

 

TotalPieces - Defines the total amount of component pieces that the monster uses. This value should match the number of enabled Boolean fields listed above.

 

mDT - Boolean Field. If equals 1, then enable the Death Mode for the monster. If equals 0, then this mode is disabled.

mNU - Boolean Field. If equals 1, then enable the Neutral Mode for the monster. If equals 0, then this mode is disabled.

mWL - Boolean Field. If equals 1, then enable the Walk Mode for the monster. If equals 0, then this mode is disabled.

mGH - Boolean Field. If equals 1, then enable the Get Hit Mode for the monster. If equals 0, then this mode is disabled.

mA1 & mA2- Boolean Field. If equals 1, then enable the Attack 1 (and Attack 2) Mode for the monster. If equals 0, then this mode is disabled.

mBL - Boolean Field. If equals 1, then enable the Block Mode for the monster. If equals 0, then this mode is disabled.

mSC - Boolean Field. If equals 1, then enable the Cast Mode for the monster. If equals 0, then this mode is disabled.

mS1 (to mS4) - Boolean Field. If equals 1, then enable the Skill 1 (to Skill4) Mode for the monster. If equals 0, then this mode is disabled.

mDD - Boolean Field. If equals 1, then enable the Dead Mode for the monster. If equals 0, then this mode is disabled.

mKB - Boolean Field. If equals 1, then enable the Knockback Mode for the monster. If equals 0, then this mode is disabled.

mSQ - Boolean Field. If equals 1, then enable the Sequence Mode for the monster. If equals 0, then this mode is disabled.

mRN - Boolean Field. If equals 1, then enable the Run Mode for the monster. If equals 0, then this mode is disabled.

 

dDT - Defines the number of directions that the monster can face during Death Mode

dNU - Defines the number of directions that the monster can face during Neutral Mode

dWL - Defines the number of directions that the monster can face during Walk Mode

dGH - Defines the number of directions that the monster can face during Get Hit Mode

dA1 & dA2 - Defines the number of directions that the monster can face during Attack 1 (and Attack 2) Mode

dBL - Defines the number of directions that the monster can face during Block Mode

dSC - Defines the number of directions that the monster can face during Cast Mode

dS1 (to dS4) - Defines the number of directions that the monster can face during Skill 1 (to Skill 4) Mode

dDD - Defines the number of directions that the monster can face during Dead Mode

dKB - Defines the number of directions that the monster can face during Knockback Mode

dSQ - Defines the number of directions that the monster can face during Sequence Mode

dRN - Defines the number of directions that the monster can face during Run Mode

 

A1mv & A2mv - Boolean Field. 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 - Boolean Field. 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 (to S4mv) - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - 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 - 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 - 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 - 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 - Boolean Field. 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 - Boolean Field. If equals 1, then no looping overlays will be drawn on the monster. If equals 0, then overlays will be drawn on the monster. (See Overlay.txt)

 

isSel - Boolean Field. If equals 1, then the monster is selectable and can be targeted. If equals 0, then the monster cannot be selected.

alSel - Boolean Field. 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 - Boolean Field. If equals 1, then the player can never select the monster. If equals 0, then ignore this.

shiftSel - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the monster can be attacked. If equals 0, then the monster cannot be attacked.

revive - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the monster will never attack its enemies. If equals 0, then ignore this.

 

objCol - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - Controls the monster’s minimum Light Radius size (measured in grid sub-tiles)

light-r - Controls the red color value of the monster’s Light Radius (Uses a value from 0 to 255)

light-g - Controls the green color value of the monster’s Light Radius (Uses a value from 0 to 255)

light-b - Controls the blue color value of the monster’s Light Radius (Uses a value from 0 to 255)

 

Utrans & Utrans(N) & Utrans(H) - 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 - 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 - The exact frame in the channel animation to loop back and start at again

InfernoRollback - The exact frame in the channel animation to determine when to roll back to the “InfernoAnim” frame

 

ResurrectMode - Controls which monster mode to set on the monster when it is resurrected

Code

Description

DT

Death

NU

Neutral

WL

Walk

GH

Get Hit

A1

Attack 1

A2

Attack 2

BL

Block

SC

Cast

S1

Skill 1

S2

Skill 2

S3

Skill 3

S4

Skill 4

DD

Dead

GH

Knockback

xx

Sequence

RN

Run

ResurrectSkill - Controls what skill should the monster use when it is resurrected (See skills.txt).

SpawnUniqueMod - Controls what unique modifier the monster should always spawn with (See monumod.txt).

MonType.txt

Overview

This file handles the classification, naming conventions and element of monsters

 

This is used by the monstats.txt data file

Data Fields

type - Defines the unique monster type ID

equiv1 (to equiv3) - 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 - Uses a string for the plural form of the monster type. This is used for thedescfunc” code 22 function from the ItemStatCost.txt file, based on the monster type selected.

element - 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

Overview

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 - This is a reference field to define the monster modifier

id - Defines the unique numeric ID for the monster modifier. Used as a reference in other data files.

enabled - Boolean Field. 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 - Defines which game version to use this monster modifier (<100 = Classic mode | 100 = Expansion mode)

 

xfer - Boolean Field. 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 - Boolean Field. 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 - 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 & exclude2 - This controls which Monster Types should not have this monster modifier (Uses the “type” field from MonType.txt)

 

cpick & cpick (N) & cpick (H) - 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) - 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 - 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

Overview

This file controls the sounds that play for each of a monster’s actions

 

This file relies on sounds from sounds.txt

 

This file is used by the monstats.txt file

Data Fields

Id - Defines the unique name ID for the monster sound

 

Attack1 & Attack2 - Play this sound when the monster performs Attack 1 and Attack 2, respectively. Points to a “Sound” value in the sounds.txt file.

Weapon1 & Weapon2 - 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” and “Attack2” sounds. Points to a “Sound” value in the sounds.txt file.

Att1Del & Att2Del - Controls the amount of game frames to delay playing the “Attack1” and “Attack2” sounds, respectively.

Wea1Del & Wea2Del - Controls the amount of game frames to delay playing the “Weapon1” and “Weapon2” sounds, respectively.

Att1Prb & Att2Prb - Controls the percent chance (out of 100) to play the “Attack1” and “Attack2” sounds, respectively.

Wea1Vol & Wea2Vol - Controls the volume of the “Weapon1” and “Weapon2” sounds, respectively. Uses a range between 0 to 255, where 255 is the maximum volume.

 

HitSound - Play this sound when the monster gets hit or knocked back. Points to a “Sound” value in the sounds.txt file.

DeathSound - Play this sound when the monster dies. Points to a “Sound” value in the sounds.txt file.

HitDelay - Controls the amount of game frames to delay playing the “HitSound” sound

DeaDelay - Controls the amount of game frames to delay playing the “DeathSound” sound

 

Skill1 (to Skill4) - Play this sound when the monster uses the skill linked in the related “Skill#” field from the monstats.txt file. Points to a “Sound” value in the sounds.txt file.

 

Footstep - Play this sound while the monster is walking or running. Points to a “Sound” value in the sounds.txt file.

FootstepLayer - Play this sound while the monster is walking or running. This acts as an extra sound that can play with the “Footstep” sound. Points to a “Sound” value in the sounds.txt file.

FsCnt - 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 - 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 - Controls the probability to play the “Footstep” and “FootstepLayer” sound, with a random chance out of 100.

 

Neutral - Play this sound while the monster is in Neutral, Walk, or Run mode. Also play this sound when the monster “Id” equals “vulture1” and while the monster is in Skill1 mode. Also play this sound when the monster “Id” equals “batdemon1” and while the monster is in Skill4 mode. Points to a “Sound” value in the sounds.txt file.

NeuTime - Controls the amount of game frames to delay between re-playing the “Neutral” sound after it finishes.

 

Init - Play this sound when the monster spawns and is not dead and is not playing its Neutral sound. Points to a “Sound” value in the sounds.txt file.

Taunt - Play this sound when the server requests that the monster should play its Taunt. This is typically used for quest or story related moments. Points to a “Sound” value in the sounds.txt file.

Flee - Play this sound when the monster is told to flee. This depends on when the monster AI is told to play this sound. Points to a “Sound” value in the sounds.txt file.

 

CvtMo1 (to CvtMo3) - This is used to convert the mode for playing the sound. This field defines the original mode that the monster is using. (See MonMode.txt for the list of possible inputs)

CvtSk1 (to CvtSk3) - 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 (to CvtTgt3) - Defines the mode to convert the sound to when the monster is using the relative skill from the “CvtSk#” field. This does not actually change the monster’s actual mode but only what mode that sounds think the monster is using. (See MonMode.txt for the list of possible inputs)

npc.txt

Overview

This file controls how each town NPC manipulates their store prices

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

npc - Points to the matching “Id” value in the monstats.txt file. This should not be changed.

 

buy mult - 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 - 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 - 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 (to questflag C) - If the player has this quest flag progress, then apply the relative additional price calculations

Code

Quest Progress

0

Act 1 Prologue Seen

1

Den of Evil Completed

2

Sisters’ Burial Grounds Completed

3

Tools of the Trade Completed

4

The Search for Cain Completed

5

The Forgotten Tower Completed

6

Sisters to the Slaughter Completed

7

Act 1 Traversed

8

Act 2 Prologue Seen

9

Radament’s Lair Completed

10

The Horadric Staff Completed

11

Tainted Sun Completed

12

Arcane Sanctuary Completed

13

The Summoner Completed

14

The Seven Tombs Completed

15

Act 2 Traversed

16

Act 3 Prologue Seen

17

Lam Esen's Tome Completed

18

Khalim's Will Completed

19

Blade of the Old Religion Completed

20

The Golden Bird Completed

21

The Blackened Temple Completed

22

The Guardian Completed

23

Act 3 Traversed

24

Act 4 Prologue Seen

25

The Fallen Angel Completed

26

Terror's End Completed

27

Hell's Forge Completed

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 Completed

36

Rescue on Mount Arreat Completed

37

Prison of Ice Completed

38

Betrayal of Harrogath Completed

39

Rite of Passage Completed

40

Eve of Destruction Completed

41

Respecialization from Akara is Completed


questbuymult A (to questbu
ymult C) -
Same functionality as the “buy mult” field, except this relies on the “questflag” field and applies after the “buy mult” field calculation

questsellmult A (to questsellmult C) - Same functionality as the “sell mult” field, except this relies on the “questflag” field and applies after the “sell mult” field calculation

questrepmult A (to questrepmult C) - Same functionality as the “rep mult” field, except this relies on the “questflag” field and applies after the “rep mult” field calculation

 

max buy & max buy (N) & max buy (H) - 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

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

 

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 numbered to match each of these modes, meaning that the object will use that specific field number when in a certain mode (See ObjMode.txt)

Number

Object Mode

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 - 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 - String key. Used as the display name of the object when being highlighted by the player.

Token - Determines what files to use to display the graphics of the object. These are defined by the ObjType.txt file.

 

Selectable0 (to Selectable7) - Boolean Field. 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. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

 

SizeX & SizeY - 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 (To FrameCnt7) - Controls the frame length of the object’s mode. If this equals 0, then that mode will be skipped. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

FrameDelta0 (to FrameDelta7) - Controls the animation frame rate of how many frames to update per delta (Measured in 256ths). Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

CycleAnim0 (to CycleAnim7) - Boolean Field. 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. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

Lit0 (to Lit7) - Controls the Light Radius distance value for the object. If this value equals 0, then the object will not emit a Light Radius. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

BlocksLight0 (to BlocksLight7) - Boolean Field. If equals 1, then the object will draw a shadow. If equals 0, then the object will not draw a shadow. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

HasCollision0 (to HasCollision7) - Boolean Field. 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. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

IsAttackable0 - Boolean Field. 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 (to Start7) - Controls the frame for where the object will start playing the next animation. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

EnvEffect - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - 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 (to OrderFlag7) - Controls how the object’s sprite is drawn, which can affect how it is displayed in Perspective game camera mode. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

Code

Description

0

Do nothing

1

Flat floor

2

Wall

PreOperate - Boolean Field. 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 (to Mode7) - Boolean Field. 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. Each field is numbered, correlating to 1 of 8 Object Modes that the object uses (See Overview section, or ObjMode.txt).

Xoffset & Yoffset - Controls the offset values in the X and Y directions for the object’s visual graphics. This is measured in game pixels.

 

Draw - Boolean Field. If equals 1, then draw the object’s shadows. If equal’s 0, then do not draw the object’s shadows.

 

Red - Controls the Red color gradient of the object’s Light Radius. This field depends on the “Lit#” field having a value greater than 0.

Green - Controls the Green color gradient of the object’s Light Radius. This field depends on the “Lit#” field having a value greater than 0.

Blue - Controls the Blue color gradient of the object’s Light Radius. This field depends on the “Lit#” field having a value greater than 0.

 

HD - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 (to S8) - Boolean Field. 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 - 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 - Determines the object’s class type by declaring a specific value. This is used by the various functions (“InitFn”, “OperateFn”, “PopulateFn”) 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 - Controls the X and Y distance delta values between adjacent objects when they are being populated together. This field is only used by the Populate Function (“PopulateFn”) values 3 and 4, for the Add Barrels and Add Crates functions.

NameOffset - 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 - Boolean Field. 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 - Controls what shrine function to use (See “Code” field in shrines.txt) when the object is told to do its Skill command.

Restore - Boolean Field. 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 (to Parm4) - Used as possible parameters for various functions for the object

 

Lockable - Boolean Field. 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” string key. This only works when the object has the Init Function (“InitFn”) value equal to 3. If equals 0, then ignore this.

Gore - Controls if an object should call its Populate function (“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 - Boolean Field. If equals 1, then the object’s animation rate will always match the “FrameDelta#” 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 - Controls the amount of damage dealt by the object when it performs an Operate Function (“OperateFn”) that deals damage such as triggering a pulse trap or an explosion.

Overlay - Boolean Field. 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 - Boolean Field. 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”, “Height” field values to determine the collision size. If equals 0, then ignore this.

Left - Controls the starting X position offset value for drawing the bounding collision box around the object for mouse selection. This field depends on the “CollisionSubst” field being enabled.

Top - Controls the starting Y position offset value for drawing the bounding collision box around the object for mouse selection. This field depends on the “CollisionSubst” field being enabled.

Width - Controls the ending X position offset value for drawing the bounding collision box around the object for mouse selection. This field depends on the “CollisionSubst” field being enabled.

Height - Controls the ending Y position offset value for drawing the bounding collision box around the object for mouse selection. This field depends on the “CollisionSubst” field being enabled.

 

OperateFn - 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 randomly trigger 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 - 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 - 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. (See 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 object Locked 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 (See monstats.txt). If selected, then send the quest update command to all players, based on the Eve of Destruction quest.

 

ClientFn - 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 - Boolean Field. 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 - Boolean Field. If equals 1, then missiles can collide with this object. If equals 0, then missiles will ignore and fly through this object.

DrawUnder - 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 - Boolean Field. 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 - 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. (See Automap.txt)

objgroup.txt

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

GroupName - This is a reference field to define the Object Group name

 

ID0 (to ID7) - Uses the “Id” field from objects.txt, which assigns an Object to this Object Group

DENSITY0 (to DENSITY7) - 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 (to PROB7) - 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

Overview

This file controls which Objects are preloaded in a preset, based on the Act number

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Index - Assigns a unique numeric ID to the Object Preset so that it can be properly referenced

Act - Defines the Act number used for each Object Preset. Uses values between 1 to 5.

ObjectClass - Uses the “Class” field from objects.txt, which assigns an Object to this Object Preset

Overlay.txt

Overview

This file controls the overlay graphics related to states, auras, cast animations, curses, and buffs

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

overlay - Defines the name of the overlay, used in other data files

Filename - Defines which DCC file to use for the Overlay

version - Defines which game version to use this Overlay (0 = Classic mode | 100 = Expansion mode)

Character - Used for name categorizing Overlays for unit translation mapping

 

PreDraw - Boolean field. If equals 1, then display the Overlay in front of sprites. If equals 0, then display the Overlay behind sprites.

1ofN - 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 - 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 - Sets the vertical offset of the overlay on the unit. Positive values move it down and negative values move it up.

Height1 (to Height4) - These are additional values added to “Yoffset”. Only 1 of these “Height” fields are added, and which field that gets selected depends on the “OverlayHeight” field value from monstats2.txt (Example: If the “OverlayHeight” value is 4, then use the “Height4” field). 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 - Controls the animation frame rate of the Overlay. The value is the number of frames that will update per second.

LoopWaitTime - Controls the number of periodic frames to wait until redrawing the Overlay. This only works with Overlays that are a loop type.

Trans - Controls the alpha mode for how the Overlay is displayed, which can affect transparency and blending

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

 

InitRadius - Controls the starting Light Radius value for the Overlay (Max = 18)

Radius - Controls the maximum Light Radius value for the Overlay. This can only be greater than or equal to “InitRadius”. If greater than “InitRadius”, then the Light Radius will increase in size per frame, starting from “InitRadius” until it matches the “Radius” value (Max = 18)

Red - Controls the Red color gradient of the Light Radius

Green - Controls the Green color gradient of the Light Radius

Blue - Controls the Blue color gradient of the Light Radius

 

NumDirections - The number of directions in the cell file

LocalBlood - 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

Overview

This file controls the various statistics for each type of pet from all the classes summon Skills

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

pet type - Defines the name of the pet type, used in the “pettype” column in skills.txt

group - 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 - This sets a baseline maximum number of pets allowed to be alive when skill levels are reset or changed.

 

warp - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. If equals 1, then the Pet can be unsummoned by the Unsummon skill function. If equals 0, then the Pet cannot be unsummoned.

automap - Boolean field. If equals 1, then display the Pet on the Automap. If equals 0, then hide the pet on the Automap.

 

name - String Key. Used to define the Pet’s name on its party frame

drawhp - Boolean field. 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 - 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 - Define which DC6 file to use for the default Pet’s icon in its party frame

 

mclass1 (to mclass4) - Defines the alternative pet to use for the “pet type” by using that specific unit’s “hcIdx” from Monstats.txt

micon1 (to micon4) - Defines which DC6 file to use for the related “mclass” Pet’s icon in its party frame

Properties.txt

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

code - Defines the property ID. Used as a reference in other data files (this should not be changed)

func1 (to func7) - 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 a skill 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:

o   0-2 = Amazon (Bow and Crossbow Skills / Javelin and Spear Skills / Passive and Magic Skills)

o   3-5 = Sorceress (Fire Spells / Lightning Spells / Cold Spells)

o   6-8 = Necromancer (Summoning Spells / Poison and Bone Spels / Curses)

o   9-11 = Paladin (Combat Skills / Defensive Auras / Offensive Auras)

o   12-14 = Barbarian (Warcries / Combat Masteries / Combat Skills)

o   15-17 = Druid (Shape Shifting / Elemental / Summoning)

o   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 percent chance 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:

o   0 = Day

o   1 = Dusk

o   2 = Night

o   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)

o   If that value equals 0, then default to 5 max charges

o   If that value is less than 0, then equal to the following calculation:
MaxCharges = |MaxCharges| + |MaxCharges| * [CURRENT ITEM LEVEL] / 8

o   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:

o   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 (to stat7) - Stat applied by the property. Used by the “func” field as a possible parameter (uses “Stat” value 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 (to set7) - Boolean field. Used by the “func” 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 (to val7) - Integer field. sed by the “func” field as a possible input parameter for additional function calculations

QualityItems.txt

Overview

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 & mod2code - Controls the item properties that are added to the item (Uses the “code” field from Properties.txt)

mod1param & mod2param - The stat’s “parameter” value associated with the related property (mod#code). Usage depends on the property function (See the “func” field on Properties.txt)

mod1min & mod2min - The stat’s “min” value to assign to the related property (mod#code). Usage depends on the property function (See the “func” field on Properties.txt)

mod1max mod2max - The stat’s “max” value to assign to the related property (mod#code). Usage depends on the property function (See the “func” field on Properties.txt)

 

armor - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then allow this High Quality (Superior) modifier to be applied on shield item types. If equals 0, then ignore this.

scepter - Boolean Field. If equals 1, then allow this High Quality (Superior) modifier to be applied on scepter item types. If equals 0, then ignore this.

wand - Boolean Field. If equals 1, then allow this High Quality (Superior) modifier to be applied on wand item types. If equals 0, then ignore this.

staff - Boolean Field. If equals 1, then allow this High Quality (Superior) modifier to be applied on staff item types. If equals 0, then ignore this.

bow - Boolean Field. 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 - Boolean Field. If equals 1, then allow this High Quality (Superior) modifier to be applied on boots item types. If equals 0, then ignore this.

gloves - Boolean Field. If equals 1, then allow this High Quality (Superior) modifier to be applied on gloves item types. If equals 0, then ignore this.

belt - Boolean Field. 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

Overview

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 - Uses a string key to define the Rare Prefix name

version - Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode)

 

itype1 (to itype7) - Controls what item types are allowed for this Rare Prefix to spawn on (Uses the ID field from ItemTypes.txt)

etype1 (to etype4) - Controls what item types are excluded for this Rare Prefix to spawn on (Uses the ID field from ItemTypes.txt)

RareSuffix.txt

Overview

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 - Uses a string key to define the Rare Suffix name

version - Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode)

 

itype1 (to itype7) - Controls what item types are allowed for this Rare Suffix to spawn on (Uses the ID field from ItemTypes.txt)

etype1 (to etype4) - Controls what item types are excluded for this Rare Suffix to spawn on (Uses the ID field from ItemTypes.txt)

Runes.txt

Overview

This file controls the creation of Rune Words and their various modifiers.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - Controls the string key that is used to the display the name of the item when the Rune Word is complete

complete - Boolean field. If equals 1, then the Rune Word can be crafted in-game. If equals 0, then the Rune Word cannot be crafted in-game.

firstLadderSeason - Integer field. The first ladder season the Rune Word can be made on (inclusive). If blank or 0 then it is available in non-ladder.

lastLadderSeason - Integer field. The last ladder season the Rune Word is ladder-only (inclusive). Must be used in conjunction with firstLadderSeason.

 

itype1 (to itype6) - Controls what item types are allowed for this Rune Word (Uses the ID field from ItemTypes.txt)

etype1 (to etype3) - Controls what item types are excluded for this Rune Word (Uses the ID field from ItemTypes.txt)

Rune1 (to Rune6) - Controls what runes are required to make the Rune Word. The order of each of these fields matters. (Uses the ID field from misc.txt)

 

T1Code1 (to T1Code7) - Controls the item properties that the Rune Word provides (Uses the “code” field from Properties.txt)

T1Param1 (to T1Param7) - The stat’s “parameter” value associated with the related property (T1Code). Usage depends on the property function (See the “func” field on Properties.txt)

T1Min1 (to T1Min7) - The stat’s “min” value to assign to the related property (T1Code). Usage depends on the property function (See the “func” field on Properties.txt)

T1Max1 (to T1Max7) - The stat’s “max” value to assign to the related property (T1Code). Usage depends on the property function (See the “func” field on Properties.txt)

SetItems.txt

Overview

This file controls the item modifiers for each Set item in a Set

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

index - Links to a string key for displaying the Set item name

set - Defines the Set to link to this Set Item (must match the “index” field from Sets.txt)

item - Defines the baseline item code to use for this Set item (must match the “code” field value from weapons.txt, armor.txt, or misc.txt)

rarity - 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 - 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

 

chrtransform - 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. (Uses Color Codes from the reference file colors.txt)

Code

Color

 

No color change

whit

White

lgry

Light Grey

dgry

Dark Grey

blac

Black

lblu

Light Blue

dblu

Dark Blue

cblu

Crystal Blue

lred

Light Red

dred

Dark Red

cred

Crystal Red

lgrn

Light Green

dgrn

Dark Green

cgrn

Crystal Green

lyel

Light Yellow

dyel

Dark Yellow

lgld

Light Gold

dgld

Dark Gold

lpur

Light Purple

dpur

Dark Purple

oran

Orange

bwht

Bright White

invtransform - Controls the color change of the item in the inventory UI. If empty, then the item will have the default item color. (Uses Color Codes from the reference file colors.txt)

Code

Color

 

No color change

whit

White

lgry

Light Grey

dgry

Dark Grey

blac

Black

lblu

Light Blue

dblu

Dark Blue

cblu

Crystal Blue

lred

Light Red

dred

Dark Red

cred

Crystal Red

lgrn

Light Green

dgrn

Dark Green

cgrn

Crystal Green

lyel

Light Yellow

dyel

Dark Yellow

lgld

Light Gold

dgld

Dark Gold

lpur

Light Purple

dpur

Dark Purple

oran

Orange

bwht

Bright White

invfile - An override for the “invfile” field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the “item” field.

flippyfile - An override for the “flippyfile” field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the “item” field.

 

dropsound - An override for the “dropsound” field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the “item” field.

dropsfxframe - An override for the “dropsfxframe” field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the “item” field.

usesound - An override for the “usesound” field from the weapon.txt, armor.txt, or misc.txt files. By default, the Set Item will use what was defined by the baseline item from the “item” field.

 

cost mult - Multiplicative modifier for the Set item’s buy, sell, and repair costs

cost add - 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 - 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 (to prop9) - Controls the item properties that are add baseline to the Set Item (Uses the “code” field from Properties.txt)

par1 (to par9) - The stat’s “parameter” value associated with the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

min1 (to min9) - The stat’s “min” value to assign to the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

max1 (to max9) - The stat’s “max” value to assign to the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

 

aprop1a (to aprop5a) - 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 (to apar5a) - The stat’s “parameter” value associated with the related property (aprop#a). Usage depends on the property function (See the “func” field on Properties.txt)

amin1a (to amin5a) - The stat’s “min” value to assign to the related property (aprop#a). Usage depends on the property function (See the “func” field on Properties.txt)

amax1a (to amax5a) - The stat’s “max” value to assign to the related property (aprop#a). Usage depends on the property function (See the “func” field on Properties.txt)

 

aprop1b (to aprop5b) - 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 (to apar5b) - The stat’s “parameter” value associated with the related property (aprop#b). Usage depends on the property function (See the “func” field on Properties.txt)

amin1b (to amin5b) - The stat’s “min” value to assign to the related property (aprop#b). Usage depends on the property function (See the “func” field on Properties.txt)

amax1b (to amax5b) - The stat’s “max” value to assign to the related property (aprop#b). Usage depends on the property function (See the “func” field on Properties.txt)

 

diablocloneweight - 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

Overview

This file controls the item modifiers for Set bonus statistics when the player has equipped enough Set Items

Data Fields

index - Defines the specific Set ID

name - Uses a string for displaying the Set name in the inventory tooltip

version - Defines which game version to use this Set bonus (0 = Classic mode | 100 = Expansion mode)

 

PCode2a (to PCode5a) - 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 (to PParam5a) - The stat’s “parameter” value associated with the relative property (PCode#a). Usage depends on the property function (See the “func” field on Properties.txt)

PMin2a (to PMin5a) - The stat’s “min” value associated with the listed relative (PCode#a). Usage depends on the property function (See the “func” field on Properties.txt)

PMax2a (to PMax5a) - The stat’s “max” value to assign to the listed relative (PCode#a). Usage depends on the property function (See the “func” field on Properties.txt)

 

PCode2b (to PCode5b) - 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 (to PParam5b) - The stat’s “parameter” value associated with the relative property (PCode#b). Usage depends on the property function (See the “func” field on Properties.txt)

PMin2b (to PMin5b) - The stat’s “min” value associated with the listed relative (PCode#b). Usage depends on the property function (See the “func” field on Properties.txt)

PMax2b (to PMax5b) - The stat’s “max” value to assign to the listed relative (PCode#b). Usage depends on the property function (See the “func” field on Properties.txt)

 

FCode1 (to FCode8) - 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 (to FParam8) - The stat’s “parameter” value associated with the relative property (FCode#b). Usage depends on the property function (See the “func” field on Properties.txt)

FMin1 (to FMin8) - The stat’s “min” value associated with the listed relative (FCode#b). Usage depends on the property function (See the “func” field on Properties.txt)

FMax1 (to FMax8) - The stat’s “max” value to assign to the listed relative (FCode#b). Usage depends on the property function (See the “func” field on Properties.txt)

shrines.txt

Overview

This file controls the functionalities of shrine objects found in area levels

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Name - This is a reference field to define the Shrine index

 

Code - Code function used to define the Shrine’s function. Uses ID values to define what function to use.

Code ID

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 & Arg1 - Integer value used as a possible parameter for the “Code” function

 

Duration in frames - Duration of the effects of the Shrine (Calculated in Frames, where 25 Frames = 1 Second)

reset time in minutes - 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 - Uses a string to display as the Shrine’s name

StringPhrase - Uses a string to display as the Shrine’s activation phrase when it is used

effectclass - Used to define the Shrine’s archetype which is involved with calculating region stats

LevelMin - Define the earliest area level where the Shrine can spawn. Area levels are determined from levels.txt

skills.txt

Overview

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.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

skill - 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.

 

charclass - Assigns the skill to a specific character class which affects how skill item modifiers work and what skills the class can learn.

Code

Description

ama

Amazon

bar

Barbarian

pal

Paladin

nec

Necromancer

sor

Sorceress

dru

Druid

ass

Assassin

skilldesc - Controls the skill’s tooltip and general UI display. Points to a “skilldesc” field in the skilldesc.txt file.

 

srvstfunc - 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 (See “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 can be 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

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 collision to 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 (see 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 - 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

calc2

calc3

calc5

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. Use the "calc5" value to calculate Guided Arrow synergy.

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

srvmissileb

srvmissilec

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

srvmissileb

srvmissilec

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

srvmissileb

srvmissilec

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

srvmissileb

srvmissilec

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 (see “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

srvmissileb

srvmissilec

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

srvmissileb

srvmissilec

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 (see “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

srvmissileb

srvmissilec

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

srvmissileb

srvmissilec

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

srvmissileb

srvmissilec

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

srvmissileb

srvmissilec

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

srvmissileb

srvmissilec

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

aurastat1

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

aurastat1

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

srvmissileb

srvmissilec

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 (see monstats2.txt) then use “srvmissileb” instead. If the target unit has the “small” flag enabled (see 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 radius controlled 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 (See 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 (See 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 (See 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

Param12

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. Use “Param12” to control whether you should be able to shift directly to a form without first going back to human form using “1” to allow and “0” to not allow.

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 (see 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

srvmissileb

srvmissilec

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 (See 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 - 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.

Code

Parameters

Description

0

 

Do nothing

1

aurastate

BarStopWhirlwind - Handles changing the collision, pathing, and aura state of the caster.

 

prgstack - Boolean Field. If equals 1, then all “srvprgfunc#” functions will execute, based on the current number of progressive charges. If equals 0, then only the relative “srvprogfunc#” function will execute, based on the current number of progressive charges.

srvprgfunc1 (to srvprgfunc3) - Controls what Server Do function 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 (to prgcalc3) - Calculation Field. 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 - Calls a function to modify the progressive damage dealt

Code

Parameters

Description

0

 

Do nothing

1

aurastat1

calc1

tgtoverlay

ModifyProgressiveDamage - Modify the percentage of the physical damage dealt and apply an overlay on the target

2

aurastat1

calc1

ModifyProgressiveSteal - Modify the percentage of the life steal and mana steal gained

3

aurastat1

EType

Param2

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

aurastat1

EType

calc1

Param5

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 - Used as a parameter for controlling what main missile is used for the server functions used (See “Missile” field in Missiles.txt)

decquant - Boolean Field. If equals 1, then the unit’s ammo quantity will be updated each time the skill’s Server Do function is called. If equals 0, then ignore this.

lob - Boolean Field. 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 (to srvmissilec) - Used as a parameter for controlling what secondary missile is used for the server functions used (See “Missile” field in Missiles.txt)

useServerMissilesOnRemoteClients - 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 - Creates an overlay on the target unit when the skill is used. This is a possible parameter used by various skill functions (See the “overlay” field in Overlay.txt)

 

aurafilter - 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.

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 (See the “primeevil” field in monstats.txt)

524288

10000000000000000000

Units not in the Just Hit state

aurastate - Links to a state that can be applied to the caster unit when casting the skill, depending on the skill function used (See the “state” field in states.txt)

auratargetstate - Links to a state that can be applied to the target unit when using the skill, depending on the skill function used (See the “state” field in states.txt)

auralencalc - Calculation Field. 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 - Calculation Field. 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 (to aurastat6) - Controls which stat modifiers will be altered or added by the aura state (See the “Stat” field from ItemStatCost.txt)

aurastatcalc1 (to aurastatcalc6) - Calculation Field. Controls the value for the relative “aurastat#” field.

auraevent1 (to auraevent3) - Controls what event will trigger the relative “auraeventfunc#” field function. Links to an event listed in the events.txt file.

auraeventfunc1 (to auraeventfunc3) - Controls the function used when the relative “auraevent#” event is triggered.

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

aurarangecalc HitClass

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.

 

passivestate - Links to a state that can be applied by the passive skill, depending on the skill function used (See the “state” field in states.txt)

passiveitype - Links to an Item Type to define what type of item needs to be equipped in order to enable the passive state (See the “ItemType” field in ItemTypes.txt)

passivereqweaponcount - 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 (to passivestat10) - Assigns stat modifiers to the passive skill (See the “Stat” field from ItemStatCost.txt)

passivecalc1 (to passivecalc10) - Calculation Field. Controls the value for the relative “passivestat#” field.

 

summon - Controls what monster is summoned by the skill (See the “Id” field in 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 the skilldesc.txt file.

pettype - Links to a pet type data to control how the summoned unit is displayed on the UI (See “pet type” field in pettype.txt)

petmax - Calculation Field. Used skill functions that summon pets to control how many summon units are allowed at a time.

summode - Defines the animation mode that the summoned monster will be initiated with

Token

Description

DT

Death / Reset

NU

Neutral

WL

Walk

GH

Get Hit

A1

Attack 1

A2

Attack 2

BL

Block

SC

Cast

S1

Skill 1

S2

Skill 2

S3

Skill 3

S4

Skill 4

DD

Dead

GH

Knockback

xx

Sequence

RN

Run

sumskill1 (to sumskill5) - Assigns a skill to the summoned monster. Points to another “skill” id. This can be useful for adding a skill to a monster to transition its synergy bonuses.

sumsk1calc (to sumsk5calc) - Calculation Field. Controls the skill level for the designated “sumskill#” field when the skill is assigned to the monster.

sumumod - Assigns a monster modifier to the summoned monster (See the “id” in monumod.txt)

sumoverlay - Creates an overlay on the summoned monster when it is first created (see the “overlay” field in Overlay.txt)

 

stsuccessonly - Boolean Field. 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 - Controls what client sound is played when the skill is used, based on the client starting function (see the “Sound” field in sounds.txt)

stsoundclass - Controls what client sound is played when the skill is used by the skill’s assigned class (See “charclass” field), based on the client starting function (see the “Sound” field in 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 - Boolean Field. 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 - Boolean Field. 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 (See “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 - Controls the sound for the skill each time the Client Do function is used (see the “Sound” field from sounds.txt)

dosound a & dosound b - Used as a possible parameter for playing additional sounds based on the Client Do function used (see the “Sound” field in sounds.txt)

tgtoverlay - Used as a possible parameter for adding an Overlay on the target unit, based on the Client Do function used (see the “overlay” field in Overlay.txt)

tgtsound - Used as a possible parameter for playing a sound located on the target unit, based on the Client Do function used (see the “Sound” field in sounds.txt)

prgoverlay - Used as a possible parameter for adding an Overlay on the caster unit for progressive charge-up skill functions, based on the Client Do function used and how many progressive charges the caster unit has (see the “overlay” field in Overlay.txt)

prgsound - Used as a possible parameter for playing a sound when using the skill for progressive charge-up skill functions, based on the Client Do function used and how many progressive charges the caster unit has (see the “Sound” field in sounds.txt)

castoverlay - 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 (see the “overlay” field in Overlay.txt)

cltoverlaya & cltoverlayb - Used as a possible parameter for adding additional Overlays on the caster unit, based on the Client Start/Do function used (see the “overlay” field in Overlay.txt)

 

cltstfunc - 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 (See 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 (See 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 (see 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 - 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

calc5

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. Use the "calc5" value to calculate Guided Arrow synergy.

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 (see 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. (See 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 (See 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 (see “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 (see “soft” monstats2.txt), then set the mode event and create blood missiles from the monster (see “bleed” in monstats2.txt)

41

cltmissilea

cltmissileb

cltmissilec

BarDoGrimWard - If the target is valid (see “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 (see “large” in monstats2.txt), then use the “cltmissilec” missile. If the monster is small (see “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” (see 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 (See Missiles.txt).

55

cltmissilea

calc1

calc2

MonDoPrimePoisonNova - Creates 8 missiles in different directions using a velocity set by the missile’s “Param1” value (See 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 (See Missiles.txt). Also use the monster’s inferno values to set the animation frames (see 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 (See 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 to the 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 (See 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 (see “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 (see “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 - 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.

Code

Parameters

Description

0

 

Do nothing

1

 

SkillBarRemoveWhirlwind - Handles changing the collision and pathing of the caster, and also stops the whirlwind sound.

cltprgfunc1 to (cltprgfunc3) - 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 - Used as a parameter for controlling what main missile is used for the client functions used (See “Missile” field in Missiles.txt)

cltmissilea (to cltmissiled) - Used as a parameter for controlling what secondary missile is used for the client functions used (See “Missile” field in Missiles.txt)

cltcalc1 (to cltcalc3) - Calculation Field. Use as a possible parameter for controlling values for the client functions.

 

warp - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the skill will not check that weapon’s ammo when performing an attack. This relies on the “Shoots” field from the ItemType.txt file. 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 - 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 (to itypea3) - Controls what Item Types are included, or allowed, when determining if this skill can be used (See the “Code” field from ItemTypes.txt)

etypea1 & etypea2 - Controls what Item Types are excluded, or not allowed, when determining if this skill can be used (See the “Code” field from ItemTypes.txt)

itypeb1 (to itypeb3) - Controls what alternate Item Types are included, or allowed, when determining if this skill can be used (See the “Code” field from ItemTypes.txt). This acts as a second set of Item Types to check.

etypeb1 & etypeb2 - Controls what alternate Item Types are excluded, or not allowed, when determining if this skill can be used (See the “Code” field from ItemTypes.txt). This acts as a second set of Item Types to check.

 

anim - 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.

Code

Description

DT

Death

NU

Neutral

WL

Walk

RN

Run

GH

Get Hit

TN

Town Neutral

TW

Town Walk

A1

Attack 1

A2

Attack 2

BL

Block

SC

Cast

TH

Throw

KK

Kick

S1

Skill 1

S2

Skill 2

S3

Skill 3

S4

Skill 4

DD

Dead

SQ

Sequence

KB

Knockback

seqtrans - 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 - Controls the animation 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.

Code

Description

DT

Death

NU

Neutral

WL

Walk

GH

Get Hit

A1

Attack 1

A2

Attack 2

BL

block

SC

Cast

S1

Skill 1

S2

Skill 2

S3

Skill 3

S4

Skill 4

DD

Dead

KB

Knockback

xx

Sequence

RN

Run

seqnum - 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 - 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the current attack speed should be updated after using the skill, relative to the “attackrate” stat (See 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 - 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 - Boolean Field. If equals 1, then the skill will require a target unit in order to be used. If equals 0, then ignore this.

SearchEnemyXY - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - 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 (see 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 (see monstats2.txt)

TargetCorpse - Boolean Field. If equals 1, then the skill is allowed to target corpses. If equals 0, then skill cannot target corpses.

TargetPet - Boolean Field. If equals 1, then the skill is allowed to target pets (summons and mercenaries). If equals 0, then the skill cannot target pets.

TargetAlly - Boolean Field. If equals 1, then the skill is allowed to target ally units. If equals 0, then the skill cannot target ally units.

TargetItem - Boolean Field. If equals 1, then the skill is allowed to target items on the ground. If equals 0, then the skill cannot target items.

AttackNoMana - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then when the mouse is held down, the target selection will be cleared. If equals 0, then ignore this.

 

ItemEffect - Uses a Server Do function (See “srvdofunc”) for handling how the skill is used when it is triggered by an item, on the server side.

ItemCltEffect - Uses a Client Do function (See “cltdofunc”) for handling how the skill is used when it is triggered by an item, on the client side.

ItemTgtDo - Boolean Field. If equals 1, then use the skill from the enemy target instead of the caster. If equals 0, then ignore this.

ItemTarget - Controls the targeting behavior of the skill when it is 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

ItemUseRetrict – Boolean Field. If equals 1, then use the state restriction defined in the “restrict” field when being triggered by an item.

ItemCheckStart - Boolean Field. If equals 1, then use the skill’s Server Start function (See “srvstfunc”) when the skill is trigged by an item. If equals 0, then the skill’s Server Start function is ignored.

ItemCltCheckStart - Boolean Field. If equals 1, then when the skill is triggered by an item, and if the target is dead and the skill has a Client Start function (See “cltstfunc”), then add the “corpse_noselect” to the target. If equals 0, then ignore this.

ItemCastSound - Play a sound when the skill is used by an item event. Points to a “Sound” value in the sounds.txt file.

ItemCastOverlay - Add a cast overlay when the skill is used by an item event. Points to an “overlay” value in the Overlay.txt file.

 

skpoints - Controls the number of Skill Points needed to level up the skill

reqlevel - Minimum character level required to be allowed to spend Skill Points on this skill

maxlvl - Maximum base level for the skill from spending Skill Points. Skill levels can be increased beyond this through item modifiers.

reqstr - Minimum Strength attribute required to be allowed to spend Skill Points on this skill

reqdex - Minimum Dexterity attribute required to be allowed to spend Skill Points on this skill

reqint - Minimum Intelligence attribute required to be allowed to spend Skill Points on this skill

reqvit - Minimum Vitality attribute required to be allowed to spend Skill Points on this skill

reqskill1 (to reqskill3) - 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 - Controls how the skill is used when the unit has a restricted state (See the “restrict” field in 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 (See “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 (to State3) - Points to a “state” field from the states.txt file. Used as parameters for the “restrict” field to control what specific states will restrict the usage of the skill.

 

localdelay - Controls the Casting Delay duration for this skill after it is used (25 frames = 1 second)

globaldelay - Controls the Casting Delay duration for all other skills with Casting Delays after this skill is used (25 frames = 1 second)

 

leftskill - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Controls the required amount of mana to start using the skill. This only works with certain “srvstfunc” functions such as SorStartInferno (Code = 11) or AssStartBladeFury (Code = 26).

minmana - 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.

manashift - 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 - Defines the base mana cost to use the skill at level 1

lvlmana - Defines the change in mana cost per skill level gained

 

interrupt - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then the skill will be classified as an aura, which will make the skill execute its function periodically (using the “perdelay” field), 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 - Boolean Field. If equals 1, then the skill will execute its function periodically (using the “perdelay” field), based on the if the “aurastate” state is active. If equals 0, then ignore this.

perdelay - Calculation Field. 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 - Boolean Field. 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 - Controls how many progressive charges are required to cast the skill

prgchargesconsumed - Controls how many progressive charges are consumed when the skill attack hits an enemy

passive - Boolean Field. 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 - Boolean Field. 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 “progcalc#” fields and the “aurastat#” fields. If equals 0, then ignore this.

scroll - Boolean Field. 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 (to calc6) - Calculation Field. It is used as a possible parameter for skill functions or as a numeric input for other calculation fields.

Param1 (to Param12) - Integer Field. It is used as a possible parameter for skill functions or as a numeric input for other calculation fields.

 

InGame - Boolean Field. 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 - Baseline bonus Attack Rating that is added to the attack when using this skill at level 1

LevToHit - Additional bonus Attack Rating when using this skill, calculated per skill level

ToHitCalc - Calculation Field. Calculates the bonus Attack Rating when using the skill. This will override the “ToHit” and “LevToHit” fields if it is not blank.

ResultFlags - Controls different flags that can affect how the target reacts after being hit by the skill attack. 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 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

HitFlags - Controls different flags that can affect the damage dealt when the target is hit by the skill. 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

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

HitClass - 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 - Boolean Field. 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 - 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 - 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 - Minimum baseline physical damage dealt by the skill

MinLevDam1 (to MinLevDam5) - 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 - Maximum baseline physical damage dealt by the skill

MaxLevDam1 (to MaxLevDam5) - 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 - Calculation Field. Determines the percentage increase to the physical damage dealt by the skill.

 

EType - 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.

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

burn

Burning (Uses “ELen”)

frze

Freeze (Uses “ELen”)

EMin - Minimum baseline elemental damage dealt by the skill

EMinLev1 (to EMinLev5) - 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 - Maximum baseline elemental damage dealt by the skill

EMaxLev1 (to EMaxLev5) - 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 - Calculation Field. Determines the percentage increase to the total elemental damage dealt by the skill.

ELen - 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 (to ELevLen3) - 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 - Calculation Field. Determines the percentage increase to the total elemental duration dealt by the skill.

 

aitype - 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 - 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 - 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 - 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

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

skilldesc - The name of the skill description, as a reference for associated Data files

SkillPage - 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 - 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 - 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 - 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 - Determines the icon asset for displaying the skill. This requires an ID value based on the skillicon files. Class specific skills use their designated class skillicon files (controlled by the “charclass” field in skills.txt), and non-class skills use the global skillicon file. This will use the value as the standard icon to display, and the next value (value + 1) as the button pressed icon display.

HireableIconCel - Determines the icon asset for displaying the skill on a hireable (mercenary). This requires an ID value based on the hireable skillicon files. This will use the value as the standard icon to display, and the next value (value + 1) as the button pressed icon display.

 

str name - Uses a string to display as the skill name

str short - Uses a string to display as the skill description in shortcuts or when selecting a skill

str long - Uses a string to display as the skill description on the Skill Tree

str alt - Uses a string to display the skill name on the Character Screen when the skill is selected

 

descdam - 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 & ddam calc2 - Integer calc value used as a possible parameter for the descdam function

p1dmelem (to p3dmelem) - Used for skills that have charge-ups to display the damage on the Character Screen, controls the elemental type for that charge

p1dmmin (to p3dmmin) - Used for skills that have charge-ups to display the damage on the Character Screen, controls the minimum damage for that charge

p1dmmax (to p3dmmax) - Used for skills that have charge-ups to display the damage on the Character Screen, controls the maximum damage for that charge

descatt - 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 (to descmissile3) - Links a missile from Missiles.txt to be used as a reference value for calculations

 

descline1 (to descline6) - 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

If this value is greater than or less than 1, then insert the calculated value into [desctextb] 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

If this value is greater than or less than 1, then insert the value into [desctextb] 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)

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)

 

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] and outputs that string

77

desctexta

desctextb

desccalca

desccalcb

Inserts [desctextb], [desccalca], and [desccalcb] into [desctexta] and outputs that string

desctexta1 (to desctexta6) - String value used as the first possible string parameter for the descline function

desctextb1 (to desctextb6) - String value used as the second possible string parameter for the descline function

desccalca1 (todesccalca6) - Integer calculation value used as the first possible numeric parameter for the descline function

desccalcb1 (todesccalcb6) - Integer calculation value used as the second possible numeric parameter for the descline function

 

dsc2line1 (to dscline5) - 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 (to dsc2texta5) - String value used as the first possible string parameter for the dsc2line function

dsc2textb1 (to dsc2textb5) - String value used as the second possible string parameter for the dsc2line function

dsc2calca1 (to dsc2calca5) - Integer Calc value used as the first possible numeric parameter for the dsc2line function

dsc2calcb1 (to dsc2calcb5) - Integer Calc value used as the second possible numeric parameter for the dsc2line function

 

dsc3line1 (to dsc3line7) - 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 (to dsc3texta7) - String value used as the first possible string parameter for the dsc3line function

dsc3textb1 (to dsc3textb7) - String value used as the second possible string parameter for the dsc3line function

dsc3calca1 (to dsc3calca7) - Integer Calc value used as the first possible numeric parameter for the dsc3line function

dsc3calcb1 (to dsc3calcb7) - Integer Calc value used as the second possible numeric parameter for the dsc3line function

 

item proc text – String value used as an override format for when the skill appears as a “chance to cast” property on an item. Can be formatted to include descline1 to descline6 in the string using “%s” entries. Leave blank to ignore and use the string format in ItemStatCost.txt.

item proc descline count – Integer value for how many descline entries should be formatted into the “item proc text“ string.

 

sounds.txt

Overview

This file 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.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Sound - Defines the unique name ID for the sound, which is how other files can reference the sound

 

Redirect - 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 - Declares which channel the sound is initialized in. This can affect how different volume or sound settings handle this sound.

FileName - Defines the file path and name of the sound file to play

 

IsLocal - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Controls the minimum volume of the sound. Uses a range of 0 to 255.

Volume Max - 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 - Controls the minimum pitch percentage of the sound.

Pitch Max - 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 - 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 - 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 (See “Group Size”).

 

Loop - Boolean Field. 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 - 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 - 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 - Boolean Field. 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 - Boolean Field. 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 - 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 - 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 - 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 - Controls the percentage (out of 100) of the sound’s Low-Frequency Effects channel.

3dSpread - Controls the 3D spread angle of the sound. This only works if the sound is considered a 3D sound (See “Is2D”).

 

Priority - 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. If equals 1, then reduce the volume of other sounds while this sound is playing. If equals 0, then ignore this.

Music Vol - Boolean Field. 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 (to Block 3) - Defines an offset time value in the sound. If this sound is used in a Sound Environment (See SoundEnviron.txt) 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 if only “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 - Boolean Field. 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 - 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

Overview

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 relies on sounds from sounds.txt

 

This file is used by levels.txt

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Handle - A reference field to define the name of the Sound Environment

 

Song - Play this sound as the background music while the player is in an area level. Points to a “Sound” value in the sounds.txt file.

 

Day Ambience - Play this sound as an ambient sound while it is currently daytime in the game. Points to a “Sound” value in the sounds.txt file.

HD Day Ambience - Play this sound as an ambient sound while it is currently daytime in the game while playing in the new graphics mode. Points to a “Sound” value in the sounds.txt file.

Night Ambience - Play this sound as an ambient sound while it is currently nighttime in the game. Points to a “Sound” value in the sounds.txt file.

HD Night Ambience - Play this sound as an ambient sound while it is currently nighttime in the game while playing in the new graphics mode. Points to a “Sound” value in the sounds.txt file.

 

Day Event - Play this sound at a random range and variance in the background when it is currently daytime in the game. Points to a “Sound” value in the sounds.txt file.

HD Day Event - 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. Points to a “Sound” value in the sounds.txt file.

Night Event - Play this sound at a random range and variance in the background when it is currently nighttime in the game. Points to a “Sound” value in the sounds.txt file.

HD Night Event - 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. Points to a “Sound” value in the sounds.txt file.

Event Delay - 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 - 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 - Boolean Field. 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 & Material 2 - 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 & HD Material 2 - 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 & Material 2” for the code descriptions.

 

The following are sound reverberation settings for special effects sounds

SFX EAX Environ - 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 - Room effect level at mid frequencies.

SFX EAX Room HF - Relative room effect level at high frequencies.

SFX EAX Decay Time - Reverberation decay time at mid frequencies.

SFX EAX Decay HF - High-frequency to mid-frequency decay time ratio.

SFX EAX Reflect - Early reflections level relative to room effect.

SFX EAX Reflect Delay - Initial reflection delay time.

SFX EAX Reverb - Late reverberation level relative to room effect.

SFX EAX Rev Delay - Late reverberation delay time relative to initial reflection.

 

The following are sound reverberation settings for Voice sounds.

VOX EAX Environ - 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 - Room effect level at mid frequencies.

VOX EAX Room HF - Relative room effect level at high frequencies.

VOX EAX Decay Time - Reverberation decay time at mid frequencies.

VOX EAX Decay HF - High-frequency to mid-frequency decay time ratio.

VOX EAX Reflect - Early reflections level relative to room effect.

VOX EAX Reflect Delay - Initial reflection delay time.

VOX EAX Reverb - Late reverberation level relative to room effect.

VOX EAX Rev Delay - Late reverberation delay time relative to initial reflection.

 

InheritEnvironment – Boolean field. 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

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

state - Defines the unique name ID for the state

group - 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 - Boolean field. If equals 1, then this state will be removed when the unit is hit. If equals 0, then ignore this.

nosend - Boolean field. If equals 1, then this state change will not be sent to the client. If equals 0, then ignore this.

transform - Boolean field. 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 - Boolean field. If equals 1, then this state will be treated as an aura. If equals 0, then ignore this.

curable - Boolean field. 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 - Boolean field. If equals 1, then this state will be flagged as a curse. If equals 0, then ignore this.

active - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. 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 - Boolean field. If equals 1, then the state will persist on the boss after that boss is killed. If equals 0, then ignore this.

hide - Boolean field. 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 - Boolean field. If equals 1, then the state will be used to destroy units with invisible corpses. If equals 0, then ignore this.

shatter - Boolean field. If equals 1, then the state causes ice shatter missiles to create when the unit dies. If equals 0, then ignore this.

udead - Boolean field. 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 - Boolean field. If equals 1, then this state will cancel out the monster’s normal life regeneration. If equals 0, then ignore this.

green - Boolean field. 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 - Boolean field. 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 - Boolean field. If equals 1, then the standard way for states to add overlays will be disabled. If equals 0, then ignore this.

noclear - Boolean field. 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 - Boolean field. 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 - Boolean field. If equals 1, then the state will make the all the unit’s attack become melee attacks. If equals 0, then ignore this.

notondead - Boolean field. 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 (to overlay4) - Controls which overlay to use for normally displaying the state (Uses the “overlay” field from the Overlay.txt file). 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 - 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 the Overlay.txt file)

castoverlay - Controls which overlay to use when the state is initially applied on the unit (Uses the “overlay” field from the Overlay.txt file)

removerlay - Controls which overlay to use when the state is removed from the unit (Uses the “overlay” field from the Overlay.txt file)

 

stat - 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 - 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 “auralencalc” field from the skills.txt file. Gets the skill by looking at the “modifierlist_skill” stat defined in the ItemStatsCost.txt file

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 - 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 - Used as a possible parameter for the “setfunc” field (Uses the “Missile” field from Missiles.txt)

skill - Used as a possible parameter for the “setfunc” field (Uses the “skill” field from skills.txt)

 

itemtype - Defines a potential Item Type (see ItemTypes.txt) that can be affected by the state’s color change

itemtrans - Controls the color change of the item when the unit has this state (Uses Color Codes from the reference file colors.txt)

Code

Color

 

No color change

whit

White

lgry

Light Grey

dgry

Dark Grey

blac

Black

lblu

Light Blue

dblu

Dark Blue

cblu

Crystal Blue

lred

Light Red

dred

Dark Red

cred

Crystal Red

lgrn

Light Green

dgrn

Dark Green

cgrn

Crystal Green

lyel

Light Yellow

dyel

Dark Yellow

lgld

Light Gold

dgld

Dark Gold

lpur

Light Purple

dpur

Dark Purple

oran

Orange

bwht

Bright White

 

colorpri - 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 - 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 - Controls the state’s change of the red color value of the Light radius (Uses a value from 0 to 255)

light-g - Controls the state’s change of the green color value of the Light radius (Uses a value from 0 to 255)

light-b - Controls the state’s change of the blue color value of the Light radius (Uses a value from 0 to 255)

 

onsound - Plays a sound when the state is initially applied to the unit. Links to a “Sound” from the sounds.txt file.

offsound - Plays a sound when the state is removed from the unit. Links to a “Sound” from the sounds.txt file.

 

gfxtype - 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 - 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 the monstats.txt data file. If “gfxtype” equals 2, then this field will use the character class numeric ID.

ID

Description

0

Amazon

1

Sorceress

2

Necromancer

3

Paladin

4

Barbarian

5

Druid

6

Assassin

 

cltevent - 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 - Controls the client Unit event function that is called when the event is determined in the “cltevent” field. These functions are equal to the funuctions used

ID

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 - Controls the Client Do function that is called every frame while the state is active (see the “cltdofunc” field in skills.txt). This relies on the “active” field being enabled.

srvactivefunc - Controls the Server Do function that is called every frame while the state is active (see the “srvdofunc” field in skills.txt). This relies on the “active” field being enabled.

 

canstack - Boolean Field. 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 - Boolean Field. 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 – Boolean Field.  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

Overview

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 - Defines the unique name ID for the Super Unique monster

Name - Uses a string for the Super Unique monster’s name

Class - Defines the baseline monster type for the Super Unique monster, which this monster will use for default values. This uses the “Id” field from the monstats.txt file.

hcIdx - 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 - Defines what set of sounds to use for the Super Unique monster. Uses the “Id” field from the monsounds.txt file. If this field is empty, then the Super Unique monster will default to using the monster class sounds.

 

Mod1 (to Mod3) - Controls which monster modifier to assign to the Super Unique monster. Uses the “id” field from the monumod.txt file (See that file for details on the available modifiers).

 

MinGrp - Controls the min amount of Minion monsters that will spawn with the Super Unique monster.

MaxGrp - 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 “MinGrp” then a random number will be chosen between the “MinGrp” and “MaxGrp” values.

 

AutoPos - Boolean Field. 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 - Boolean Field. 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 - Boolean Field. 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) - 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) - Controls the Treasure Class to use when the Super Unique monster is killed respectively in Normal, Nightmare, or Hell difficulty. This linked to the “Treasure Class” ID from the TreasureClassEx.txt file.

TC Desecrated & TC(N) Desecrated & TC(H) Desecrated - Controls the Treasure Class to use when the Super Unique monster is desecrated (Terrorized) and killed respectively in Normal, Nightmare, or Hell difficulty. This linked to the “Treasure Class” ID from the TreasureClassEx.txt file.

 

TreasureClassEx.txt

Overview

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

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

Treasure Class - Defines the unique Treasure Class ID, that is referenced in other files.

 

group - 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 - 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 unless that Boss monster is desecrated.

 

Picks - 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 - Modifies the item ratio drop for a Unique Quality item. A higher value means a better chance of being chosen. (See itemratio.txt for an explanation for how the Item Quality is chosen)

Set - Modifies the item ratio drop for a Set Quality item. A higher value means a better chance of being chosen. (See itemratio.txt for an explanation for how the Item Quality is chosen)

Rare - Modifies the item ratio drop for a Rare Quality item. A higher value means a better chance of being chosen. (See itemratio.txt for an explanation for how the Item Quality is chosen)

Magic - Modifies the item ratio drop for a Magic Quality item. A higher value means a better chance of being chosen. (See itemratio.txt for an explanation for how the Item Quality is chosen)

 

NoDrop - 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 (to Item10) - Defines a potential Item Type (see ItemTypes.txt) 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 (to Prob10) - The individual probability for each related “Item#” drop. The higher this value, then the more likely the “Item#” field will be chosen. The chance a drop is picked is calculated by summing all “Prob#” field values and the “NoDrop” value for a total denominator value, and then having each “Prob#” value and the “NoDrop” value rolling their chance out of the total denominator value for a drop.

 

firstLadderSeason - Integer field. If this has a value, it will only roll in ladder games starting at the season specified (inclusive). If blank or 0 then it will roll in ladder and non-ladder.

lastLadderSeason - Integer field. The last ladder season the treasure class is ladder-only (inclusive). Must be used in conjunction with firstLadderSeason.

noAlwaysDrop - Boolean field. If equals 1, then this treasure class will roll normally when being forced to always drop, like with the Find Item skill. If 0 then this treasure class will always drop an item when forced to.

UniqueAppellation.txt

Overview

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 - A string key, which is used as a potential selection for generating a unique monster’s name

UniqueItems.txt

Overview

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 - Points to a string key value to use as the Unique item’s name

version - Defines which game version to create this item (<100 = Classic mode | 100 = Expansion mode)

enabled - Boolean Field. If equals 1, then this item can be rolled as a choice when randomly dropping a unique. If equals 0, then this item cannot be dropped randomly, but can still be drop explicitly from a treasure class.

firstLadderSeason - Integer field. The first ladder season the unique item can be Dropped or created on (inclusive). If blank or 0 then it is available in non-ladder.

lastLadderSeason - Integer field. The last ladder season the unique item is ladder-only (inclusive). Must be used in conjunction with firstLadderSeason.

rarity - 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 - Boolean Field. Requires the “quest” field from the misc.txt file to be enabled. If equals 1, then this item can be created and will automatically be identified. If equals 0, then ignore this.

 

lvl - 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 - Defines the baseline item code to use for this Unique item (must match the “code” field value from weapons.txt, armor.txt, or misc.txt)

carry1 - Boolean Field. If equals 1, then players can only carry one of these items in their inventory. If equals 0, then ignore this.

 

cost mult - Multiplicative modifier for the Unique item’s buy, sell, and repair costs

cost add - 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 - 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. (Uses Color Codes from the reference file colors.txt)

Code

Color

 

No color change

whit

White

lgry

Light Grey

dgry

Dark Grey

blac

Black

lblu

Light Blue

dblu

Dark Blue

cblu

Crystal Blue

lred

Light Red

dred

Dark Red

cred

Crystal Red

lgrn

Light Green

dgrn

Dark Green

cgrn

Crystal Green

lyel

Light Yellow

dyel

Dark Yellow

lgld

Light Gold

dgld

Dark Gold

lpur

Light Purple

dpur

Dark Purple

oran

Orange

bwht

Bright White

invtransform - Controls the color change of the item in the inventory UI. If empty, then the item will have the default item color. (Uses Color Codes from the reference file colors.txt)

Code

Color

 

No color change

whit

White

lgry

Light Grey

dgry

Dark Grey

blac

Black

lblu

Light Blue

dblu

Dark Blue

cblu

Crystal Blue

lred

Light Red

dred

Dark Red

cred

Crystal Red

lgrn

Light Green

dgrn

Dark Green

cgrn

Crystal Green

lyel

Light Yellow

dyel

Dark Yellow

lgld

Light Gold

dgld

Dark Gold

lpur

Light Purple

dpur

Dark Purple

oran

Orange

bwht

Bright White

invfile - An override for the “invfile” 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.

flippyfile - 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 - 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 - 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 - 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 (to prop12) - Controls the item properties for the Unique item (Uses the “code” field from Properties.txt)

par1 (to par12) - The stat’s “parameter” value associated with the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

min1 (to min12) - The stat’s “min” value to assign to the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

max1 (to max12) - The stat’s “max” value to assign to the related property (prop#). Usage depends on the property function (See the “func” field on Properties.txt)

 

diablocloneweight - 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

Overview

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 - A string key, which is used as a potential selection for generating a unique monster’s name

UniqueSuffix.txt

Overview

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 - A string key, which is used as a potential selection for generating a unique monster’s name

weapons.txt

Overview

This file controls the functionalities for weapons type items

 

This file is loaded together with other similar files in the following order: weapons.txt, armor.txt, misc.txt

These combined files form the items structure. Technically these files share the same fields, but some fields are exclusive for specific item types, so they are not displayed in the data files that do not need them.

 

Any column field name starting with “*” is considered a comment field and is not used by the game

Data Fields

name - This is a reference field to define the item

version - Defines which game version to create this item (0 = Classic mode | 100 = Expansion mode)

compactsave - Boolean Field. 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 - Determines the chance that the item will randomly spawn (1/#). 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 - Boolean Field. If equals 1, then this item can be randomly spawned. If equals 0, then this item will never randomly spawn.

 

speed - If the item type is an armor, then this will affect the Walk/Run Speed reduction when wearing the armor. If the item type is a weapon, then this will affect the Attack Speed reduction when wearing the weapon.

reqstr - Defines the amount of the Strength attribute needed to use the item

reqdex - Defines the amount of the Dexterity attribute needed to use the item

 

durability - Defines the base durability amount that the item will spawn with.

nodurability - Boolean Field. If equals 1, then the item will not have durability. If equals 0, then the item will have durability.

 

level - 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 - Boolean Field. If equals 1, then display the item level next to the item name. If equals 0, then ignore this.

levelreq - Controls the player level requirement for being able to use the item

 

cost - 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 - Defines the gambling gold cost of the item on the Gambling UI

 

code - Defines a unique 3 letter/number code for the item. This is used as an identifier to reference the item.

namestr - String Key that is used for the base item name

 

magic lvl - Defines the magic level of the item, which can affect how magical item modifiers that can appear on the item (See automagic.txt)

auto prefix - Automatically picks an item affix name from a designated “group” value from the automagic.txt file, instead of using random prefixes. This is only used when the item is Magical quality.

 

alternategfx - 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 - Links to a “code” field to determine the normal version of the item

ubercode - Links to a “code” field to determine the Exceptional version of the item

ultracode - Links to a “code” field to determine the Elite version of the item

 

component - Determines the layer of player animation when the item is equipped. This uses a code referenced from the Composit.txt file.

Code

Description

0

Head

1

Torso

2

Legs

3

Right Arm

4

Left Arm

5

Right Hand

6

Left Hand

7

Shield

8

Special 1

9

Special 2

10

Special 3

11

Special 4

12

Special 5

13

Special 6

14

Special 7

15

Special 8

16

Do not display anything

invwidth & invheight - Defines the width and height of grid cells that the item occupies in the player inventory

 

hasinv - Boolean Field. If equals 1, then the item will have its own inventory allowing for the capability to socket gems, runes, or jewels. If equals 0, then the item cannot have sockets.

gemsockets - 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 “MaxSock1”, “MaxSock25” and “MaxSock40” fields from the ItemTypes.txt file.

gemapplytype - Determines which affect from a gem or rune will be applied when it is socketed into this item (See gems.txt)

Code

Description

0

Weapon

1

Armor or Helmet

2

Shield

 

flippyfile - 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)

invfile - Controls which DC6 file to use for displaying the item graphics in the inventory (uses the file name as the input)

uniqueinvfile - 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)

setinvfile - 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)

 

useable - Boolean Field. 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 - Boolean Field. 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 - Controls the minimum stack count or quantity that is allowed on the item. This field depends on the “stackable” field being enabled.

maxstack - Controls the maximum stack count or quantity that is allowed on the item. This field depends on the “stackable” field being enabled.

spawnstack - Controls the stack count or quantity that the item can spawn with. This field depends on the “stackable” field being enabled.

 

Transmogrify - Boolean Field. 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.

TMogType - Links to a “code” field to determine which item is chosen to transmogrify this item to.

TMogMin - 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.

TMogMax - 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.

 

type - Points to an Item Type defined in the ItemTypes.txt file, which controls how the item functions

type2 - 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 - Points to sound defined in the sounds.txt file. Used when the item is dropped on the ground.

dropsfxframe - Defines which frame in the “flippyfile” animation to play the “dropsound” sound when the item is dropped on the ground.

usesound - Points to sound defined in the sounds.txt file. Used when the item is moved in the inventory or used.

 

unique - Boolean Field. 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 - Boolean Field. 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 - Controls what type of transparency to use, based on the “transparent” field being enabled.

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

 

lightradius - 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 - Controls which belt type to use for belt items only. This field determines what index entry in the belts.txt file to use.

 

quest - 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.

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

questdiffcheck - Boolean Field. 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 - Points to the “Id” field from the Missiles.txt file, which determines what type of missile is used when using the throwing weapons

durwarning - Controls the threshold value for durability to display the low durability warning UI. This is only used if the item has durability.

qntwarning - Controls the threshold value for quantity to display the low quantity warning UI. This is only used if the item has stacks.

 

mindam - The minimum physical damage provided by the item

maxdam - The maximum physical damage provided by the item

 

StrBonus - 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 - 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 - Determines the starting index offset for reading the gems.txt file when determining what effects gems or runes will have the item based on the “gemapplytype” field. For example, if this value equals 9, then the game will start with index 9 (“Chipped Emerald”) and ignore the previously defined gems in the gems.txt file, which can mean that those ignored gems will not apply modifiers when socketed into the item.

bitfield1 - 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 - Minimum amount of this item type in Normal rarity that the NPC can sell at once

[NPC]Max - 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 - Minimum amount of this item type in Magical rarity that the NPC can sell at once

[NPC]MagicMax - 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 - 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 - Controls the color palette change of the item for the character model graphics

InvTrans - Controls the color palette change of the item for the inventory graphics

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

 

SkipName - Boolean Field. 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 - 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 - 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 - Boolean Field. 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 - Boolean Field. 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 - 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.

 

The following fields are exclusive to the weapons.txt file because these fields only work with Weapon type items:

 

1or2handed - Boolean Field. 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 - Boolean Field. 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 - Defines the two-handed weapon class, which controls what character animations are used when the weapon is equipped

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

2handmindam - The minimum physical damage provided by the weapon if the item is two-handed. This relies on the “2handed” field being enabled.

2handmaxdam - The maximum physical damage provided by the weapon if the item is two-handed. This relies on the “2handed” field being enabled.

 

hit class - Defines the hit class of the weapon which is used to know what SFX to use when the weapon hits an enemy

Code

Hit Class

(empty)

None

hth

Hand To Hand

1hss

One Hand Swing vs. Small

1hsl

One Hand Swing vs. Large

2hss

Two Hand Swing vs. Small

2hsl

Two Hand Swing vs. Large

1ht

One Hand Thrust

2ht

Two Hand Thrust

club

Club

staf

Staff

bow

Bow

xbow

Crossbow

claw

Claw

over

Overlay

 

minmisdam - The maximum physical damage provided by the item if it is a throwing weapon

maxmisdam - The maximum physical damage provided by the item if it is a throwing weapon

 

rangeadder - 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 - Defines the one-handed weapon class, which controls what character animations are used when the weapon is equipped

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

wanderingmon.txt

Overview

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 - 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

bodylocs.txt

colors.txt

compcode.txt

Composit.txt

cubemod.txt

ElemTypes.txt

events.txt

HitClass.txt

lowqualityitems.txt

misscalc.txt

MonMode.txt

MonPlace.txt

ObjMode.txt

ObjType.txt

PlayerClass.txt

PlrMode.txt

PlrType.txt

skillcalc.txt

StorePage.txt