提示:表格向左滑动,可以看到更多内容。或横屏观看可能效果更佳(在浏览器打开,设置手机屏幕自动旋转)
Overview
This file controls all skill functionalities. Skills are abilities used by all units in the game.
This file uses many other data files, and other data files will reference fields in this file to verify certain functionalities.
Any column field name starting with “*” is considered a comment field and is not used by the game
Data Fields
skill – Defines the unique name ID for the skill, which is how other files can reference the skill. The order of the defined skills will determine their ID numbers, so they should not be reordered.
charclass – Assigns the skill to a specific character class which affects how skill item modifiers work and what skills the class can learn.
Code | Description |
ama | Amazon |
bar | Barbarian |
pal | Paladin |
nec | Necromancer |
sor | Sorceress |
dru | Druid |
ass | Assassin |
skilldesc – Controls the skill’s tooltip and general UI display. Points to a “skilldesc” field in the skilldesc.txt file.
srvstfunc – Server Start function. This controls how the skill works when it is starting to cast, on the server side. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | StartAttack – Check that the attack is melee or ranged. If the attack is ranged, then verify the ammunition. | |
2 | StartKick – Calculate the damage and attack the target unit with a Hand-To-Hand hit class. | |
3 | StartUnsummon – Validate that the target unit is not a monster or player and that the unit is owned by the caster unit. Check that the pet can be unsummoned (See “unsummon” in pettype.txt) | |
4 | AmaStartCheckQuantity – Verify that the caster unit has enough weapon ammunition | |
5 | AmaStartJab – Return true. | |
6 | calc1 calc4 | AmaStartPowerStrike – Validate the target enemy and attempt to attack it. Use “calc1” to control the percentage increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
7 | calc1 calc2 calc3 calc4 | AmaStartImpale – Validate the target enemy and attempt to attack it. Use “calc1” to control the percentage increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. Use “calc2” to control the percent chance of losing weapon durability. Use “calc3” to control the flat amount of durability lost. |
8 | aurarangecalc calc1 calc3 | AmaStartStrafe – Attempt to find nearby valid targets and shoot them. Use “aurarangecalc” to control the range to find targets. Use “calc1” and “calc3” to control the minimum and maximum amount of shots fired. |
9 | calc1 | AmaStartFend – Find a valid target to attack in melee and then perform multiple attacks to nearby enemies. Use “calc1” to control the max targets to attack. |
10 | calc1 calc4 | AmaStartLightningStrike – Validate the target enemy and attempt to attack it to deal a random amount of lightning damage. Use “calc1” to control the percentage increase for damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
11 | srvmissilea calc2 | SorStartInferno – Continuously create missiles while the caster has the “inferno” state, and adjust the animations and modes based on the inferno frames. Use “calc2” to control the monster channel duration. |
12 | aurarangecalc | SorStartTelekinesis – Validate the range distance and the target type |
13 | SorStartThunderStorm – Validate the skill use and setup targeting parameters | |
14 | SorStartHydra – Validate the target location | |
15 | NecStartRaiseSkeleton – Check for a valid target corpse that can be raised | |
16 | calc1 calc4 | NecStartPoisonDagger – Validate the target enemy and attempt to attack it. Use “calc1” to control the percentage increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
17 | NecStartCorpseExplosion – Check for a valid target corpse that can explode | |
18 | NecStartAttract – Return true | |
19 | NecStartBonePrison – Validate that the target is an enemy and make sure that the target is not located in town | |
20 | NecStartIronGolem – Validate that the target is an identified item located on the ground | |
21 | NecStartRevive – Check for a valid target corpse that can be revived | |
22 | AssStartPsychicHammer – Check for a valid target player or monster | |
23 | AssStartProgressiveAttack – Reset internal variable used for keeping track of skill steps. | |
24 | calc1 | AssStartDragonTalon – Use “calc1” to control the number of attacks. |
25 | AssStartDragonClaw – Reset internal variable used for keeping track of skill steps. | |
26 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec | AssStartBladeFury – Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. If the caster unit does not have the “inferno” state, then add it and handle the animation frames. If the caster unit does have the “inferno” state, then periodically create missiles. |
27 | Param4 Param8 | AssStartDragonTail – Validate the target to attack and calculate the kick damage. Use “Param4” to control the attack speed. Use “Param8” to control if the attack should always hit. |
28 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec auralencalc | AssStartBladeShield – Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Add the “aurastate” state that lasts a duration controlled by “auralencalc”. |
29 | calc1 calc4 | PalStartSacrifice – Validate the target enemy unit and determine if the caster unit can melee attack it. Use “calc1” to control the percentage increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
30 | Do nothing | |
31 | calc2 | PalStartCharge – Validate the target enemy unit and determine if the caster unit can melee attack it. Adjust the caster unit’s movement speed. Do special adjustments for the “duriel” and “clawviper1” monster attack modes. Use “calc2” to add bonus movement speed percentage while charging. |
32 | aurastate calc1 calc2 calc3 calc4 | BarStartBash – Validate the target enemy and attack it. Use “calc1” to control the physical damage percent increase. Use “calc2” to control the flat damage increase. Use “calc3” to control the attack speed bonus. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. Applies “aurastate” to self. |
33 | BarStartFindHeart – Check for a valid target corpse that can spawn potions. This relies on the “soft” and “noSel” flags from the monstats2.txt file. | |
34 | BarStartFindItem – Check for a valid target corpse that can spawn items. This relies on the “soft” and “noSel” flags from the monstats2.txt file. | |
35 | calc1 calc2 calc3 | PalStartVengeance – Validate the target enemy and attack it. Use the calculation fields to control fire, cold, and lightning damage percentages added to the attack. |
36 | PalStartHolyShield – Check that the player has a shield equipped | |
37 | calc1 | AmaStartFend2 – Find nearby enemy targets to melee attack. Use “calc1” to control the maximum number of targets to attack. |
38 | aurastate auralencalc auraevent1 auraeventfunc1 auraevent2 auraeventfunc2 auraevent3 auraeventfunc3 | BarStartWhirlwind – Stop any skills and validate the target location. Modify the caster unit’s collision to only collide with walls and objects and save the target location. Apply the “aurastate” state with the length controlled. Applies “auraevents” if they exist. |
39 | aurastate calc1 calc2 calc4 | BarStartBerserk – Validate the target enemy unit and determine if the caster unit can melee attack it. Use “calc1” to control the percentage increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. Use “calc2” to control the duration for how long the caster unit has the state. |
40 | aurarangecalc | BarStartLeap – Adjust the caster unit collision, validate the target location, and store the location in a parameter. If the caster unit is in a monster, then handle how the monster can attack the target while leaping. |
41 | BarStartLeapAttack – Adjust the caster unit collision, validate the target location, and store the location in a parameter. Make the caster unit uninterruptable after landing in order to melee attack a nearby target. | |
42 | MonStartFirehit – If the caster unit is a player, then use the BarStartBash function (Code 32). Otherwise make the caster attack the target while in “Skill 1” mode and deal damage | |
43 | MonStartMagottEgg – Make the unit unattackable, unselectable, and unable to be hit by missiles | |
44 | MonStartMaggotUp – Set the unit to have ground collision and adjust the collision and pathing. Teleport the unit to a viable location in the area. | |
45 | MonStartMaggotDown – Make the unit unattackable, unselectable, and unable to be hit by missiles. Adjust the unit’s collision to not have pathing. | |
46 | MonStartAndariel – Validate the target unit and store the target’s location in a parameter | |
47 | calc1 | MonStartJump – Validate the target location. Return false if the caster unit has the “freeze” state. Use the “calc1” field to control the damage percent bonus. Make the caster unit attack the target, if possible. |
48 | MonStartSwarmMove – Find and validate a path to the target. | |
49 | MonStartNest – Validate the caster unit’s location and modify its collision | |
50 | MonStartQuickStrike – Validate the target unit and attack it | |
51 | MonStartSubmerge – Make the unit unattackable, unselectable, and unable to be hit by missiles | |
52 | MonStartEmerge – Make the unit unattackable, unselectable, and unable to be hit by missiles | |
53 | calc2 | MonStartDiabLight – Add the “inferno” state to the caster unit. Use “calc2” to control the number of frames to add to the animation while channeling and save it in a parameter. |
54 | MonStartDiabRun – Validate the target unit and save its location in parameters | |
55 | calc1 calc2 | MonStartMosquito – Validate the target unit and use the calculation fields to control the minimum and maximum number of animation loops for the skill. |
56 | calc1 calc4 | DruStartChargeUpAttack – Validate the target enemy and attempt to attack it. Use “calc1” to control the percentage increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
57 | aurastate | DruStartRabies – Validate the “aurastate” state. Reset internal variables used to keep track of hits. |
58 | calc1 | DruStartFireClaws – Validate the target enemy and attempt to attack it. Use “calc1” to control the percentage increase for physical damage dealt. |
59 | calc1 | MonStartImpInferno – Add the “inferno” state to the caster unit. Use “calc1” to control the number of frames to add to the animation while channeling and save it in a parameter. |
60 | calc1 calc2 calc3 | MonStartBatSuckBlood – Validate the target enemy and attempt to attack it. Use “calc1” to control the damage penalty percentage. Use “calc2” to control the life steal percent. Use “calc3” to control the mana steal percent. |
61 | MonStartSelfResurrect – Validate that the caster unit is a monster, then resurrect the monster, making it have proper pathing, be attackable, selectable, and able to be hit by missiles. | |
62 | MonStartSpawner – Save the monster’s position, class, and mode as parameters | |
63 | srvmissilea | MonStartCorpseCycler – Validate that the caster unit is a monster. Check for the “noSel” state on the target (see monstats2.txt) or add it on the target. Create the missile at the target location and corpse explode the corpse on the client. |
64 | MonStartFrenzy – Validate that the target is an enemy. Reset internal variables used to keep track of frames and attacks. | |
65 | StartThrow – Validate that the caster unit has enough ammunition and durability | |
66 | auraevent1 auraeventfunc1 auraevent2 auraeventfunc2 auraevent3 auraeventfunc3 | ApplyPassiveAuraEvents – Check each of the aura events on the skill and apply the event handler to use the aura event functions |
67 | BarStartFrenzy – Resets internal variables used to keep track of frames and attacks. | |
68 | calc2 | BarStartDoubleSwing – Uses “calc2” to apply an attack rate bonus. |
srvdofunc – Server Do function. This controls how the skill works when it finishes being cast, on the server side. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | DoAttack – If using a ranged weapon, then launch the weapon’s missile. Otherwise, perform a standard melee attack to deal damage. | |
2 | srvoverlay aurastate auratargetstate auralencalc | DoApplyDamage – Apply the overlay on the target unit when dealing damage. Apply the “auratargetstate” state on the target, if possible, with “auralencalc” controlling its duration. Apply the “aurastate” state on the caster unit, if possible. |
3 | DoThrow – Check that primary equipped weapon is a throwing weapon and handle launching the weapon’s missile | |
4 | DoUnsummon – Remove the pet from the caster owner | |
5 | DoLeftThrow – Check that non-primary equipped weapon is a throwing weapon and handle launching the weapon’s missile | |
6 | auratargetstate auralencalc aurarangecalc | AmaDoInnerSight – Apply the “auratargetstate” state to all units in the area with a radius controlled by “aurarangecalc”, that lasts a duration controlled by “auralencalc”. The state can use any of the aura stats and their related calculation values. |
7 | calc1calc4 | AmaDoJab – Attempt to attack the target unit. Use “calc1” to control the percent increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
8 | srvmissilea srvmissileb calc1 calc2 calc3 calc5 | AmaDoMultipleShot – Shoot a number of missiles toward a target location. If the weapon class is a bow then use “srvmissilea”, otherwise use “srvmissileb” as the missile to create. Use “calc1” to control the number of missiles created. Use “calc2” to control the activation frame for each missile created. Use “calc3” to control the number of triggering missiles. Use the “calc5” value to calculate Guided Arrow synergy. |
9 | aurastate auralencalc calc1 calc4 | BarDoFrenzy – Attack with both weapons on a target or to nearby targets. Add the “aurastate” state to the caster unit, with a duration controlled by “auralencalc”. Use “calc1” to control the percentage increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
10 | srvmissilea srvmissileb calc1 | AmaDoGuidedArrow – Shoot a missile that will change its path to find a nearby target to hit. If the weapon class is a bow then use “srvmissilea”, otherwise use “srvmissileb” as the missile to create. Use “calc1” to control the physical damage dealt by the missile. |
11 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec calc1 | AmaDoChargedStrike – Create the number of missiles with randomized pathing. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use “calc1” to control the number of missiles created. |
12 | aurarangecalc srvmissilea srvmissileb calc2 Param6 | AmaDoStrafe – Use “aurarangecalc” to control the range to find a target. If the weapon class is a bow then use “srvmissilea”, otherwise use “srvmissileb” as the missile to create. Use “calc2” to control the percent increase for physical damage dealt. Use “Param6” to control what percent within the entire animation to trigger rolling back the loop within the animation. |
13 | calc1 calc4 Param2 | AmaDoFend – Attempt to attack the target unit or nearby enemies with multiple attacks. Use “calc1” to control the percent increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. Use “Param2” to control what percent within the entire animation to trigger rolling back the loop within the animation. |
14 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec calc1 calc2 | AmaDoLightningStrike – Damage the target and create a missile that bounces to different targets. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use “calc1” to control the range of the missile to find a nearby target. Use “calc2” top control the number target chain jump hits for the missile. |
15 | pettype calc2 calc3 | AmaDoDopplezon – Create a pet unit that is a duplicate of the caster unit. Use “calc1” to control the life percent of the pet. Use “calc3” to control the Life percent increase on the pet unit based on the caster’s Life. Use “calc2” to control the duration that the pet exists. Apply the “dopllezon_appear” overlay on the pet. |
16 | pettype calc1 calc2 | AmaDoValkyrie – Create a pet unit with generated item equipment and stats. Use “calc1” to control the life percent of the pet. Use “calc2” to control the item level for the generated items on the pet. |
17 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec calc1 | SorDoChargedBolt – Create a number of missiles that have a randomized path. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use “calc1” to control the number of missiles created. |
18 | aurastate auralencalc | SorDoFrozenArmor – Apply the state on the target unit with its length controlled by “auralencalc”. |
19 | srvmissilea calc1 | SorDoInferno – Create the missile where “calc1” controls the range. Continue creating missiles while having the “inferno” state. |
20 | aurarangecalc calc1 calc2 | SorDoStaticField – Apply damage to all units in the area. Use “aurarangecalc” to control the damage radius. Use “calc1” to control the Life percent damage. Use “calc2” to control the minimum damage dealt. |
21 | calc1 | SorDoTelekinesis – If the target is a monster or player, then deal damage and use “calc1” to control the knockback chance. If the target is an item, then ensure that the item type is a scroll, gold, or potion. If the target is a object, then call the object’s operate function. |
22 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec calc1 | SorDoFrostNova – Shoot missiles in a circular array. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use “calc1” to add to the velocity of the missiles created. |
23 | aurastate auralencalc | SorDoBlaze – Add the “aurastate” state on the caster with a duration controlled by “auralencalc”. Apply any aura stats or events. |
24 | srvmissilea srvmissileb calc1 | SorDoFirewall – Create 2 “srvmissilea” missiles in opposite directions and create 2 “srvmissileb” missiles also at those locations. Use “calc1” to control how many different groups of these missiles can exist at once. |
25 | aurastate auralencalc | SorDoEnchant – Add the “aurastate” state on the target with a duration controlled by “auralencalc”. Apply any aura stats or events. |
26 | srvmissilea calc1 | SorDoChainLightning – Create the missile, which can jump off targets hit, where “calc1” controls the number of missile chain jump hits |
27 | SorDoTeleport – Check that the level allows teleporting (see “Teleport” in Levels.txt), then validate the target location and warp the unit to that location. | |
28 | srvmissilea | SorDoMeteor – Check that the target location is valid to spawn the missile, then create it |
29 | aurastate auralencalc srvmissilea Param7 | SorDoThunderStorm – While the caster unit has the “aurastate” state with the “auralencalc” duration, find nearby a nearby enemy and shoot the missile. Use “Param7” to control the radius size for finding nearby enemies. |
30 | auratargetstate aurarangecalc auralencalc | NecDoAmplifyDamage – Apply the “auratargetstate” state on enemies in an area where “aurarangecalc” controls the radius and “auralencalc” controls the duration. Also apply and aura stats, events, and filters. |
31 | pettype calc1 calc2 | NecDoRaiseSkeleton – Validate the target corpse and then create a pet unit. Use “calc1” to control the life percent of the pet. Use “calc2” to control the percent chance to spawn the skeleton with a shield (only works for the “necroskeleton” monster). |
32 | NecDoApplyDamage – Validate the target enemy and perform damage from the attacker | |
33 | calc1 calc2 calc3 calc4 | AssDoPsychicHammer – Validate that the target unit is a monster or player and is not in town. Use the calculation fields to control the chance to knockback the target if it is a monster, unique monster, boss, or player, respectively. |
34 | aurastate auralencalc aurastat1 aurastat2 aurastatcalc2 | AssDoProgressiveAttack – Attempt to attack the target unit and deal damage. Calculate the progressive damage. Use “auralencalc” to determine the length of the charges. Use “aurastat1” to control the progressive charges. Use “aurastat2” as a stat when the player attacks and has no charges. Use “aurastatcalc2” to control that stat’s value. |
35 | aurastate auralencalc aurastat1 aurastat2 aurastatcalc2 | AssDoDualProgressiveAttack – Check that the player has 2 weapons equipped. Attempt to attack the target unit twice with a frame delay, and use the “AssDoProgressiveAttack” (Code = 34) function for each attack. |
36 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec calc1 | ApplyClawsOfThunderLvl2 – Shoot missiles in a circular array. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use “calc1” to add to the velocity of the missiles created. |
37 | aurastate aurarangecalc aurastat1 srvmissilea srvmissileb srvmissilec | ApplyClawsOfThunderLvl3 – Shoot missiles in an arc array. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use “aurarangecalc” to control how many missiles are created, only if there are no values from the progressive charge calculation fields (see “prgcalc1”) |
38 | aurastate aurarangecalc aurastat1 | AssDoAreaDamage – Deal damage to enemies in an area at a target location. Use the progressive calculation fields to determine the radius increase per charge, controlled by the “aurastate” state and the “aurastat1” value, otherwise use “aurarangecalc” for the radius. |
39 | aurastate aurarangecalc aurastat1 srvmissilea srvmissileb srvmissilec | AssMissileDisc – Create a disc of randomly positioned missiles. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use the progressive calculation fields to determine the radius increase per charge, controlled by the “aurastate” state and the “aurastat1” value, otherwise use “aurarangecalc” for the radius. |
40 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec | ApplyRoyalStrikeLvl1 – Create a missile at a target location. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. |
41 | aurastate aurarangecalc aurastat1 srvmissilea srvmissileb srvmissilec | ApplyChaosIce – Create multiple missiles from the caster unit. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use the progressive calculation fields to determine the number of missiles created per charge, controlled by the “aurastate” state and the “aurastat1” value. Use “aurarangecalc” for the radius. |
42 | calc2 calc3 calc4 Param1 Param2 | AssDoDragonTalon – Attempt to melee attack the target unit multiple times. Use the progressive fields to control the charge functions. Use each calculation field to control the percent chance to knockback for a monster, boss, or player unit. Use the parameters to control a linear calculation for the percentage of bonus physical damage dealt. |
43 | aurastate aurarangecalc aurastat1 srvmissilea srvmissileb srvmissilec | AssDoShockField – Create multiple missiles using the lob function. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use the progressive calculation fields to determine the number of missiles created per charge, controlled by the “aurastate” state and the “aurastat1” value. Use “aurarangecalc” for the radius. |
44 | pettype | AssDoBladeSentinel – Summon a pet at the target location and cause it to oscillate |
45 | pettype | AssDoWakeOfFireSentry – Summon a pet at the target location |
46 | calc1 calc4 | AssDoDragonClaw – Attempt to attack the target unit twice with a frame delay. Use “calc1” to control the percent increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. Use the progressive fields to determine progressive damage changes. |
47 | aurastate auratargetstate auralencalc aurarangecalc | AssDoCloakOfShadows – Apply the “aurastate” state on the caster unit with a duration controlled by “auralencalc”. Apply the “auratargetstate” state on nearby enemies in a radius controlled by “aurarangecalc”. Use any applicable aura stats or filters. |
48 | aurastate aurastat1 srvmissilea srvmissileb srvmissilec | AssDoBladeFury – Create a missile after a frame delay. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use the progressive calculation fields to modify the delay between creating the next missile, based on the charges. |
49 | pettype Param5 Param6 | AssDoShadowWarrior – Create a pet unit with generated item equipment and stats. Use “Param5” and “Param6” to control the item level for the generated items on the pet. |
50 | aurarangecalc calc1 | AssDoDragonTail – Attempt to attack a target unit and deal damage in an area. Use the progressive fields to control the charge functions. Use “aurarangecalc” to control the radius. Use “calc1” to control the percent increase in damage dealt. |
51 | aurarangecalc calc1 calc2 Param4 | AssDoMindBlast – Randomly damage and convert enemies in an area. Use “aurarangecalc” to control the radius, or if using the progressive charges, then use their field values instead. Use “calc1” to control the chance to convert enemies. Use “calc2” to control the duration enemies are converted. Use “Param4” to add an additional randomized duration value. |
52 | calc1 | AssDoDragonFlight – Teleport the caster to the target unit and attempt to attack it. Use the progressive fields to control the charge functions. Use “calc1” to control the percent increase for physical damage dealt. |
53 | aurastate aurarangecalc aurastat1 | AssDoAreaDamage2 – Deal damage to enemies in an area around the caster. Use the progressive calculation fields to determine the radius increase per charge, controlled by the “aurastate” state and the “aurastat1” value, otherwise use “aurarangecalc” for the radius. |
54 | aurastate aurarangecalc aurastat1 | AssDoBladeShield – Deal damage to enemies in an area around the caster. Use the progressive calculation fields to determine the radius increase per charge, controlled by the “aurastate” state and the “aurastat1” value, otherwise use “aurarangecalc” for the radius. |
55 | aurarangecalc calc1 calc2 calc3 EType | NecDoCorpseExplosion – Hide the target corpse and deal damage in an area. Use “aurarangecalc” to control the radius. Use “calc1” and “calc2” to control the min and max percent damage dealt based on the max Life from the corpse unit. Use “calc3” to control the percent of damage converted to elemental. |
56 | pettype | NecCreateGolem – Create a pet unit with defined stats. If the skill has the “TargetableOnly” and “TargetCorpse” flag enabled, then the summoned pet will copy the modifiers of the corpse. |
57 | pettype | NecCreateIronGolem – Validate that the target is an identified item on the ground. Remove the item and create the pet, inheriting properties from the item. |
58 | pettype | NecDoRevive – Validate that the target is a corpse that can be revived, then revive the monster, applying any valid stats |
59 | auratargetstate auralencalc aurarangecalc aurastat1 | NecDoAttract – Validate that the target is a monster and can have its AI changed. Apply the “auratargetstate” state on any valid monsters in an area controlled by “aurarangecalc” which lasts a duration controlled by “auralencalc”. |
60 | pettype calc2 srvmissilea | NecDoBoneWall – Create the pet, and then create 2 missiles that shoot in opposite directions, where “calc2” controls the number of sub missiles to create within each of these missile parameters. |
61 | auratargetstate auralencalc aurarangecalc aurastat1 | NecDoConfuse – Validate that the target is a monster and can have its AI changed. Apply the “auratargetstate” state on any valid monsters in an area controlled by “aurarangecalc” which lasts a duration controlled by “auralencalc”. |
62 | pettype | NecDoBonePrison – Create a number of pets around the target unit. |
63 | srvmissilea | NecDoPoisonExplosion – Validate that the target corpse can explode, then update the corpse to be unselectable and create a radial ring of poison missiles. |
64 | calc2 Param4 | PalDoSacrifice – Attack and deal damage to the target. Deal damage to the caster based on a percentage of life controlled by “calc2” and “Param4”. |
65 | aurastate auratargetstate aurarangecalc | PalDoMight – Apply the aurastate” state to the caster. Apply the “auratargetstate” state to nearby units, where “aurarangecalc” controls the radius size. |
66 | aurastate auratargetstate aurarangecalc | PalDoHolyFire – Apply the aurastate” state to the caster. Apply the “auratargetstate” state to nearby units, where “aurarangecalc” controls the radius size. Deal damage to the nearby units in the area. |
67 | calc1 calc4 | PalDoCharge – Listen for the event frames and attempt to attack the target unit to deal damage. Use “calc1” to control the percent increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
68 | aurastate auralencalc srvmissilea | BarDoBattleCry – Create a circular array of missiles and add the “aurastate” state to the caster unit where the duration is controlled by “auralencalc” |
69 | calc1 Param3 Param4 | BarDoFindHeart – Validate the target corpse, then update the corpse to be unselectable and roll a random chance to create a potion. Use “calc1” to control the chance of finding a potion. Use “Param3” and “Param4” to control the chance for finding a mana potion and rejuvenation potion. Potions depend on the current Act level and Game Difficulty. |
70 | aurastate calc1 calc2 calc3 calc4 | BarDoDoubleSwing – Validate the target enemy and attack it based on the animation sequence frame to determine if it is the first attack or second attack. Uses the BarStartBash function (Code 32 for “srvstfunc”). |
71 | auratargetstate auralencalc | BarDoTaunt – Validate that the target is a monster and can have its AI changed to force it to attack the caster. Apply the “auratargetstate” state on the target, which lasts a duration controlled by “auralencalc”. If there is no target selected, then find the nearest target within a radius value of 20. |
72 | calc1 Param1 Param2 Param3 Param4 | BarDoFindItem – Validate the target corpse, then update the corpse to be unselectable and roll a random chance to spawn a treasure class item. Use “calc1” to control the chance of finding an item. Use the parameter values to control the chances for finding Low Quality, Normal, High Quality, and Magic items. |
73 | srvmissilea calc1 | PalDoBlessedHammer – Create a missile in a spiral path pattern. Use “calc1” to control the damage percent bonus when the caster has the “concentration” state. |
74 | calc1 | BarDoDoubleThrow – Launch the weapon missile, where “calc1” controls the bonus damage percent |
75 | srvmissilea srvmissileb srvmissilec | BarDoGrimWard – Validate the target corpse, then update the corpse to be unselectable and create the “srvmissilea” missile. If the target unit has the “large” flag enabled (see monstats2.txt) then use “srvmissileb” instead. If the target unit has the “small” flag enabled (see monstats2.txt) then use “srvmissilec” instead. |
76 | aurastate calc1 | BarDoWhirlwind – If the caster unit is at the target location, then remove the aura and stop whirlwinding. Otherwise, find nearby enemies and deal damage, where “calc1” controls the damage bonus. |
77 | calc1 calc2 | BarDoLeap – Validate the target position and caster’s collision, and move the unit. Use “calc1” to control the range, and “calc2” to control the speed. |
78 | calc1 calc2 calc4 | BarDoLeapAttack – Validate the target position and the caster’s collision, and move the unit. Make the unit attack the target, if nearby, or find another nearby target. Use “calc2” to control the speed. Use “calc1” to control the percent increase for physical damage dealt. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
79 | auratargetstate auralencalc calc1 Param5 | PalDoConversion – Validate that the target is a monster and can have its AI changed to fight alongside the player. Apply the “auratargetstate” state on the target, which lasts a duration controlled by “auralencalc”. Use “calc1” to control the chance to convert. Use “Param5” to enable a expire effect. |
80 | srvmissilea srvoverlay | PalDoFistOfTheHeavens – Create the missile and apply the overlay on the target unit |
81 | aurastate auratargetstate aurarangecalc | PalDoHolyFreeze – Apply the “aurastate” state on the caster, and apply the “auratargetstate” on any nearby enemies with a radius controlled by “aurarangecalc”. |
82 | aurastate aurarangecalc calc1 calc2 calc3 | PalDoRedemption – Apply the “aurastate” state on the caster. Use “aurarangecalc” to control the radius of the aura, which will look for valid corpses to redeem. Use “calc1” to control the chance to redeem. Use “calc2” to control the life gain. Use “calc3” to control the mana gain. |
83 | MonDoFirehit – Apply damage to the target | |
84 | calc1 | MonDoMaggotEgg – Spawn a number of units around the caster and kill the caster. Use “calc1” to control the number of spawned units. |
85 | srvmissilea | MonDoShamanFire – Get the missile and possibly add the monster’s number in class to the missile ID to get another missile ID instead, and then fire that missile |
86 | calc1 | MonDoMaggotDown – Check for the proper frame count and then heal the caster by a percentage of Life controlled by “calc1” |
87 | MonDoMaggotLay – Spawn a unit in 1 of 8 possible directions nearby the target location | |
88 | srvmissilea | MonDoAndariel – For multiple frames, spawn a missile in 1 of 8 possible directions |
89 | MonDoJump – Validate the target path and check for the completion of the animation or the arrival to destination, then update the unit’s collision. Handle special cases for the “sandleaper1” monster frame counts. | |
90 | calc1 calc2 | MonDoSwarmMove – Check for the skill flag to stop the sequence, otherwise reset the sequence. Use “calc1” to control the animation starting frame at the beginning of the sequence. Use “calc2” to control the animation frame when ending the sequence. |
91 | sumoverlay | MonDoNest – Make the caster unit interruptable. Create the monster saved in the function parameter and make that monster unable to reward Experience and Item Drops, and add the overlay on that monster. |
92 | srvmissilea | MonDoQuickStrike – Apply damage to the target. Check for the monster’s missile frame and then launch the missile. |
93 | srvmissilea | MonDoGargoyleTrap – Create the missile in one of the allowed directions that is closest to the target unit |
94 | MonDoSubmerge – When on the last frame, set the animation sequence rate to 0 and clear the frame events | |
95 | srvmissilea calc1 calc3 | MonDoMonsterInferno – Continuously create missiles based on the monster’s Inferno fields (See monstats2.txt). Use “calc1” to adjust the missile range. Use “calc3” to adjust the density when to create the next missile. |
96 | calc1 calc2 | MonDoZakarumHeal – Heal the ally target by a random percentage of the target’s life, where “calc1” controls the min percent and “calc2” controls the max percent |
97 | srvoverlay | MonDoResurrect – Validate that the monster is dead and can be resurrected. Make the monster have proper collision, be attackable, be selectable, able to be hit by missiles, not provide experience, and not provide item drops. Also update the monster’s mode and add an overlay. |
98 | MonDoTeleport – Validate the target location and teleport the unit. Adjust the location if the monster has a boss owner. | |
99 | srvmissilea calc1 calc2 | MonDoPrimePoisonNova – Create 2 rings of missiles. Use “calc1” to control the number of missile subloops. Use “calc2” to control how many missiles are created per ring. Use the missile’s “Param1” and “Param2” values to control its velocity per ring (See Missiles.txt). |
100 | srvoverlay | MonDoDiabCold – Deal elemental damage to the target and apply the overlay. Adjust the Freeze Length using the “ELen” fields from the skill. |
101 | srvmissilea calc1 | MonDoFingerMageSpider – Create the missile with a facing opposite of the target or caster unit, and use “calc1” to control the missile’s subloops. |
102 | srvmissilea calc1 | MonDiabWallMaker – Create a number of missiles with a randomized path and range. Use “calc1” to control the number of missiles created. |
103 | calc1 Param1 Param2 Param3 Param4 Param5 Param6 | MonDoDiabRun – Move the caster unit with increased speed towards a target, and then attack the target, dealing damage. Use “calc1” to control the increase in movement speed. The 6 parameter values controls the run animation’s stop frame length, stop event frame, start event frame, start frame length, loop repeat event frame, loop frame length, and loop start event frame. |
104 | summon | MonDoDiabPrison – Create multiple of the “summon” units around the target, based on the type of unit that is being targeted |
105 | srvmissilea calc1 | MonDoDesertTurret – Create a number of missiles in 8 possible directions. Use “calc1” to control the number of missiles created. |
106 | srvmissilea | MonDoArcaneTower – Create a circular array of missiles |
107 | calc3 Param1 | MonDoMosquito – Validate that the caster is in melee range for the target and then deal damage, including randomized poison damage, mana drain, and stamina drain. Use “calc3” to control the heal percentage on the caster based on the damage dealt. Use “Param1” to control the animation frame to start the repeat loop. |
108 | calc1 | MonDoRegurgitatorEat – Validate that the target corpse is a monster and then remove it and heal the caster by a percentage of the target’s life, controlled by “calc1” |
109 | aurastate auralencalc calc1 | MonDoFrenzy – Attempt to attack the target unit, dealing damage. Add the “aurastate” state to the caster unit, with a duration controlled by “auralencalc”. Use “calc1” to control the percentage increase for physical damage dealt. |
110 | srvmissilea | MonDoHireFireMissile – Launch the weapon missile to the target. Use “srvmissilea” if the weapon missile is “arrow” or “bolt”. |
111 | Param4 | MonDoFetishAura – Apply an aura to nearby “fetish1” or “fetishblow1” monster types, increasing their attack rate. Use “Param4” to control the radius. |
112 | auratargetstate aurarangecalc auaralencalc Param5 Param6 Param7 | MonDoCurse – Apply a random curse to enemy units in an area. Randomly select between the following curses: Amplify Damage, Weaken, Life Tap, Decrepify, Lower Resist. Use “aurarangecalc” to control the radius. Use “auralencalc” to control the duration. Use “Param5” and “Param6” to control the resistance percentage change for the Lower Resist curse. Use “Param7” to control the Decrepify attack speed and movement speed change. |
113 | ItemDoBookSkill – Check the caster’s inventory for an item that has the “Book” or “Scroll” Item Type (See ItemTypes.txt), and then use that item’s skill and update its quantity. | |
114 | pettype calc1 calc2 | DruDoRaven – Create the pet unit and make it unattackable. Use “calc1” to control the pet’s bonus Life percent. Use “calc2” to control the summoned pet’s unit level. |
115 | pettype calc1 calc2 | DruCreateVineCreature – Create the pet unit in the “Skill 1” mode. Use “calc1” to control the pet’s bonus Life percent. Use “calc2” to control the summoned pet’s unit level. |
116 | aurastate auralencalc Param12 | DruDoWerewolf – Add/Remove the “aurastate” state on the caster, depending if the caster unit does or does not have the state. Use “auralencalc” to control the state duration. Use “Param12” to control whether you should be able to shift directly to a form without first going back to human form using “1” to allow and “0” to not allow. |
117 | srvmissilea calc1 | DruDoFireStorm – Create a number of missiles that move in a randomized pattern. Use “calc1” to control the number of missiles created. |
118 | srvmissilea calc1 | DruDoTwister – Create a number of missiles that move in a randomized pattern. Use “calc1” to control the number of missiles created. |
119 | pettype calc1 calc2 | DruCreateTotem – Create the pet unit at a valid target location. Use “calc1” to control the pet’s bonus Life percent. Use “calc2” to control the summoned pet’s unit level. |
120 | aurastate auralencalc calc2 | DruDoFeralRage – After hitting the target, apply the state on the caster unit with a duration controlled by “auralencalc” and with the capability to stack with charges. Use “calc2” to control the max charges. |
121 | auratargetstate calc1 | DruDoRabies – Attack the target to deal damage. Apply the “auratargetstate” where its duration is controlled by the “ELen” field. Use “calc1” to control the percent increase in physical damage. |
122 | calc1 calc2 calc3 | DruDoHunger – Attempt to attack the target, dealing damage and restoring Life and Mana. Use Use “calc1” to control the percent change in physical damage. Use “calc2” and “calc3” to control the life steal and mana steal gained from the attack damage. |
123 | srvmissilea | DruDoVolcano – Validate the target location and then create the missile |
124 | aurastate auralencalc Param4 | DruDoArmageddon – Apply the “aurastate” state on the caster unit which lasts a duration controlled by “auralencalc”. Use “Param4” to control the duration between sending an event state update. |
125 | srvmissilea | MonDoWakeOfFire – Create a missile from the source unit with a saved direction |
126 | srvmissilea calc2 Param2 | MonDoImpInferno – Based on the animation frames set in monstats2.txt, create a missile where “calc2” controls the missile’s range (and also “Param1” from Missiles.txt). |
127 | calc1 | MonDoBatSuckBlood – Deal damage to the target and then use “calc1” to control the percentage of max Life healed on the caster unit |
128 | calc1 srvoverlay | MonDoCryHelp – If the caster is a monster, then command the caster to attack the target for a duration controlled by “calc1”. Apply the overlay on the target. |
129 | aurastate | MonDoImpTeleport – If the target location is on the ground, then warp the unit to that location. If the type of unit targeted is the “barricadetower” or “siegebeast1” and the caster unit type is “imp1”, then add the “attached” state to the caster unit, and update the AI, animation events, and stats to be not interactable. |
130 | srvmissilea calc1 | MonDoVineAttack – Create a number of missiles in a random spread pattern with 4 possible spread directions. Use “calc1” to control the number of missiles created. |
131 | auratargetstate calc1 | MonDoOverseerWhip – Validate that the target is a living monster. If the target unit type is “minion1”, then perform a random chance to bloodlust the target. Use “calc1” to control the percent chance to bloodlust the target, which will apply the “auratargetstate” state on the target. If bloodlust does not happen, then change the monster class and AI to the suicide minion. |
132 | srvmissilea | MonDoImpFireMissile – Based on the monster’s number in class, increment the index of the linked “srvmissilea” missile and then create that missile based on the index. |
133 | MonDoImpregnate – Validate that the target is a friendly dead monster and that it does not have the “pregnant” state. Then add the “pregnant” state to the target and create a “painworm1” type monster. | |
134 | srvmissilea aurarangecalc | MonDoSiegeBeastStomp – Deal damage to nearby enemies in an aura where “aurarangecalc” controls the radius of the damage |
135 | sumoverlay | MonDoSpawner – Create the monster saved in the parameter with the added overlay, with no experience provided, and with no item spawning. |
136 | srvmissilea calc1 | MonDoDeathMauler – Validate the target location and then create the missile with an animation rate controlled by “calc1”. The missile’s range is modified based on the distance from the caster. |
137 | aurastate | MonDoFenrisRage – Validate that the target is an enemy corpse that has not been used. Apply the state on the caster, adding any aura events on the caster. |
138 | srvmissilea calc1 calc2 | MonDoBaalInferno – Shoot multiple missiles from the caster unit to a target location. Use “calc1” to control the number of missiles created. Use “calc2” to control the range of the missiles. Check the inferno frame events for the monster (see monstats2.txt). |
139 | srvmissilea | MonDoBaalCold – Validate the target location and then create the missile using the directions from the saved parameters. |
140 | MonDoBaalTentacle – Based on the monster class of the caster, create a number of “baaltentacle1” summoned monsters randomly positioned in a location with a radius size of 9. Make sure these monsters do not provide exp or reward items. | |
141 | aurarangecalc calc1 calc2 calc3 EType Param5 Param6 | MonDoBaalCorpseExplosion – Find a nearby dead monster and then do the “NecDoCorpseExplosion” function (Code = 55) except where “Param5” and “Param6” control the baseline radius and radius increase per skill level. |
142 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 aurarangecalc | AssDoAreaAttack – Deal attack damage in an area. Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, use the proper “progcalc#” value to control the radius, based on the number of progressive charges. Otherwise, default to using “aurarangecalc” for the radius. |
143 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 srvmissilea srvmissileb srvmissilec | ApplyRoyalStrikeLvl2 – Create a number of missiles that move in a randomized pattern. Use the “srvmissilea” missile by default, or use 1 of the 3 missiles depending on the progressive charges controlled by the “aurastate” field and “aurastat1” fields. Use “aurarangecalc” value by default for the number of missiles created, or use the appropriate progressive calculation fields, based on the number of progressive charges. |
144 | pettype calc1 | SorDoHydra – Validate the target location and create 3 pets, where “calc1” controls their duration and bonus life percent. |
145 | aurastate aurarangecalc Param4 | DruApplyHurricane – Apply the state on the caster with the radius controlled by “aurarangecalc” and the frame state updates to deal radius damage controlled by “Param4”. |
146 | aurastate aurarangecalc srvmissilea Param4 | DruApplyArmageddon – Update the state on the caster unit based on the events, and then create a missile in a radius controlled by “aurarangecalc” at a periodic frame interval controlled by “Param4”. |
147 | MonApplyAttached – Get the source unit of the caster and update the caster’s pathing to follow the source unit, like a rider attached to its mount. | |
148 | srvmissilea | MonDoDoomKnightMissile – Create the “srvmissilea” using either the lob function or the normal linear function, depending on the “lob” flag. Also select the missile or up to 3 index values higher, depending on the monster’s graphics variation for the “Special 3” component variation. |
149 | srvmissilea | MonDoNecroMageMissile – Create the “srvmissilea” using either the lob function or the normal linear function, depending on the “lob” flag. Also select the missile or up to 3 index values higher, depending on the monster’s graphics variation for the “Special 4” component variation. |
150 | calc1 calc2 calc4 | PalDoSmite – Validate the target enemy and that the target is in melee range, and then attempt to attack the target. Use “calc1” to control the percent increase for physical damage dealt. Use “calc2” to control the stun length. Use “calc4” to control the percent of damage converted to elemental, if the “Etype” field is used. |
151 | srvmissilea calc1 | SorDoChainLightning2 – Launch the missile that can do chain hits to other nearby enemies. Use “calc1” to control the number of chain hits. |
152 | srvmissilea calc1 calc3 | MonDoDiabloLight – Shoot a missile from the caster to the target location, adhering to the caster’s inferno animation frames (See monstats2.txt). Use “calc1” to control the missile range, otherwise default to using the missile’s “Param2” value calculated with its current level. Use “calc3” to control the periodic frame count for how often to create the missile. |
srvstopfunc – Server Stop function. This controls how the skill cleans up after ending. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | aurastate | BarStopWhirlwind – Handles changing the collision, pathing, and aura state of the caster. |
prgstack – Boolean Field. If equals 1, then all “srvprgfunc#” functions will execute, based on the current number of progressive charges. If equals 0, then only the relative “srvprogfunc#” function will execute, based on the current number of progressive charges.
srvprgfunc1 (to srvprgfunc3) – Controls what Server Do function is used when executing the progressive skill with a charge number equal to 1, 2, and 3, respectively. This field uses the same functions as the “srvdofunc” field.
prgcalc1 (to prgcalc3) – Calculation Field. Used as a possible parameter for calculating values when executing the progressive skill with a charge number equal to 1, 2, and 3, respectively.
prgdam – Calls a function to modify the progressive damage dealt
Code | Parameters | Description |
0 | Do nothing | |
1 | aurastat1 calc1 tgtoverlay | ModifyProgressiveDamage – Modify the percentage of the physical damage dealt and apply an overlay on the target |
2 | aurastat1 calc1 | ModifyProgressiveSteal – Modify the percentage of the life steal and mana steal gained |
3 | aurastat1 EType Param2 | ModifyProgressiveElemental – If the progressive damage elemental type equals Cold, then at 3 charges, modify the Freeze Length based on the Cold Length and a divisor (using Param2) |
4 | aurastat1 EType calc1 Param5 | ModifyProgressiveElementalConvert – Convert a percentage of the physical damage dealt to elemental damage, based on the “calc1” field. If the elemental type equals Cold, then at 3 charges, modify the Freeze Length based on the Cold Length and a divisor (using Param5) |
srvmissile – Used as a parameter for controlling what main missile is used for the server functions used (See “Missile” field in Missiles.txt)
decquant – Boolean Field. If equals 1, then the unit’s ammo quantity will be updated each time the skill’s Server Do function is called. If equals 0, then ignore this.
lob – Boolean Field. If equals 1, then missiles created by the skill’s functions will use the missile lobbing function, which will cause the missile fly in an arc pattern. If equals 0, then missiles that are created will use the normal linear function.
srvmissilea (to srvmissilec) – Used as a parameter for controlling what secondary missile is used for the server functions used (See “Missile” field in Missiles.txt)
useServerMissilesOnRemoteClients – Control new missile changes per player skill. Values of 1 will force enable it for that skill. Skills that have matching server/client missiles sets for the skill get auto enabled. Setting this to a value greater than 1 will force it to skip this auto enable logic. If equals 0, then ignore this. Note: this feature is disabled.
srvoverlay – Creates an overlay on the target unit when the skill is used. This is a possible parameter used by various skill functions (See the “overlay” field in Overlay.txt)
aurafilter – Controls different flags that affect how the skill’s aura will affect the different types of units. Uses an integer value to check against different bit fields. For example, if the value equals 4354 (binary = 1000100000010) then that returns true for the 4096 (binary = 1000000000000), 256 (binary = 0000100000000), and 2 (binary = 0000000000010) bit field values.
Bit Field Value | Binary Equivalent Value | Description |
1 | 00000000000000000001 | Find Players |
2 | 00000000000000000010 | Find Monsters |
4 | 00000000000000000100 | Find Undead Monsters |
8 | 00000000000000001000 | Find Missiles |
16 | 00000000000000010000 | Find Objects |
32 | 00000000000000100000 | Find Items |
64 | 00000000000001000000 | Limit number of targets |
128 | 00000000000010000000 | Attackable units only |
256 | 00000000000100000000 | Make sure the target is not in town |
512 | 00000000001000000000 | No missile barriers to center |
1024 | 00000000010000000000 | Missile units only |
2048 | 00000000100000000000 | Custom check function |
4096 | 00000001000000000000 | Find dead units only |
8192 | 00000010000000000000 | Units not in town |
16384 | 00000100000000000000 | No bosses |
32768 | 00001000000000000000 | Run a target check function, checking for unit types and player alignment |
65536 | 00010000000000000000 | Allies |
131072 | 00100000000000000000 | Target in melee range |
262144 | 01000000000000000000 | No Act boss units (See the “primeevil” field in monstats.txt) |
524288 | 10000000000000000000 | Units not in the Just Hit state |
aurastate – Links to a state that can be applied to the caster unit when casting the skill, depending on the skill function used (See the “state” field in states.txt)
auratargetstate – Links to a state that can be applied to the target unit when using the skill, depending on the skill function used (See the “state” field in states.txt)
auralencalc – Calculation Field. Controls the aura state duration on the unit (where 25 Frames = 1 second). If this value is empty, then the state duration will be controlled by other functions, or it will last forever. This can also be used as a parameter for certain skill functions.
aurarangecalc – Calculation Field. Controls the aura state’s area radius size, measured in grid sub-tiles. This can also be used as a parameter for certain skill functions.
aurastat1 (to aurastat6) – Controls which stat modifiers will be altered or added by the aura state (See the “Stat” field from ItemStatCost.txt)
aurastatcalc1 (to aurastatcalc6) – Calculation Field. Controls the value for the relative “aurastat#” field.
auraevent1 (to auraevent3) – Controls what event will trigger the relative “auraeventfunc#” field function. Links to an event listed in the events.txt file.
auraeventfunc1 (to auraeventfunc3) – Controls the function used when the relative “auraevent#” event is triggered.
Code | Parameters | Description |
0 | Do nothing | |
1 | srvmissilea | SorApplyChillingArmor – Shoot a missile at the target unit |
2 | cltoverlaya calc1 | SorApplyFrozenArmor – Deal skill damage with the freeze length controlled by the calc field and apply an overlay to the attacker |
3 | cltoverlaya | SorApplyShiverArmor – Deal elemental skill damage and apply an overlay to the attacker |
4 | auratargetstate calc1 calc2 calc3 calc4 | NecApplyIronMaiden – Deal damage to the attacking unit using the calc fields as damage modifiers, based on the state being active. If the target monster is equal to “bloodgolem” then calculate a life steal and also create the “steallife” overlay on the golem’s caster unit. |
5 | auratargetstate calc1 prgoverlay | NecApplyLifeTap – If the target has the “auratargetstate” state, then apply a percentage heal to the attacker that is determined by the calc field. Also apply an overlay to the attacker when the attack is healed. |
6 | ItemApplyAttackerTakesDamage – Deal physical damage to the attacker | |
7 | ItemApplyKnockback – Determine a chance to knockback the attacker monster | |
8 | ItemApplyHowl – Apply terror to the monster, changing its AI to run away | |
9 | ItemApplyDimVision – Based on a random chance, apply the “Dim Vision” skill to the enemy attacker with a random skill level between 1 to 20. | |
10 | ItemApplyAttackerTakesLtngDamage – Deal lightning damage to the attacker | |
11 | ItemApplyAttackerTakesFireDamage – Deal fire damage to the attacker | |
12 | ItemApplyAttackerTakesColdDamage – Deal cold damage to the attacker, and apply a cold length that is modified based on the level difference between the attacker and defender | |
13 | ItemApplyDamageToMana – Add mana to the source unit, based on a percentage of the damage taken. Also add a “stealmana” overlay to the source unit. | |
14 | ItemApplyFreeze – Based on a random chance, deal damage to the enemy attacker and apply a freeze length | |
15 | ItemApplyOpenWounds – Based on a random chance, apply open wounds on the target, using the “openwounds” state | |
16 | ItemApplyCrushingBlow – Based on a random chance, deal crushing blow percentage life damage to the enemy attacker and apply the “bash” overlay | |
17 | ItemApplyManaAfterKill – Add mana to the source unit and add a “stealmana” overlay | |
18 | ItemApplyHealAfterDemonKill – If a Demon enemy is killed, then add life to the source unit and add a “steallife” overlay | |
19 | ItemApplySlow – Apply the “slowed” state to the target | |
20 | ItemApplyHitOrAttack – Based on a random chance, cast a skill on the target when the source unit attacks | |
21 | ItemApplyGetHit – Based on a random chance, cast a skill on the attacker when the source unit gets hit | |
22 | aurastate aurastat1 aurastat2 | NecApplyBoneArmor – Calculates the minimum and maximum damage to absorb based on the aura stat values. If no remaining absorbing damage is left, then remove the state. |
23 | calc2calc3 | NecApplyBloodGolemSteal – Calculate a life steal for the attacking unit and its boss unit. Also create the “steallife” overlay on the both units. |
24 | aurastate calc1 calc2 prgoverlay | SorApplyEnergyShield – If the “aurastate” state is active, then calculate the percentage of damage taken by the source unit that should be absorbs and the amount of mana that should be consumed by the percent absorbed. Also apply an overlay on the source unit. If the source unit runs out of mana, then remove the state. |
25 | aurastate aurastat1 aurastat2 | DruApplyCycloneArmor – Calculates the minimum and maximum elemental damage to absorb based on the aura stat values. If no remaining absorbing damage is left, then remove the state. |
26 | Param5 | NecApplyBloodGolemShare – Controls the percentage of damage taken by the source unit that should be transferred to the source unit’s boss. |
27 | NecApplyClayGolemSlow – Apply the “slowed” state to the target | |
28 | ItemApplyHealAfterKill – Add life to the source unit and add a “steallife” overlay | |
29 | ItemApplyRestInPeace – Apply the “restinpeace” state on the enemy unit | |
30 | ItemApplyOnDeath – Based on a random chance, cast a skill when the source unit dies | |
31 | ItemApplyReanimate – Based on a random chance, revive a dead monster that is not a champion or unique. | |
32 | aurarangecalc HitClass | SkillApplyRadiusDamage – Use a skill’s damage to deal damage in an area based on the skill’s hit class |
33 | aurastatcalc1 aurastatcalc2 passiveitype passivereqweaponcount sumskill1 sumsk1calc | SkillActivateSubskill – Based on a random chance controlled by the “aurastatcalc1” value, cast a skill (determined by “sumskill1”) with a skill level controlled by “sumsk1calc”. If “aurastatcalc2” value is greater than 0, then factor the “passiveitype” and “passivereqweaponcount” fields for determining if the skill should be cast or not. |
passivestate – Links to a state that can be applied by the passive skill, depending on the skill function used (See the “state” field in states.txt)
passiveitype – Links to an Item Type to define what type of item needs to be equipped in order to enable the passive state (See the “ItemType” field in ItemTypes.txt)
passivereqweaponcount – Controls how many equipped weapons are needed for this passive state to be enabled. If the value equals 1, then the player must have 1 weapon equipped for this passive state to be enabled. If the value equals 2, then the player must be dual wielding weapons for this passive state to be enabled. If the value equals 0, then ignore this field.
passivestat1 (to passivestat10) – Assigns stat modifiers to the passive skill (See the “Stat” field from ItemStatCost.txt)
passivecalc1 (to passivecalc10) – Calculation Field. Controls the value for the relative “passivestat#” field.
summon – Controls what monster is summoned by the skill (See the “Id” field in monstats.txt). This field’s usage will depend on the skill function used. This field can also be used as reference for AI behaviors and for the skilldesc.txt file.
pettype – Links to a pet type data to control how the summoned unit is displayed on the UI (See “pet type” field in pettype.txt)
petmax – Calculation Field. Used skill functions that summon pets to control how many summon units are allowed at a time.
summode – Defines the animation mode that the summoned monster will be initiated with
Token | Description |
DT | Death / Reset |
NU | Neutral |
WL | Walk |
GH | Get Hit |
A1 | Attack 1 |
A2 | Attack 2 |
BL | Block |
SC | Cast |
S1 | Skill 1 |
S2 | Skill 2 |
S3 | Skill 3 |
S4 | Skill 4 |
DD | Dead |
GH | Knockback |
xx | Sequence |
RN | Run |
sumskill1 (to sumskill5) – Assigns a skill to the summoned monster. Points to another “skill” id. This can be useful for adding a skill to a monster to transition its synergy bonuses.
sumsk1calc (to sumsk5calc) – Calculation Field. Controls the skill level for the designated “sumskill#” field when the skill is assigned to the monster.
sumumod – Assigns a monster modifier to the summoned monster (See the “id” in monumod.txt)
sumoverlay – Creates an overlay on the summoned monster when it is first created (see the “overlay” field in Overlay.txt)
stsuccessonly – Boolean Field. If equals 1, then the following sound and overlay fields will only play when the skill is successfully cast, instead of always being used even when the skill cast is interrupted. If equals 0, then the following sound and overlay fields will always be used when the skill is cast, regardless if the skill was interrupted or not.
stsound – Controls what client sound is played when the skill is used, based on the client starting function (see the “Sound” field in sounds.txt)
stsoundclass – Controls what client sound is played when the skill is used by the skill’s assigned class (See “charclass” field), based on the client starting function (see the “Sound” field in sounds.txt). If the unit using the skill is not the same class as the “charclass” value for the skill, then this sound will not play.
stsounddelay – Boolean Field. If equals 1, then use the weapon’s hit class to determine the delay in frames (where 25 frames = 1 second) before playing the skill’s start sound. If equals 0, then the skill’s start sound will play immediately.
Hit Class | Sound Used | Sound Delay |
None | None | 0 frames |
Hand-To-Hand | weapon_punch_1 | 6 frames |
One Handed Swing Small | weapon_1hs_small_1 | 6 frames |
One Handed Swing Large | weapon_1hs_large_1 | 6 frames |
Two Handed Swing Small | weapon_2hs_small_1 | 8 frames |
Two Handed Swing Large | weapon_2hs_large_1 | 8 frames |
One Handed Thrust | weapon_1ht_1 | 6 frames |
Two Handed Thrust | weapon_2ht_1 | 6 frames |
Club | weapon_1hs_large_1 | 6 frames |
Staff | weapon_staff_1 | 6 frames |
Bow | None | 0 frames |
Crossbow | None | 0 frames |
Claw | None | 0 frames |
weaponsnd – Boolean Field. If equals 1, then play the weapon’s hit sound when hitting an enemy with this skill. The sound chosen is based on the weapon’s hit class. Also use the sound delay based on the weapon’s hit class to determine the delay in frames (where 25 frames = 1 second) before playing the weapon hit sound (See “stsounddelay” for the types of hit class sounds and delays used). If equals 0, then do not play the weapon hit sound when hitting an enemy with the skill attack.
dosound – Controls the sound for the skill each time the Client Do function is used (see the “Sound” field from sounds.txt)
dosound a & dosound b – Used as a possible parameter for playing additional sounds based on the Client Do function used (see the “Sound” field in sounds.txt)
tgtoverlay – Used as a possible parameter for adding an Overlay on the target unit, based on the Client Do function used (see the “overlay” field in Overlay.txt)
tgtsound – Used as a possible parameter for playing a sound located on the target unit, based on the Client Do function used (see the “Sound” field in sounds.txt)
prgoverlay – Used as a possible parameter for adding an Overlay on the caster unit for progressive charge-up skill functions, based on the Client Do function used and how many progressive charges the caster unit has (see the “overlay” field in Overlay.txt)
prgsound – Used as a possible parameter for playing a sound when using the skill for progressive charge-up skill functions, based on the Client Do function used and how many progressive charges the caster unit has (see the “Sound” field in sounds.txt)
castoverlay – Used as a possible parameter for adding an Overlay on the caster unit when using the skill, based on the Client Start/Do function used (see the “overlay” field in Overlay.txt)
cltoverlaya & cltoverlayb – Used as a possible parameter for adding additional Overlays on the caster unit, based on the Client Start/Do function used (see the “overlay” field in Overlay.txt)
cltstfunc – Client Start function. This controls how the skill works when it is starting to cast, on the client side. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | StartAttack – Check that the weapon is not a “Missile Potion” item type and if the player has enough ammunition if it is a ranged weapon | |
2 | StartThrow – Check that the player has enough ammunition | |
3 | StartUnsummon – Check that the target is a monster owned by the player and that the monster’s Pet Type has “unsummon” enabled (See pettype.txt) | |
4 | StartLeftAttack – Return true | |
5 | AssStartPsychicHammer – Check that the target is a valid player or monster | |
6 | calc1 | AssStartDragonClaw – Validate that the target is a proper enemy, and use the skill’s “calc1” field to save the number of kicks to be used by the skill |
7 | aurastate | AssStartCloakOfShadows – Check that the player does not already have the state |
8 | prgoverlay prgsound seqinput | AssStartBladeFury – Add the overlay and sound if the player does not have the “inferno” state. If the player does not have the “inferno” state, then add it. Otherwise set the player’s animation sequence frame. |
9 | Param4 | AssStartDragonTail – Adjust the player’s attack speed using the skill’s parameter |
10 | AssStartDragonFlight – Validate that the target is an enemy monster or player | |
11 | AmaStartCheckQuantity – Check that the player has enough ammunition for the weapon | |
12 | AmaStartJab – Validate the skill and prepare to track the max targets to attack | |
13 | aurarangecalc calc1 calc3 | AmaStartStrafe – Use the skill’s calculation fields to track the minimum and maximum number of shots. Use the skill’s “aurarangecalc” value to count nearby valid targets. Have the caster unit face the first valid target found. |
14 | calc1 | AmaStartFend – Find at least an initial valid target and prepare to track the max targets to attack |
15 | prgoverlay prgsound | SorStartInferno – Add the overlay and sound if the player does not have the “inferno” state. If the player does not have the “inferno” state, then add it. Otherwise set the player’s animation sequence frame. |
16 | aurarangecalc | SorStartTelekinesis – Check the range of the skill using the “aurarangecalc” value and ensure there is a valid monster or player to target in the area |
17 | SorStartHydra – Check for a valid area and ensure that the skill cannot be used in town | |
18 | cltmissilec | NecStartCurse – Validate and launch the client missile |
19 | cltmissilec | NecStartTeeth – Validate and create the missile to launch in a direction based on the cast position |
20 | NecStartRaiseSkeleton – Check that the target corpse is valid | |
21 | NecStartCExplosion – Check that there is a valid enemy corpse | |
22 | NecStartBonePrison – Check for a valid area and ensure that the skill cannot be used in town | |
23 | NecStartIronGolem – Check that the target item on the ground is valid and that it is identified | |
24 | cltmissilea cltmissileb cltmissilec | NecStartRevive – Validate that the target monster can be revived. Based on the monster’s “OverlayHeight” value (See monstats2.txt), create 1 of the 3 client missiles in a random direction. If the monster’s “OverlayHeight” value equals 1, then create “cltmissileb”. If the monster’s “OverlayHeight” value equals 3, then create “cltmissilec”. |
25 | dosound aParam1 | 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 | calc1calc2 | MonStartMosquito – Validate the target enemy. Use the “calc1” and “calc2” fields as min and max values to randomly select a value to control a loop count, and store that loop count as a parameter for the skill function. |
43 | cltmissilea | MonStartCurse – Validate and launch the client missile |
44 | MonStartHellMeteor – Create the following missiles: “hellmeteordown”, “hellmeteorball”, “hellmeteorup”, “hellmeteorball”, “hellmeteorlaunch1”, “hellmeteorlaunch2” | |
45 | aurastate cltoverlaya cltoverlayb | DruStartWereWolf – Add the “cltoverlayb” overlay to the caster unit if the unit has the “aurastate” state. Otherwise, add the “cltoverlaya” overlay to the caster unit. |
46 | aurastate aurastat1 cltmissilea prgsound | MonStartBaalTaunt – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile. Create the “baal taunt control” missile. Play the “prgsound” sound. |
47 | aurastate aurastat1 cltcalc1 cltmissilea cltmissileb cltmissilec | MonStartCatapultDropMissile – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Create the missile and use the “cltcalc1” value to set the missile’s fall rate. |
48 | cltmissilea | MonStartTeleport2 – Create the missile at the target location |
49 | cltmissilea cltmissileb cltcalc1 | MonStartVines – Create the “cltmissilea” missile. Use the “cltcalc1” value to control the number of created “cltmissileb” missiles. |
50 | MonStartDeathSentry – Validate the target enemy and store the target unit’s location for the skill function | |
51 | sMonStartFenrisRage – Validate the target enemy corpse. Store the target unit’s location and unit class for the skill function. | |
52 | calc2 | MonStartInfernoSentry – Add the “inferno” state to the caster unit if it is not already added. Use the “calc1” field to control the animation frame tick and store the value for the skill function. |
53 | calc1 | AmaStartFend2 – Find at least an initial valid target and track the max targets to attack using the “calc1” value. Have the caster unit face the target unit. |
cltdofunc – Client Do function. This controls how the skill works when it finishes being cast, on the client side. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | DoAttack – If this is a ranged attack, then launch the client missile. Otherwise, apply damage to the target. | |
2 | DoThrow – If the weapon is a “Missile Potion” item type then launch a missile using the lob function. Otherwise, launch a missile with the normal linear function. | |
3 | AssDoPsychicHammer – Validate the “AssStartPsychicHammer” function | |
4 | AssDoDragonClaw – Check the number of attacks. Roll back the animation by 100%. | |
5 | prgcalc1 prgcalc2 prgcalc3 aurarangecalc aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssDoShockField – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Get the number of missiles using the “progcalc#” values, based on the number of progressive charges. Get the range by using the “aurarangecalc” field. Create the calculated number of missiles using the lob function. |
6 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssDoBladeFury – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Get the number of missiles using the “progcalc#” values, based on the number of progressive charges. Every periodic delay create a client missile and set the Z position to 15. If the caster unit has the “inferno” state, then repeat the sequence do frame. |
7 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssDoDragonTail – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Create the client missile and set the caster unit’s mode event. |
8 | aurarangecalc cltmissilea cltmissileb | AssDoMindblast – Create the “cltmissilea” missile at the target location. Use the “aurarangecalc” field to calculate the area radius value of the missile. Set the missile’s spawn class to “cltmissileb”. |
9 | prgcalc1 prgcalc2 prgcalc3 aurarangecalc aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssDoMissileDisc – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Get the number of missiles using the “progcalc#” values, based on the number of progressive charges. Get the radius by using the “aurarangecalc” field. Create a ring of client missiles where the number of missile depends on the size of the radius value. |
10 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssClawsOfThunderLvl2 – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Create the client missile where its velocity is calculated based on the skill level instead of the missile level. |
11 | prgcalc1 prgcalc2 prgcalc3 aurarangecalc aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssClawsOfThunderLvl3 – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Get the number of missiles using the “progcalc#” values, based on the number of progressive charges. Use the “aurarangecalc” field to calculate the number of missiles. Create the client missiles using random pattern directions. |
12 | prgoverlay prgsound aurastate aurastat1 | AssTigerStrike – Based on the “progressive” flag, if the caster unit has the “aurastate” state, or if the “aurastat1” field value is greater than 0, determine whether to add the overlay and sound on the caster unit. If the caster unit has progressive charges, then increase the index of the overlay and the sound by 1 per charge and add those overlay and sounds instead. |
13 | prgoverlay prgsound aurastate aurastat1 | AssCobraStrike – Based on the “progressive” flag, if the caster unit has the “aurastate” state, or if the “aurastat1” field value is greater than 0, determine whether to add the overlay and sound on the target unit. If the caster unit has progressive charges, then increase the index of the overlay and the sound by 1 per charge and add those overlay and sounds instead. |
14 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssRoyalStrikeMeteorLvl1 – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Create the selected client missile at the target location. |
15 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AssRoyalStrikeChaosIce – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Get the number of missiles using the “progcalc#” values, based on the number of progressive charges. Create the number of selected client missiles using randomized directions. |
16 | dosound a dosound b | AmaDoJab – On the frame event of type “Sound”, if the caster unit is a player then play the “dosound a” sound, or if the caster unit is a monster than play the “dosound b” sound |
17 | cltmissilea cltmissileb calc1 calc2 calc5 | AmaDoMultipleShot – If the weapon class is not equal to a “bow” then use “cltmissileb”, otherwise use “cltmissilea”. Use the “calc1” value to determine the number of missiles to create. Use the “calc2” value to determine the activation frame of the missiles. Create the missiles. Use the “calc5” value to calculate Guided Arrow synergy. |
18 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | AmaDoGuidedArrow – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Create the selected client missile with flags of either following a target or going to a location to be retargeted later. |
19 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | AmaDoChargedStrike – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Use the “calc1” value to determine the number of missiles to create. Create the missiles that move in a randomized path towards the direction. |
20 | aurarangecalc cltmissilea cltmissileb Param6 | AmaDoStrafe – Use “aurarangecalc” to determine the skill range. The max targets and current target are controlled by a saved parameter. If the weapon class is not equal to a “bow” then use “cltmissileb”, otherwise use “cltmissilea”. Use the “Param6” value to determine the percentage of animation frames to rollback. Find the next target to attack. Create a client missile, making the caster unit face the direction, and update the target count parameter. |
21 | Param2 | AmaDoFend – Use the weapon range to determine the skill range. Find the next valid target to attack and then update the maximum targets to attack next time. Use the “Param2” value to determine the percentage of animation frames to rollback. Based on the hit class, determine what weapon sound to play. |
22 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 calc2 | AmaDoLightningStrike – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Use the “calc1” value to determine the range of the missile to find the next target. Use the “calc2” value to determine the maximum number of chain hits for the missile. Create the missile targeting the target unit. |
23 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | SorDoChargedBolt – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Use the “calc1” value to determine the number of missiles to create. Create the missiles that move in a randomized path towards the direction. |
24 | cltmissilea cltmissileb calc1 | SorDoInferno – Randomly select between either “cltmissilea” or “cltmissileb”. Use the “calc1” value to determine the range of the missile. Create the client missile and adjust the caster unit’s animation frames. If the caster unit still has the “inferno” state, then repeat the animation do frame. |
25 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec cltcalc1 | SorDoFrostNova – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Use the “cltcalc1” value to determine the additional velocity to add to the missiles created. Create a ring of missiles. |
26 | cltmissilea calc1 | SorDoFirewall – Validate the target location. Validate that the missile create has a missile linked in its “SubMissile1” field (see Missiles.txt). Use the “calc1” value to determine the maximum number of fire wall spawning missiles. Create 2 of the “cltmissilea” missiles thar are launched in opposite directions. Create 1 of the “cltmissilea” missile’s sub missile. |
27 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec cltcalc1 | SorDoChainLightning – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Use the “calc1” value to determine the maximum number of chain hits for the missile. Create the missile targeting the target unit and update the number of chain hits in a parameter. |
28 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | SorDoMeteor – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Validate that the target location is valid and then create the missile. |
29 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | SorDoFrozenOrb – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch the selected client missile. |
30 | aurarangecalc cltmissilea | NecDoCurse – Use “aurarangecalc” to determine the radius of the skill and always subtract a value of 3 (Min value = 2). Create the client missile at the cursor location and also create a light at the location with RGB values equal to 255, 0, 0. |
31 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | NecDoRaiseSkeleton – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch the selected client missile facing the directions saved in the parameters. |
32 | cltmissilea cltmissileb cltmissilec tgtsound | NecDoCExplosion – Create “cltmissilea” at the target location facing a random direction. If the target monster is “small” then spawn 1 “cltmissilea”. If the target monster is “large” then spawn 3 “cltmissilea” missiles in a radius value of 3, and if that missile has a “SubMissile1” value, then also spawn 4 sub missiles in a radius value of 2. If the target monster is neither “small” nor “large”, then spawn 2 “cltmissilea” missiles in a radius value of 2, and spawn 3 of its sub missiles in a radius value of 1. (See Missiles.txt and monstats2.txt). Spawn 1 “cltmissileb” normally. Spawn 1 “cltmissilec” missile with its level equal to 2. If there is no target enemy, then play the “tgtsound” sound. |
33 | cltmissilea cltmissileb cltmissilec tgtsound | NecDoPoisonExplosion – Create “cltmissilea” at the target location facing a random direction. Spawn an inner and outer radial ring of “cltmissileb” missiles, based on the missile’s “Param1” and “Param2” values (See Missiles.txt). Spawn 1 “cltmissilec” missile with its level equal to 2. If there is no target enemy, then play the “tgtsound” sound. |
34 | cltmissilea cltcalc1 | PalDoSacrifice – Validate the target enemy and spawn the client missile in a random direction, where the missile can receive additional range that is randomly selected between 0 and the “cltcalc1” value. |
35 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | PalDoBlessedHammer – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch the selected client missile with a spiral path. |
36 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | PalDoFistOfHeavens – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch the selected client missile and save the target unit type and ID as parameters. |
37 | PalDoCharge – Setup a sequence of frames to play the animation. If the caster unit is a player or monster, then play its attack sound at the sound frame event. Set the unit’s animation and frame length and order the unit to move to a location or the previously targeted unit. If the player does not need to move, then attack the target or a nearby target. | |
38 | BarDoFindHeart – If the target is valid, then set the mode event and create blood missiles from the monster (see “bleed” in monstats2.txt) | |
39 | BarDoDoubleSwing – If the caster unit’s animation sequence frame is less than 6, then play the weapon sound and have the character turn to face the target. Otherwise, have the caster unit find a proper target and face that target. | |
40 | BarDoFindItem – If the target is valid (see “soft” monstats2.txt), then set the mode event and create blood missiles from the monster (see “bleed” in monstats2.txt) | |
41 | cltmissilea cltmissileb cltmissilec | BarDoGrimWard – If the target is valid (see “soft” monstats2.txt) and there is valid space at that target’s location, then create one of the following missiles. By default, use the “cltmissilea” missile. If the monster is large (see “large” in monstats2.txt), then use the “cltmissilec” missile. If the monster is small (see “large” in monstats2.txt), then use the “cltmissileb” missile. Also, always create a “corpseexplosion” missile. |
42 | BarDoDoubleThrow – Check that the attacking weapon is throwable and shoot a missile based on the weapon’s missile class. If the weapon’s item type is a “Missile Potion” (see ItemTypes.txt), then use the lobbing missile launch function, otherwise use the normal linear missile launch function. | |
43 | BarDoLeap – Check different flags and parameters to determine when to stop leaping. There are special cases to handle the “sandleadper1” and “ancientbarb1” monsters. | |
44 | BarDoLeapAttack – Check different flags and parameters to determine when to stop leaping. After leaping, if there is a valid target, then attack the target. | |
45 | BarDoWhirlwind – Continue to whirlwind based until at reaching the target location or if the skill flags have been changed. | |
46 | MonDoMagottEgg – Set the unit’s animation sequence rate to 0 | |
47 | MonDoMaggotDown – When the unit’s animation frame reaches 0, then set the unit’s animation sequence rate to 0 | |
48 | cltmissilea | MonDoAndariel – Based on the unit’s current direction, launch the missile in one of 8 directions |
49 | calc1calc2 | MonDoSwarmMove – Set the unit’s animation sequence start and stop frames based on the skill’s calculation values |
50 | MonDoNest – Remove the monster collision at the target location | |
51 | cltmissilea | MonDoGargoyleTrap – Launch the missile in one of 4 directions. |
52 | MonDoSubmerge – This equals the “MonDoMaggotDown” function (Code = 47) | |
53 | aurarangecalc cltmissilea cltcalc1 | MonDoFetishAura – Create a disc of missiles where “aurarangecalc” controls the disc radius size (Minimum value = 1) and “cltcalc1” controls the density of missiles created (higher value means less missiles). |
54 | cltmissilea cltmissileb calc1 | sMonDoFetishInferno – Randomly create 2 of either “cltmissilea” or “cltmissileb” missiles. Use “calc1” to determine the range of the missile if it is greater than 0, otherwise use the missile’s “Param2” value (See Missiles.txt). |
55 | cltmissilea calc1 calc2 | MonDoPrimePoisonNova – Creates 8 missiles in different directions using a velocity set by the missile’s “Param1” value (See Missiles.txt). Then uses “calc2” to control how many additional missiles to create using a velocity set by the missile’s “Param2” value. Uses “calc1” to set the missile’s subloops. |
56 | cltmissilea cltcalc1 calc1 | MonDoDiabLight – Create the missile at an interval controlled by the “cltcalc1” value. Use “calc1” to determine the range of the missile if it is greater than 0, otherwise use the missile’s “Param2” value (See Missiles.txt). Also use the monster’s inferno values to set the animation frames (see monstats2.txt) |
57 | cltmissilea calc1 | MonDoFingerMageSpider – Create the missile with its subloops controlled by “calc1” and have that missile positioned and face the caster unit |
58 | cltmissilea calc1 | MonDiabWallMaker – Create a number of missiles controlled by the “calc1” value where their pathing and direction is randomized |
59 | calc1 Param1 Param2 Param3 Param4 Param5 Param6 | MonDoDiabRun – Modifies the caster unit’s movement speed by a percentage controlled by “calc1” and controls its animations to adhere to this run mode. The 6 parameter values controls the run animation’s stop frame length, stop event frame, start event frame, start frame length, loop repeat event frame, loop frame length, and loop start event frame. |
60 | cltmissilea calc1 | MonDoDesertTurret – Fire a number of missiles controlled by the “calc1” value that are directed in 8 possible directions |
61 | cltmissilea | MonDoArcaneTower – Fire missiles in all possible directions with particles |
62 | Param1 | MonDoMosquito – Check that the caster unit cannot melee the target and then repeat the animation for a number of loops saved in a parameter, where “Param1” controls the frame to repeat the animation. |
63 | cltmissilea cltmissileb | MonDoRegurgitatorEat – Create 1 “cltmissilea” missile in a random direction. Create 5 “cltmissileb” missiles in a radius value of 4. |
64 | MonDoQueenDeath – Repeatedly loop the animation using hardcoded frame counts, and then set the unit to Dead mode when finished | |
65 | aurarangecalc cltmissileb | MonDoCurseRadius – Find a valid target and create a “cursecenter” missile. Then create the “cltmissileb” missile with a radius controlled by “aurarangecalc” |
66 | MonDoHireFireMissile – Use the lob launch function or normal linear launch function when creating the missile | |
67 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | DruDoFirestorm – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch a number of selected client missiles, controlled by the “calc1” value. These missiles has randomized directions and pathing, and they have an increased animation rate. |
68 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | DruDoTwister – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch a number of selected client missiles, controlled by the “calc1” value. These missiles start with a linear direction and then change to randomized pathing. |
69 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | DruDoTornado – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch a number of selected client missiles, controlled by the “calc1” value. These missiles start with a linear direction and then change to randomized pathing, and they have an increased animation rate. |
70 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | MonDoWakeofFire – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch the selected missile in the opposite direction. |
71 | cltmissilea cltmissileb cltcalc1 cltcalc2 | MonDoInferno – Randomly create 1 of either “cltmissilea” or “cltmissileb” missiles. Use “cltcalc1” to control the missile’s Z offset. Use “cltcalc2” to control add to the missile’s range, which is also determined by the missile’s “Param2” value (See Missiles.txt) |
72 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec cltcalc1 | MonDoImpFireBall – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch the missile to the target location. Use the “cltcalc1” value to control the missile’s Z offset value. |
73 | cltmissileb | MonDoTeleport2 – Create the missile at the caster unit’s location with its skill level set to 1 |
74 | cltmissileb | MonDoTeleport3 – Create the missile at the caster unit’s location with its skill level set to 1. Also create a particle and add it to the target unit. |
75 | Param1 Param2 Param3 Param4 | MonDoSiegeBeastStomp – Shake the camera screen, where the parameters control the magnitude, shake build up duration, shake loop duration, and shake fade duration (controlled in frames where 25 frames = 1 second). |
76 | cltmissilea cltmissileb calc1 | MonDoDeathMauler – Continuously create “cltmissileb” missiles as the trail missile’s using the missile’s “Param1” and “Param2” values (See Missiles.txt) to control the frequency and range/frames of the missile’s creation. Create the “cltmissilea” missile with an animation rate controlled by “calc1”, set this missile to not draw, and update its range and activation frame delay based on the “cltmissileb” missile’s “Param1” and “Param2” values. |
77 | cltmissilea cltmissileb cltcalc1 calc1 | MonDoInfernoSentry – Randomly create 1 of either “cltmissilea” or “cltmissileb” missiles. Use “cltcalc1” to control the missile’s Z offset. Use “calc1” to control the missile range duration. Repeat the Do frame while the caster unit has the “inferno” state. |
78 | cltmissilea cltmissileb prgsound | MonDoDeathSentry – Create the “cltmissilea” missile at the target location and play the “prgsound” sound. Then create the “cltmissileb” missile at the target location. |
79 | cltmissilea | MonDoFenrisRage – Create the “cltmissilea” missile at the target location |
80 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 calc2 | MonDoBaalInferno – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Create a number of the selected missiles where “calc1” controls the number of missiles created, and “calc2” controls the range duration of the missiles. Repeat the Do frame while the caster unit has the “inferno” state. |
81 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec | MonDoBaalCold – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Launch the selected missile to the target location. |
82 | Param5 Param6 | MonStartBaalCExplode – Use “Param5” and “Param6” to calculate the baseline and increase per skill level change in the radius to find a target. Search for valid dead targets and create a “baalcorpseexplodedelay” missile for each target found. |
83 | prgcalc1 prgcalc2 prgcalc3 aurastate aurastat1 cltmissilea cltmissileb cltmissilec aurarangecalc Param2 | ApplyRoyalStrikeLvl2 – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Get the number of missiles using the “progcalc#” values, based on the number of progressive charges, and if they are equal to or less than 0, then use the “aurarangecalc” value instead. Create the missile, using the “Param2” value to control the number of chain hits that the missile bounces. |
84 | cltmissilea prgoverlay | SorDoThunderStorm – Launch the missile at the target’s position, with a starting Z position equal to 280 and a starting velocity equal to -40. Also add the overlay to the target unit. |
85 | ItemDoOpenWounds – Create a blood missile from the unit every 5 frames (see “bleed” in monstats2.txt) | |
86 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec aurarangecalc | PalDoSanctuary – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Use the “aurarangecalc” value to determine the radius to randomly create missiles and also the number of missiles to create. |
87 | aurastate aurastat1 cltmissilea cltmissileb cltmissilec cltcalc1 cltcalc2 cltcalc3 | SorApplyShiverArmor – Based on the “progressive” flag, the “aurastate” field, or the “aurastat1” field, validate the “cltmissilea” missile or use the other missiles based on the “aurastat1” value. Create the selected missile using the lob function. Use “cltcalc1” to control the delay between creating missiles. Use “cltcalc2” to control the radius to create the missile. Use “cltcalc3” to control the vertical height of the missile when it is created. |
88 | MonApplyAttached – Attach the source unit on the caster unit. | |
89 | cltmissilec cltmissiled cltcalc1 | MonDoVineBeast – Validate that the caster unit is a monster type. Validate that the skill used is the “Vine Attack” skill and get its stats, otherwise use a default level 1 “Vine Attack” skill. Use the “cltcalc1” value to determine the frame delay between creating missiles and also the minimum distance between missiles created. If the current mode of the unit is “Walk” then randomly choose between creating the “cltmissilec” or “cltmissiled” missile. If the current mode of the unit is “Neutral” then kill any existing old missile and create the “cltmissiled”. |
90 | cltmissilea cltmissileb cltmissilec prgsound cltcalc1 cltcalc2 | DruDoHurricane – Play the “prgsound” sound and stop playing it if the caster unit is in town. Use “cltcalc1” to how many sets of 3 missiles to create at a time, at a random height. Randomly choose between one of the 3 missiles to create each time, and use “cltcalc2” to control the maximum Z height position of the missile. |
91 | cltmissilea cltmissileb | DruDoVolcano – Create both missiles at the valid target position |
92 | cltmissilea cltmissileb cltcalc1 cltcalc2 cltcalc3 aurarangecalc | DruDoArmageddon – Create both missiles with a negative fall rate and slide rate. Use the “aurarangecalc” value to control a radius value, but this value is not used. Use the “cltcalc1” value to control the frame count for determining the starting height and offset. Use the “cltcalc2” value to control the missile fall rate per frame. Use the “cltcalc3” value to control the missile slide rate per frame. |
93 | cltmissileb | MonDoCorpseCycler – Validate the target unit, and create the “cltmissileb” missile on the target and 3 blood missiles (see “bleed” in monstats2.txt) |
94 | cltmissilea | MonDoDoomKnightMissile – Create the “cltmissilea” using either the lob function or the normal linear function, depending on the “lob” flag. Also select the missile or up to 3 index values higher, depending on the monster’s graphics variation for the “Special 3” component variation. |
95 | cltmissilea | MonDoNecroMageMissile – Create the “cltmissilea” using either the lob function or the normal linear function, depending on the “lob” flag. Also select the missile or up to 3 index values higher, depending on the monster’s graphics variation for the “Special 4” component variation. |
96 | aurarangecalc aurastate aurastat1 cltmissilea cltmissileb cltmissilec calc1 | SorDoChainLightning2 – Based on the “progressive” flag or the “aurastate” field, create the “cltmissilea” missile. Otherwise, use one of the 3 client missiles based on the “aurastat1” value. Create the missile and use the “calc1” value to set the number of chain hits. |
cltstopfunc – Client Stop function. This controls how the skill cleans up after ending. This uses a code value to call a function, affecting how certain fields are used.
Code | Parameters | Description |
0 | Do nothing | |
1 | SkillBarRemoveWhirlwind – Handles changing the collision and pathing of the caster, and also stops the whirlwind sound. |
cltprgfunc1 to (cltprgfunc3) – Controls which Client Do function is used when the skill is executed while having a progressive charge number equal to 1, 2, and 3, respectively. (uses “cltdofunc” values)
cltmissile – Used as a parameter for controlling what main missile is used for the client functions used (See “Missile” field in Missiles.txt)
cltmissilea (to cltmissiled) – Used as a parameter for controlling what secondary missile is used for the client functions used (See “Missile” field in Missiles.txt)
cltcalc1 (to cltcalc3) – Calculation Field. Use as a possible parameter for controlling values for the client functions.
warp – Boolean Field. If equals 1 and the skill uses a function that involves warping/teleporting, then check for a scene transition loading screen, if necessary. If equals 0, then ignore this.
immediate – Boolean Field. If equals 1 and the skill has a periodic function, then immediately perform the skill’s function when the periodic skill is activated. If equals 0, then wait until the skill’s first periodic delay before performing the skill’s function.
enhanceable – Boolean Field. If equals 1, then the skill will be included in the plus to all skills item modifier. If equals 0, then the skill will not be included in the plus to all skills item modifier.
attackrank – Controls the skill’s AI score value for determining what is the best target for the AI. The higher the value, then the more likely the AI will select a target with this skill equipped.
noammo – Boolean Field. If equals 1, then the skill will not check that weapon’s ammo when performing an attack. This relies on the “Shoots” field from the ItemType.txt file. If equals 0, then the weapon will consume its ammo when being used by the skill.
range – Determines how the unit uses the skill, which affects the weapon requirements and the type of attack used
Code | Description |
none | No restrictions to use the skill |
h2h | This is a melee skill, which requires a melee weapon |
rng | This is a ranged skill, which requires a ranged weapon |
both | This is both a melee and ranged skill, which can use either a melee or ranged weapon |
loc | This is a location based skill, which ignores the weapon equipped and instead uses the player’s location |
weapsel – If the unit can dual wield weapons, then this field will control how the weapons are used for the skill
Code | Description |
0 | Use the Left or Right Hand weapon |
1 | Use the Left Hand weapon |
2 | Use the Left and/or Right Hand weapon |
3 | Always use both weapons |
4 | Ignore the weapon used |
itypea1 (to itypea3) – Controls what Item Types are included, or allowed, when determining if this skill can be used (See the “Code” field from ItemTypes.txt)
etypea1 & etypea2 – Controls what Item Types are excluded, or not allowed, when determining if this skill can be used (See the “Code” field from ItemTypes.txt)
itypeb1 (to itypeb3) – Controls what alternate Item Types are included, or allowed, when determining if this skill can be used (See the “Code” field from ItemTypes.txt). This acts as a second set of Item Types to check.
etypeb1 & etypeb2 – Controls what alternate Item Types are excluded, or not allowed, when determining if this skill can be used (See the “Code” field from ItemTypes.txt). This acts as a second set of Item Types to check.
anim – Controls the animation mode that the player character will use when using this skill. Setting the mode to Sequence (SQ) will cause the player character to play a time controlled animation sequence, utilizing certain sequence fields.
Code | Description |
DT | Death |
NU | Neutral |
WL | Walk |
RN | Run |
GH | Get Hit |
TN | Town Neutral |
TW | Town Walk |
A1 | Attack 1 |
A2 | Attack 2 |
BL | Block |
SC | Cast |
TH | Throw |
KK | Kick |
S1 | Skill 1 |
S2 | Skill 2 |
S3 | Skill 3 |
S4 | Skill 4 |
DD | Dead |
SQ | Sequence |
KB | Knockback |
seqtrans – Uses the same inputs as the “anim” field. If the “anim” field equals SQ (Sequence) and this field equals SC (Cast), then the sequence animation speed can be modified by the faster cast rate stat modifier.
monanim – Controls the animation mode that the monster will use when using this skill. This is similar to the “anim” field except with monster units using the skill instead of player units.
Code | Description |
DT | Death |
NU | Neutral |
WL | Walk |
GH | Get Hit |
A1 | Attack 1 |
A2 | Attack 2 |
BL | block |
SC | Cast |
S1 | Skill 1 |
S2 | Skill 2 |
S3 | Skill 3 |
S4 | Skill 4 |
DD | Dead |
KB | Knockback |
xx | Sequence |
RN | Run |
seqnum – If the unit is a player and the “anim” used for the skill is a Sequence, then this field will control the index of which sequence animation to use. These sequences are specifically designed for certain skills, and each sequence has a set number of frames using certain animations.
Code | Description |
0(or empty) | Do nothing |
1 | Jab |
2 | Sacrifice |
3 | Chastise |
4 | Charge |
5 | Defiance |
6 | Inferno |
7 | Strafe |
8 | Impale |
9 | Fend |
10 | Whirlwind |
11 | Double Swing |
12 | Lightning |
13 | Leap |
14 | Leap Attack |
15 | Double Throw |
16 | Tiger Fist |
17 | Projection |
18 | Arctic Blast |
19 | Triple Kick |
20 | Dragon Breath |
21 | Dragon Flight |
22 | Druid Unmorph |
23 | Assassin Blade Fury |
seqinput – For skills that can repeat, this controls the number of frames to wait before the “Do” frame in the sequence. This acts as a delay in frames (25 Frames = 1 second) to wait within the sequence animation before it is allowed to be cast again or for looping back to the start of the sequence, such as for the Sorceress Inferno skill.
durability – Boolean Field. If equals 1 and when the player character ends an animation mode that was not Attack 1, Attack 2, or Throw, then check the quantity and durability of the player’s items to see if the valid weapons are out of ammo or are broken. If equals 0, then ignore this.
UseAttackRate – Boolean Field. If equals 1, then the current attack speed should be updated after using the skill, relative to the “attackrate” stat (See ItemStatCost.txt), and if the skill was an attacking skill. If equals 0, then the attack speed will not be updated after using the skill.
LineOfSight – Controls the skill’s collision filters for valid target locations when it is being cast
Code | Description |
0 | No collision filter |
1 | Missile Barrier |
2 | Player Path – Walls, no pathing, objects, doors, no player pathing |
3 | Player Monster – Monsters, Players |
4 | Player Flying – Missile barriers, doors |
5 | Radial Barrier – Missile barriers, doors, walls |
TargetableOnly – Boolean Field. If equals 1, then the skill will require a target unit in order to be used. If equals 0, then ignore this.
SearchEnemyXY – Boolean Field. If equals 1, then when the skill is cast on a target location, it will automatically search in different directions in the target area to find the first available enemy target. If equals 0, then ignore this. This field can be overridden if the “SearchEnemyNear” field is enabled.
SearchEnemyNear – Boolean Field. If equals 1, then when the skill is cast on a target location, it will automatically find the nearest enemy target. If equals 0, then ignore this.
SearchOpenXY – Boolean Field. If equals 1, then automatically search in a radius of size 7 in around the clicked target location to find an available unoccupied location to use the skill, testing for collision. If equals 0, then ignore this. This field can be overridden if the “SearchEnemyNear” or “SearchEnemyXY” field is enabled.
SelectProc – Uses a function to check that the target is a corpse with various parameters before validating the usage of the skill
Code | Description |
0 | Do nothing |
1 | CorpseExplode – Check that the target is a corpse |
2 | RaiseSkeleton – Check that the target is a monster corpse, and that the corpse was a unit that has a velocity (if the unit does not move, then the corpse cannot be used) |
3 | Revive – Use the RaiseSkeleton function (Code = 2) and that the monser has a switchable AI |
4 | HeartMonster – Check that the target is a monster corpse and that the monster has the “soft” flag enabled (see monstats2.txt) |
5 | ItemMonster – Check that the target is a monster corpse |
6 | WardMonster – Check that the target is a monster corpse and that the monster has the “soft” flag enabled (see monstats2.txt) |
TargetCorpse – Boolean Field. If equals 1, then the skill is allowed to target corpses. If equals 0, then skill cannot target corpses.
TargetPet – Boolean Field. If equals 1, then the skill is allowed to target pets (summons and mercenaries). If equals 0, then the skill cannot target pets.
TargetAlly – Boolean Field. If equals 1, then the skill is allowed to target ally units. If equals 0, then the skill cannot target ally units.
TargetItem – Boolean Field. If equals 1, then the skill is allowed to target items on the ground. If equals 0, then the skill cannot target items.
AttackNoMana – Boolean Field. If equals 1, then then when the caster does not have enough mana to cast the skill and attempts to use the skill, the caster will default to using the Attack skill. If equals 0, then attempting to use the skill without enough mana will do nothing.
TgtPlaceCheck – Boolean Field. If equals 1, then check that the target location is available for spawning a unit, testing collision. If equals 0, then ignore this. This is only used for skills that monsters use to spawn new units.
KeepCursorStateOnKill – Boolean Field. If equals 1, then the mouse click hold state will continue to stay active after killing a selected target. If equals 0, then after killing the target, the mouse click hold state will reset.
ContinueCastUnselected – Boolean Field. If equals 1, then while the mouse is held down and there is no more target selected, then the skill will continue being used at the mouse’s location. If equals 0, then while the mouse is held down and there is no more target selected, then the player character will cancel the skill and move to the mouse location.
ClearSelectedOnHold – Boolean Field. If equals 1, then when the mouse is held down, the target selection will be cleared. If equals 0, then ignore this.
ItemEffect – Uses a Server Do function (See “srvdofunc”) for handling how the skill is used when it is triggered by an item, on the server side.
ItemCltEffect – Uses a Client Do function (See “cltdofunc”) for handling how the skill is used when it is triggered by an item, on the client side.
ItemTgtDo – Boolean Field. If equals 1, then use the skill from the enemy target instead of the caster. If equals 0, then ignore this.
ItemTarget – Controls the targeting behavior of the skill when it is triggered by an item.
Code | Description |
0(or empty) | Default to targeting the attacker |
1 | Target the caster |
2 | Target a random location in a radius with a size of 20. Also tests collision. |
3 | Target a random nearby corpse |
4 | Target the attacker, and if that attacker is not found then target a previous attacker or the previous attacker’s location |
ItemUseRetrict – Boolean Field. If equals 1, then use the state restriction defined in the “restrict” field when being triggered by an item.
ItemCheckStart – Boolean Field. If equals 1, then use the skill’s Server Start function (See “srvstfunc”) when the skill is trigged by an item. If equals 0, then the skill’s Server Start function is ignored.
ItemCltCheckStart – Boolean Field. If equals 1, then when the skill is triggered by an item, and if the target is dead and the skill has a Client Start function (See “cltstfunc”), then add the “corpse_noselect” to the target. If equals 0, then ignore this.
ItemCastSound – Play a sound when the skill is used by an item event. Points to a “Sound” value in the sounds.txt file.
ItemCastOverlay – Add a cast overlay when the skill is used by an item event. Points to an “overlay” value in the Overlay.txt file.
skpoints – Controls the number of Skill Points needed to level up the skill
reqlevel – Minimum character level required to be allowed to spend Skill Points on this skill
maxlvl – Maximum base level for the skill from spending Skill Points. Skill levels can be increased beyond this through item modifiers.
reqstr – Minimum Strength attribute required to be allowed to spend Skill Points on this skill
reqdex – Minimum Dexterity attribute required to be allowed to spend Skill Points on this skill
reqint – Minimum Intelligence attribute required to be allowed to spend Skill Points on this skill
reqvit – Minimum Vitality attribute required to be allowed to spend Skill Points on this skill
reqskill1 (to reqskill3) – Points to a “skill” field to act as a prerequisite skill. The prerequisite skill must be least base level 1 before the player is allowed to spend Skill Points on this skill.
restrict – Controls how the skill is used when the unit has a restricted state (See the “restrict” field in states.txt)
Code | Description |
0 | None – The skill cannot be used when the unit has a restricted state |
1 | Any – The skill can be used in when the unit has any restricted state |
2 | State Only – The skill can only be used when the unit has a restricted state (See “State1” to “State3”) |
3 | Pop State – The skill can be used at any time but when used, it will remove the unit’s restrict states |
State1 (to State3) – Points to a “state” field from the states.txt file. Used as parameters for the “restrict” field to control what specific states will restrict the usage of the skill.
localdelay – Controls the Casting Delay duration for this skill after it is used (25 frames = 1 second)
globaldelay – Controls the Casting Delay duration for all other skills with Casting Delays after this skill is used (25 frames = 1 second)
leftskill – Boolean Field. If equals 1, then the skill will appear on the list of skills to assign for the Left Mouse Button. If equals 0, then the skill will not appear on the Left Mouse Button skill list.
rightskill – Boolean Field. If equals 1, then the skill will appear on the list of skills to assign for the Right Mouse Button. If equals 0, then the skill will not appear on the Right Mouse Button skill list.
repeat – Boolean Field. If equals 1 and the skill has no “anim” mode declared, then on the client side, the unit’s mode will repeat its current mode (this can also happen if the unit has the “inferno” state). If equals 0, then the unit will have its mode set to Neutral when starting to use the skill.
alwayshit – Boolean Field. If equals 1, then skills that rely on attack rating and defense will ignore those stats and will always hit enemies. If equals 0, then ignore this.
usemanaondo – Boolean Field. If equals 1, then the skill will consume mana on its do function instead of its start function. If equals 0, then the skill will consume mana on its start function, which is the general case for skills.
startmana – Controls the required amount of mana to start using the skill. This only works with certain “srvstfunc” functions such as SorStartInferno (Code = 11) or AssStartBladeFury (Code = 26).
minmana – Controls the minimum amount of mana to use the skill. This can control skills that reduce in mana cost per level to not fall below this amount.
manashift – This acts as a multiplicative modifier to control the precision of the mana cost after calculating the total mana cost with the “mana” and “lvlmana fields”. Mana is calculated in 256ths in code which equals 8 bits. This field acts as a bitwise shift value, which means it will modify the mana value by the power of 2. For example, if this value equals 5 then that means divide the mana value of 256ths by 2^5 = 32 (or multiply the mana by 32/256). A value equal to 8 means 256/256 which means that the mana of 256ths value is not shifted.
mana – Defines the base mana cost to use the skill at level 1
lvlmana – Defines the change in mana cost per skill level gained
interrupt – Boolean Field. If equals 1, then the casting the skill will be interruptible such as when the player is getting hit while casting a skill. If equals 0, then the skill should be uninterruptible.
InTown – Boolean Field. If equals 1, then the skill can be used while the unit is in town. If equals 0, then the skill cannot be used in town.
aura – Boolean Field. If equals 1, then the skill will be classified as an aura, which will make the skill execute its function periodically (using the “perdelay” field), based on the if the “aurastate” state is active. Aura skills will also override a preexisting state if that state matches the skill’s “aurastate” state. If equals 0, then ignore this.
periodic – Boolean Field. If equals 1, then the skill will execute its function periodically (using the “perdelay” field), based on the if the “aurastate” state is active. If equals 0, then ignore this.
perdelay – Calculation Field. Controls the periodic rate that the skill continuously executes its function. Minimum value equals 5. This field requires “periodic” or “aura” field to be enabled.
finishing – Boolean Field. If equals 1, then the skill will be classified as a finishing move, which can affect how progressive charges are consumed when using the skill and how the skill’s description tooltip is displayed. If equals 0, then ignore this.
prgchargestocast – Controls how many progressive charges are required to cast the skill
prgchargesconsumed – Controls how many progressive charges are consumed when the skill attack hits an enemy
passive – Boolean Field. If equals 1, then the skill will be treated as a passive, which can mean that the skill will not show up in the skill selection menu and will not run a server do function. If equals 0, then the skill is an active skill that can be used.
progressive – Boolean Field. If equals 1, then the skill will use the progressive calculations to act as a charge-up skill that will add charges. This is only used for certain skill functions and will generally require the usage of the “progcalc#” fields and the “aurastat#” fields. If equals 0, then ignore this.
scroll – Boolean Field. If equals 1, then the skill can appear as a scroll version in the skill selection UI, if the skill allows for the scroll mechanics and if the player has the skill’s scroll item in the inventory. If equals 0, then ignore this.
calc1 (to calc6) – Calculation Field. It is used as a possible parameter for skill functions or as a numeric input for other calculation fields.
Param1 (to Param12) – Integer Field. It is used as a possible parameter for skill functions or as a numeric input for other calculation fields.
InGame – Boolean Field. If equals 1, then the skill is enabled to be used in-game. If equals 0, then the skill will be disabled in-game.
ToHit – Baseline bonus Attack Rating that is added to the attack when using this skill at level 1
LevToHit – Additional bonus Attack Rating when using this skill, calculated per skill level
ToHitCalc – Calculation Field. Calculates the bonus Attack Rating when using the skill. This will override the “ToHit” and “LevToHit” fields if it is not blank.
ResultFlags – Controls different flags that can affect how the target reacts after being hit by the skill attack. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 5 (binary = 101) then that returns true for both the 4 (binary = 100) and 1 (binary = 1) bit field values.
Bit Field Value | Binary Equivalent Value | Description |
1 | 0000000000000001 | Hit |
2 | 0000000000000010 | Death |
4 | 0000000000000100 | Get Hit |
8 | 0000000000001000 | Knockback |
16 | 0000000000010000 | Block |
32 | 0000000000100000 | No Passive |
128 | 0000000010000000 | Dodge |
256 | 0000000100000000 | Avoid |
512 | 0000001000000000 | Evade |
4096 | 0001000000000000 | Ignore Friendly |
8192 | 0010000000000000 | Double Damage |
16384 | 0100000000000000 | Soft Hit |
32768 | 1000000000000000 | Two Hand-to-Hand Block |
HitFlags – Controls different flags that can affect the damage dealt when the target is hit by the skill. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values.
Bit Field Value | Binary Equivalent Value | Description |
1 | 00000000001 | Do not add physical damage |
2 | 00000000010 | Do not add any damage |
4 | 00000000100 | No Life Steal |
8 | 00000001000 | No Mana Steal |
16 | 00000010000 | No Stamina Steal |
32 | 00000100000 | Use Source Damage |
128 | 00010000000 | No Triggered Events |
256 | 00100000000 | Bypass Undead |
512 | 01000000000 | Bypass Demons |
1024 | 10000000000 | Bypass Beasts |
HitClass – Defines the skill’s damage routines when hitting, mainly used for determining hit sound effects and overlays. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values. There are binary masks to check between Base Hit Classes and Hit Class Layers, which can distinguish bewteen overlays or sounds are displayed.
Bit Field Value | Binary Equivalent Value | Description |
Base Hit Classes | ||
0 | 00000000 | None |
1 | 00000001 | Hand to Hand |
2 | 00000010 | One Handed Swing Small |
3 | 00000011 | One Handed Swing Large |
4 | 00000100 | Two Handed Swing Small |
5 | 00000101 | Two Handed Swing Large |
6 | 00000110 | One Handed Thrust |
7 | 00000111 | Two Handed Thrust |
8 | 00001000 | Club |
9 | 00001001 | Staff |
10 | 00001010 | Bow |
11 | 00001011 | Crossbow |
12 | 00001100 | Claw |
13 | 00001101 | Do Overlay |
Hit Class Layers | ||
16 | 00010000 | Double Layer |
32 | 00010100 | Fire Layer |
48 | 00011110 | Cold Layer |
64 | 01000000 | Lightning Layer |
80 | 01010000 | Poison Layer |
96 | 01100000 | Stun Layer |
112 | 01110000 | Bash Layer |
128 | 10000000 | Thorns Layer |
144 | 10010000 | Sanctuary Layer |
160 | 10100000 | Silent Voice Layer |
176 | 10110000 | Goo Layer |
Kick – Boolean Field. If equals 1, then a separate function is used to calculate the physical damage dealt by the skill, ignoring the following damage fields. This function will factor in the player character’s Strength and Dexterity attributes (or Monster’s level) to determine the baseline damage dealt. If equals 0, then ignore this.
HitShift – Controls the percentage modifier for the skill’s damage. This value cannot be less than 0 or greater than 8. This is calculated in 256ths.
Value | Description | Percentage |
8 | 256/256 | 100% |
7 | 128/256 | 50% |
6 | 64/256 | 25% |
5 | 32/256 | 12.5% |
4 | 16/256 | 6.25% |
3 | 8/256 | 3.125% |
2 | 4/256 | 1.5625% |
1 | 2/256 | .78125% |
0 | 1/256 | .390625% |
SrcDam – Controls the percentage modifier for how much weapon damage is transferred to the skill’s damage (Out of 128). For example, if the value equals 64, then 50% (64/128) of the weapon’s damage will be added to the skill’s damage.
MinDam – Minimum baseline physical damage dealt by the skill
MinLevDam1 (to MinLevDam5) – Controls the additional minimum physical damage dealt by the skill, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number.
MaxDam – Maximum baseline physical damage dealt by the skill
MaxLevDam1 (to MaxLevDam5) – Controls the additional maximum physical damage dealt by the skill, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number.
DmgSymPerCalc – Calculation Field. Determines the percentage increase to the physical damage dealt by the skill.
EType – Defines the type of elemental damage dealt by the skill. If this field is empty, then the related elemental fields below will not be used.
Code | Description |
(empty) | None |
fire | Fire |
ltng | Lightning |
mag | Magic |
cold | Cold (Uses “ELen”) |
pois | Poison (Uses “ELen”) |
life | Life Drain |
mana | Mana Drain |
stam | Stamina Drain |
stun | Stun (Uses “ELen”) |
rand | Randomly select between Fire, Lightning, Magic, Cold, or Poison |
burn | Burning (Uses “ELen”) |
frze | Freeze (Uses “ELen”) |
EMin – Minimum baseline elemental damage dealt by the skill
EMinLev1 (to EMinLev5) – Controls the additional minimum elemental damage dealt by the skill, calculated using the leveling formula between 5 level thresholds of the skill’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number.
EMax – Maximum baseline elemental damage dealt by the skill
EMaxLev1 (to EMaxLev5) – Controls the additional maximum elemental damage dealt by the skill, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field.
EDmgSymPerCalc – Calculation Field. Determines the percentage increase to the total elemental damage dealt by the skill.
ELen – The baseline elemental duration dealt by the skill. This is calculated in frame lengths where 25 Frames = 1 second. These fields only apply to appropriate elemental types with a duration.
ELevLen1 (to ELevLen3) – Controls the additional elemental duration added by the skill, calculated using the leveling formula between 3 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17 and beyond. These 3 level thresholds correlate to each field number. These fields only apply to appropriate elemental types with a duration.
ELenSymPerCalc – Calculation Field. Determines the percentage increase to the total elemental duration dealt by the skill.
aitype – Controls what the skill’s archetype for how the AI will handle using this skill. This mostly affects the mercenary AI and Shadow Warrior AI, but some types are used for general AI.
Code | Description |
0 | None |
1 | Buff |
2 | Debuff |
3 | Summon |
4 | Melee |
5 | Ranged |
6 | Aura |
7 | Teleport |
8 | Heal |
9 | Resurrect |
10 | Passive |
11 | Area Range |
12 | Steal |
13 | Move Attack |
aibonus – This is only used with the Shadow Master AI. This value is a flat integer rating that gets added to the AI’s parameters when deciding which skill is most likely to be used next. The higher this value, then the more likely this skill will be used by the AI.
cost mult – Multiplicative modifier of an item’s gold cost, only when the item has a stat modifier with this skill. This will affect the item’s buy, sell, and repair costs (Calculated in 1024ths).
cost add – Flat integer modification of an item’s gold cost, only when the item has a stat modifier with this skill. This will affect the item’s buy, sell, and repair costs. This is added after the “cost mult” has modified the costs.