• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Mortal Strike v0.02a

Mortal Strike [Q]

Moves to the targeted unit and spin around him dealing damage for a certain amount of time.After that time the (caster) delivers a final blow dealing a heavy damage.

Level 1 - 4.3 damage per 0.03 seconds.200 final blow damage.3 seconds duration.

Level 2 - 5.0 damage per 0.03 seconds.250 final blow damage.4 seconds duration.

Level 3 - 5.7 damage per 0.03 seconds.300 final blow damage.5 seconds duration.

Cooldown = 0 (For MUI Test)

v0.02a Triggers


  • MoS Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- The Caster Is Alive?? --------
      • Set MoS_Condition_Config[0] = True
      • -------- The Target Is Alive?? --------
      • Set MoS_Condition_Config[1] = True
      • -------- The Distance that the caster will spin from --------
      • Set MoS_Stay_Distance = 100.00
      • -------- Detemines the animation speed --------
      • Set MoS_Animation_Speed = 150.00
      • -------- Detemines the default animation speed --------
      • Set MoS_Default_Animation_Speed = 100.00
      • -------- Detemines the speed of spinning around the target --------
      • Set MoS_Spin_Speed[1] = 13.00
      • Set MoS_Spin_Speed[2] = 20.00
      • Set MoS_Spin_Speed[3] = 27.00
      • -------- Detemines the damage in each level --------
      • Set MoS_Damage[1] = 4.30
      • Set MoS_Damage[2] = 5.00
      • Set MoS_Damage[3] = 5.70
      • -------- Detemines the spin duration in each level --------
      • Set MoS_Spell_Duration[1] = 3.00
      • Set MoS_Spell_Duration[2] = 4.00
      • Set MoS_Spell_Duration[3] = 5.00
      • -------- Detemines the final damage dealt in each level --------
      • Set MoS_Final_Damage[1] = 200.00
      • Set MoS_Final_Damage[2] = 250.00
      • Set MoS_Final_Damage[3] = 300.00
      • -------- Detemines the special effect attachment point --------
      • Set MoS_SE_Attachment[1] = right hand
      • Set MoS_SE_Attachment[2] = left hand
      • Set MoS_SE_Attachment[3] = weapon
      • Set MoS_SE_Attachment[4] = overhead
      • -------- Detemines the special effect created upon damage. --------
      • Set MoS_SE_Attachment[5] = chest
      • -------- Animation - Best Use For Blademaster,Sumaro --------
      • -------- Detemines the spinning animation type --------
      • Set MoS_Spell_Animation = spin
      • -------- Detemines the final animation type --------
      • Set MoS_Final_Animation = slam
      • -------- Detemines the model file for the effect attached to the caster --------
      • Set MoS_Effect_Model[1] = Abilities\Weapons\SludgeMissile\SludgeMissile.mdl
      • Set MoS_Effect_Model[2] = Abilities\Weapons\SeaElementalMissile\SeaElementalMissile.mdl
      • Set MoS_Effect_Model[3] = Abilities\Weapons\WaterElementalMissile\WaterElementalMissile.mdl
      • Set MoS_Effect_Model[4] = Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl
      • -------- Detemines the model file for the effect created on the target on dealing damage --------
      • Set MoS_Damage_Model = Abilities\Spells\Other\HealingSpray\HealBottleMissile.mdl
      • -------- Detemines the model file for the effect created on the target on final blow --------
      • Set MoS_Final_Effect_Model = Abilities\Spells\Demon\DarkPortal\DarkPortalTarget.mdl
      • Set MoS_Spell = Mortal Strike


  • MoS Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to MoS_Spell
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MoS_Index_Listener Equal to 0
        • Then - Actions
          • Trigger - Turn on MoS Loop <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • MoS_Recycle_Size Greater than 0
        • Then - Actions
          • Set MoS_Recycle_Size = (MoS_Recycle_Size - 1)
          • Set MoS_Current_Index = MoS_Recycle_Container[MoS_Recycle_Size]
        • Else - Actions
          • Set MoS_Current_Index = MoS_Index_Size
          • Set MoS_Index_Size = (MoS_Index_Size + 1)
      • Set MoS_Target[MoS_Current_Index] = (Target unit of ability being cast)
      • Set MoS_Caster[MoS_Current_Index] = (Triggering unit)
      • Set MoS_Owner = (Owner of MoS_Caster[MoS_Current_Index])
      • Set MoS_Level = (Level of MoS_Spell for MoS_Caster[MoS_Current_Index])
      • Set MoS_Timer[MoS_Current_Index] = MoS_Spell_Duration[MoS_Level]
      • Unit - Turn collision for MoS_Caster[MoS_Current_Index] Off
      • Special Effect - Create a special effect attached to the MoS_SE_Attachment[1] of MoS_Caster[MoS_Current_Index] using MoS_Effect_Model[1]
      • Set MoS_SE_1[MoS_Current_Index] = (Last created special effect)
      • Special Effect - Create a special effect attached to the MoS_SE_Attachment[2] of MoS_Caster[MoS_Current_Index] using MoS_Effect_Model[2]
      • Set MoS_SE_2[MoS_Current_Index] = (Last created special effect)
      • Special Effect - Create a special effect attached to the MoS_SE_Attachment[3] of MoS_Caster[MoS_Current_Index] using MoS_Effect_Model[3]
      • Set MoS_SE_3[MoS_Current_Index] = (Last created special effect)
      • Special Effect - Create a special effect attached to the MoS_SE_Attachment[4] of MoS_Caster[MoS_Current_Index] using MoS_Effect_Model[4]
      • Set MoS_SE_4[MoS_Current_Index] = (Last created special effect)
      • Custom script: call PauseUnit(udg_MoS_Caster[udg_MoS_Current_Index], true)
      • Animation - Play MoS_Caster[MoS_Current_Index]'s MoS_Spell_Animation animation
      • Animation - Change MoS_Caster[MoS_Current_Index]'s animation speed to MoS_Animation_Speed% of its original speed
      • Set MoS_Index_Container[MoS_Index_Listener] = MoS_Current_Index
      • Set MoS_Index_Listener = (MoS_Index_Listener + 1)


  • MoS Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer MoS_Loop) from 0 to (MoS_Index_Listener - 1), do (Actions)
        • Loop - Actions
          • Set MoS_Current_Index = MoS_Index_Container[MoS_Loop]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • MoS_Timer[MoS_Current_Index] Greater than 0.00
            • Then - Actions
              • Set MoS_Timer[MoS_Current_Index] = (MoS_Timer[MoS_Current_Index] - 0.03)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (MoS_Caster[MoS_Current_Index] is alive) Equal to MoS_Condition_Config[0]
                  • (MoS_Target[MoS_Current_Index] is alive) Equal to MoS_Condition_Config[1]
                • Then - Actions
                  • Unit - Order MoS_Caster[MoS_Current_Index] to Hold Position
                  • Unit - Make MoS_Caster[MoS_Current_Index] face MoS_Target[MoS_Current_Index] over 0.00 seconds
                  • Set MoS_Target_Point = (Position of MoS_Target[MoS_Current_Index])
                  • Set MoS_Caster_Point = (Position of MoS_Caster[MoS_Current_Index])
                  • Set MoS_Angle = ((Angle from MoS_Target_Point to MoS_Caster_Point) + MoS_Spin_Speed[MoS_Level])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • MoS_Angle Greater than or equal to 359.00
                    • Then - Actions
                      • Set MoS_Angle = 0.00
                    • Else - Actions
                  • Custom script: call SetUnitX(udg_MoS_Caster[udg_MoS_Current_Index],GetUnitX(udg_MoS_Target[udg_MoS_Current_Index]) + udg_MoS_Stay_Distance * Cos(udg_MoS_Angle * bj_DEGTORAD))
                  • Custom script: call SetUnitY(udg_MoS_Caster[udg_MoS_Current_Index],GetUnitY(udg_MoS_Target[udg_MoS_Current_Index]) + udg_MoS_Stay_Distance * Sin(udg_MoS_Angle * bj_DEGTORAD))
                  • Unit - Cause MoS_Caster[MoS_Current_Index] to damage MoS_Target[MoS_Current_Index], dealing MoS_Damage[MoS_Level] damage of attack type Spells and damage type Normal
                  • Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_MoS_Damage_Model, udg_MoS_Target[udg_MoS_Current_Index],udg_MoS_SE_Attachment[5]))
                  • Custom script: call RemoveLocation(udg_MoS_Target_Point)
                  • Custom script: call RemoveLocation(udg_MoS_Caster_Point)
                • Else - Actions
                  • Set MoS_Timer[MoS_Current_Index] = 0.00
            • Else - Actions
              • Custom script: call PauseUnit(udg_MoS_Caster[udg_MoS_Current_Index], false)
              • Unit - Turn collision for MoS_Caster[MoS_Current_Index] On
              • Unit - Order MoS_Caster[MoS_Current_Index] to Stop
              • Set MoS_Target_Point = (Position of MoS_Target[MoS_Current_Index])
              • Animation - Play MoS_Caster[MoS_Current_Index]'s MoS_Final_Animation animation
              • Unit - Make MoS_Caster[MoS_Current_Index] face MoS_Target[MoS_Current_Index] over 0.00 seconds
              • Unit - Cause MoS_Caster[MoS_Current_Index] to damage MoS_Target[MoS_Current_Index], dealing MoS_Final_Damage[MoS_Level] damage of attack type Spells and damage type Normal
              • Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_MoS_Final_Effect_Model, udg_MoS_Target[udg_MoS_Current_Index],udg_MoS_SE_Attachment[5]))
              • Custom script: call RemoveLocation(udg_MoS_Target_Point)
              • Custom script: call SetUnitTimeScale( udg_MoS_Caster[udg_MoS_Current_Index], udg_MoS_Animation_Speed / udg_MoS_Default_Animation_Speed)
              • Animation - Reset MoS_Caster[MoS_Current_Index]'s animation
              • Special Effect - Destroy MoS_SE_1[MoS_Current_Index]
              • Special Effect - Destroy MoS_SE_2[MoS_Current_Index]
              • Special Effect - Destroy MoS_SE_3[MoS_Current_Index]
              • Special Effect - Destroy MoS_SE_4[MoS_Current_Index]
              • Set MoS_Index_Listener = (MoS_Index_Listener - 1)
              • Set MoS_Index_Container[MoS_Loop] = MoS_Index_Container[MoS_Index_Listener]
              • Set MoS_Recycle_Container[MoS_Recycle_Size] = MoS_Current_Index
              • Set MoS_Recycle_Size = (MoS_Recycle_Size + 1)
              • Set MoS_Loop = (MoS_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • MoS_Index_Listener Equal to 0
                • Then - Actions
                  • Trigger - Turn off MoS Loop <gen>
                • Else - Actions



v0.01 Uploaded Here.
v0.02 Added Custom-Script instead of using simple trigger actions.
v0.02a Changed the screenshot and added credits.


First of all ,credits to doomhammer99(thanks,man)


Keywords:
Bladestorm,Spin,DPS,MUI,GUI,TRIGGERS
Contents

Mortal Strike 0.02a (Map)

Reviews
17:49, 17th Nov 2012 Magtheridon96: Approved. Code looks good and clean, and there are plenty of configurables. Well done.

Moderator

M

Moderator

17:49, 17th Nov 2012
Magtheridon96: Approved.
Code looks good and clean, and there are plenty of configurables. Well done.
 
EDIT: :D CREDITS TO ME :D

Ok your coding are clean and well.

But Instead off using to triggers, you can use 1 triggers at once like this:
Add & Destroy Effects:
  • Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_YourSFX, udg_YourUnit, udg_YourAttachment))
You can move a unit by using this, this is the fastest and cleaner way
  • Custom script: call SetUnitX(udg_YourUnit,GetUnitX(udg_YourUnit) + udg_YourOffset/Speed * Cos(udg_YourAngle * bj_DEGTORAD))
  • Custom script: call SetUnitY(udg_YourUnit,GetUnitY(udg_YourUnit) + udg_YourOffset/Speed * Sin(udg_YourAngle * bj_DEGTORAD))
As you can see above, they're not similar. The 1st SetUnitX and the 2nd is SetUnitY :D.
Instead of Putting this:
  • Else - Actions
  • Unit - Turn collision for MoS_Caster[MoS_Current_Index] On
  • Animation - Change MoS_Caster[MoS_Current_Index]'s animation speed to 100.00% of its original speed
  • Animation - Reset MoS_Caster[MoS_Current_Index]'s animation
  • Special Effect - Destroy MoS_SE_1[MoS_Current_Index]
  • Special Effect - Destroy MoS_SE_2[MoS_Current_Index]
  • Special Effect - Destroy MoS_SE_3[MoS_Current_Index]
  • Special Effect - Destroy MoS_SE_4[MoS_Current_Index]
  • Set MoS_Index_Listener = (MoS_Index_Listener - 1)
  • Set MoS_Index_Container[MoS_Loop] = MoS_Index_Container[MoS_Index_Listener]
  • Set MoS_Recycle_Container[MoS_Recycle_Size] = MoS_Current_Index
  • Set MoS_Recycle_Size = (MoS_Recycle_Size + 1)
  • Set MoS_Loop = (MoS_Loop - 1)
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
You can just do this:
  • Animation - Reset MoS_Caster[MoS_Current_Index]'s animation
  • Special Effect - Destroy MoS_SE_1[MoS_Current_Index]
  • Special Effect - Destroy MoS_SE_2[MoS_Current_Index]
  • Special Effect - Destroy MoS_SE_3[MoS_Current_Index]
  • Special Effect - Destroy MoS_SE_4[MoS_Current_Index]
  • Set MoS_Timer[udg_MoS_Index] = 0.00
You don't really need this, It's only for the Rarity of the Animation
  • Animation - Reset MoS_Caster[MoS_Current_Index]'s animation
Instead of using this:
  • Animation - Change MoS_Caster[MoS_Current_Index]'s animation speed to 100.00% of its original speed
You can use This:
  • Custom script: call SetUnitTimeScale( udg_MoS_Caster[udg_MoS_Index], udg_MoS_AnimSpeed / 100.)
and the 100.00% must be Configurable.

Spell Resource Rating System by doomhammer99

Note: 5 is the highest point that can be given, and 1 is the lowest.

Documentation: -
Triggering: 4
Idea: 5
Usefulness: 3
Overall Aspects: 3

Overall Rating: 3

Rating Comment: Useful[r]

Changes will be made Until Update
 
Last edited:
Level 4
Joined
Sep 1, 2009
Messages
32
Found an Error! Please fix this!

When I cast it looks very fine. But as I am testing the ability I see something which really unusual when the unit cast/activate the spell when its time for the final blow it damages itself.. or (200 Damage for Enemy/Targeted Unit and 200 Damage to Self??


but this is a good spell idea...just fix the self damage. 3/5
 
Top