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

显示提示 隐藏提示

Overview

This file controls the different functions for all missiles and their statistics. Missiles are projectiles used throughout the game for attacks, skills, and special effects.

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

Data Fields

Missile – Defines the unique name ID for the missile, which is how other files can reference the missile. The order of defined missiles will determine their ID numbers, so they should not be reordered.

pCltDoFunc – Uses an ID value to select a function for the missile’s behavior while active every frame on the client side. This is more about handling the local graphics while the missile is moving.

CodeParametersDescription
0(or empty) Do nothing
1 ProcessMissileMode – Perform the standard client missile move function. This is called in most of the other functions
2 ProcessBlood – Kill the missile if it goes off screen. Otherwise, set the number of duration frames for the missile to equal 128 and perform the standard missile move function.
3CltCalc1
CltSubMissile1
PoisonJavelin – Create a sub missile each frame that the current missile is moving where “CltCalc1” controls the number of subloops for the created sub missile.
4CltParam1
CltParam2
CltParam3
CltSubMissile1
PoisonCloud – Create multiple sub missiles randomly in a area where the parameters control the spawn rate, number of sub missiles to spawn per rate, and the spawn radius size, respectively.
5SubStart
SubStop
Firewall – Create an animation sequence for the missile where the difference of the “SubStart” and “SubStop” fields control the length of the sequence within the animation, and the game will randomly choose a frame within this sequence to loop back to.
6CltParam1
CltSubMissile1
CltSubMissile2
CltSubMissile3
FirewallMaker – Randomly create 1 of the 3 possible sub missiles, where the parameter controls the random chance that the sub missile spawns with no light.
7CltParam1ProcessGuidedArrow – Try to retarget the missile on a possible target unit where the parameter controls the rate at which the missile should attempt to retarget again.
8CltParam1
CltSubMissile1
InitSteps
LightningMaker – Attempt to create a sub missile where the parameter controls the number of subloops for the sub missile (minimum value equals 1). The sub missile is only created if the current missile’s has existed for greater than or equal to the “InitSteps” value.
9CltParam1
CltParam2
CltParam3
CltSubMissile1
CltSubMissile2
ProgSound
ProcessMeteorCenter – Create each sub missile where the parameters control the number of frames, the missile fall rate (Used to calculate the starting height), and the missile slide rate (used to calculated the starting position offset), respectively. Also attempt to play the “ProgSound” sound at 2 frames before the “CltParam1” frame count.
10CltParam1
CltParam2
CltParam3
CltSubMissile1
CltSubMissile2
ProcessMonBliz – Randomly create 1 of the 2 sub missiles in an area radius, where the parameters control the baseline radius size (affected by the missile level), the spawn frequency (minimum equals 3 frames, affected by the missile level), and the level divisor (affects the difference in value for the other fields per missile level). The “CltParam1” and “CltParam2” parameters also can control the missile fall distance and fall rate.
11 ProcessHoldLast – At the end of the missile’s animation, set it to dead and destroy its light. Otherwise, run the ProcessMissileMode function.
12CltParam1
CltParam2
ProcessScreenShake – Run the ProcessMissileMode function and also call the camera shaking function. The “CltParam1” field controls the camera shake magnitude, and the “CltParam2” field controls the camera shake duration.
13CltParam1
CltParam2
CltSubMissile1
CltSubMissile2
ProcessBlizzard – Randomly create 1 of the 2 missiles in a calculated area every duration. The radius and spawn frequency are controlled by the missile’s linked skill’s “calc1” and “calc2” fields. The “CltParam1” and “CltParam2” parameters control the sub missile fall distance and fall rate.
14CltParam3
CltParam4
CltParam5
FingerMageSpider2 – Shoot a missile that can be retargeted on a unit. The parameters control the retarget frequency, the retarget distance range, and the retarget position offset (minimum value equals 1), respectively.
15CltParam1
CltParam2
CltParam3
CltParam4
CltParam5
CltSubMissile1
FingerMageSpider – Shoot a missile that can be retargeted on a unit and can spawn a sub missile. The parameters control the number of frames to wait before spawning the sub missile (minimum value equals 1), the number of frames to wait before processing the missile, the retarget frequency, the retarget distance range, and the retarget position offset (minimum value equals 1), respectively.
16CltSubMissile1DiabWallMaker – Shoot a missile using the ProcessMissileMode function where every frame while moving it can create a sub missile that will have a random chance to spawn with no light
17CltParam1
CltSubMissile1
ProcessCurse – Shoot a missile that will create a disc of sub missiles every 3 frames after a specified frame duration controlled by the parameter. The radius and density of the disc of sub missile is controlled by the current missile’s radius value, which is given to the missile by the skill function.
18CltParam1
CltSubMissile1
InitSteps
SimpleTrailMaker – Shoot a missile that will create a sub missile after the “InitSteps” frame count, where the parameter controls the sub missile’s subloops. The sub missile will follow the same direction, offset, and path of the current missile.
19CltParam1
CltParam2
CltSubMissile1
ProcessFrozenOrb – Shoot a missile that will create sub missiles at a spawn rate and different directions. The “CltParam1” value controls the rate to spawn sub missiles, and the “CltParam2” value controls the direction index increment for looping through which direction the next created sub missile should fire towards.
20CltParam1
CltParam2 
ProcessFrozenOrbNova – Shoot a missile that will have a delay until processing and then will process its path at a specified rate. The “CltParam1” value controls the activation frame, and the “CltParam2” value controls the periodic rate to process the missile path
21CltParam1
CltSubMissile1
BRDeathControl – Create a sub missile after a periodic delay that can spawn in a random location in a radius controlled by the parameter. The periodic delay can be 25, 10, 3, or 15 frames, depending how many frames the current missile has lasted.
22CltParam1
CltSubMissile1
BRDeathLightning – Shoot a missile that will retarget to a randomized direction every periodic frame delay and will create sub missiles while moving.
23 ProcessDOELight – Run the ProcessMissileMode function and ensure that the missile lasts 500 frames if its frame count is less than 100
24CltParam1
CltParam2
CltParam3
CltSubMissile1
CltSubMissile2
ProcessCairnStones – Create multiple “CltSubMissile1” sub missiles in a radius controlled by “CltParam2” and a spawn frequency controlled by “CltParam3”, lasting a duration controlled by “CltParam1”. The “CltParam1” field also controls the start time for spawning more “CltSubMissile1” sub missiles and “CltSubMissile2” sub missiles every 8 frames if there are any of the “StoneAlpha” to “StoneTheta” objects in the room.
25CltParam1
CltParam2
CltParam3
CltSubMissile1
ProcessTowerMist – Shoot a missile that will spawn a sub missile randomly in a defined radius after a periodic delay
26CltParam1
CltParam2
CltParam3
CltSubMissile1
CltSubMissile2
SmithDeathControl – Create “CltSubMissile1” sub missile in a random position in a radius controlled by “CltParam3” where “CltParam1” controls its spawn rate. Create “CltSubMissile2” sub missile as a lobbing missile in a random position in the same radius where “CltParam2” controls its spawn rate. Also the “CltSubMissile2” sub missile’s level is controlled by the following function: 1 + RANDOM(0, 5)
27CltParam1
CltSubMissile1
SmithFirewallMaker – Create the sub missile every frame while moving. The parameter controls the delay until the current missile needs to retarget in a new direction
28CltParam1
CltSubMissile1
SmithDoNotDraw – Create 4 sub missiles in different directions after a delay that is controlled by the parameter.
29CltParam1
CltParam2
CltSubMissile1
CltSubMissile2
CltSubMissile3
ProgSound
ProcessAndyControl0 – Create “CltSubMissile1” after 10 Frames which subsequently will make its own “CltSubMissile1” where its “CltParam1”, “CltParam2” and “CltParam3” fields control the Z offset, Z Velocity Max, and Z Acceleration, respectively. Create “CltSubMissile2” randomly in a radius equal to 20 and at a periodic rate controlled by “CltParam1”. “CltParam2” controls the duration of the camera shake, which starts after 90 frames. Between frame 115 and 315, create “CltSubMissile3” randomly in a radius equal to 6 where its “CltParam1” and “CltParam2” values control the Z offset and Z velocity.
30CltParam1
CltParam2
CltParam3
CltSubMissile1
ProcessTowerChestSpawner – Start creating the sub missile periodically after an initial delay controlled by “CltParam1”. “CltParam2” controls the periodic rate to spawn the sub missile and “CltParam3” controls the radius size to spawn the sub missile randomly in an area.
31 ProcessHoradricStaff – This function does multiple hardcoded features. Shake the screen after 150 frames. Create 7 “horadriclight” missiles. After 165 frames, create the “horadriclightning” missile at a specific position, direction, and velocity. After 150 frames, create the “dust” missile every other frame.
32 ProcessRadDeath – Create a “radamenthandofgod” missile at an increasing rate based on the total frame count of the current missile
33 ProcessTaintedSun – Create a “taintedsunflash” missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Also add a “horadric_light” overlay on the altar object in the level room.
34 ProcessTaintedSunBall – The missile will change its path and velocities throughout its life cycle using different mods, to follow a crafted pattern
35 ProcessQueenDeath – Every 4 frames, create a “queendeathglob” using a lobbing function in a random position in a defined radius of size 12.
36 ProcessDurielDeath – Create a “explodingarrowexp” missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Also create a “durieldeathrock” missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Run a camera shake function.
37 ProcessDiabloAppears – Run a camera shake function and request to play the “monster_diablo_taunt_1” sound
38 ProcessHellForge – Create multiple lobbing “hffragment1” missiles at an increasing rate in random directions, based on the total frame count of the current missile. Run a camera shake function.
39 ProcessHFragment1 – If the missile has a source unit, then set the missile frame to 0 and run the ProcessMissileMode function
40 ProcessHFragment2 – Periodically create a “hfspirit1” missile after a randomized periodic delay.
41 ProcessSoul – Adjust the animation rate of the missile after certain key frames during the missile’s duration.
42Param1 Param2ProcessIzualDeath – Create the “izual mist loop” missile every frame in a random radius of size 10. Create a “izual lightning” missile every frame between the value of the “Param1” and “Param2” fields.
43 ProcessAttached – Attach the missile follow its source unit’s position. Kill the missile if the unit is dead.
44CltSubMissile1ProcessDistraction – Attach the missile follow its source unit’s position. Create a sub missile while moving.
45CltParam1
CltParam2
CltParam3
CltSubMissile1
ProcessDistractionFog – Create a number of sub missiles in an area at a defined rate. “CltParam1” controls the spawn rate, “CltParam2” controls the number of missiles to spawn per rate, and “CltParam3” controls the radius to randomly spawn the sub missiles.
46CltParam1
CltSubMissile1
ProcessTrailJav – Create 2 sub missiles per frame while moving with perpendicular directions and a defined number of subloops controlled by the parameter
47CltParam1
CltSubMissile1
CltSubMissile2
CltSubMissile3
ProgSound
ProcessMoltenBoulder – Play the “ProgSound” sound if the missile has a bounce value. Run the FirewallMaker function (Code = 6).
48CltSubMissile1
CltSubMissile2
ProcessEruption – Uses the linked skill’s “calc1” and “calc2” fields to get the spawn radius and spawn frequency for creating the 2 sub missiles. For “CltSubMissile1”, the missile is automatically set to dead mode when it is created.
49CltParam1
CltSubMissile1
ProcessVines – Periodically spawn the sub missile in the same direction as the current missile where the parameter controls the spawn rate
50CltParam1
CltParam2
CltParam3
CltParam4
CltParam5
CltSubMissile1
ProcessVolcano – Spawn a sub missile with the lob function at a defined spawn rate at certain frames within the current missile’s duration. “CltParam1” controls the periodic spawn rate, “CltParam2” controls the radius to spawn the sub missile, “CltParam3” controls the starting frame to begin spawning the sub missile, “CltParam4” controls the end frame to stop spawning the sub missile, and “CltParam5” controls the lob start value.
51CltParam1
CltParam2
CltParam3
CltParam4
CltSubMissile1
CltSubMissile2
ProgSound
ProcessRecycleDelay – Create “CltSubMissile1” at a frame controlled by “CltParam1” in a radius controlled by “CltParam4” and a spawn count controlled by “CltParam3”. Create “CltSubMissile2” sub missile at a frame controlled by “CltParam2” and also request to play the “ProgSound” at the same time.
52CltSubMissile1ProcessMakePerpMissiles – Create 2 of the same sub missile every frame while moving that face at perpendicular directions
53CltParam1
CltSubMissile1
ProcessTigerFury – Create a sub missile every frame while moving and then run the ProcessGuidedArrow function (Code = 7).
54 ProcessAnyaCenter – Create a “anya icemagic” missile every frame until frame 110. Create a decreasing number of “anyasteam1” missiles in a random position and velocity, every frame until frame 110. Perform a camera shake function. Create a “anyasteamvent” missile and a “anyasteam” missile randomly in a radius every 7 frames until frame 200.
55 ProcessAncientDeath – Create a “ancient death cloud” missile every 3 frames randomly in an area in a random direction
56CltParam1
CltParam2
CltParam3
CltSubMissile1
CltSubMissile2
CltSubMissile3
ProcessBaalTaunt – Randomly choose to spawn one of the 3 sub missiles where each of the parameters control the spawn rate for each of the sub missiles.
57CltSubMissile1ProcessBladeShieldCenter – Attach the current missile to the source unit and after a certain delay, create a sub missile every frame that moves in a missile spiral path
58Param1ProcessChaosIce – Randomly decide to change the path of the missile to a different direction
59 ProcessWorldstoneChip – If the current Z offset is too low or too high, then stop the missile
60 ProcessHurricane – Every 2 Frames change the missile path to a different direction
61 ProcessOverseerCtrl – Randomly create either the “catapult cold ball” missile or “catapult meteor ball” missile at an increasing spawn rate in a random position in a radius.
62 ProcessNihlathak – This function handles the missile visuals for Nihlathak’s death.·         Every frame has a random chance to create 2 of the following missiles in a random position: “nehlithakswoosh” “nehlithakdebris1”, “nehlithakdebris2”, “nehlithakdebris3”, nehlithakdebris4”.·         After frame 60, every 20 frames create a “brdeathlightningbolt” missile in a random direction.·         At frame 25, create a “nehlithakhole” and “nehlithakholelight” at the missile’s location.
63 ProcessNihlathakHurr – Update the path of the missile at every frame
64 ProcessBaalControl – This function handles the missile visuals for Baal’s death.·         Randomly spawn either a “baalfx spirit 1” missile or “baalfx spirit 2” missile at an increasing rate and in a random direction.·         At frame 450, create a “baalfx baal head appear” missile·         At frame 425, create a “baalfx baal head 1” missile·         At frame 375, create a “baalfx baal head 2” missile·         At frame 325, create a “baalfx baal head 3” missile·         After some time and when the “tyrael3” unit is found within the level, then randomly create either the “baalfx tyreal debris 1”, “baalfx tyreal debris 2”, or “baalfx tyreal debris 3” every frame for a specified duration
65 ProcessBaalSpirit – The missile will follow different modes that can change its path and direction, which are controlled by the ProcessBaalControl function (Code = 64)
66 ProcessWorldstoneShake – Attach the missile to the source unit. Call the camera shake function at random periodic delays. There is a small chance to randomly create either the “baalfx tyreal debris 1”, “baalfx tyreal debris 2”, or “baalfx tyreal debris 3” at periodic durations.
67CltParam1
CltParam2
CltParam3
CltSubMissile1
CltSubMissile2
CltSubMissile3
ProcessMissileDelayed – Create a sub missile at a specified frame at the source unit’s location. Each parameter controls the specific frame to spawn one of the sub missiles.
68CltParam1
CltSubMissile1
ProcessSucFireBall – Create a sub missile every frame while the current missile is moving where the number of sub loops for the sub missile is controlled by the parameter

pCltHitFunc – Uses an ID value to select a specialized function for the missile’s behavior when hitting something on the client side. This is more about handling the local graphics at the moment of missile collision.

CodeParametersDescription
0(or empty) Do nothing
1cHitPar1
cHitPar2
CltHitSubMissile1
HitExplodingArrow – Create a disc of sub missiles with a defined radius and missile count
2cHitPar1
cHitPar2
cHitPar3
CltHitSubMissile1
Param1
Param2
HitPlagueJavelin – Create an inner and outer disc of sub missiles with a specified density for each ring. Each sub missile will use its “Param1” and “Param2” fields to define their velocities
3CltHitSubMissile1
CltHitSubMissile2
CltHitSubMissile3
HitOilPotion – Create “CltHitSubMissile1” and then randomly create either “CltHitSubMissile2” or “CltHitSubMissile3”
4cHitPar1
CltHitSubMissile1
HitDoNova – Create a ring of sub missiles with a defined count
5 Do nothing
6 Do nothing
7 Do nothing
8 Do nothing
9cHitPar1
cHitPar2
cHitPar3
CltHitSubMissile1
ProgOverlay
HitHolyBolt – Determine whether to impact allies, how that damage is modified by the “dParam1” field based on the unit type hit, and if the missile should be killed on hitting an allowed unit. If impacting a unit then create a sub missile. When hitting an ally, create an overlay.
10ProgOverlayHitLightningOverlay – Add an overlay on the target unit
11 Do nothing
12cHitPar1
cHitPar2
CltHitSubMissile1
CltHitSubMissile2
CltHitSubMissile3
SHitCalc1
HitImmolationArrow – Create a ring of sub missiles with a defined radius and density count. Use “SHitCalc1” to control the range (duration) of the sub missile
13Param2HitGuidedArrow – Control the missile flags to either mark the target, go to the target, or run the missile retarget function
14CltHitSubMissile1
CltHitSubMissile2
HitFreezingArrow – Create the “CltHitSubMissile1” sub missile normally, and create “CltHitSubMissile2” sub missile in a random rotation
15 Do nothing
16cHitPar1

ProgOverlay
HitChainLightning – Create duplicate of this missile if there is a valid unit in range and there are still enough chain hits. Add an overlay on the target unit.
17 Do nothing
18cHitPar1
cHitPar2
cHitPar3
CltHitSubMissile1
CltHitSubMissile2
CltHitSubMissile3
CltHitSubMissile4
HitMeteorCenter – Create a ring of “CltHitSubMissile1” sub missiles where “cHitPar1” controls the density. Create a “CltHitSubMissile2” sub missile where the range is controlled by the linked skill’s “Param3” and “Param4” values from the skills.txt file, and also set the missile’s light radius value to 12. Create a ring of “CltHitSubMissile3” sub missiles where “cHitPar2” controls the density. Create a ring of “CltHitSubMissile4” sub missiles where “cHitPar3” controls the density.
19CltHitSubMissile1
CltHitSubMissile2
HitMonBliz – Randomly choose between creating one of the sub missiles
20 Do nothing
21 Do nothing
22 Do nothing
23 Do nothing
24CltHitSubMissile1HitBoneSpear – Create a sub missile at the target location
25cHitPar1
cHitPar2
CltHitSubMissile1
HitLightningFury – Create a sub missile per enemy found in an area, where the radius and the maximum number of possible missiles to spawn are controlled by the parameters
26cHitPar1
cHitPar2
CltHitSubMissile1
HitSubMissile1
HitFistOfHeavensDelay – If there is no “HitSubMissile1” sub missile, then do nothing. Otherwise, create a sub missile per enemy found in an area, where the radius and the maximum number of possible missiles to spawn are controlled by the parameters
27 nullptr
28cHitPar1
CltHitSubMissile1
Param1
HitMonsterRancidGasPotion – Create a disc of sub missiles with a specified density. Each sub missile will use its “Param1” field to define its velocity.
29cHitPar1
CltHitSubMissile1
HitGrimWard – Create a sub missile with a specified duration and force its direction to be the same as the missile that created it
30cHitPar1
CltHitSubMissile1
HitFrozenOrb – Create a disc of sub missiles with a specified density.
31 HitIceBreak – Create a missile with a forced animation rate value of 1, depending on the missile class used.·         If “Missile” equals “icebreaksmall” then create “icebreaksmallmelt”·         If “Missile” equals “icebreakmedium” then create “icebreaklargemelt”·         If “Missile” equals “icebreaklarge” then create “icebreaklargemelt”·         If “Missile” equals “catapult cold explosion” then create “icebreaklargemelt”
32cHitPar1
cHitPar2
CltHitSubMissile1
CltHitSubMissile2
ProgOverlay
HitFirehead – Create the “CltHitSubMissile1” sub missile at the target location and create a ring of “CltHitSubMissile2” sub missiles where the parameters control the ring radius and density. Also add an overlay on the source unit.
33cHitPar1
CltHitSubMissile1
HitFlyingRocks – Create a random number of sub missiles in a defined area radius controlled by “cHitPar1”
34 HitSmithDoNotDraw – Make the source unit invisibile
35 Do nothing
36Param1HitHellMeteor – Do nothing is colliding with a wall. Otherwise, create a disc of randomly selected missiles. The random missiles chosen are either “firewall”, “firesmall”, or “firemedium”. The missile’s “Param1” field controls the disc radius. The duration of each missile created is calculated with the following: Range = 25 + RANDOM(0, 25) – 12
37 HitRadHandOfGod – Create a random number of “radamentholybolt” missiles in random positions in a radius
38 HitTaintedSunFlash – Create a “taintedsunball” missile
39 HitQueenDeathGlob – Randomly create 1 of the next 2 missile’s defined in the missile.txt file after the missile that uses this function. For example, if “Missile” equals “queendeathglob” (ID = 354) and it uses this function, then randomly choose to create “queendeathsplat1” (ID = 355) or “queendeathsplat2” (ID = 356).
40 HitHealingBolt – Determine that the target is an allied unit
41 HitDurielDeathRock – Create 3 “durieldeathdebris” missiles randomly in a radius value of 6. Create a “durieldeathsmoke” missile at the previous missile’s location.
42 HitSoulStoneFragment1 – Create a “hffragment2” missile on the target unit
43 HitSoulStoneFragment2 – Create a “hffragment3” missile on the target unit, with 0 velocity, and a random delay between 10 to 45 frames.
44CltHitSubMissile1HitCreateNextMissile – Create a sub missile and set its direction to match the old missile’s path
45 Do nothing
46cHitPar1
cHitPar2
HitSubMissile1
HitCatapultChargedBall – Create a disc of sub missiles where the number of missiles created is controlled by the following formula: [“cHitPar1”] + [“cHitPar2”] * ([Missile current level] – 1)
47cHitPar1
cHitPar2
CltHitSubMissile1
CltHitSubMissile2
HitCatapultSpikeBag – Create “CltHitSubMissile1” sub missiles using the lob function where “cHitPar1” and “cHitPar2” are used to calculate the number of missiles in the following formula: MissileCount = [“cHitPar1”] + [“cHitPar2”] 8 ([Missile current level] – 1). The radius is this missile lob function is determined by doing MissileCount / 4. Also create “CltHitSubMissile2” at the location of the old missile.
48 HitCatapultCold – Create a “freezingarrowexp1” (ID = 88) missile in the center of the previous missile location. Also create 8 different “freezingarrowexp2” (ID = 89) missiles ejected in 8 different directions. Also create 8 different “catapult cold explosion” (ID = 417) missiles that have a randomized range and velocity and use the lob function to launch these missiles which an initial Z offset equal to 30.
49 Do nothing
50cHitPar1
cHitPar2
CltHitSubMissile1
CltHitSubMissile2
HitCatapultMeteor – Run the spray rock function to spawn different missiles. First create multiple “moltenboulder-flyingrocks” (ID = 456) missiles where the “cHitPar1” field controls the number of missiles to spawn and the targeted radius distance to spawn these missiles is equal to this value multiplied by 2. The “cHitPar2” field controls these missiles’ velocity. The “CltHitSubMissile1” sub missile is never spawned, but these “moltenboulder-flyingrocks” will not spawn unless this field has a value. Next create a ring of 18 “CltHitSubMissile2” sub missiles.
51cHitPar1
cHitPar2
CltHitSubMissile1
HitLightJav – Create a disc of the sub missiles where “cHitPar1” controls the number of sub missiles to spawn and “cHitPar2” acts as a Boolean Field where if enabled, it will cause these spawned sub missiles to have a randomized path.
52cHitPar1
cHitPar2
CltHitSubMissile1
CltHitSubMissile2
CltHitSubMissile3
HitMoltenBoulder – If hitting the target or a monster with the “large” flag enabled, then create “CltHitSubMissile1” sub missile. Also run the spray rock function to spawn different missiles. First create multiple “moltenboulder-flyingrocks” (ID = 456) missiles where the “cHitPar1” field controls the number of missiles to spawn and the targeted radius distance to spawn these missiles is equal to this value multiplied by 2. The “cHitPar2” field controls these missiles’ velocity. The “CltHitSubMissile2” sub missile is never spawned, but these “moltenboulder-flyingrocks” will not spawn unless this field has a value. Next create a ring of 18 “CltHitSubMissile3” sub missiles.
53cHitPar1
cHitPar2
cHitPar3
CltHitSubMissile1
CreateRollingBoulder – Create the sub missile that bounces, where “cHitPar1” controls the number of bounces, “cHitPar2” controls the bounce dampening percentage, and “cHitPar3” controls the number of steps, or the lifetime remaining in ticks (Minimum value equal to 1).
54CltHitSubMissile1HitVineTrail – Create the sub missile and force it to get the same direction as the previous missile
55CltHitSubMissile1
CltHitSubMissile2
CltHitSubMissile3
HitDebris – Create all 3 sub missiles at the source unit location
56CltHitSubMissile1HitRecycleVine – Create the sub missile at the source unit location and force it to get the same direction as the previous missile
57cHitPar1
cHitPar2
CltHitSubMissile1
HitBaalSpawn – Create a disc ring of sub missiles where the parameters control the radius and density of the ring, respectively
58 Do nothing
59 Do nothing
60cHitPar1
CltHitSubMissile1
CltHitSubMissile2
HitNihlathak1 – Create the “CltHitSubMissile1” sub missile at the location of the previous missile. Create the “CltHitSubMissile2” sub missile at the same position, but “cHitPar1” controls the z offset of the sub missile.
61 HitWorldstoneShake – Stop the camera shake
62cHitPar1
CltHitSubMissile1
HitBaalRandomBolts – Create the sub missile where the range is randomized by the parameter (minimum value equals 1) and the target location is also randomized by this range value
63cHitPar1
CltHitSubMissile1
Param1
Param2
HitBaalTauntPoison – Create a disc of sub missiles where “cHitPar1” controls the ring density (minimum value equals 1). Each sub missile will use its “Param1” and “Param2” fields to define their velocities
64cHitPar1
CltHitSubMissile1
HitBladeFury – Create a disc of sub missiles with the parameter controlling the ring density (minimum value equals 1)

pSrvDoFunc – Uses an ID value to select a specialized function for the missile’s behavior while active every frame on the server side

CodeParametersDescription
0(or empty) Do nothing
1 MissileDoArrow – Perform the standard missile move function. This is called in most of the other functions
2SrvCalc1
SubMissile1
MissileDoPoisonJavelin – Create a sub missile with a specified number of subloops
3 StillMissileKludge – Check the missile velocity to determine whether or not to set the collision mask to Missile
4 Do nothing
5SubStart
SubStop
Firewall – Create an animation sequence for the missile, set the collision mask to Missile
6SubMissile1MissileMakeFirewall – Create sub missiles based on the count that was passed to this missile
7Param1MissileGuidedArrow – Use the parameter to control the retarget time on the unit
8Param1
Param2
Param3
SubMissile1
MissileMonBliz – Create multiple sub missiles, using the parameters as the spawn radius, spawn frequency, and level divisor
9SubMissile1MissileMakeBatLightning – Create a sub missile based on the missile’s path moved
10SubMissile1MissileBlizzard – Create multiple sub missiles, use the linked skill’s “calc1” field for the radius, and the “calc2” field for the sub missile spawn frequency
11Param1
Param2
Param3
FingerMageSpider – Shoot a missile that can be retargeted. Uses the parameters to control the periodic delay between retargeting, the maximum distance to retarget, and the distance delta for where to retarget.
12SubMissile1MissileDiabWallMaker – Shoot a missile and have that missile create sub missiles as it is moving
13 MissileBoneWallMaker – Shoot a missile and have that missile create pet summons as it is moving, using the linked skill’s “pettype” field from skills.txt
14Param1
Param2
MissileDoGrimWard – Shoot a missile where every periodic delay, do a function from the “srvdofunc” field in the skills.txt file. “Param1” controls the periodic frame delay, and “Param2” controls which function code number to use.
15Param1
Param2
SubMissile1
MissileFrozenOrb – Shoot a missile and have that missile shoot sub missiles in different directions as it is moving. “Param1” controls the sub missile spawn rate and “Param2” controls the change in direction per sub missile spawn.
16Param1
Param2
MissileFrozenOrbNova – Shoot a missile in a set direction. “Param1” controls the delay until the missile moves and “Param2” controls the periodic frame delay for updating the missile’s target path
17Param1
Param2
Param3
Param4
Param5
SubMissile1
MissileDoCairnStones – Shoot sub missiles in a radius and then after a delay, create a portal to another level. Uses parameters to control the delays between creating sub missiles, the radius to create the sub missiles, which level ID to link the portal to, and the delay before creating the portal.
18Param1
Param2
Param3 
DoTowerChestSpawner – Open the chest object to spawn items, and create random gold piles in an area
19 DoRadamentDeath – Use the Paladin Redemption skill function on nearby corpses in an area
20 MissileAttachUntilDead – Shoot the missile and keep it attached to the source until. If the source unit dies, then kill the missile.
21SubMissile1MissileDoDistraction – Create a sub missile and run the MissileAttachUntilDead function
22Param1
SubMissile1
ProcessTrailJav – Shoot the missile and have it create 2 sub missiles every frame while it is moving
23Param1
SubMissile1
ProcessSucFireBall – Create a sub missile every frame while the missile is moving, where the parameter controls the sub missile’s subloops
24Param1
SubMissile1
Duplicate of function 23
25SubMissile1MissileEruption – Shoot the missile and have it create sub missiles in a radius at a periodic rate, which is controlled by the link skill’s “calc1” and “calc2” fields.
26Param1
SubMissile1
ProcessVines – Shoot the missile and have it create sub missiles at a periodic rate, which is controlled by the parameter
27Param1
Param2
MissileTornado – Shoot the missile and have it deal damage at a periodic rate in a radius, which is controlled by the parameters or by the linked skill’s “calc4” and “aurarangecalc” fields
28Param1
Param2
Param3
Param4
Param5
SubMissile1
ProcessVolcano – Shoot the missile and have it periodically create sub missiles in a lobbing pattern. Use parameters to control the periodic frame delay for spawning sub missiles, the radius to spawn the sub missiles, the start and stop frame count for when to spawn and stop spawning sub missiles, and the lob start value for the sub missiles
29Param1ProcessRecycleDelay – Shoot the missile and after a certain delay, process any life steal or mana steal, based on the linked skill’s “calc1” and “calc2” fields
30Param1
Param2
SubMissile1
MissileRabiesPlague – Shoot the missile, have it attached to the source unit, and have it periodically spawn sub missiles in a radius
31SubMissile1ProcessMakePerpMissiles – Shoot the missile and have it create 2 sub missiles that are fired in perpendicular directions
32SubMissile1MissileTigerFuryPath – Shoot the missile using the MissileGuidedArrow function and have it create a sub missile
33Param1
Param2
SubMissile1
ProcessRecycleManaDelay – Shoot the missile and after a certain delay, process any mana steal, based on the linked skill’s “calc1” field, and create a sub missile after another certain delay
34Param1
Param2
Param3
Param4
SubMissile1
SubMissile2
ProcessBaalTaunt – Randomly choose one of the 4 parameters to select a delay and randomly spawn one of the sub missiles
35Param1MissileDoChaosIce – Shoot the missile and have it repath in a perpendicular direction after a periodic delay
36 MissileDoBaalDeathControl – Shoot the missile and spawn the Tyrael unit
37SubMissile1
SubMissile2
SubMissile3
ProcessMissileDelayed – Shoot the missile and have it create 1 of each sub missile

pSrvHitFunc – Uses an ID value to select a specialized function for the missile’s behavior when hitting something on the server side

CodeParametersDescription
0(or empty) Do nothing
1sHitPar1RadialFireDamage – Deal elemental damage in an area where the parameter controls the damage radius
2sHitPar1
sHitPar2
HitSubMissile1
HitPlagueJavelin – Kill the missile while dealing its damage, and also deal radial poison damage in an area by creating sub missiles in a defined radius for a specified number of loops
3sHitPar1NoTargetRadialDamage – Deal the missile damage in a defined area radius
4sHitPar1
HitSubMissile1
HitSubMissile2
HitSubMissile3
HitSubMissile4
HitCreateMissile – Determine whether to kill this missile on hit or not, and then create 1 of each hit sub missile
5sHitPar1
HitSubMissile1
HitDoNova – Create a certain number of sub missiles and shoot them outwards in an equalized distance from the location of this missile
6sHitPar1
sHitPar2
HitSummon – Create a monster in a specific starting mode at the missile’s location. The “sHitPar1” field controls the monster ID to use, and the “sHitPar2” field controls which mode to set on the monster.
7sHitPar1
sHitPar2
sHitPar3
dParam1
HitHolyBolt – Determine whether to impact allies, how that damage is modified by the “dParam1” field based on the unit type hit, and if the missile should be killed on hitting an allowed unit
8 HitBlaze – The missile will deal damage if the source unit has the “blaze” state
9sHitPar1
sHitCalc1
HitSubMissile1
HitImmolationArrow – Deal radius damage and create sub missiles with specified range values in a defined radius. If there is a freeze length or cold length from the elemental damage, then set it to 0.
10 HitGuidedArrow – Control if the missile should be redirected on a target when possible, or if it should be destroyed
11sHitPar1
HitSubMissile1
HitSubMissile2
HitSubMissile3
HitSubMissile4
HitCreateMissileNoDmg – Kill this missile on hit and create 1 of each hit sub missile
12sHitPar1HitChainLightning – Create duplicate of this missile if there is a valid unit in range and there are still enough chain hits
13sHitPar1
sHitPar2
HitGlacialSpike – Deal elemental damage in a specified radius with a specified elemental duration, if applicable
14sHitPar1
sHitPar2
HitSubMissile1
HitMeteorCenter – Deal damage in a specified radius and create a ring of hit sub missiles (controlled by a count) and define the duration of these sub missiles based on the linked skill’s “Param3” and “Param4” values
15HitSubMissile1HitSpiderLay – Kill the missile and create a sub missile at the location
16 HitSpiderGoo – Apply the state from the linked skill’s “auratargetstate” field with a duration defined by the linked skill’s “calc4” field
17 HitHowl – Use the linked skill’s “auratargetstate”, “calc2”, “calc3”, and “Param2” fields to apply a state (with a defined level and duration) to units in a defined radius. Also call the AIScare function.
18 HitShout – Kill the missile and call the AddShout function on hit allied units, which applies the “aurastate” state defined in the linked skill
19 HitFingerMageSpiderHit – Kill the missile and apply the “auratargetstate” defined in the linked skill
20sHitPar1
sHitPar2
HitSubMissile1
HitLightningFury – Kill the missile and create a specified number of sub missiles in a radius, per unit targeted in that radius
21 HitBattleCry – Kill the missile and apply the “auratargetstate” state on the target unit, defined in the linked skill
22sHitPar1
sHitPar2
HitSubMissile1
HitFistOfHeavensDelay – Kill the missile and create a specified number of sub missiles in a defined radius, per filtered unit targeted in that radius
23sHitPar1HitMissileSkill – Kill the missile and do a function from the “srvdofunc” field in the skills.txt file, where the “sHitPar1” field controls the function ID to use
24sHitPar1RadialMissileDamage – Kill the missile and damage in an area controlled by a defined radius
25sHitPar1
HitSubMissile1
HitMonsterRancidGasPotion – Kill the missile and deal radial poison damage in an area by creating sub missiles in a defined radius for a specified number of loops
26sHitPar1
HitSubMissile1
HitGrimWardStart – Kill the missile and create a sub missile with a specified duration
27 HitKillMissile – Kill the missile
28 HitGrimWardScare – Kill the missile and apply the AiScare function to all monsters in a radius controlled by the “calc2” field from the linked skill with a distance and duration value controlled by the “Param5” and “Param6” values from the linked skill.
29sHitPar1
HitSubMissile1
HitFrozenOrb – Kill the missile and create specified number sub missiles in a circular outwards direction from that location
30sHitPar1
sHitPar2
RadialStunDamage – Kill the missile and do stun damage in a defined radius with a defined stun length
31 HitFirehead – Kill the missile and deal elemental damage directly to the target unit’s life, ignoring resistances
32Param4MissileHitCairnStones – Create a portal linked to a specified level area ID
33 HitTowerChest – Set the dungeon room to untile
34 Do nothing
35 OrbMistHit – Kill the missile. Set the missile’s tracked object’s dungeon room to untile and set that object’s mode from Neutral to Operating.
36HitSubMissile1HitCreateNextMissile – Kill the missile and create a sub missile with parameters copied over
37 HitBladeCreeper – If this hits a target unit then deal damage
38sHitPar1
sHitPar2
HitSubMissile1
HitCatapultChargedBall – Kill the missile and create a specified number of sub missiles in a ring
39 HitImpSpawnMonsters – Kill the missile and spawn an appropriate monster, based on the allowed monsters in the area level
40sHitPar1
sHitPar2
HitSubMissile1
HitCatapultSpikeBag – Kill the missile and create a specified number of sub missiles that are lobbed outwards in a radius
41 Do nothing
42 Do nothing
43 HitHealing – Use the linked skill’s physical damage as the amount of healing done to the target unit. Determine whether to kill the missile or not, based on the “CollideKill” field
44sHitPar1RadialDamage – Kill the missile and deal damage in a specified radius
45sHitPar1
sHitPar2
HitSubMissile1
HitLightJav – Kill the missile and create a number of sub missiles in a disc. Determine whether these sub missiles created should use a random path or not.
46 Do nothing
47sHitPar1
sHitPar2
HitSubMissile1
BoulderExplode – Kill the missile and create an explosion with a defined radius and a ring of sub missiles with a defined count of missiles
48HitSubMissile1CreateRollingBoulder – Kill the missile and create a sub missile
49 Do nothing
50sHitPar1HitPlagueVines – If the range of the missile minus the “sHitPar1” parameter is greater than the missile’s current frame, then deal damage
51HitSubMissile1
HitSubMissile2
HitSubMissile3
HitDebris – Kill the missile and create the 3 sub missiles, if possible
52sHitPar1
HitSubMissile1
HitBladeFury – Kill the missile and spawn sub missiles in multiple directions depending on the “sHitPar1” value
53 HitRabiesContagion – Get the elemental duration from the linked skill and compare that with the duration of the missile to determine to kill the missile or create a new one, depending on the target having the linked skill’s “auratargetstate” state
54 HitBaalSpawnMonsters – Kill the missile and spawn a monster in Neutral mode
55sHitPar1HitBaalInferno – Drain a percentage of the target’s mana (from 0 to 100) and deal damage
56sHitPar1
HitSubMissile1
HitArmageddon – Kill the missile, deal damage in an area with a defined radius, and create a sub missile
57 MissileHitBaalDeathControl – Create the Tyrael unit
58sHitPar1
HitSubMissile1
HitBaalRandomBolts – Kill the missile and create a sub missile targeting a random randomized location range controlled by “sHitPar1”
59sHitPar1
HitSubMissile1
Param1
Param2
HitBaalTauntPoison – Kill the missile and create an inner and outer disc of sub missiles with a specified count (using “sHitPar1”) of missiles and with incremental specified velocities (the sub missile will use its “Param1” and “Param2” fields)

pSrvDmgFunc – Uses an ID value to select a specialized function that gets called before damaging a unit on the server side

CodeParametersDescription
0(or empty) Default
1DmgCalc1DamageFireArrow – Converts a percentage of physical damage to elemental damage per level
2dParam1DamageIceArrow – Converts the Cold Length value to Freeze Length. Uses the parameter value as a percentage increase the Freeze Length
3dParam1DamageFireWall – Uses the parameter as a random chance to use an attack result Soft Hit flag
4 DamageIceBlast – Converts the Cold Length value to the Freeze Length value
5dParam1
dParam2
DamageBlessedHammerNew – Uses “dParam1” as a damage percent multiplier against Undead type monsters. Uses “dParam2” as a damage percent multiplier against Demon type monsters.
6 DamageNoItem – If the source unit is not a Mercenary, then set the target unit to be unable to drop items when it dies.
7dParam1DamageWarCry – Uses the parameter as the Stun Length. If the parameter equals 0, then use the source unit’s related skill’s “Calc4” field as the Stun Length value. If the skill is null, then use the missile’s default skill’s Param1 & Param2 values.
8ProgOverlayDamageEruption – Create an overlay on the target
9dParam1DamageTwister – Uses the parameter as the Stun Length, and sets the damage Hit Class layer to Stun Layer. If the parameter equals 0, then use the source unit’s related skill’s “Calc2” field as the Stun Length.
10 DamageFreeze – Checks that the missile has stats and then sets the Freeze Length value to equal the Cold Length value.
11 DoRabiesDamage – Checks the remaining poison duration on the target unit and if it is less than 10, it will use the linked skill’s Elemental damage and duration length calculation (See skills.txt) to apply a new poison.
12 sDamageLightningJavelin
13dParam1
dParam2
DamageBlessedHammerOld – Uses the source units physical damage percent stat as a percentage modifier for the missile’s damage, and then calls the “DamageBlessedHammerNew” function (See function code 5)
14dParam1
dParam2
DamageMoltenBoulder – Uses “dParam2” as the percent chance to knockback the target unit. Uses “dParam1” to control how this percent chance is modified. Also relies on the “small” and “large” fields from the monstats2.txt file.·         If the target unit is a player and “dParam1” is greater than or equal to 1, then set the knockback chance to “dParam2”·         If “dParam1” is less than 1 and the monster is a small size, then set the knockback chance to “dParam2”·         If “dParam1” equals 1 and the monster is a small size, then set the knockback chance to “dParam2” * 2·         If “dParam1” equals 1 and the monster is a large size, then set the knockback chance to “dParam2”·         If “dParam1” is greater than 1 and the monster is a small size, then set the knockback chance to “dParam2” * 3·         If “dParam1” is greater than 1 and the monster is a large size, then set the knockback chance to “dParam2” * 2·         If “dParam1” is greater than 1 and the monster is not a small or large size, then set the knockback chance to “dParam2”
15sHitPar2
dParam1
DamageHolyBolt – Uses “dParam1” as a percent damage multiplier for the total elemental damage, depending on the use case of “sHitPar2”·         If the target unit is a monstero   If “sHitPar2” equals 0, then do not modify the damageo   If “sHitPar2” equals 1, then only modify the damage if the monster is an Undead typeo   If “sHitPar2” equals 2, then only modify the damage if the monster is a Demon typeo   If “sHitPar2” equals 3, then only modify the damage if the monster is an Undead or Demon type·         If the target unit is a playero   If “sHitPar2” equals 0, then modify the damageo   If “sHitPar2” equals 0, then do not modify the damage

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

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

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

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

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

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

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

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

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

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

Vel – The baseline velocity of the missile, which is the speed at which the missile moves in the game world. This is measured by distance in pixels traveled per frame.

MaxVel – The maximum velocity of the missile. If the missile’s current velocity increases (based on other fields), then this field controls how high the velocity is allowed to go.

VelLev – Adds extra velocity based on the caster unit’s level. Each level gained beyond level 1 will add this value to the baseline “Vel” field.

Accel – Controls the acceleration of the missile’s movement. A positive value will increase the missile’s velocity per frame. A negative value will decrease the missile’s velocity per frame. The bigger positive or negative values will cause the velocity to change faster per frame.

Range – Controls the baseline duration that the missile will exist for after it is created. This is measured in frames where 25 Frames = 1 second.

LevRange – Adds extra duration based on the caster unit’s level. Each level gained beyond level 1 will add this value to the baseline “Range” field.

Light – Controls the missile’s Light Radius size (measured in grid sub-tiles)

Flicker – If greater than 0, then every 4th frame while the missile is active, the Light Radius will randomly change in size between base size to its base size plus this value (measured in grid sub-tiles)

Red – Controls the red color value of the missile’s Light Radius (Uses a value from 0 to 255)

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

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

InitSteps – The number of frames the missile needs to be alive until it becomes visible on the game client. If the missile’s current duration in frame count is less than this value, then the missile will appear invisible.

Activate – The number of frames the missile needs to be alive until it becomes active. If the missile’s current duration in frame count is less than this value, then the missile will not collide.

LoopAnim – Boolean Field. If equals 1, then the missile’s animation will repeat once the previous animation finishes. If equals 0, then the missile’s animation will only play once, which can cause the missile to appear invisible at the end of the animation, but it will still be alive.

CelFile – Defines which DCC missile file to use for the visual graphics of the missile

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

AnimLen – Defines the length of the missile’s animation in frames where 25 Frames = 1 second. This field can sometimes be used to calculate the missile animation rate, depending on the missile function used.

AnimSpeed – Controls the visual speed of the missile’s animation graphics on the client side (Measured in 16ths, where 16 equals 1 frame per second). This can be overridden by certain missile functions.

RandStart – If this value is greater than 0, then the missile will start at a random frame between 0 and this value when it begins its animation.

SubLoop – Boolean Field. If equals 1, then the missile will use a specific sequence of its animation while it is alive, depending on its creation. If equals 0, then the missile will not use a sequenced animation.

SubStart – The starting frame of the sequence animation. This requires that the “SubLoop” field is enabled.

SubStop – The ending frame of the sequence animation. After reaching this frame, then the sequenced animation will loop back to the “SubStart” frame. This requires that the “SubLoop” field is enabled.

CollideType – Defines the missile’s collision type, which controls what units, objects, or parts of the environment that the missile can impact

CodeDescription
0No collision
1Player unit collision
2Monster unit collision
3Player and Monster unit collision
4No collision
5Monster unit collision
6Barrier collision, such as doors
7Missile collision
8Player, Monster, Barrier, and Wall collision

CollideKill – Boolean Field. If equals 1, then the missile will be destroyed when it collides with something. If equals 0, then the missile will not be destroyed when it collides with something.

CollideFriend – Boolean Field. If equals 1, then the missile can collide with friendly units, including the caster. If equals 0, then the missile will ignore friendly units.

LastCollide – Boolean Field. If equals 1, then the missile will track the last unit that it collided with, which is useful for making sure the missile does not hit the same unit twice. If equals 0, then ignore this.

Collision – Boolean Field. If equals 1, then the missile will have a missile type path placement collision mask when it is initialized or moved. If equals 0, then the missile will have no placement collision mask when it is created or moved.

ClientCol – Boolean Field. If equals 1, then the missile will check collision on the client, depending on the missile’s “CollideType” field. If equals 0, then ignore this.

ClientSend – Boolean Field. If equals 1, then the server will create the missile on the client. This can be used when reloading area levels or transitioning units between areas. If equals 0, then ignore this.

NextHit – Boolean Field. If equals 1, then the missile will use the next delay. If equals 0, then ignore this.

NextDelay – Controls the delay in frame length until the missile is allowed to hit the same unit again. This field relies on the “NextHit” field being enabled.

xoffset & yoffset & zoffset – Specifies the X, Y, and Z location coordinates (measured in pixels) to offset to visually draw the missile based on its actual location. This will only offset the visual graphics of the missile, not the missile itself. The Z axis controls the visual height of the missile.

Size – Defines the diameter in sub-tiles (for both the X and Y axis) that the missile will occupy. This affects how the missile will collide with something or how the game will handle placement for the missile.

SrcTown – Boolean Field. If equals 1, then the missile will be destroyed if the caster unit is located in an act town. If equals 0, then ignore this.

CltSrcTown – If this value is greater than 0 and the “LoopAnim” field is disabled, then this field will control which frame to set the missile’s animation when the player is in town. This value gets subtracted from the “AnimLen” value to determine the frame to set the missile’s animation.

CanDestroy – Boolean Field. If equals 1, then the missile can be attacked and destroyed. If equals 0, then the missile cannot be attacked.

ToHit – Boolean Field. If equals 1, then this missile will use the caster’s Attack Rating stat to determine if the missile should hit its target. If equals 0, then the missile will always hit its target.

AlwaysExplode – Boolean Field. If equals 1, then the missile will always process an explosion when it is killed, which can use a server hit function (See “pSrvHitFunc”) and can use the “HitSound” and “ExplosionMissile” fields on the client side. If equals 0, then the missile will only rely on proper collision hits to process an explosion.

Explosion – Boolean Field. If equals 1, then the missile will be classified as an explosion which will make it use different handlers for finding nearby units and dealing damage. If equals 0, then ignore this.

Town – Boolean Field. If equals 1, then the missile is allowed to be alive when in a town area. If equals 0, then the missile will be immediately destroyed when located within a town area.

NoUniqueMod – Boolean Field. If equals 1, then the missile will not receive bonuses from Unique monster modifiers. If equals 0, then the missile will receive bonuses from Unique monster modifiers.

NoMultiShot – Boolean Field. If equals 1, then the missile will not be affected by the Multi-Shot monster modifier. If equals 0, then the missile will be affected by the Multi-Shot monster modifier.

Holy – Controls a bit field flag where each value is a code to allow the missile to damage a certain type of monster

CodeDescription
0Damage all units
1Only damage Undead
2Only damage Demons
4Only damage Beasts

CanSlow – Boolean Field. If equals 1, then the missile can be affected by the “slowmissiles” state (See states.txt). If equals 0, then the missile will ignore the “slowmissiles” state.

ReturnFire – Boolean Field. If equals 1, then missile can trigger the Sorceress Chilling Armor event function. If equals 0, then this missile will not trigger that function.

GetHit – Boolean Field. If equals 1, then the missile will cause the target unit to enter the Get Hit mode (GH), which acts as the hit recovery mode. If equals 0, then ignore this.

SoftHit – Boolean Field. If equals 1, then the missile will cause a soft hit on the unit, which can trigger a blood splatter effect, hit flash, and/or a hit sound. If equals 0, then ignore this.

KnockBack – Controls the percentage chance (out of 100) that the target unit will be knocked back when hit by the missile

Trans – Controls the alpha mode for how the missile is displayed, which can affect transparency and blending

CodeDescription
0No Transparency
1Black Alpha Transparency
2White Alpha Transparency

Pierce – Boolean Field. If equals 1, then allow the Pierce modifier function to work with this missile. If equals 0, then do not allow Pierce to work with this missile.

MissileSkill – Boolean Field. If equals 1, then the missile will look up the skill that created it and use that skill’s damage instead of the missile damage. If equals 0, then ignore this.

Skill – Links to the “skill” field from the skills.txt file. This will look up the specified skill’s damage and use it for the missile instead of using the missile’s defined damage.

ResultFlags – Controls different flags that can affect how the target reacts after being hit by the missile. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 5 (binary = 101) then that returns true for both the 4 (binary = 100) and 1 (binary = 1) bit field values.

Bit Field ValueBinary Equivalent ValueDescription
10000000000000001Hit
20000000000000010Death
40000000000000100Get Hit
80000000000001000Knockback
160000000000010000Block
320000000000100000No Passive
1280000000010000000Dodge
2560000000100000000Avoid
5120000001000000000Evade
40960001000000000000Ignore Friendly
81920010000000000000Double Damage
163840100000000000000Soft Hit
327681000000000000000Two Hand-to-Hand Block

HitFlags – Controls different flags that can affect the damage dealt when the target is hit by the missile. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values.

Bit Field ValueBinary Equivalent ValueDescription
100000000001Do not add physical damage
200000000010Do not add any damage
400000000100No Life Steal
800000001000No Mana Steal
1600000010000No Stamina Steal
3200000100000Use Source Damage
12800010000000No Triggered Events
25600100000000Bypass Undead
51201000000000Bypass Demons
102410000000000Bypass Beasts

HitShift – Controls the percentage modifier for the missile’s damage. This value cannot be less than 0 or greater than 8. This is calculated in 256ths, where 8=256/256, 7=128/256, 6=64/256, 5=32/256, 4=16/256, 3=8/256, 2=4/256, 1=2/256, and 0=1/256.

ApplyMastery – Boolean Field. If equals 1, then apply the caster’s elemental mastery bonus modifiers to the missile’s elemental damage. If equals 0, then ignore this.

SrcDamage – Controls how much of the source unit’s damage should be added to the missile’s damage. This is calculated in 128ths and acts as a percentage modifier for the source unit’s damage that added to the missile. If equals -1 or 0, then the source damage is not included.

Half2HSrc – Boolean Field. If equals 1 and the source unit is currently wielding a 2-Handed weapon, then the source damage (see “SrcDamage”) is reduced by 50%. If equals 0, then ignore this.

SrcMissDmg – If the missile was created by another missile, then this controls how much of the source missile’s damage should be added to this missile’s damage. This is calculated in 128ths and acts as a percentage modifier for the source missile’s damage that added to this missile. If equals 0, then the source damage is not included.

MinDamage – Minimum baseline physical damage dealt by the missile

MinLevDam1 (to MinLevDam5) – Controls the additional minimum physical damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field.

MaxDamage – Maximum baseline physical damage dealt by the missile

MaxLevDam1 (to MaxLevDam5) – Controls the additional maximum physical damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field.

DmgSymPerCalc – Calculation Field. Determines the percentage increase to the physical damage dealt by the missile based on specified skill levels.

EType – Defines the type of elemental damage dealt by the missile. If this field is empty, then the related elemental fields below will not be used.

CodeDescription
(empty)None
fireFire
ltngLightning
magMagic
coldCold (Uses “ELen”)
poisPoison (Uses “ELen”)
lifeLife Drain
manaMana Drain
stamStamina Drain
stunStun (Uses “ELen”)
randRandomly select between Fire, Lightning, Magic, Cold, or Poison
burnBurning (Uses “ELen”)
frzeFreeze (Uses “ELen”)

EMin – Minimum baseline elemental damage dealt by the missile

MinELev1 (to MinELev5) – Controls the additional minimum elemental damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number.

EMax – Maximum baseline elemental damage dealt by the missile

MaxELev1 (MaxELev5) – Controls the additional maximum elemental damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field.

EDmgSymPerCalc – Calculation Field. Determines the percentage increase to the elemental damage dealt by the missile based on specified skill levels.

ELen – The baseline elemental duration dealt by the missile. This is calculated in frame lengths where 25 Frames = 1 second. These fields only apply to appropriate elemental types with a duration.

ELevLen1 (to ELevLen3) – Controls the additional elemental duration added by the missile, calculated using the leveling formula between 3 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17 and beyond. These 3 level thresholds correlate to each field. These fields only apply to appropriate elemental types with a duration.

HitClass – Defines the missile’s own hit class into the damage routines, mainly used for determining hit sound effects and overlays. This field only handles the hit class layers, so values beyond these defined bits are ignored. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values.

Bit Field ValueBinary Equivalent ValueDescription
1600010000Double Layer
3200010100Fire Layer
4800011110Cold Layer
6401000000Lightning Layer
8001010000Poison Layer
9601100000Stun Layer
11201110000Bash Layer
12810000000Thorns Layer
14410010000Sanctuary Layer
16010100000Silent Voice Layer
17610110000Goo Layer

NumDirections – The number of directions allowed by the missile, based on the DCC file used (see “CelFile”). This value should be within the power of 2, with a minimum value of 1 or up to a maximum value of 64.

LocalBlood – Boolean Field. If equals 1, then change the color of blood missiles to green. If equals 0, then keep the blood missiles colored the default red.

DamageRate – Controls the “damage_framerate” stat (Calculated in 1024ths), which acts as a percentage multiplier for the physical damage reduction and magic damage reduction stat modifiers, when performing damage resistance calculations. This is only enabled if the value is greater than 0.

TravelSound – Points to a “Sound” field defined in the sounds.txt file. Used when the missile is created and while it is alive.

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

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

ProgOverlay – Points to the “overlay” field defined in the Overlay.txt file. Used for a programmed special event based on the server or client function.

ExplosionMissile – Points to the “Missile” field for another missile. Used for the missile created on the client when this missile explodes.

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

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

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

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