提示:表格向左滑动,可以看到更多内容。或横屏观看可能效果更佳(在浏览器打开,设置手机屏幕自动旋转)
Overview
This file controls the different functions for all missiles and their statistics. Missiles are projectiles used throughout the game for attacks, skills, and special effects.
Any column field name starting with “*” is considered a comment field and is not used by the game
Data Fields
Missile – Defines the unique name ID for the missile, which is how other files can reference the missile. The order of defined missiles will determine their ID numbers, so they should not be reordered.
pCltDoFunc – Uses an ID value to select a function for the missile’s behavior while active every frame on the client side. This is more about handling the local graphics while the missile is moving.
Code | Parameters | Description |
0(or empty) | Do nothing | |
1 | ProcessMissileMode – Perform the standard client missile move function. This is called in most of the other functions | |
2 | ProcessBlood – Kill the missile if it goes off screen. Otherwise, set the number of duration frames for the missile to equal 128 and perform the standard missile move function. | |
3 | CltCalc1 CltSubMissile1 | PoisonJavelin – Create a sub missile each frame that the current missile is moving where “CltCalc1” controls the number of subloops for the created sub missile. |
4 | CltParam1 CltParam2 CltParam3 CltSubMissile1 | PoisonCloud – Create multiple sub missiles randomly in a area where the parameters control the spawn rate, number of sub missiles to spawn per rate, and the spawn radius size, respectively. |
5 | SubStart SubStop | Firewall – Create an animation sequence for the missile where the difference of the “SubStart” and “SubStop” fields control the length of the sequence within the animation, and the game will randomly choose a frame within this sequence to loop back to. |
6 | CltParam1 CltSubMissile1 CltSubMissile2 CltSubMissile3 | FirewallMaker – Randomly create 1 of the 3 possible sub missiles, where the parameter controls the random chance that the sub missile spawns with no light. |
7 | CltParam1 | ProcessGuidedArrow – Try to retarget the missile on a possible target unit where the parameter controls the rate at which the missile should attempt to retarget again. |
8 | CltParam1 CltSubMissile1 InitSteps | LightningMaker – Attempt to create a sub missile where the parameter controls the number of subloops for the sub missile (minimum value equals 1). The sub missile is only created if the current missile’s has existed for greater than or equal to the “InitSteps” value. |
9 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 ProgSound | ProcessMeteorCenter – Create each sub missile where the parameters control the number of frames, the missile fall rate (Used to calculate the starting height), and the missile slide rate (used to calculated the starting position offset), respectively. Also attempt to play the “ProgSound” sound at 2 frames before the “CltParam1” frame count. |
10 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 | ProcessMonBliz – Randomly create 1 of the 2 sub missiles in an area radius, where the parameters control the baseline radius size (affected by the missile level), the spawn frequency (minimum equals 3 frames, affected by the missile level), and the level divisor (affects the difference in value for the other fields per missile level). The “CltParam1” and “CltParam2” parameters also can control the missile fall distance and fall rate. |
11 | ProcessHoldLast – At the end of the missile’s animation, set it to dead and destroy its light. Otherwise, run the ProcessMissileMode function. | |
12 | CltParam1 CltParam2 | ProcessScreenShake – Run the ProcessMissileMode function and also call the camera shaking function. The “CltParam1” field controls the camera shake magnitude, and the “CltParam2” field controls the camera shake duration. |
13 | CltParam1 CltParam2 CltSubMissile1 CltSubMissile2 | ProcessBlizzard – Randomly create 1 of the 2 missiles in a calculated area every duration. The radius and spawn frequency are controlled by the missile’s linked skill’s “calc1” and “calc2” fields. The “CltParam1” and “CltParam2” parameters control the sub missile fall distance and fall rate. |
14 | CltParam3 CltParam4 CltParam5 | FingerMageSpider2 – Shoot a missile that can be retargeted on a unit. The parameters control the retarget frequency, the retarget distance range, and the retarget position offset (minimum value equals 1), respectively. |
15 | CltParam1 CltParam2 CltParam3 CltParam4 CltParam5 CltSubMissile1 | FingerMageSpider – Shoot a missile that can be retargeted on a unit and can spawn a sub missile. The parameters control the number of frames to wait before spawning the sub missile (minimum value equals 1), the number of frames to wait before processing the missile, the retarget frequency, the retarget distance range, and the retarget position offset (minimum value equals 1), respectively. |
16 | CltSubMissile1 | DiabWallMaker – Shoot a missile using the ProcessMissileMode function where every frame while moving it can create a sub missile that will have a random chance to spawn with no light |
17 | CltParam1 CltSubMissile1 | ProcessCurse – Shoot a missile that will create a disc of sub missiles every 3 frames after a specified frame duration controlled by the parameter. The radius and density of the disc of sub missile is controlled by the current missile’s radius value, which is given to the missile by the skill function. |
18 | CltParam1 CltSubMissile1 InitSteps | SimpleTrailMaker – Shoot a missile that will create a sub missile after the “InitSteps” frame count, where the parameter controls the sub missile’s subloops. The sub missile will follow the same direction, offset, and path of the current missile. |
19 | CltParam1 CltParam2 CltSubMissile1 | ProcessFrozenOrb – Shoot a missile that will create sub missiles at a spawn rate and different directions. The “CltParam1” value controls the rate to spawn sub missiles, and the “CltParam2” value controls the direction index increment for looping through which direction the next created sub missile should fire towards. |
20 | CltParam1 CltParam2 | ProcessFrozenOrbNova – Shoot a missile that will have a delay until processing and then will process its path at a specified rate. The “CltParam1” value controls the activation frame, and the “CltParam2” value controls the periodic rate to process the missile path |
21 | CltParam1 CltSubMissile1 | BRDeathControl – Create a sub missile after a periodic delay that can spawn in a random location in a radius controlled by the parameter. The periodic delay can be 25, 10, 3, or 15 frames, depending how many frames the current missile has lasted. |
22 | CltParam1 CltSubMissile1 | BRDeathLightning – Shoot a missile that will retarget to a randomized direction every periodic frame delay and will create sub missiles while moving. |
23 | ProcessDOELight – Run the ProcessMissileMode function and ensure that the missile lasts 500 frames if its frame count is less than 100 | |
24 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 | ProcessCairnStones – Create multiple “CltSubMissile1” sub missiles in a radius controlled by “CltParam2” and a spawn frequency controlled by “CltParam3”, lasting a duration controlled by “CltParam1”. The “CltParam1” field also controls the start time for spawning more “CltSubMissile1” sub missiles and “CltSubMissile2” sub missiles every 8 frames if there are any of the “StoneAlpha” to “StoneTheta” objects in the room. |
25 | CltParam1 CltParam2 CltParam3 CltSubMissile1 | ProcessTowerMist – Shoot a missile that will spawn a sub missile randomly in a defined radius after a periodic delay |
26 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 | SmithDeathControl – Create “CltSubMissile1” sub missile in a random position in a radius controlled by “CltParam3” where “CltParam1” controls its spawn rate. Create “CltSubMissile2” sub missile as a lobbing missile in a random position in the same radius where “CltParam2” controls its spawn rate. Also the “CltSubMissile2” sub missile’s level is controlled by the following function: 1 + RANDOM(0, 5) |
27 | CltParam1 CltSubMissile1 | SmithFirewallMaker – Create the sub missile every frame while moving. The parameter controls the delay until the current missile needs to retarget in a new direction |
28 | CltParam1 CltSubMissile1 | SmithDoNotDraw – Create 4 sub missiles in different directions after a delay that is controlled by the parameter. |
29 | CltParam1 CltParam2 CltSubMissile1 CltSubMissile2 CltSubMissile3 ProgSound | ProcessAndyControl0 – Create “CltSubMissile1” after 10 Frames which subsequently will make its own “CltSubMissile1” where its “CltParam1”, “CltParam2” and “CltParam3” fields control the Z offset, Z Velocity Max, and Z Acceleration, respectively. Create “CltSubMissile2” randomly in a radius equal to 20 and at a periodic rate controlled by “CltParam1”. “CltParam2” controls the duration of the camera shake, which starts after 90 frames. Between frame 115 and 315, create “CltSubMissile3” randomly in a radius equal to 6 where its “CltParam1” and “CltParam2” values control the Z offset and Z velocity. |
30 | CltParam1 CltParam2 CltParam3 CltSubMissile1 | ProcessTowerChestSpawner – Start creating the sub missile periodically after an initial delay controlled by “CltParam1”. “CltParam2” controls the periodic rate to spawn the sub missile and “CltParam3” controls the radius size to spawn the sub missile randomly in an area. |
31 | ProcessHoradricStaff – This function does multiple hardcoded features. Shake the screen after 150 frames. Create 7 “horadriclight” missiles. After 165 frames, create the “horadriclightning” missile at a specific position, direction, and velocity. After 150 frames, create the “dust” missile every other frame. | |
32 | ProcessRadDeath – Create a “radamenthandofgod” missile at an increasing rate based on the total frame count of the current missile | |
33 | ProcessTaintedSun – Create a “taintedsunflash” missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Also add a “horadric_light” overlay on the altar object in the level room. | |
34 | ProcessTaintedSunBall – The missile will change its path and velocities throughout its life cycle using different mods, to follow a crafted pattern | |
35 | ProcessQueenDeath – Every 4 frames, create a “queendeathglob” using a lobbing function in a random position in a defined radius of size 12. | |
36 | ProcessDurielDeath – Create a “explodingarrowexp” missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Also create a “durieldeathrock” missile at an increasing rate and at random ranges, based on the total frame count of the current missile. Run a camera shake function. | |
37 | ProcessDiabloAppears – Run a camera shake function and request to play the “monster_diablo_taunt_1” sound | |
38 | ProcessHellForge – Create multiple lobbing “hffragment1” missiles at an increasing rate in random directions, based on the total frame count of the current missile. Run a camera shake function. | |
39 | ProcessHFragment1 – If the missile has a source unit, then set the missile frame to 0 and run the ProcessMissileMode function | |
40 | ProcessHFragment2 – Periodically create a “hfspirit1” missile after a randomized periodic delay. | |
41 | ProcessSoul – Adjust the animation rate of the missile after certain key frames during the missile’s duration. | |
42 | Param1 Param2 | ProcessIzualDeath – Create the “izual mist loop” missile every frame in a random radius of size 10. Create a “izual lightning” missile every frame between the value of the “Param1” and “Param2” fields. |
43 | ProcessAttached – Attach the missile follow its source unit’s position. Kill the missile if the unit is dead. | |
44 | CltSubMissile1 | ProcessDistraction – Attach the missile follow its source unit’s position. Create a sub missile while moving. |
45 | CltParam1 CltParam2 CltParam3 CltSubMissile1 | ProcessDistractionFog – Create a number of sub missiles in an area at a defined rate. “CltParam1” controls the spawn rate, “CltParam2” controls the number of missiles to spawn per rate, and “CltParam3” controls the radius to randomly spawn the sub missiles. |
46 | CltParam1 CltSubMissile1 | ProcessTrailJav – Create 2 sub missiles per frame while moving with perpendicular directions and a defined number of subloops controlled by the parameter |
47 | CltParam1 CltSubMissile1 CltSubMissile2 CltSubMissile3 ProgSound | ProcessMoltenBoulder – Play the “ProgSound” sound if the missile has a bounce value. Run the FirewallMaker function (Code = 6). |
48 | CltSubMissile1 CltSubMissile2 | ProcessEruption – Uses the linked skill’s “calc1” and “calc2” fields to get the spawn radius and spawn frequency for creating the 2 sub missiles. For “CltSubMissile1”, the missile is automatically set to dead mode when it is created. |
49 | CltParam1 CltSubMissile1 | ProcessVines – Periodically spawn the sub missile in the same direction as the current missile where the parameter controls the spawn rate |
50 | CltParam1 CltParam2 CltParam3 CltParam4 CltParam5 CltSubMissile1 | ProcessVolcano – Spawn a sub missile with the lob function at a defined spawn rate at certain frames within the current missile’s duration. “CltParam1” controls the periodic spawn rate, “CltParam2” controls the radius to spawn the sub missile, “CltParam3” controls the starting frame to begin spawning the sub missile, “CltParam4” controls the end frame to stop spawning the sub missile, and “CltParam5” controls the lob start value. |
51 | CltParam1 CltParam2 CltParam3 CltParam4 CltSubMissile1 CltSubMissile2 ProgSound | ProcessRecycleDelay – Create “CltSubMissile1” at a frame controlled by “CltParam1” in a radius controlled by “CltParam4” and a spawn count controlled by “CltParam3”. Create “CltSubMissile2” sub missile at a frame controlled by “CltParam2” and also request to play the “ProgSound” at the same time. |
52 | CltSubMissile1 | ProcessMakePerpMissiles – Create 2 of the same sub missile every frame while moving that face at perpendicular directions |
53 | CltParam1 CltSubMissile1 | ProcessTigerFury – Create a sub missile every frame while moving and then run the ProcessGuidedArrow function (Code = 7). |
54 | ProcessAnyaCenter – Create a “anya icemagic” missile every frame until frame 110. Create a decreasing number of “anyasteam1” missiles in a random position and velocity, every frame until frame 110. Perform a camera shake function. Create a “anyasteamvent” missile and a “anyasteam” missile randomly in a radius every 7 frames until frame 200. | |
55 | ProcessAncientDeath – Create a “ancient death cloud” missile every 3 frames randomly in an area in a random direction | |
56 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 CltSubMissile3 | ProcessBaalTaunt – Randomly choose to spawn one of the 3 sub missiles where each of the parameters control the spawn rate for each of the sub missiles. |
57 | CltSubMissile1 | ProcessBladeShieldCenter – Attach the current missile to the source unit and after a certain delay, create a sub missile every frame that moves in a missile spiral path |
58 | Param1 | ProcessChaosIce – Randomly decide to change the path of the missile to a different direction |
59 | ProcessWorldstoneChip – If the current Z offset is too low or too high, then stop the missile | |
60 | ProcessHurricane – Every 2 Frames change the missile path to a different direction | |
61 | ProcessOverseerCtrl – Randomly create either the “catapult cold ball” missile or “catapult meteor ball” missile at an increasing spawn rate in a random position in a radius. | |
62 | ProcessNihlathak – This function handles the missile visuals for Nihlathak’s death.· Every frame has a random chance to create 2 of the following missiles in a random position: “nehlithakswoosh” “nehlithakdebris1”, “nehlithakdebris2”, “nehlithakdebris3”, nehlithakdebris4”.· After frame 60, every 20 frames create a “brdeathlightningbolt” missile in a random direction.· At frame 25, create a “nehlithakhole” and “nehlithakholelight” at the missile’s location. | |
63 | ProcessNihlathakHurr – Update the path of the missile at every frame | |
64 | ProcessBaalControl – This function handles the missile visuals for Baal’s death.· Randomly spawn either a “baalfx spirit 1” missile or “baalfx spirit 2” missile at an increasing rate and in a random direction.· At frame 450, create a “baalfx baal head appear” missile· At frame 425, create a “baalfx baal head 1” missile· At frame 375, create a “baalfx baal head 2” missile· At frame 325, create a “baalfx baal head 3” missile· After some time and when the “tyrael3” unit is found within the level, then randomly create either the “baalfx tyreal debris 1”, “baalfx tyreal debris 2”, or “baalfx tyreal debris 3” every frame for a specified duration | |
65 | ProcessBaalSpirit – The missile will follow different modes that can change its path and direction, which are controlled by the ProcessBaalControl function (Code = 64) | |
66 | ProcessWorldstoneShake – Attach the missile to the source unit. Call the camera shake function at random periodic delays. There is a small chance to randomly create either the “baalfx tyreal debris 1”, “baalfx tyreal debris 2”, or “baalfx tyreal debris 3” at periodic durations. | |
67 | CltParam1 CltParam2 CltParam3 CltSubMissile1 CltSubMissile2 CltSubMissile3 | ProcessMissileDelayed – Create a sub missile at a specified frame at the source unit’s location. Each parameter controls the specific frame to spawn one of the sub missiles. |
68 | CltParam1 CltSubMissile1 | ProcessSucFireBall – Create a sub missile every frame while the current missile is moving where the number of sub loops for the sub missile is controlled by the parameter |
pCltHitFunc – Uses an ID value to select a specialized function for the missile’s behavior when hitting something on the client side. This is more about handling the local graphics at the moment of missile collision.
Code | Parameters | Description |
0(or empty) | Do nothing | |
1 | cHitPar1 cHitPar2 CltHitSubMissile1 | HitExplodingArrow – Create a disc of sub missiles with a defined radius and missile count |
2 | cHitPar1 cHitPar2 cHitPar3 CltHitSubMissile1 Param1 Param2 | HitPlagueJavelin – Create an inner and outer disc of sub missiles with a specified density for each ring. Each sub missile will use its “Param1” and “Param2” fields to define their velocities |
3 | CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 | HitOilPotion – Create “CltHitSubMissile1” and then randomly create either “CltHitSubMissile2” or “CltHitSubMissile3” |
4 | cHitPar1 CltHitSubMissile1 | HitDoNova – Create a ring of sub missiles with a defined count |
5 | Do nothing | |
6 | Do nothing | |
7 | Do nothing | |
8 | Do nothing | |
9 | cHitPar1 cHitPar2 cHitPar3 CltHitSubMissile1 ProgOverlay | HitHolyBolt – Determine whether to impact allies, how that damage is modified by the “dParam1” field based on the unit type hit, and if the missile should be killed on hitting an allowed unit. If impacting a unit then create a sub missile. When hitting an ally, create an overlay. |
10 | ProgOverlay | HitLightningOverlay – Add an overlay on the target unit |
11 | Do nothing | |
12 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 SHitCalc1 | HitImmolationArrow – Create a ring of sub missiles with a defined radius and density count. Use “SHitCalc1” to control the range (duration) of the sub missile |
13 | Param2 | HitGuidedArrow – Control the missile flags to either mark the target, go to the target, or run the missile retarget function |
14 | CltHitSubMissile1 CltHitSubMissile2 | HitFreezingArrow – Create the “CltHitSubMissile1” sub missile normally, and create “CltHitSubMissile2” sub missile in a random rotation |
15 | Do nothing | |
16 | cHitPar1 ProgOverlay | HitChainLightning – Create duplicate of this missile if there is a valid unit in range and there are still enough chain hits. Add an overlay on the target unit. |
17 | Do nothing | |
18 | cHitPar1 cHitPar2 cHitPar3 CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 CltHitSubMissile4 | HitMeteorCenter – Create a ring of “CltHitSubMissile1” sub missiles where “cHitPar1” controls the density. Create a “CltHitSubMissile2” sub missile where the range is controlled by the linked skill’s “Param3” and “Param4” values from the skills.txt file, and also set the missile’s light radius value to 12. Create a ring of “CltHitSubMissile3” sub missiles where “cHitPar2” controls the density. Create a ring of “CltHitSubMissile4” sub missiles where “cHitPar3” controls the density. |
19 | CltHitSubMissile1 CltHitSubMissile2 | HitMonBliz – Randomly choose between creating one of the sub missiles |
20 | Do nothing | |
21 | Do nothing | |
22 | Do nothing | |
23 | Do nothing | |
24 | CltHitSubMissile1 | HitBoneSpear – Create a sub missile at the target location |
25 | cHitPar1 cHitPar2 CltHitSubMissile1 | HitLightningFury – Create a sub missile per enemy found in an area, where the radius and the maximum number of possible missiles to spawn are controlled by the parameters |
26 | cHitPar1 cHitPar2 CltHitSubMissile1 HitSubMissile1 | HitFistOfHeavensDelay – If there is no “HitSubMissile1” sub missile, then do nothing. Otherwise, create a sub missile per enemy found in an area, where the radius and the maximum number of possible missiles to spawn are controlled by the parameters |
27 | nullptr | |
28 | cHitPar1 CltHitSubMissile1 Param1 | HitMonsterRancidGasPotion – Create a disc of sub missiles with a specified density. Each sub missile will use its “Param1” field to define its velocity. |
29 | cHitPar1 CltHitSubMissile1 | HitGrimWard – Create a sub missile with a specified duration and force its direction to be the same as the missile that created it |
30 | cHitPar1 CltHitSubMissile1 | HitFrozenOrb – Create a disc of sub missiles with a specified density. |
31 | HitIceBreak – Create a missile with a forced animation rate value of 1, depending on the missile class used.· If “Missile” equals “icebreaksmall” then create “icebreaksmallmelt”· If “Missile” equals “icebreakmedium” then create “icebreaklargemelt”· If “Missile” equals “icebreaklarge” then create “icebreaklargemelt”· If “Missile” equals “catapult cold explosion” then create “icebreaklargemelt” | |
32 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 ProgOverlay | HitFirehead – Create the “CltHitSubMissile1” sub missile at the target location and create a ring of “CltHitSubMissile2” sub missiles where the parameters control the ring radius and density. Also add an overlay on the source unit. |
33 | cHitPar1 CltHitSubMissile1 | HitFlyingRocks – Create a random number of sub missiles in a defined area radius controlled by “cHitPar1” |
34 | HitSmithDoNotDraw – Make the source unit invisibile | |
35 | Do nothing | |
36 | Param1 | HitHellMeteor – Do nothing is colliding with a wall. Otherwise, create a disc of randomly selected missiles. The random missiles chosen are either “firewall”, “firesmall”, or “firemedium”. The missile’s “Param1” field controls the disc radius. The duration of each missile created is calculated with the following: Range = 25 + RANDOM(0, 25) – 12 |
37 | HitRadHandOfGod – Create a random number of “radamentholybolt” missiles in random positions in a radius | |
38 | HitTaintedSunFlash – Create a “taintedsunball” missile | |
39 | HitQueenDeathGlob – Randomly create 1 of the next 2 missile’s defined in the missile.txt file after the missile that uses this function. For example, if “Missile” equals “queendeathglob” (ID = 354) and it uses this function, then randomly choose to create “queendeathsplat1” (ID = 355) or “queendeathsplat2” (ID = 356). | |
40 | HitHealingBolt – Determine that the target is an allied unit | |
41 | HitDurielDeathRock – Create 3 “durieldeathdebris” missiles randomly in a radius value of 6. Create a “durieldeathsmoke” missile at the previous missile’s location. | |
42 | HitSoulStoneFragment1 – Create a “hffragment2” missile on the target unit | |
43 | HitSoulStoneFragment2 – Create a “hffragment3” missile on the target unit, with 0 velocity, and a random delay between 10 to 45 frames. | |
44 | CltHitSubMissile1 | HitCreateNextMissile – Create a sub missile and set its direction to match the old missile’s path |
45 | Do nothing | |
46 | cHitPar1 cHitPar2 HitSubMissile1 | HitCatapultChargedBall – Create a disc of sub missiles where the number of missiles created is controlled by the following formula: [“cHitPar1”] + [“cHitPar2”] * ([Missile current level] – 1) |
47 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 | HitCatapultSpikeBag – Create “CltHitSubMissile1” sub missiles using the lob function where “cHitPar1” and “cHitPar2” are used to calculate the number of missiles in the following formula: MissileCount = [“cHitPar1”] + [“cHitPar2”] 8 ([Missile current level] – 1). The radius is this missile lob function is determined by doing MissileCount / 4. Also create “CltHitSubMissile2” at the location of the old missile. |
48 | HitCatapultCold – Create a “freezingarrowexp1” (ID = 88) missile in the center of the previous missile location. Also create 8 different “freezingarrowexp2” (ID = 89) missiles ejected in 8 different directions. Also create 8 different “catapult cold explosion” (ID = 417) missiles that have a randomized range and velocity and use the lob function to launch these missiles which an initial Z offset equal to 30. | |
49 | Do nothing | |
50 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 | HitCatapultMeteor – Run the spray rock function to spawn different missiles. First create multiple “moltenboulder-flyingrocks” (ID = 456) missiles where the “cHitPar1” field controls the number of missiles to spawn and the targeted radius distance to spawn these missiles is equal to this value multiplied by 2. The “cHitPar2” field controls these missiles’ velocity. The “CltHitSubMissile1” sub missile is never spawned, but these “moltenboulder-flyingrocks” will not spawn unless this field has a value. Next create a ring of 18 “CltHitSubMissile2” sub missiles. |
51 | cHitPar1 cHitPar2 CltHitSubMissile1 | HitLightJav – Create a disc of the sub missiles where “cHitPar1” controls the number of sub missiles to spawn and “cHitPar2” acts as a Boolean Field where if enabled, it will cause these spawned sub missiles to have a randomized path. |
52 | cHitPar1 cHitPar2 CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 | HitMoltenBoulder – If hitting the target or a monster with the “large” flag enabled, then create “CltHitSubMissile1” sub missile. Also run the spray rock function to spawn different missiles. First create multiple “moltenboulder-flyingrocks” (ID = 456) missiles where the “cHitPar1” field controls the number of missiles to spawn and the targeted radius distance to spawn these missiles is equal to this value multiplied by 2. The “cHitPar2” field controls these missiles’ velocity. The “CltHitSubMissile2” sub missile is never spawned, but these “moltenboulder-flyingrocks” will not spawn unless this field has a value. Next create a ring of 18 “CltHitSubMissile3” sub missiles. |
53 | cHitPar1 cHitPar2 cHitPar3 CltHitSubMissile1 | CreateRollingBoulder – Create the sub missile that bounces, where “cHitPar1” controls the number of bounces, “cHitPar2” controls the bounce dampening percentage, and “cHitPar3” controls the number of steps, or the lifetime remaining in ticks (Minimum value equal to 1). |
54 | CltHitSubMissile1 | HitVineTrail – Create the sub missile and force it to get the same direction as the previous missile |
55 | CltHitSubMissile1 CltHitSubMissile2 CltHitSubMissile3 | HitDebris – Create all 3 sub missiles at the source unit location |
56 | CltHitSubMissile1 | HitRecycleVine – Create the sub missile at the source unit location and force it to get the same direction as the previous missile |
57 | cHitPar1 cHitPar2 CltHitSubMissile1 | HitBaalSpawn – Create a disc ring of sub missiles where the parameters control the radius and density of the ring, respectively |
58 | Do nothing | |
59 | Do nothing | |
60 | cHitPar1 CltHitSubMissile1 CltHitSubMissile2 | HitNihlathak1 – Create the “CltHitSubMissile1” sub missile at the location of the previous missile. Create the “CltHitSubMissile2” sub missile at the same position, but “cHitPar1” controls the z offset of the sub missile. |
61 | HitWorldstoneShake – Stop the camera shake | |
62 | cHitPar1 CltHitSubMissile1 | HitBaalRandomBolts – Create the sub missile where the range is randomized by the parameter (minimum value equals 1) and the target location is also randomized by this range value |
63 | cHitPar1 CltHitSubMissile1 Param1 Param2 | HitBaalTauntPoison – Create a disc of sub missiles where “cHitPar1” controls the ring density (minimum value equals 1). Each sub missile will use its “Param1” and “Param2” fields to define their velocities |
64 | cHitPar1 CltHitSubMissile1 | HitBladeFury – Create a disc of sub missiles with the parameter controlling the ring density (minimum value equals 1) |
pSrvDoFunc – Uses an ID value to select a specialized function for the missile’s behavior while active every frame on the server side
Code | Parameters | Description |
0(or empty) | Do nothing | |
1 | MissileDoArrow – Perform the standard missile move function. This is called in most of the other functions | |
2 | SrvCalc1 SubMissile1 | MissileDoPoisonJavelin – Create a sub missile with a specified number of subloops |
3 | StillMissileKludge – Check the missile velocity to determine whether or not to set the collision mask to Missile | |
4 | Do nothing | |
5 | SubStart SubStop | Firewall – Create an animation sequence for the missile, set the collision mask to Missile |
6 | SubMissile1 | MissileMakeFirewall – Create sub missiles based on the count that was passed to this missile |
7 | Param1 | MissileGuidedArrow – Use the parameter to control the retarget time on the unit |
8 | Param1 Param2 Param3 SubMissile1 | MissileMonBliz – Create multiple sub missiles, using the parameters as the spawn radius, spawn frequency, and level divisor |
9 | SubMissile1 | MissileMakeBatLightning – Create a sub missile based on the missile’s path moved |
10 | SubMissile1 | MissileBlizzard – Create multiple sub missiles, use the linked skill’s “calc1” field for the radius, and the “calc2” field for the sub missile spawn frequency |
11 | Param1 Param2 Param3 | FingerMageSpider – Shoot a missile that can be retargeted. Uses the parameters to control the periodic delay between retargeting, the maximum distance to retarget, and the distance delta for where to retarget. |
12 | SubMissile1 | MissileDiabWallMaker – Shoot a missile and have that missile create sub missiles as it is moving |
13 | MissileBoneWallMaker – Shoot a missile and have that missile create pet summons as it is moving, using the linked skill’s “pettype” field from skills.txt | |
14 | Param1 Param2 | MissileDoGrimWard – Shoot a missile where every periodic delay, do a function from the “srvdofunc” field in the skills.txt file. “Param1” controls the periodic frame delay, and “Param2” controls which function code number to use. |
15 | Param1 Param2 SubMissile1 | MissileFrozenOrb – Shoot a missile and have that missile shoot sub missiles in different directions as it is moving. “Param1” controls the sub missile spawn rate and “Param2” controls the change in direction per sub missile spawn. |
16 | Param1 Param2 | MissileFrozenOrbNova – Shoot a missile in a set direction. “Param1” controls the delay until the missile moves and “Param2” controls the periodic frame delay for updating the missile’s target path |
17 | Param1 Param2 Param3 Param4 Param5 SubMissile1 | MissileDoCairnStones – Shoot sub missiles in a radius and then after a delay, create a portal to another level. Uses parameters to control the delays between creating sub missiles, the radius to create the sub missiles, which level ID to link the portal to, and the delay before creating the portal. |
18 | Param1 Param2 Param3 | DoTowerChestSpawner – Open the chest object to spawn items, and create random gold piles in an area |
19 | DoRadamentDeath – Use the Paladin Redemption skill function on nearby corpses in an area | |
20 | MissileAttachUntilDead – Shoot the missile and keep it attached to the source until. If the source unit dies, then kill the missile. | |
21 | SubMissile1 | MissileDoDistraction – Create a sub missile and run the MissileAttachUntilDead function |
22 | Param1 SubMissile1 | ProcessTrailJav – Shoot the missile and have it create 2 sub missiles every frame while it is moving |
23 | Param1 SubMissile1 | ProcessSucFireBall – Create a sub missile every frame while the missile is moving, where the parameter controls the sub missile’s subloops |
24 | Param1 SubMissile1 | Duplicate of function 23 |
25 | SubMissile1 | MissileEruption – Shoot the missile and have it create sub missiles in a radius at a periodic rate, which is controlled by the link skill’s “calc1” and “calc2” fields. |
26 | Param1 SubMissile1 | ProcessVines – Shoot the missile and have it create sub missiles at a periodic rate, which is controlled by the parameter |
27 | Param1 Param2 | MissileTornado – Shoot the missile and have it deal damage at a periodic rate in a radius, which is controlled by the parameters or by the linked skill’s “calc4” and “aurarangecalc” fields |
28 | Param1 Param2 Param3 Param4 Param5 SubMissile1 | ProcessVolcano – Shoot the missile and have it periodically create sub missiles in a lobbing pattern. Use parameters to control the periodic frame delay for spawning sub missiles, the radius to spawn the sub missiles, the start and stop frame count for when to spawn and stop spawning sub missiles, and the lob start value for the sub missiles |
29 | Param1 | ProcessRecycleDelay – Shoot the missile and after a certain delay, process any life steal or mana steal, based on the linked skill’s “calc1” and “calc2” fields |
30 | Param1 Param2 SubMissile1 | MissileRabiesPlague – Shoot the missile, have it attached to the source unit, and have it periodically spawn sub missiles in a radius |
31 | SubMissile1 | ProcessMakePerpMissiles – Shoot the missile and have it create 2 sub missiles that are fired in perpendicular directions |
32 | SubMissile1 | MissileTigerFuryPath – Shoot the missile using the MissileGuidedArrow function and have it create a sub missile |
33 | Param1 Param2 SubMissile1 | ProcessRecycleManaDelay – Shoot the missile and after a certain delay, process any mana steal, based on the linked skill’s “calc1” field, and create a sub missile after another certain delay |
34 | Param1 Param2 Param3 Param4 SubMissile1 SubMissile2 | ProcessBaalTaunt – Randomly choose one of the 4 parameters to select a delay and randomly spawn one of the sub missiles |
35 | Param1 | MissileDoChaosIce – Shoot the missile and have it repath in a perpendicular direction after a periodic delay |
36 | MissileDoBaalDeathControl – Shoot the missile and spawn the Tyrael unit | |
37 | SubMissile1 SubMissile2 SubMissile3 | ProcessMissileDelayed – Shoot the missile and have it create 1 of each sub missile |
pSrvHitFunc – Uses an ID value to select a specialized function for the missile’s behavior when hitting something on the server side
Code | Parameters | Description |
0(or empty) | Do nothing | |
1 | sHitPar1 | RadialFireDamage – Deal elemental damage in an area where the parameter controls the damage radius |
2 | sHitPar1 sHitPar2 HitSubMissile1 | HitPlagueJavelin – Kill the missile while dealing its damage, and also deal radial poison damage in an area by creating sub missiles in a defined radius for a specified number of loops |
3 | sHitPar1 | NoTargetRadialDamage – Deal the missile damage in a defined area radius |
4 | sHitPar1 HitSubMissile1 HitSubMissile2 HitSubMissile3 HitSubMissile4 | HitCreateMissile – Determine whether to kill this missile on hit or not, and then create 1 of each hit sub missile |
5 | sHitPar1 HitSubMissile1 | HitDoNova – Create a certain number of sub missiles and shoot them outwards in an equalized distance from the location of this missile |
6 | sHitPar1 sHitPar2 | HitSummon – Create a monster in a specific starting mode at the missile’s location. The “sHitPar1” field controls the monster ID to use, and the “sHitPar2” field controls which mode to set on the monster. |
7 | sHitPar1 sHitPar2 sHitPar3 dParam1 | HitHolyBolt – Determine whether to impact allies, how that damage is modified by the “dParam1” field based on the unit type hit, and if the missile should be killed on hitting an allowed unit |
8 | HitBlaze – The missile will deal damage if the source unit has the “blaze” state | |
9 | sHitPar1 sHitCalc1 HitSubMissile1 | HitImmolationArrow – Deal radius damage and create sub missiles with specified range values in a defined radius. If there is a freeze length or cold length from the elemental damage, then set it to 0. |
10 | HitGuidedArrow – Control if the missile should be redirected on a target when possible, or if it should be destroyed | |
11 | sHitPar1 HitSubMissile1 HitSubMissile2 HitSubMissile3 HitSubMissile4 | HitCreateMissileNoDmg – Kill this missile on hit and create 1 of each hit sub missile |
12 | sHitPar1 | HitChainLightning – Create duplicate of this missile if there is a valid unit in range and there are still enough chain hits |
13 | sHitPar1 sHitPar2 | HitGlacialSpike – Deal elemental damage in a specified radius with a specified elemental duration, if applicable |
14 | sHitPar1 sHitPar2 HitSubMissile1 | HitMeteorCenter – Deal damage in a specified radius and create a ring of hit sub missiles (controlled by a count) and define the duration of these sub missiles based on the linked skill’s “Param3” and “Param4” values |
15 | HitSubMissile1 | HitSpiderLay – Kill the missile and create a sub missile at the location |
16 | HitSpiderGoo – Apply the state from the linked skill’s “auratargetstate” field with a duration defined by the linked skill’s “calc4” field | |
17 | HitHowl – Use the linked skill’s “auratargetstate”, “calc2”, “calc3”, and “Param2” fields to apply a state (with a defined level and duration) to units in a defined radius. Also call the AIScare function. | |
18 | HitShout – Kill the missile and call the AddShout function on hit allied units, which applies the “aurastate” state defined in the linked skill | |
19 | HitFingerMageSpiderHit – Kill the missile and apply the “auratargetstate” defined in the linked skill | |
20 | sHitPar1 sHitPar2 HitSubMissile1 | HitLightningFury – Kill the missile and create a specified number of sub missiles in a radius, per unit targeted in that radius |
21 | HitBattleCry – Kill the missile and apply the “auratargetstate” state on the target unit, defined in the linked skill | |
22 | sHitPar1 sHitPar2 HitSubMissile1 | HitFistOfHeavensDelay – Kill the missile and create a specified number of sub missiles in a defined radius, per filtered unit targeted in that radius |
23 | sHitPar1 | HitMissileSkill – Kill the missile and do a function from the “srvdofunc” field in the skills.txt file, where the “sHitPar1” field controls the function ID to use |
24 | sHitPar1 | RadialMissileDamage – Kill the missile and damage in an area controlled by a defined radius |
25 | sHitPar1 HitSubMissile1 | HitMonsterRancidGasPotion – Kill the missile and deal radial poison damage in an area by creating sub missiles in a defined radius for a specified number of loops |
26 | sHitPar1 HitSubMissile1 | HitGrimWardStart – Kill the missile and create a sub missile with a specified duration |
27 | HitKillMissile – Kill the missile | |
28 | HitGrimWardScare – Kill the missile and apply the AiScare function to all monsters in a radius controlled by the “calc2” field from the linked skill with a distance and duration value controlled by the “Param5” and “Param6” values from the linked skill. | |
29 | sHitPar1 HitSubMissile1 | HitFrozenOrb – Kill the missile and create specified number sub missiles in a circular outwards direction from that location |
30 | sHitPar1 sHitPar2 | RadialStunDamage – Kill the missile and do stun damage in a defined radius with a defined stun length |
31 | HitFirehead – Kill the missile and deal elemental damage directly to the target unit’s life, ignoring resistances | |
32 | Param4 | MissileHitCairnStones – Create a portal linked to a specified level area ID |
33 | HitTowerChest – Set the dungeon room to untile | |
34 | Do nothing | |
35 | OrbMistHit – Kill the missile. Set the missile’s tracked object’s dungeon room to untile and set that object’s mode from Neutral to Operating. | |
36 | HitSubMissile1 | HitCreateNextMissile – Kill the missile and create a sub missile with parameters copied over |
37 | HitBladeCreeper – If this hits a target unit then deal damage | |
38 | sHitPar1 sHitPar2 HitSubMissile1 | HitCatapultChargedBall – Kill the missile and create a specified number of sub missiles in a ring |
39 | HitImpSpawnMonsters – Kill the missile and spawn an appropriate monster, based on the allowed monsters in the area level | |
40 | sHitPar1 sHitPar2 HitSubMissile1 | HitCatapultSpikeBag – Kill the missile and create a specified number of sub missiles that are lobbed outwards in a radius |
41 | Do nothing | |
42 | Do nothing | |
43 | HitHealing – Use the linked skill’s physical damage as the amount of healing done to the target unit. Determine whether to kill the missile or not, based on the “CollideKill” field | |
44 | sHitPar1 | RadialDamage – Kill the missile and deal damage in a specified radius |
45 | sHitPar1 sHitPar2 HitSubMissile1 | HitLightJav – Kill the missile and create a number of sub missiles in a disc. Determine whether these sub missiles created should use a random path or not. |
46 | Do nothing | |
47 | sHitPar1 sHitPar2 HitSubMissile1 | BoulderExplode – Kill the missile and create an explosion with a defined radius and a ring of sub missiles with a defined count of missiles |
48 | HitSubMissile1 | CreateRollingBoulder – Kill the missile and create a sub missile |
49 | Do nothing | |
50 | sHitPar1 | HitPlagueVines – If the range of the missile minus the “sHitPar1” parameter is greater than the missile’s current frame, then deal damage |
51 | HitSubMissile1 HitSubMissile2 HitSubMissile3 | HitDebris – Kill the missile and create the 3 sub missiles, if possible |
52 | sHitPar1 HitSubMissile1 | HitBladeFury – Kill the missile and spawn sub missiles in multiple directions depending on the “sHitPar1” value |
53 | HitRabiesContagion – Get the elemental duration from the linked skill and compare that with the duration of the missile to determine to kill the missile or create a new one, depending on the target having the linked skill’s “auratargetstate” state | |
54 | HitBaalSpawnMonsters – Kill the missile and spawn a monster in Neutral mode | |
55 | sHitPar1 | HitBaalInferno – Drain a percentage of the target’s mana (from 0 to 100) and deal damage |
56 | sHitPar1 HitSubMissile1 | HitArmageddon – Kill the missile, deal damage in an area with a defined radius, and create a sub missile |
57 | MissileHitBaalDeathControl – Create the Tyrael unit | |
58 | sHitPar1 HitSubMissile1 | HitBaalRandomBolts – Kill the missile and create a sub missile targeting a random randomized location range controlled by “sHitPar1” |
59 | sHitPar1 HitSubMissile1 Param1 Param2 | HitBaalTauntPoison – Kill the missile and create an inner and outer disc of sub missiles with a specified count (using “sHitPar1”) of missiles and with incremental specified velocities (the sub missile will use its “Param1” and “Param2” fields) |
pSrvDmgFunc – Uses an ID value to select a specialized function that gets called before damaging a unit on the server side
Code | Parameters | Description |
0(or empty) | Default | |
1 | DmgCalc1 | DamageFireArrow – Converts a percentage of physical damage to elemental damage per level |
2 | dParam1 | DamageIceArrow – Converts the Cold Length value to Freeze Length. Uses the parameter value as a percentage increase the Freeze Length |
3 | dParam1 | DamageFireWall – Uses the parameter as a random chance to use an attack result Soft Hit flag |
4 | DamageIceBlast – Converts the Cold Length value to the Freeze Length value | |
5 | dParam1 dParam2 | DamageBlessedHammerNew – Uses “dParam1” as a damage percent multiplier against Undead type monsters. Uses “dParam2” as a damage percent multiplier against Demon type monsters. |
6 | DamageNoItem – If the source unit is not a Mercenary, then set the target unit to be unable to drop items when it dies. | |
7 | dParam1 | DamageWarCry – Uses the parameter as the Stun Length. If the parameter equals 0, then use the source unit’s related skill’s “Calc4” field as the Stun Length value. If the skill is null, then use the missile’s default skill’s Param1 & Param2 values. |
8 | ProgOverlay | DamageEruption – Create an overlay on the target |
9 | dParam1 | DamageTwister – Uses the parameter as the Stun Length, and sets the damage Hit Class layer to Stun Layer. If the parameter equals 0, then use the source unit’s related skill’s “Calc2” field as the Stun Length. |
10 | DamageFreeze – Checks that the missile has stats and then sets the Freeze Length value to equal the Cold Length value. | |
11 | DoRabiesDamage – Checks the remaining poison duration on the target unit and if it is less than 10, it will use the linked skill’s Elemental damage and duration length calculation (See skills.txt) to apply a new poison. | |
12 | sDamageLightningJavelin | |
13 | dParam1 dParam2 | DamageBlessedHammerOld – Uses the source units physical damage percent stat as a percentage modifier for the missile’s damage, and then calls the “DamageBlessedHammerNew” function (See function code 5) |
14 | dParam1 dParam2 | DamageMoltenBoulder – Uses “dParam2” as the percent chance to knockback the target unit. Uses “dParam1” to control how this percent chance is modified. Also relies on the “small” and “large” fields from the monstats2.txt file.· If the target unit is a player and “dParam1” is greater than or equal to 1, then set the knockback chance to “dParam2”· If “dParam1” is less than 1 and the monster is a small size, then set the knockback chance to “dParam2”· If “dParam1” equals 1 and the monster is a small size, then set the knockback chance to “dParam2” * 2· If “dParam1” equals 1 and the monster is a large size, then set the knockback chance to “dParam2”· If “dParam1” is greater than 1 and the monster is a small size, then set the knockback chance to “dParam2” * 3· If “dParam1” is greater than 1 and the monster is a large size, then set the knockback chance to “dParam2” * 2· If “dParam1” is greater than 1 and the monster is not a small or large size, then set the knockback chance to “dParam2” |
15 | sHitPar2 dParam1 | DamageHolyBolt – Uses “dParam1” as a percent damage multiplier for the total elemental damage, depending on the use case of “sHitPar2”· If the target unit is a 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
Code | Description |
0 | No collision |
1 | Player unit collision |
2 | Monster unit collision |
3 | Player and Monster unit collision |
4 | No collision |
5 | Monster unit collision |
6 | Barrier collision, such as doors |
7 | Missile collision |
8 | Player, Monster, Barrier, and Wall collision |
CollideKill – Boolean Field. If equals 1, then the missile will be destroyed when it collides with something. If equals 0, then the missile will not be destroyed when it collides with something.
CollideFriend – Boolean Field. If equals 1, then the missile can collide with friendly units, including the caster. If equals 0, then the missile will ignore friendly units.
LastCollide – Boolean Field. If equals 1, then the missile will track the last unit that it collided with, which is useful for making sure the missile does not hit the same unit twice. If equals 0, then ignore this.
Collision – Boolean Field. If equals 1, then the missile will have a missile type path placement collision mask when it is initialized or moved. If equals 0, then the missile will have no placement collision mask when it is created or moved.
ClientCol – Boolean Field. If equals 1, then the missile will check collision on the client, depending on the missile’s “CollideType” field. If equals 0, then ignore this.
ClientSend – Boolean Field. If equals 1, then the server will create the missile on the client. This can be used when reloading area levels or transitioning units between areas. If equals 0, then ignore this.
NextHit – Boolean Field. If equals 1, then the missile will use the next delay. If equals 0, then ignore this.
NextDelay – Controls the delay in frame length until the missile is allowed to hit the same unit again. This field relies on the “NextHit” field being enabled.
xoffset & yoffset & zoffset – Specifies the X, Y, and Z location coordinates (measured in pixels) to offset to visually draw the missile based on its actual location. This will only offset the visual graphics of the missile, not the missile itself. The Z axis controls the visual height of the missile.
Size – Defines the diameter in sub-tiles (for both the X and Y axis) that the missile will occupy. This affects how the missile will collide with something or how the game will handle placement for the missile.
SrcTown – Boolean Field. If equals 1, then the missile will be destroyed if the caster unit is located in an act town. If equals 0, then ignore this.
CltSrcTown – If this value is greater than 0 and the “LoopAnim” field is disabled, then this field will control which frame to set the missile’s animation when the player is in town. This value gets subtracted from the “AnimLen” value to determine the frame to set the missile’s animation.
CanDestroy – Boolean Field. If equals 1, then the missile can be attacked and destroyed. If equals 0, then the missile cannot be attacked.
ToHit – Boolean Field. If equals 1, then this missile will use the caster’s Attack Rating stat to determine if the missile should hit its target. If equals 0, then the missile will always hit its target.
AlwaysExplode – Boolean Field. If equals 1, then the missile will always process an explosion when it is killed, which can use a server hit function (See “pSrvHitFunc”) and can use the “HitSound” and “ExplosionMissile” fields on the client side. If equals 0, then the missile will only rely on proper collision hits to process an explosion.
Explosion – Boolean Field. If equals 1, then the missile will be classified as an explosion which will make it use different handlers for finding nearby units and dealing damage. If equals 0, then ignore this.
Town – Boolean Field. If equals 1, then the missile is allowed to be alive when in a town area. If equals 0, then the missile will be immediately destroyed when located within a town area.
NoUniqueMod – Boolean Field. If equals 1, then the missile will not receive bonuses from Unique monster modifiers. If equals 0, then the missile will receive bonuses from Unique monster modifiers.
NoMultiShot – Boolean Field. If equals 1, then the missile will not be affected by the Multi-Shot monster modifier. If equals 0, then the missile will be affected by the Multi-Shot monster modifier.
Holy – Controls a bit field flag where each value is a code to allow the missile to damage a certain type of monster
Code | Description |
0 | Damage all units |
1 | Only damage Undead |
2 | Only damage Demons |
4 | Only damage Beasts |
CanSlow – Boolean Field. If equals 1, then the missile can be affected by the “slowmissiles” state (See states.txt). If equals 0, then the missile will ignore the “slowmissiles” state.
ReturnFire – Boolean Field. If equals 1, then missile can trigger the Sorceress Chilling Armor event function. If equals 0, then this missile will not trigger that function.
GetHit – Boolean Field. If equals 1, then the missile will cause the target unit to enter the Get Hit mode (GH), which acts as the hit recovery mode. If equals 0, then ignore this.
SoftHit – Boolean Field. If equals 1, then the missile will cause a soft hit on the unit, which can trigger a blood splatter effect, hit flash, and/or a hit sound. If equals 0, then ignore this.
KnockBack – Controls the percentage chance (out of 100) that the target unit will be knocked back when hit by the missile
Trans – Controls the alpha mode for how the missile is displayed, which can affect transparency and blending
Code | Description |
0 | No Transparency |
1 | Black Alpha Transparency |
2 | White Alpha Transparency |
Pierce – Boolean Field. If equals 1, then allow the Pierce modifier function to work with this missile. If equals 0, then do not allow Pierce to work with this missile.
MissileSkill – Boolean Field. If equals 1, then the missile will look up the skill that created it and use that skill’s damage instead of the missile damage. If equals 0, then ignore this.
Skill – Links to the “skill” field from the skills.txt file. This will look up the specified skill’s damage and use it for the missile instead of using the missile’s defined damage.
ResultFlags – Controls different flags that can affect how the target reacts after being hit by the missile. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 5 (binary = 101) then that returns true for both the 4 (binary = 100) and 1 (binary = 1) bit field values.
Bit Field Value | Binary Equivalent Value | Description |
1 | 0000000000000001 | Hit |
2 | 0000000000000010 | Death |
4 | 0000000000000100 | Get Hit |
8 | 0000000000001000 | Knockback |
16 | 0000000000010000 | Block |
32 | 0000000000100000 | No Passive |
128 | 0000000010000000 | Dodge |
256 | 0000000100000000 | Avoid |
512 | 0000001000000000 | Evade |
4096 | 0001000000000000 | Ignore Friendly |
8192 | 0010000000000000 | Double Damage |
16384 | 0100000000000000 | Soft Hit |
32768 | 1000000000000000 | Two Hand-to-Hand Block |
HitFlags – Controls different flags that can affect the damage dealt when the target is hit by the missile. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values.
Bit Field Value | Binary Equivalent Value | Description |
1 | 00000000001 | Do not add physical damage |
2 | 00000000010 | Do not add any damage |
4 | 00000000100 | No Life Steal |
8 | 00000001000 | No Mana Steal |
16 | 00000010000 | No Stamina Steal |
32 | 00000100000 | Use Source Damage |
128 | 00010000000 | No Triggered Events |
256 | 00100000000 | Bypass Undead |
512 | 01000000000 | Bypass Demons |
1024 | 10000000000 | Bypass Beasts |
HitShift – Controls the percentage modifier for the missile’s damage. This value cannot be less than 0 or greater than 8. This is calculated in 256ths, where 8=256/256, 7=128/256, 6=64/256, 5=32/256, 4=16/256, 3=8/256, 2=4/256, 1=2/256, and 0=1/256.
ApplyMastery – Boolean Field. If equals 1, then apply the caster’s elemental mastery bonus modifiers to the missile’s elemental damage. If equals 0, then ignore this.
SrcDamage – Controls how much of the source unit’s damage should be added to the missile’s damage. This is calculated in 128ths and acts as a percentage modifier for the source unit’s damage that added to the missile. If equals -1 or 0, then the source damage is not included.
Half2HSrc – Boolean Field. If equals 1 and the source unit is currently wielding a 2-Handed weapon, then the source damage (see “SrcDamage”) is reduced by 50%. If equals 0, then ignore this.
SrcMissDmg – If the missile was created by another missile, then this controls how much of the source missile’s damage should be added to this missile’s damage. This is calculated in 128ths and acts as a percentage modifier for the source missile’s damage that added to this missile. If equals 0, then the source damage is not included.
MinDamage – Minimum baseline physical damage dealt by the missile
MinLevDam1 (to MinLevDam5) – Controls the additional minimum physical damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field.
MaxDamage – Maximum baseline physical damage dealt by the missile
MaxLevDam1 (to MaxLevDam5) – Controls the additional maximum physical damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field.
DmgSymPerCalc – Calculation Field. Determines the percentage increase to the physical damage dealt by the missile based on specified skill levels.
EType – Defines the type of elemental damage dealt by the missile. If this field is empty, then the related elemental fields below will not be used.
Code | Description |
(empty) | None |
fire | Fire |
ltng | Lightning |
mag | Magic |
cold | Cold (Uses “ELen”) |
pois | Poison (Uses “ELen”) |
life | Life Drain |
mana | Mana Drain |
stam | Stamina Drain |
stun | Stun (Uses “ELen”) |
rand | Randomly select between Fire, Lightning, Magic, Cold, or Poison |
burn | Burning (Uses “ELen”) |
frze | Freeze (Uses “ELen”) |
EMin – Minimum baseline elemental damage dealt by the missile
MinELev1 (to MinELev5) – Controls the additional minimum elemental damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field number.
EMax – Maximum baseline elemental damage dealt by the missile
MaxELev1 (MaxELev5) – Controls the additional maximum elemental damage dealt by the missile, calculated using the leveling formula between 5 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17-22, 23-28, 29 and beyond. These 5 level thresholds correlate to each field.
EDmgSymPerCalc – Calculation Field. Determines the percentage increase to the elemental damage dealt by the missile based on specified skill levels.
ELen – The baseline elemental duration dealt by the missile. This is calculated in frame lengths where 25 Frames = 1 second. These fields only apply to appropriate elemental types with a duration.
ELevLen1 (to ELevLen3) – Controls the additional elemental duration added by the missile, calculated using the leveling formula between 3 level thresholds of the missile’s current level. The level thresholds are levels 2-8, 9-16, 17 and beyond. These 3 level thresholds correlate to each field. These fields only apply to appropriate elemental types with a duration.
HitClass – Defines the missile’s own hit class into the damage routines, mainly used for determining hit sound effects and overlays. This field only handles the hit class layers, so values beyond these defined bits are ignored. Uses an integer value to check against different bit fields by using the “&” operator. For example, if the value equals 6 (binary = 110) then that returns true for both the 4 (binary = 100) and 2 (binary = 10) bit field values.
Bit Field Value | Binary Equivalent Value | Description |
16 | 00010000 | Double Layer |
32 | 00010100 | Fire Layer |
48 | 00011110 | Cold Layer |
64 | 01000000 | Lightning Layer |
80 | 01010000 | Poison Layer |
96 | 01100000 | Stun Layer |
112 | 01110000 | Bash Layer |
128 | 10000000 | Thorns Layer |
144 | 10010000 | Sanctuary Layer |
160 | 10100000 | Silent Voice Layer |
176 | 10110000 | Goo Layer |
NumDirections – The number of directions allowed by the missile, based on the DCC file used (see “CelFile”). This value should be within the power of 2, with a minimum value of 1 or up to a maximum value of 64.
LocalBlood – Boolean Field. If equals 1, then change the color of blood missiles to green. If equals 0, then keep the blood missiles colored the default red.
DamageRate – Controls the “damage_framerate” stat (Calculated in 1024ths), which acts as a percentage multiplier for the physical damage reduction and magic damage reduction stat modifiers, when performing damage resistance calculations. This is only enabled if the value is greater than 0.
TravelSound – Points to a “Sound” field defined in the sounds.txt file. Used when the missile is created and while it is alive.
HitSound – Points to a “Sound” field defined in the sounds.txt file. Used when the collides with a target.
ProgSound – Points to a “Sound” field defined in the sounds.txt file. Used for a programmed special event based on the client function.
ProgOverlay – Points to the “overlay” field defined in the Overlay.txt file. Used for a programmed special event based on the server or client function.
ExplosionMissile – Points to the “Missile” field for another missile. Used for the missile created on the client when this missile explodes.
SubMissile1 (to SubMissile3) – Points to the “Missile” field for another missile. Used for creating a new missile based on the server function used.
HitSubMissile1 (to HitSubMissile4) – Points to the “Missile” field for another missile. Used for a new missile after a collision, based on the server function used.
CltSubMissile1 (to CltSubMissile3) – Points to the “Missile” field for another missile. Used for creating a new missile based on the client function used.
CltHitSubMissile1 (to CltHitSubMissile4) – Points to the “Missile” field for another missile. Used for a new missile after a collision, based on the client function used.