• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Shadow of Dread v1.0

  • Like
Reactions: deepstrasz
Description


A magical dagger is thrown at the target area to attract crows slowing nearby enemy units. After a short delay, damage is dealt either inside or outside the area. Affected units are held in place and unable to attack but able to cast spells.
The spell


Tips and Tricks
- If its your first time casting the spell its best to start toggled outward. The normal response if something is thrown at you is to run away from it. The enemy will most likely fall for it.
- If the enemy figures out that there will be no damage staying at the center then its ok. It will allow you to aim hard to hit abilities (if you have any) at your enemy. Also it gives a window to escape (if needed)
- Toggle the ability [Inward]. Normally if you figure out how the ability works you will stay on the center. But when the ability is toggled inward, the mechanics changes and the damage is applied inside the area.
- Keep pressing the toggle button to confuse enemies on whats the effect is going to be like.
- Play mind games on your enemies by changing the mechanics of the spell.
- Force your enemies into moving towards unwanted positions.
- Manipulate your enemies.

About the spell
- The main ability is based on silence (I know channel is better, but i just like silence as personal preference. It can be configured anyway so i think its ok)
- The spell is consists of 5 abilities (1 for the main ability, 2 for the debuffs, and 2 for the toggle. I want the icon to change when toggled thats why 2 abilities are used for the toggle).
- It uses only one dummy unit thanks to Vexorian's dummy.mdx
- It supports damage based from hero stat and most aspects of the spell can be modified to your liking.

Other notes
- The spell (for me) is eye-candy and very flashy.
- The spell requires some skill to master (so you might wanna practice).
- There is one drawback however, the spell uses 2 icon slots.

Special Thanks
- Bannar, Ardenian - for defining "Deception". (lol! i re-read the thread, all my response are balls)
- Bribe, defskull, Chaosy - for the critism. (without critism my spell will not transform into this)
- KILLCIDE, Tank-Commander, DEE-BOO - for encouragement (without them i would give up right from the start)

Credits
- Vexorian for his dummy.mdx
Some Notes

This is my entry from the recent contest Zephyr contest#13 Deception. This has not been modified since its release. Bannar's suggestion will be implemented on future updates for now enjoy

  • Shadow of Dread Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- - --------
      • -------- determines the Shadow of Dread ability --------
      • Set SD_CasterAbility = Shadow of Dread (Hero)
      • -------- - --------
      • -------- determines the slow ability --------
      • Set SD_SlowAbility = Shadow of Dread (Slow)
      • -------- - --------
      • -------- Note: you can adjust the attack speed, movement speed reduction and reduction using object editor --------
      • -------- find the Shadow of Dread (Slow) and modify the fields to your liking --------
      • -------- - --------
      • -------- determines the hold ability --------
      • Set SD_HoldAbility = Shadow of Dread (Hold)
      • -------- - --------
      • -------- Note: you can adjust the hold duration using object editor --------
      • -------- find the Shadow of Dread (Hold) and modify the fields to your liking --------
      • -------- - --------
      • -------- determines the slow buff given by the slow ability --------
      • Set SD_SlowBuff = Shadow of Dread (Slow)
      • -------- - --------
      • -------- determines the ability for toggling inward and outward --------
      • Set SD_OutwardAbility = Shadow of Dread (Outward)
      • Set SD_InwardAbility = Shadow of Dread (Inward)
      • -------- - --------
      • -------- set true if the ability will be set to outward by default --------
      • Set SD_DefaultOutward = True
      • -------- - --------
      • -------- determines the absolute damage dealt by the ability --------
      • Set SD_AbsoluteDamage[1] = 100.00
      • Set SD_AbsoluteDamage[2] = 150.00
      • Set SD_AbsoluteDamage[3] = 200.00
      • -------- - --------
      • -------- determines the damage dealt based on agility --------
      • -------- Note: to deal 30% damage from strength use 30 not 0.3 --------
      • Set SD_StrengthDamage[1] = 0.00
      • Set SD_StrengthDamage[2] = 0.00
      • Set SD_StrengthDamage[3] = 0.00
      • -------- - --------
      • -------- determines the damage dealt based on agility --------
      • -------- Note: to deal 30% damage from agility use 30 not 0.3 --------
      • Set SD_AgilityDamage[1] = 20.00
      • Set SD_AgilityDamage[2] = 20.00
      • Set SD_AgilityDamage[3] = 20.00
      • -------- - --------
      • -------- determines the damage dealt based on agility --------
      • -------- Note: to deal 30% damage from intelligence use 30 not 0.3 --------
      • Set SD_IntelligenceDamage[1] = 0.00
      • Set SD_IntelligenceDamage[2] = 0.00
      • Set SD_IntelligenceDamage[3] = 0.00
      • -------- - --------
      • -------- determines the attack type of the damage --------
      • Set SD_AttackType = Spells
      • -------- - --------
      • -------- determines the damage type of the damage dealt --------
      • Set SD_DamageType = Normal
      • -------- - --------
      • -------- determines the speed of the dagger --------
      • Set SD_DaggerSpeed[1] = 30.00
      • Set SD_DaggerSpeed[2] = 30.00
      • Set SD_DaggerSpeed[3] = 30.00
      • -------- - --------
      • -------- determines the starting height of the dagger --------
      • Set SD_MaxHeight[1] = 150.00
      • Set SD_MaxHeight[2] = 150.00
      • Set SD_MaxHeight[3] = 150.00
      • -------- - --------
      • -------- determines the AoE of the safe area --------
      • Set SD_SafeAoE[1] = 150.00
      • Set SD_SafeAoE[2] = 150.00
      • Set SD_SafeAoE[3] = 150.00
      • -------- - --------
      • -------- determines the AoE outside the safe area where units be gets slowed and damage --------
      • Set SD_CrowAoE[1] = 150.00
      • Set SD_CrowAoE[2] = 150.00
      • Set SD_CrowAoE[3] = 150.00
      • -------- - --------
      • -------- determines the delay before the damage is dealt on enemies --------
      • Set SD_DamageDelay[1] = 2.50
      • Set SD_DamageDelay[2] = 2.00
      • Set SD_DamageDelay[3] = 1.50
      • -------- - --------
      • -------- determines the model size of the crows --------
      • Set SD_CrowModelSize[1] = 100.00
      • Set SD_CrowModelSize[2] = 100.00
      • Set SD_CrowModelSize[3] = 100.00
      • -------- - --------
      • -------- determines the size of the model used in the safe area --------
      • Set SD_TargetModelSize[1] = 150.00
      • Set SD_TargetModelSize[2] = 150.00
      • Set SD_TargetModelSize[3] = 150.00
      • -------- - --------
      • -------- determines the number of crows --------
      • Set SD_CrowCount[1] = 4
      • Set SD_CrowCount[2] = 5
      • Set SD_CrowCount[3] = 6
      • -------- - --------
      • -------- determines the crow's angle in which they are rotated --------
      • Set SD_TurnRate[1] = 5.00
      • Set SD_TurnRate[2] = 5.00
      • Set SD_TurnRate[3] = 5.00
      • -------- - --------
      • -------- determines the color of the crow --------
      • Set SD_Red = 0.00
      • Set SD_Blue = 0.00
      • Set SD_Green = 0.00
      • -------- - --------
      • -------- determines the maximum and minimum flying height of the crow --------
      • Set SD_CrowMaximum = 500.00
      • Set SD_CrowMinimum = 200.00
      • -------- - --------
      • -------- determines the model used by the projectile --------
      • Set SD_DaggerModel = Abilities\Weapons\IllidanMissile\IllidanMissile.mdl
      • -------- - --------
      • -------- determines the model used by the crow --------
      • Set SD_CrowModel = units\creeps\WarEagle\WarEagle.mdl
      • -------- - --------
      • -------- determines the model used as trails of the crow --------
      • Set SD_ShadowModel = Abilities\Weapons\AvengerMissile\AvengerMissile.mdl
      • -------- - --------
      • -------- determines the model used to mark unit hit by the ability --------
      • Set SD_ExplosionModel = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
      • Set SD_UnitAttach = origin
      • -------- - --------
      • -------- determines the model used to mark the safe area --------
      • Set SD_SafeAreaModel1 = Abilities\Spells\Other\Drain\DrainCaster.mdl
      • Set SD_SafeAreaModel2 = Abilities\Spells\NightElf\TargetArtLumber\TargetArtLumber.mdl
      • -------- - --------
      • -------- determines the dummy unit type --------
      • Set SD_DummyType = Crow's Deathfall (dummy)
      • -------- - --------
      • -------- add all abilities in your map that unlearns hero ability --------
      • -------- Note: It is important to add you abilities as the ability is adding a new ability to the unit when learning --------
      • -------- keep using the SD_UnLearnList and increase the index then add abilities that unlearns hero ability --------
      • Set SD_UnlearnList[1] = Tome of Retraining
      • -------- - --------
      • -------- set SD_UnlearnTotal to the number of abilities that unlearns hero abilities --------
      • Set SD_UnlearnTotal = 1
      • -------- - --------
      • -------- one dummy caster setup --------
      • Set SD_Point1 = (Random point in (Playable map area))
      • Unit - Create 1 SD_DummyType for Neutral Passive at SD_Point1 facing Default building facing degrees
      • Set SD_Dummy = (Last created unit)
      • Custom script: call RemoveLocation(udg_SD_Point1)
      • Unit - Add SD_CasterAbility to SD_Dummy
      • Unit - Remove SD_CasterAbility from SD_Dummy
      • Unit - Add SD_InwardAbility to SD_Dummy
      • Unit - Remove SD_InwardAbility from SD_Dummy
      • Unit - Add SD_OutwardAbility to SD_Dummy
      • Unit - Remove SD_OutwardAbility from SD_Dummy
      • Unit - Add SD_HoldAbility to SD_Dummy
      • Unit - Add SD_SlowAbility to SD_Dummy
      • Visibility - Create an initially Enabled visibility modifier for Neutral Passive emitting Visibility across (Playable map area)
      • Custom script: set bj_wantDestroyGroup=true
      • Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • Set SD_PickedUnit = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of SD_CasterAbility for SD_PickedUnit) Greater than 0
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SD_DefaultOutward Equal to True
                • Then - Actions
                  • Unit - Add SD_OutwardAbility to SD_PickedUnit
                • Else - Actions
                  • Unit - Add SD_InwardAbility to SD_PickedUnit
            • Else - Actions



  • Shadow of Dread Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to SD_CasterAbility
    • Actions
      • -------- - --------
      • -------- temporary values --------
      • Set SD_TempCaster = (Triggering unit)
      • Set SD_TempPlayer = (Triggering player)
      • Set SD_TempLevel = (Level of SD_CasterAbility for SD_TempCaster)
      • -------- - --------
      • -------- indexing --------
      • Set SD_Index = (SD_Index + 1)
      • Set SD_Caster[SD_Index] = SD_TempCaster
      • Set SD_Player[SD_Index] = SD_TempPlayer
      • Set SD_Level[SD_Index] = SD_TempLevel
      • -------- - --------
      • -------- angles and distance --------
      • Set SD_Point1 = (Position of SD_TempCaster)
      • Set SD_Point2 = (Target point of ability being cast)
      • Set SD_TempDistance = (Distance between SD_Point1 and SD_Point2)
      • Set SD_Angle[SD_Index] = (Angle from SD_Point1 to SD_Point2)
      • Custom script: call RemoveLocation(udg_SD_Point2)
      • Set SD_MaxDistance[SD_Index] = SD_TempDistance
      • -------- - --------
      • -------- initialize values --------
      • Set SD_TimeLeft[SD_Index] = SD_DamageDelay[SD_Level[SD_Index]]
      • Set SD_ActionId[SD_Index] = 0
      • Set SD_CurrentHeight[SD_Index] = 0.00
      • Set SD_CurrentDistance[SD_Index] = 0.00
      • Set SD_Flag[SD_Index] = True
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of SD_OutwardAbility for SD_Caster[SD_Index]) Equal to 1
        • Then - Actions
          • Set SD_IsOutward[SD_Index] = True
        • Else - Actions
          • Set SD_IsOutward[SD_Index] = False
      • -------- - --------
      • -------- calculate damage --------
      • Set SD_TempStrDamage = ((Real((Strength of SD_Caster[SD_Index] (Include bonuses)))) x (SD_StrengthDamage[SD_Level[SD_Index]] x 0.01))
      • Set SD_TempAgiDamage = ((Real((Agility of SD_Caster[SD_Index] (Include bonuses)))) x (SD_AgilityDamage[SD_Level[SD_Index]] x 0.01))
      • Set SD_TempIntDamage = ((Real((Intelligence of SD_Caster[SD_Index] (Include bonuses)))) x (SD_IntelligenceDamage[SD_Level[SD_Index]] x 0.01))
      • Set SD_Damage[SD_Index] = ((SD_TempStrDamage + SD_TempAgiDamage) + (SD_TempIntDamage + SD_AbsoluteDamage[SD_Level[SD_Index]]))
      • -------- - --------
      • -------- create projectile --------
      • Unit - Create 1 SD_DummyType for Neutral Passive at SD_Point1 facing SD_Angle[SD_Index] degrees
      • Set SD_DaggerUnit[SD_Index] = (Last created unit)
      • Custom script: call RemoveLocation(udg_SD_Point1)
      • Unit - Add Storm Crow Form to SD_DaggerUnit[SD_Index]
      • Unit - Remove Storm Crow Form from SD_DaggerUnit[SD_Index]
      • Set SD_PlaceHolder = SD_DaggerUnit[SD_Index]
      • Special Effect - Create a special effect attached to the origin of SD_DaggerUnit[SD_Index] using SD_DaggerModel
      • Set SD_DaggerEffect[SD_Index] = (Last created special effect)
      • -------- - --------
      • -------- run effect --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SD_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Shadow of Dread Effect <gen>
        • Else - Actions
      • -------- - --------
      • -------- pre calculate angle --------
      • Set SD_CrowCounter = SD_CrowCount[SD_Level[SD_Index]]
      • Set SD_AngleAdjustment = (360.00 / (Real(SD_CrowCounter)))
      • Set SD_TempAngle = SD_Angle[SD_Index]
      • For each (Integer SD_Looper) from 1 to SD_CrowCounter, do (Actions)
        • Loop - Actions
          • -------- - --------
          • -------- indexing --------
          • Set SD_Index = (SD_Index + 1)
          • Set SD_Caster[SD_Index] = SD_TempCaster
          • Set SD_Player[SD_Index] = SD_TempPlayer
          • Set SD_Level[SD_Index] = SD_TempLevel
          • -------- - --------
          • -------- angle and distance --------
          • Set SD_Angle[SD_Index] = SD_TempAngle
          • Set SD_TempAngle = (SD_TempAngle - SD_AngleAdjustment)
          • Set SD_MaxDistance[SD_Index] = SD_TempDistance
          • Set SD_CrowDistance[SD_Index] = (SD_SafeAoE[SD_Level[SD_Index]] + (SD_CrowAoE[SD_Level[SD_Index]] / 2.00))
          • -------- - --------
          • -------- initialize values --------
          • Set SD_TimeLeft[SD_Index] = SD_DamageDelay[SD_Level[SD_Index]]
          • Set SD_ActionId[SD_Index] = 1
          • Set SD_CurrentHeight[SD_Index] = 0.00
          • Set SD_CurrentDistance[SD_Index] = 0.00
          • Set SD_Flag[SD_Index] = True
          • Set SD_DaggerUnit[SD_Index] = SD_PlaceHolder



  • Shadow of Dread Effect
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer SD_Looper) from 1 to SD_Index, do (Actions)
        • Loop - Actions
          • -------- - --------
          • -------- stage 1: dagger is flying --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SD_CurrentDistance[SD_Looper] Less than SD_MaxDistance[SD_Looper]
            • Then - Actions
              • -------- - --------
              • -------- moves the dagger --------
              • Set SD_CurrentDistance[SD_Looper] = (SD_CurrentDistance[SD_Looper] + SD_DaggerSpeed[SD_Level[SD_Looper]])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SD_ActionId[SD_Looper] Equal to 0
                • Then - Actions
                  • Set SD_CurrentHeight[SD_Looper] = (SD_MaxHeight[SD_Level[SD_Looper]] - ((SD_CurrentDistance[SD_Looper] / SD_MaxDistance[SD_Looper]) x SD_MaxHeight[SD_Level[SD_Looper]]))
                  • Animation - Change SD_DaggerUnit[SD_Looper] flying height to SD_CurrentHeight[SD_Looper] at 0.00
                  • Set SD_Point1 = (Position of SD_DaggerUnit[SD_Looper])
                  • Set SD_Point2 = (SD_Point1 offset by SD_DaggerSpeed[SD_Level[SD_Looper]] towards SD_Angle[SD_Looper] degrees)
                  • Custom script: call SetUnitX(udg_SD_DaggerUnit[udg_SD_Looper], GetLocationX(udg_SD_Point2))
                  • Custom script: call SetUnitY(udg_SD_DaggerUnit[udg_SD_Looper], GetLocationY(udg_SD_Point2))
                  • Custom script: call RemoveLocation(udg_SD_Point1)
                  • Custom script: call RemoveLocation(udg_SD_Point2)
                • Else - Actions
            • Else - Actions
              • -------- - --------
              • -------- dagger has landed --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SD_Flag[SD_Looper] Equal to True
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SD_ActionId[SD_Looper] Equal to 0
                    • Then - Actions
                      • -------- - --------
                      • -------- change special effect --------
                      • Special Effect - Destroy SD_DaggerEffect[SD_Looper]
                      • Special Effect - Create a special effect attached to the origin of SD_DaggerUnit[SD_Looper] using SD_SafeAreaModel2
                      • Set SD_DaggerEffect[SD_Looper] = (Last created special effect)
                      • Special Effect - Create a special effect attached to the origin of SD_DaggerUnit[SD_Looper] using SD_SafeAreaModel1
                      • Set SD_AreaEffect[SD_Looper] = (Last created special effect)
                      • Animation - Change SD_DaggerUnit[SD_Looper]'s size to (SD_TargetModelSize[SD_Level[SD_Looper]]%, SD_TargetModelSize[SD_Level[SD_Looper]]%, SD_TargetModelSize[SD_Level[SD_Looper]]%) of its original size
                    • Else - Actions
                      • -------- - --------
                      • -------- create crows --------
                      • Set SD_Point1 = (Position of SD_DaggerUnit[SD_Looper])
                      • Set SD_Point2 = (SD_Point1 offset by SD_CrowDistance[SD_Looper] towards SD_Angle[SD_Looper] degrees)
                      • Unit - Create 1 SD_DummyType for Neutral Passive at SD_Point2 facing SD_Angle[SD_Looper] degrees
                      • Set SD_CrowUnit[SD_Looper] = (Last created unit)
                      • Custom script: call RemoveLocation(udg_SD_Point1)
                      • Custom script: call RemoveLocation(udg_SD_Point2)
                      • Set SD_TempAngle = (SD_Angle[SD_Looper] + 90.00)
                      • Unit - Make SD_CrowUnit[SD_Looper] face SD_TempAngle over 0.00 seconds
                      • Special Effect - Create a special effect attached to the origin of SD_CrowUnit[SD_Looper] using SD_ShadowModel
                      • Set SD_DaggerEffect[SD_Looper] = (Last created special effect)
                      • Special Effect - Create a special effect attached to the origin of SD_CrowUnit[SD_Looper] using SD_CrowModel
                      • Set SD_AreaEffect[SD_Looper] = (Last created special effect)
                      • Unit - Add Storm Crow Form to SD_CrowUnit[SD_Looper]
                      • Unit - Remove Storm Crow Form from SD_CrowUnit[SD_Looper]
                      • Animation - Change SD_CrowUnit[SD_Looper] flying height to (Random real number between SD_CrowMinimum and SD_CrowMaximum) at 0.00
                      • Animation - Change SD_CrowUnit[SD_Looper]'s vertex coloring to (SD_Red%, SD_Green%, SD_Blue%) with 0.00% transparency
                      • Animation - Change SD_CrowUnit[SD_Looper]'s size to (SD_CrowModelSize[SD_Level[SD_Looper]]%, SD_CrowModelSize[SD_Level[SD_Looper]]%, SD_CrowModelSize[SD_Level[SD_Looper]]%) of its original size
                • Else - Actions
              • -------- - --------
              • -------- notify --------
              • Set SD_Flag[SD_Looper] = False
          • -------- - --------
          • -------- stage 2: dagger has landed --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SD_Flag[SD_Looper] Equal to False
            • Then - Actions
              • -------- - --------
              • -------- checks the delay --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SD_TimeLeft[SD_Looper] Greater than 0.00
                • Then - Actions
                  • -------- - --------
                  • Set SD_TimeLeft[SD_Looper] = (SD_TimeLeft[SD_Looper] - 0.03)
                  • -------- - --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SD_ActionId[SD_Looper] Equal to 0
                    • Then - Actions
                      • Set SD_Point1 = (Position of SD_DaggerUnit[SD_Looper])
                      • Set SD_DamageGroup = (Units within (SD_SafeAoE[SD_Level[SD_Looper]] + SD_CrowAoE[SD_Level[SD_Looper]]) of SD_Point1)
                      • Set SD_SafeGroup = (Units within SD_SafeAoE[SD_Level[SD_Looper]] of SD_Point1)
                      • Unit Group - Remove all units of SD_SafeGroup from SD_DamageGroup
                      • Custom script: call RemoveLocation(udg_SD_Point1)
                      • Unit - Set level of SD_SlowAbility for SD_Dummy to SD_Level[SD_Looper]
                      • -------- - --------
                      • -------- slow units near the area --------
                      • Unit Group - Pick every unit in SD_DamageGroup and do (Actions)
                        • Loop - Actions
                          • Set SD_PickedUnit = (Picked unit)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (SD_PickedUnit is A structure) Equal to False
                              • (SD_PickedUnit is Magic Immune) Equal to False
                              • (SD_PickedUnit is Mechanical) Equal to False
                              • (SD_PickedUnit is alive) Equal to True
                              • (SD_PickedUnit belongs to an enemy of SD_Player[SD_Looper]) Equal to True
                              • (SD_PickedUnit has buff SD_SlowBuff) Equal to False
                            • Then - Actions
                              • Set SD_Point1 = (Position of SD_PickedUnit)
                              • Custom script: call SetUnitX(udg_SD_Dummy, GetLocationX(udg_SD_Point1))
                              • Custom script: call SetUnitY(udg_SD_Dummy, GetLocationY(udg_SD_Point1))
                              • Custom script: call RemoveLocation(udg_SD_Point1)
                              • Unit - Order SD_Dummy to Undead Necromancer - Cripple SD_PickedUnit
                            • Else - Actions
                              • Set SD_PickedUnit = No unit
                      • Custom script: call DestroyGroup(udg_SD_DamageGroup)
                      • Custom script: call DestroyGroup(udg_SD_SafeGroup)
                    • Else - Actions
                      • -------- - --------
                      • -------- rotate crows --------
                      • Set SD_Angle[SD_Looper] = (SD_Angle[SD_Looper] + SD_TurnRate[SD_Level[SD_Looper]])
                      • Set SD_TempAngle = (SD_Angle[SD_Looper] + 90.00)
                      • Unit - Make SD_CrowUnit[SD_Looper] face SD_TempAngle over 0.00 seconds
                      • Set SD_Point1 = (Position of SD_DaggerUnit[SD_Looper])
                      • Set SD_Point2 = (SD_Point1 offset by SD_CrowDistance[SD_Looper] towards SD_Angle[SD_Looper] degrees)
                      • Custom script: call SetUnitX(udg_SD_CrowUnit[udg_SD_Looper], GetLocationX(udg_SD_Point2))
                      • Custom script: call SetUnitY(udg_SD_CrowUnit[udg_SD_Looper], GetLocationY(udg_SD_Point2))
                      • Custom script: call RemoveLocation(udg_SD_Point1)
                      • Custom script: call RemoveLocation(udg_SD_Point2)
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SD_ActionId[SD_Looper] Equal to 0
                    • Then - Actions
                      • -------- - --------
                      • -------- deal damage and hold enemies --------
                      • Unit - Set level of SD_HoldAbility for SD_Dummy to SD_Level[SD_Looper]
                      • Set SD_Point1 = (Position of SD_DaggerUnit[SD_Looper])
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • SD_IsOutward[SD_Looper] Equal to True
                        • Then - Actions
                          • Set SD_DamageGroup = (Units within (SD_SafeAoE[SD_Level[SD_Looper]] + SD_CrowAoE[SD_Level[SD_Looper]]) of SD_Point1)
                          • Set SD_SafeGroup = (Units within SD_SafeAoE[SD_Level[SD_Looper]] of SD_Point1)
                          • Unit Group - Remove all units of SD_SafeGroup from SD_DamageGroup
                          • Custom script: call DestroyGroup(udg_SD_SafeGroup)
                        • Else - Actions
                          • Set SD_DamageGroup = (Units within SD_SafeAoE[SD_Level[SD_Looper]] of SD_Point1)
                      • Custom script: call RemoveLocation(udg_SD_Point1)
                      • Unit Group - Pick every unit in SD_DamageGroup and do (Actions)
                        • Loop - Actions
                          • Set SD_PickedUnit = (Picked unit)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (SD_PickedUnit is A structure) Equal to False
                              • (SD_PickedUnit is Magic Immune) Equal to False
                              • (SD_PickedUnit is Mechanical) Equal to False
                              • (SD_PickedUnit is alive) Equal to True
                              • (SD_PickedUnit belongs to an enemy of SD_Player[SD_Looper]) Equal to True
                            • Then - Actions
                              • Unit - Cause SD_Caster[SD_Looper] to damage SD_PickedUnit, dealing SD_Damage[SD_Looper] damage of attack type SD_AttackType and damage type SD_DamageType
                              • Special Effect - Create a special effect attached to the SD_UnitAttach of SD_PickedUnit using SD_ExplosionModel
                              • Special Effect - Destroy (Last created special effect)
                              • Set SD_Point1 = (Position of SD_PickedUnit)
                              • Custom script: call SetUnitX(udg_SD_Dummy, GetLocationX(udg_SD_Point1))
                              • Custom script: call SetUnitY(udg_SD_Dummy, GetLocationY(udg_SD_Point1))
                              • Custom script: call RemoveLocation(udg_SD_Point1)
                              • Unit - Order SD_Dummy to Night Elf Keeper Of The Grove - Entangling Roots SD_PickedUnit
                            • Else - Actions
                              • Set SD_PickedUnit = No unit
                      • Custom script: call DestroyGroup(udg_SD_DamageGroup)
                      • Special Effect - Destroy SD_AreaEffect[SD_Looper]
                      • Special Effect - Destroy SD_DaggerEffect[SD_Looper]
                      • Unit - Add a 0.01 second Generic expiration timer to SD_DaggerUnit[SD_Looper]
                    • Else - Actions
                      • -------- - --------
                      • -------- clean up --------
                      • Special Effect - Destroy SD_AreaEffect[SD_Looper]
                      • Special Effect - Destroy SD_DaggerEffect[SD_Looper]
                      • Unit - Add a 0.01 second Generic expiration timer to SD_CrowUnit[SD_Looper]
                      • Unit - Add a 0.01 second Generic expiration timer to SD_DaggerUnit[SD_Looper]
                  • Set SD_ActionId[SD_Looper] = 3
            • Else - Actions
          • -------- - --------
          • -------- stage 3: deindex --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SD_ActionId[SD_Looper] Equal to 3
            • Then - Actions
              • Set SD_ActionId[SD_Looper] = SD_ActionId[SD_Index]
              • Set SD_Angle[SD_Looper] = SD_Angle[SD_Index]
              • Set SD_Caster[SD_Looper] = SD_Caster[SD_Index]
              • Set SD_CurrentDistance[SD_Looper] = SD_CurrentDistance[SD_Index]
              • Set SD_CurrentHeight[SD_Looper] = SD_CurrentHeight[SD_Index]
              • Set SD_DaggerEffect[SD_Looper] = SD_DaggerEffect[SD_Index]
              • Set SD_DaggerUnit[SD_Looper] = SD_DaggerUnit[SD_Index]
              • Set SD_Damage[SD_Looper] = SD_Damage[SD_Index]
              • Set SD_Flag[SD_Looper] = SD_Flag[SD_Index]
              • Set SD_Level[SD_Looper] = SD_Level[SD_Index]
              • Set SD_CrowDistance[SD_Looper] = SD_CrowDistance[SD_Index]
              • Set SD_MaxDistance[SD_Looper] = SD_MaxDistance[SD_Index]
              • Set SD_Player[SD_Looper] = SD_Player[SD_Index]
              • Set SD_AreaEffect[SD_Looper] = SD_AreaEffect[SD_Index]
              • Set SD_CrowUnit[SD_Looper] = SD_CrowUnit[SD_Index]
              • Set SD_TimeLeft[SD_Looper] = SD_TimeLeft[SD_Index]
              • Set SD_IsOutward[SD_Looper] = SD_IsOutward[SD_Index]
              • Set SD_Looper = (SD_Looper - 1)
              • Set SD_Index = (SD_Index - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SD_Index Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
            • Else - Actions



  • Shadow of Dread Learn
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Level of SD_CasterAbility for (Triggering unit)) Equal to 1
    • Actions
      • Set SD_TempCaster = (Triggering unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SD_DefaultOutward Equal to True
        • Then - Actions
          • Unit - Add SD_OutwardAbility to SD_TempCaster
        • Else - Actions
          • Unit - Add SD_InwardAbility to SD_TempCaster



  • Shadow of Dread Unlearn
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Level of SD_InwardAbility for (Triggering unit)) Equal to 1
          • (Level of SD_OutwardAbility for (Triggering unit)) Equal to 1
    • Actions
      • -------- - --------
      • -------- conditions are placed on the trigger to avoid firing inappropriately --------
      • Set SD_TempCaster = (Triggering unit)
      • For each (Integer SD_Looper) from 1 to SD_UnlearnTotal, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Ability being cast) Equal to SD_UnlearnList[SD_Looper]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Level of SD_OutwardAbility for SD_TempCaster) Equal to 1
                • Then - Actions
                  • Unit - Remove SD_OutwardAbility from SD_TempCaster
                • Else - Actions
                  • Unit - Remove SD_InwardAbility from SD_TempCaster
            • Else - Actions



  • Shadow of Dread Switcher
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Ability being cast) Equal to SD_OutwardAbility
          • (Ability being cast) Equal to SD_InwardAbility
    • Actions
      • Set SD_TempCaster = (Triggering unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ability being cast) Equal to SD_OutwardAbility
        • Then - Actions
          • Unit - Remove SD_OutwardAbility from SD_TempCaster
          • Unit - Add SD_InwardAbility to SD_TempCaster
        • Else - Actions
          • Unit - Remove SD_InwardAbility from SD_TempCaster
          • Unit - Add SD_OutwardAbility to SD_TempCaster


Keywords:
shadow, of, dread, empirean, deception, crow, death, fall, unique
Contents

Shadow of Dread (Map)

Reviews
11:13, 10th Jan 2016 IcemanBo: Bannar's judgement applied: http://www.hiveworkshop.com/forums/arena-226/zephyr-contest-13-results-273612/#post2766833

Moderator

M

Moderator

11:13, 10th Jan 2016
IcemanBo: Bannar's judgement applied: http://www.hiveworkshop.com/forums/arena-226/zephyr-contest-13-results-273612/#post2766833
 
Top