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
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.
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
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
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 |
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.
Code |
Description |
0 |
Weapon |
1 |
Armor or Helmet |
2 |
Shield |
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.
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 |
belt - Controls which belt type to use for belt items only. This field determines what index entry in the belts.txt file to use.
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 |
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 |
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) |
[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
Charsi |
Gheed |
Akara |
Fara |
Lysander |
Drognan |
Hratli |
Alkor |
Ormus |
Elzix |
Asheara |
Cain |
Halbu |
Jamella |
Larzuk |
Malah |
Anya |
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 |
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”
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
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
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 |
Code |
Description |
(empty) |
None |
ama |
Amazon |
bar |
Barbarian |
pal |
Paladin |
nec |
Necromancer |
sor |
Sorceress |
dru |
Druid
|
ass |
Assassin |
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)
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 |
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
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
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 |
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 |
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.
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.
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.
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
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
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) |
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
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
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
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 |
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 |
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 |
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
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
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 |
value
- Integer value used as a possible parameter for the “op” function
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 |
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 |
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=#”) |
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)
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
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.
This file controls the experience required for each level by each class
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)
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
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
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
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
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 |
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)
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.
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
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
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
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.
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
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.
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”] |
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.
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
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 |
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 |
Code |
Parameters |
Description |
0 |
|
No
display. Do nothing. |
1 |
descval descstrpos descstrneg |
Plus
or Minus ·
If
value > 0, “+[value] [descstr]” ·
If
value < 0, “-[value] [descstr]” |
2 |
descval descstrpos descstrneg |
Percent ·
“[value]
[descstr]” |
3 |
descval descstrpos descstrneg |
String ·
“[value]
[descstr]” |
4 |
descval descstrpos descstrneg |
Plus
Percent ·
“+[value]%
[descstr]” |
5 |
descval descstrpos descstrneg |
Percent
128 ·
“+[value
* 100 / 128]% [descstr]” |
6 |
descval descstrpos descstrneg descstr2 |
Plus
or Minus Per Level ·
If
value > 0, “+[value] [descstr] [descstr2]” ·
If
value < 0, “-[value] [descstr] [descstr2]” |
7 |
descval descstrpos descstrneg descstr2 |
Percent
Per Level ·
“[value]%
[descstr] [descstr2]” |
8 |
descval descstrpos descstrneg descstr2 |
Plus
Percent Per Level ·
“+[value]%
[descstr] [descstr2]” |
9 |
descval descstrpos descstrneg descstr2 |
String
Per Level ·
“[value]
[descstr] [descstr2]” |
10 |
descval descstrpos descstrneg descstr2 |
Percent
128 Per Level ·
“[value
* 100 / 128]% [descstr] [descstr2]” |
11 |
|
Repair ·
Uses
the string ModStre9t and inserts the value into this string |
12 |
descval descstrpos descstrneg |
Plus
Sub One ·
If
value > 1, then use “+[value] [descstr]” ·
Else,
use “[value] [descstr]” or “-[value] [descstr]” |
13 |
|
Add
Class Skill ·
Uses
the “StrAllSkills” from the charstats.txt file |
14 |
|
Add
Tab Skill ·
Uses “StrSkillTab#” from the charstats.txt file based on related
tab being modified |
15 |
descstrpos |
Proc
Skill ·
Gets
the skill name, skill level, and chance percent to insert into the
“descstrpos” string |
16 |
descstrpos descstrneg |
Aura ·
Gets
the skill name, and uses the stat’s value for the skill level and inserts
these values into the designated “descstr” string |
17 |
descstrpos descstrneg |
Plus
Minus By Time ·
Gets
the proper value based on the time of day and inserts this value into the
“descstr” string ·
Uses
the following strings for the second part of the description, depending on
the time selected: ModStre9d, ModStre9e, ModStre9f, ModStre9g |
18 |
descstrpos descstrneg |
(Same
as function 17) |
19 |
descstrpos descstrneg descstr2 |
Sprintf
Num ·
Uses
the Sprintf string function with the designated “descstr” string and adds
“descstr2” if that value is not empty |
20 |
descval descstrpos descstrneg |
Minus
Percent ·
“[value
* -1]% [descstr]” |
21 |
descstrpos descstrneg descstr2 |
Minus
Percent Per Level ·
“[value
* -1]% [descstr] [descstr2]” ·
If
“descstr2” is empty, then default to using the increaseswithplaylevelX string |
22 |
descstrpos descstrneg |
Versus
Monster Percent ·
Uses “strplur” from 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 name” field from skilldesc.txt file and the “StrClassOnly” field from the charstats.txt file · Uses the stat value as the skill level ·
Combines these values into the designated
“descstr” string |
28 |
descstrpos descstrneg |
Non
Class Skill · Obtains the “str name” field from skilldesc.txt file · Uses the stat value as the skill level ·
Combines these values into the designated
“descstr” string |
29 |
descstrpos descstrneg descstr2 |
Sprintf
num positive ·
Same
as function 19, except the it uses the absolute value of [value] |
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 |
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.
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 |
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
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.
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 |
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
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 |
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 |
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”
Code |
Description |
armo |
Armor Page |
weap |
Weapons Page |
mag |
Magic Page |
misc |
Misc Page |
Code |
Description |
ama |
Amazon |
bar |
Barbarian |
pal |
Paladin |
nec |
Necromancer |
sor |
Sorceress |
dru |
Druid |
ass |
Assassin |
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
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#”)
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 |
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.
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
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.
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.
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.
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
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.
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 |
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.
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 |
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.
Code |
Description |
0 |
None |
1 |
Maze |
2 |
Preset |
3 |
Outdoor |
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 |
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.
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 |
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.
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 |
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.
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.
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.
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
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.
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.
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.
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 |
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.
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
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)
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.
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.
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. |
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
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
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 |
Code |
Description |
(empty) |
None |
ama |
Amazon |
bar |
Barbarian |
pal |
Paladin |
nec |
Necromancer |
sor |
Sorceress |
dru |
Druid
|
ass |
Assassin |
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)
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 |
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
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
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
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 |
Code |
Description |
(empty) |
None |
ama |
Amazon |
bar |
Barbarian |
pal |
Paladin |
nec |
Necromancer |
sor |
Sorceress |
dru |
Druid
|
ass |
Assassin |
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)
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 |
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
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
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.
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 |
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 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) |
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 |
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) |
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 |
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.
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 |
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.
Code |
Description |
0 |
Damage
all units |
1 |
Only
damage Undead |
2 |
Only
damage Demons |
4 |
Only
damage Beasts |
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
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.
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 |
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.
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”) |
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.
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 |
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.
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
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
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 |
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.
Code |
Description |
0 |
Weapon |
1 |
Armor or Helmet |
2 |
Shield |
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.
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 |
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 |
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 |
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) |
[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
Charsi |
Gheed |
Akara |
Fara |
Lysander |
Drognan |
Hratli |
Alkor |
Ormus |
Elzix |
Asheara |
Cain |
Halbu |
Jamella |
Larzuk |
Malah |
Anya |
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 |
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.
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.
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 |
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.
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 |
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) |
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
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.
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 |
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) |
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
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)
This file controls which monsters are preloaded in a preset, based on the Act number
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
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
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)
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.
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.
Code |
Description |
0 |
No event, do
nothing |
1 |
Do Melee attack |
2 |
Do Missile attack |
3 |
Play a sound |
4 |
Use a Skill |
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
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.
Code |
Description |
0 |
Cold |
1 |
Poison |
2 |
Level 0 |
3 |
Level 1 |
4 |
Level 2 |
5 |
Level 3 |
6 |
Level 4 |
7 |
Level Miscellaneous |
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.
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 |
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
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 |
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”)
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 |
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
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 |
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 |
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.
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 |
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 |
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
|
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 |
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 |
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 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) |
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.
Id - Controls the unique name ID to define the monster. This
must match the same value in the monstats.txt file.
Code |
Description |
Code |
Description |
|
1 |
icebreaksmall |
1 |
Low Height |
|
2 |
icebreakmedium |
2 |
High Height |
|
3 |
icebreaklarge |
3 |
Both types of
Heights |
|
4 |
icebreaksmoke |
|
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
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”).
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 |
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.
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
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 |
This file handles the classification, naming conventions and element of monsters
This is used by the monstats.txt data file
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 the “descfunc” code 22 function
from the ItemStatCost.txt file, based on the monster type selected.
Code |
Description |
(empty) |
Any Element |
pois |
Poison |
cold |
Cold |
fire |
Fire |
ltng |
Lightning |
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
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.
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) |
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.
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
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)
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
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.
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 |
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
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 |
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.
Code |
Description |
0 (or other #) |
Center |
1 |
Right |
2 |
Left |
Code |
Description |
0 |
Do nothing |
1 |
Flat floor |
2 |
Wall |
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.
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 |
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.
Object Class |
Overlay |
SpecialChest100 KhalimHeartChest KhalimEyeChest KhalimBrainChest HoradricCubeChest HoradricScrollChest StaffOfKingsChest ConsolationChest |
multigleam |
SevenTombsReceptacle |
horadric_light |
TaintedSunShrine |
horadric_light |
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.
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 |
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. |
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. |
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 |
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)
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
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.
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
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
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
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.
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 |
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
Code |
Quest Progress |
0 |
null |
1 |
Transform the default
red blood splatter to green blood |
2 |
Change the monster
palette to green |
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
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.
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 |
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
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
code - Defines the property ID. Used as a
reference in other data files (this should not be changed)
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: 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 |
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.
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.
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
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)
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
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)
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
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)
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
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
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 |
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.
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. |
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.
This file controls the item modifiers for Set bonus statistics when the player has equipped enough Set Items
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)
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
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
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
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.
Code |
Description |
ama |
Amazon |
bar |
Barbarian |
pal |
Paladin |
nec |
Necromancer |
sor |
Sorceress |
dru |
Druid |
ass |
Assassin |
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. |
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 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 |
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. |
Code |
Parameters |
Description |
0 |
|
Do nothing |
1 |
aurastate |
BarStopWhirlwind - Handles changing the collision, pathing, and aura state of the caster. |
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.
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) |
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)
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 |
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.
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. |
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.
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 |
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.
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 |
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)
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. |
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. |
Code |
Parameters |
Description |
0 |
|
Do nothing |
1 |
|
SkillBarRemoveWhirlwind - Handles changing the collision and pathing of the caster, and also stops the whirlwind sound. |
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.
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 |
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 |
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 |
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.
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 |
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.
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) |
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.
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 |
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.
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 |
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.
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 |
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 |
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 |
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.
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”) |
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.
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 |
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.
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
skilldesc - The name of the skill description, as a reference for associated Data files
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 |
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 |
Code |
Description |
0 |
Do not display on any skill tree page |
1 |
Left Column |
2 |
Middle Column |
3 |
Right Column |
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 |
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
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 |
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. |
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
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 |
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 |
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.
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
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.
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.
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
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.
Code |
Description |
0 |
None |
1 |
Dirt |
2 |
Indoor
Stone |
3 |
Outdoor
Stone |
4 |
Sand |
5 |
Snow |
6 |
Wood |
The
following are sound reverberation settings for special effects sounds
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 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.
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 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 |
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
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)
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 |
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 |
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
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 |
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-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.
ID |
Description |
0 |
Amazon |
1 |
Sorceress |
2 |
Necromancer |
3 |
Paladin |
4 |
Barbarian |
5 |
Druid |
6 |
Assassin |
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.
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
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.
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
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.
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)
Name - A string key, which is used as a potential selection for generating a unique monster’s name
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.
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.
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 |
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 |
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.
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.
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
Name - A string key, which is used as a potential selection for generating a unique monster’s name
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
Name - A string key, which is used as a potential selection for generating a unique monster’s name
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
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
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 |
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.
Code |
Description |
0 |
Weapon |
1 |
Armor or Helmet |
2 |
Shield |
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.
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 |
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 |
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 |
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) |
[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
Charsi |
Gheed |
Akara |
Fara |
Lysander |
Drognan |
Hratli |
Alkor |
Ormus |
Elzix |
Asheara |
Cain |
Halbu |
Jamella |
Larzuk |
Malah |
Anya |
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 |
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.
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 |
2handmaxdam - The maximum physical damage provided by the weapon if the item is two-handed. This relies on the “2handed”
field being enabled.
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 |
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.
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 |
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.
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.
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