• 🏆 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!

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:

BUP

BUP

Level 9
Joined
Sep 9, 2012
Messages
172
doomhammer99,,thanks for advising the faster way with custom scripts..
But I'm having problems with the moving thing,,you can check it out in the attachment.
The spin animation stops how should i fix that??
 
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