提示:表格向左滑动,可以看到更多内容。或横屏观看可能效果更佳(在浏览器打开,设置手机屏幕自动旋转)

显示提示 隐藏提示

Overview

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

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

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

Data Fields

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

Send Other – Boolean Field. If equals 1, then only add the stat to a new monster if the that has no state and has an item mask. If equals 0, then ignore this.

Signed – Boolean Field. If equals 1, then the stat will be treated as a signed integer, meaning that it can be either a positive or negative value. If equals 0, then stat will be treated as an unsigned integer, meaning that it can only be a positive value. This only affects stats with state bits.

Send Bits – Controls how many bits of data for the stat to send to the game client, essentially controlling the max value possible for the stat. Signed values should have less than 32 bits, otherwise they will be treated as unsigned values.

Send Param Bits – Controls how many bits of data for the stat’s parameter value to send to the client for a unit. This value is always treated as a signed integer.

UpdateAnimRate – Boolean Field. If equals 1, then the stat will notify that game to handle and adjust the speed of the unit when the stat changes. If equals 0, then ignore this. This is only checked for stats with states or for specific skill server functions including 30, 61, 71.

Saved – Boolean Field. If equals 1, then this state will be inserted in the change list to be stored in the Character Save file. If equals 0, then ignore this.

CSvSigned – Boolean Field. If equals 1, then the stat will be saved as a signed integer in the Character Save file. If equals 0, then the stat will be saved as an unsigned integer in the Character Save file. This is only used if the “Saved” field is enabled.

CSvBits – Controls how many bits of data for the stat to send to save in the Character Save file. Signed values should have less than 32 bits, otherwise they will be treated as unsigned values. This is only used if the “Saved” field is enabled.

CSvParam – Controls how many bits of data for the stat’s parameter value to save in the Character Save file. This value is always treated as a signed integer. This is only used if the “Saved” field is enabled.

fCallback – Boolean Field. If equals 1, then any changes to the stat will call the Callback function which will update thgecharacter’s states, skills, or item events based on the changed stat value. If equals 0, then ignore this.

fMin – Boolean Field. If equals 1, then the stat will have a minimum value that cannot be reduced further than that value (See “MinAccr” field). If equals 0, then ignore this.

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

Encode – Controls how the stat will modify an item’s buy, sell, and repair costs. This field uses a code value to select a function to handle the calculations. This field relies on the “Add”, “Multiply” and “ValShift” fields. The baseline Stat Value is first modified using the “ValShift” field to shift the bits. This Stat Value is then used in the calculations by one of the selected functions.

CodeParametersDescription
0(or empty)AddMultiplyBuy 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
4AddMultiplyObtains the stat’s min and max values based on the By Time bit masks and uses them to calculate the average value or Baseline stat value.Buy Cost += [Baseline] * [“Multiply”] / 1024 + [“Add”]Sell Cost += [Baseline] * [“Multiply”] / 1024 + [“Add”]Repair Cost += [Baseline] * [“Multiply”] / 1024 + [“Add”]

Add – Used as a possible parameter value for the “Encode” function. Flat integer modification to the Unique item’s buy, sell, and repair costs. This is added after the “Multiply” field has modified the costs.

Multiply – Used as a possible parameter value for the “Encode” function. Multiplicative modifier for the item’s buy, sell, and repair costs. The way this value is used depends on the Encode function selected.

ValShift – Used to shift the stat’s input value by a number of bits to obtain the actual value when performing calculations (such as for the “Encode” function).

1.09-Save Bits – Controls how many bits of data are allocated for the overall size of the stat when saving/reading an item from a Character Save. This value can be treated as a signed or unsigned integer, depending on the stat. This field is only used for items saved in a game version of Patch 1.09d or older.

1.09-Save Add – Controls how many bits of data are allocated for the stat’s value when saving/reading an item from a Character Save. This value is treated as a signed integer. This field is only used for items saved in a game version of Patch 1.09d or older.

Save Bits – Controls how many bits of data are allocated for the overall size of the stat when saving/reading an item from a Character Save. This value can be treated as a signed or unsigned integer, depending on the stat.

Save Add – Controls how many bits of data are allocated for the stat’s value when saving/reading an item from a Character Save. This value is treated as a signed integer.

Save Param Bits – Controls how many bits of data for the stat’s parameter value to use when saving/reading an item from a Character Save. This value is always treated as an unsigned integer.

keepzero – Boolean Field. If equals 1, then this stat will remain on the stat change list, when being updated, even if that stat value is 0. If equals 0, then ignore this.

op – This is the stat operator, used for advanced stat modification when calculating the value of a stat. This can involves using this stat and its value to modify another stat’s value. This use a function ID to determine what to calculate.

CodeParametersDescription
0(or empty) No Operator. Just add the stat normally
1op 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
2op 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”]
3op 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
4op 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”]
5op 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
6op 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]
7op 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 daypercent = [“op stat#”] * [delta][“op stat#”] = [“op stat#”] * percent / 100
8op 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)
9op 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.
11op 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.
13op stat1
op stat2
op stat3
Item Percent Operator. This will only apply for stats on items. Gets the value of “op stat#” and multiplies it by a percentage increase equal to this stat’s value:[“op stat#”] += [“op stat#”] * value / 100

op param – Used as a possible parameter value for the “op” function.

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

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

direct – Boolean Field. If equals 1, then when the stat is being updated in certain skill functions having to do with state changes, the stat will update in relation to its “maxstat” field to ensure that it never exceeds that value. If equals 0, then ignore this, and the stat will simply update in these cases. This only applies to skills that use skill server function 65, 66, 81, and 82.

maxstat – Controls which stat is associated with this stat to be treated as the maximum version of this stat. This means that 2 stats are essentially linked so that there can be a current version of the stat and a maximum version to control the cap of stat’s value. This is used for Life, Mana, Stamina, and Durability. This field relies on the “direct” field to be enabled unless it is being used for the healing potion item spell.

damagerelated – Boolean Field. If equals 1, then this stat will be exclusive to the item and will not add to the unit. If equals 0, then ignore this, and the stat will always add to the unit. This is typically used for weapons and is important when dual wielding weapons so that when a unit attacks, then one weapon’s stats do not stack with another weapon’s stats.

itemevent1 & itemevent2 – Uses an event that will activate the specified function defined by “itemeventfunc#”. This points to the ID of an event defined in the events.txt file.

eventDescription
(empty)Do nothing.
hitbymissileUnit is hit by a missile
damagedinmeleeUnit takes damage from a melee attack
damagedbymissileUnit takes damage from a missile
attackedinmeleeUnit is attacked by a melee attack
doactiveUnit used a skill
domeleedamageUnit dealt damage with a melee attack
domissiledamageUnit dealt damage with a missile
domeleeattackUnit used a melee attack
domissileattackUnit used a missile attack
killUnit killed another Unit
killedUnit dies
absorbdamageUnit takes damage
levelupUnit gained a Level
deathMonster dies

itemeventfunc1 & itemeventfunc2 – Specifies the function to use after the related item event occurred. Functions are defined by a numeric ID code. This is only applied based on the “itemevent#” field definition.

CodeDescription
0(or empty)Do nothing.
1Applies the effects of the Sorceress Chilling Armor skill
2Applies the effects of the Sorceress Frozen Armor skill
3Applies the effects of the Sorceress Shiver Armor skill
4Applies the effects of the Necromancer Iron Maiden skill, causing damage taken to be dealt to the attacker
5Applies the effects of the Necromancer Life Tap skill on monsters. Usable only on monsters when cast by players.
6Attacker Takes Physical Damage
7Applies 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.
8Applies the effects Barbarian Howl skill on monsters, causing them to run away in fear. Does not work on Champion or Unique monsters.
9Applies the effects of the Necromancer Dim Vision skill to a target. Effectiveness is reduced from missile attacks.
10Attacker Takes Lightning Damage
11Attacker Takes Fire Damage
12Attacker Takes Cold Damage
13A percentage of damage taken will also reduce the user’s mana by that amount
14Applies the Freeze effect on the target. Effectiveness is reduced from missile attacks.
15Applies Open Wounds damage on the target, which causes life damage over time
16Applies 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.
17Restores mana to the user that performed the kill
18Restores 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.
20Use a skill against the target after the user is attacks or hits the enemy
21Use 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
22Applies 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
25Apply 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.
28Restores life to the user that performed a kill
29Applies the “restinpeace” state which essentially the corpse of a killed monster, making it unusable
30Cast a skill when the item event occurs, either with without a target
31Reanimates the targeted enemy as a pet monster for the user. Only applies on units classified as monsters, and not Champions or Uniques.
32Use a skill to deal area radius damage around the user
33Use a skill’s linked sub-skill from the “sumskill1” in the skills.txt file

descpriority – Controls how this stat is sorted in item tooltips. This field is compared to the same field on other stats to determine how to order the stats. The higher the value means that the stat will be sorted higher than other stats. If more than 1 stat has the same “descpriority” value, then they will be listed in the order defined in this data file.

descfunc – Controls how the stat is displayed in tooltips. Uses an ID value to select a description function to format the string value.

CodeParametersDescription
0 No display. Do nothing.
1descval
descstrpos
descstrneg
Plus or Minus·         If value > 0, “+[value] [descstr]”·         If value < 0, “-[value] [descstr]”
2descval
descstrpos
descstrneg
Percent·         “[value] [descstr]”
3descval
descstrpos
descstrneg
String·         “[value] [descstr]”
4descval
descstrpos
descstrneg
Plus Percent·         “+[value]% [descstr]”
5descval
descstrpos
descstrneg
Percent 128·         “+[value * 100 / 128]% [descstr]”
6descval
descstrpos
descstrneg
descstr2
Plus or Minus Per Level·         If value > 0, “+[value] [descstr] [descstr2]”·         If value < 0, “-[value] [descstr] [descstr2]”
7descval
descstrpos
descstrneg
descstr2
Percent Per Level·         “[value]% [descstr] [descstr2]”
8descval
descstrpos
descstrneg
descstr2
Plus Percent Per Level·         “+[value]% [descstr] [descstr2]”
9descval
descstrpos
descstrneg
descstr2
String Per Level·         “[value] [descstr] [descstr2]”
10descval
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
12descval
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
15descstrposProc Skill·         Gets the skill name, skill level, and chance percent to insert into the “descstrpos” string
16descstrpos
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
17descstrpos
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
18descstrpos
descstrneg
(Same as function 17)
19descstrpos
descstrneg
descstr2
Sprintf Num·         Uses the Sprintf string function with the designated “descstr” string and adds “descstr2” if that value is not empty
20descval
descstrpos
descstrneg
Minus Percent·         “[value * -1]% [descstr]”
21descstrpos
descstrneg
descstr2
Minus Percent Per Level·         “[value * -1]% [descstr] [descstr2]”·         If “descstr2” is empty, then default to using the increaseswithplaylevelX string
22descstrpos
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
23descstrpos
descstrneg
Reanimate·         Obtains the related “NameStr” string from the monstats.txt file and inserts this string into the designated “descstr” string
24descstrpos
descstrneg
Charges·         Obtains the skill, skill level, max charges, and current charges and inserts these values into the designated “descstr” string
25descval
descstrpos
descstrneg
Minus·         If desval equals 1, then use “+[value * -1] [descstr]”·         If desval equals 2, then use “[descstr] +[value * -1]” 
26descval
descstrpos
descstrneg
descstr2
Minus Per Level·         (Same as function 25)
27descstrpos
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
28descstrpos
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
29descstrpos
descstrneg
descstr2
Sprintf num positive·         Same as function 19, except the it uses the absolute value of [value]

descval – Used as a possible parameter value for the “descfunc” function. This controls the how the value of the stat is displayed.

CodeDescription
0Do not show the value of the stat
1Shows the value of the stat at the start of its description
2Shows the value of the stat at the end of its description

descstrpos – Used as a possible parameter value for the “descfunc” function. This uses a string to display the item stat in a tooltip when its value is positive.

descstrneg – Used as a possible parameter value for the “descfunc” function. This uses a string to display the item stat in a tooltip when its value is negative.

descstr2 – Used as a possible parameter value for the “descfunc” function. This uses a string to append to an item stat’s string in a tooltip.

dgrp – Assigns the stat to a group ID value. If all stats with a matching “dgrp” value are applied on the unit, then instead of displaying each stat individually, the group description will be applied instead (see “dgrpfunc” field)

dgrpfunc – Controls how the shared group of stats is displayed in tooltips. Uses an ID value to select a description function to format the string value. This function IDs are exactly the same as the “descfunc” field, see that description for more details.

dgrpval – Used as a possible parameter value for the “dgrpfunc” function. This controls the how the value of the stat is displayed. (Functions the same as the “descval” field)

dgrpstrpos – Used as a possible parameter value for the “dgrpfunc” function. This uses a string to display the item stat in a tooltip when its value is positive.

dgrpstrneg – Used as a possible parameter value for the “dgrpfunc” function. This uses a string to display the item stat in a tooltip when its value is negative.

dgrpstr2 – Used as a possible parameter value for the “dgrpfunc” function. This uses a string to append to an item stat’s string in a tooltip.

stuff – Used as a bit shift value for handling the conversion of skill IDs and skill levels to bit values for the stat. Controls the numeric range of possible skill IDs and skill levels for charge based items. This value cannot be less than or equal to 0, or greater than 8, otherwise it will default to 6. The row that this value appears in the data file is unrelated, since this is a universally applied value.

advdisplay – Controls how the stat appears in the Advanced Stats UI

CodeDescription
0(or empty)The stat will never appear on the Advanced Stats UI
1The stat will always show on the Advanced Stats UI
2The stat will only show on the Advanced Stats UI if the value is greater than 0