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

Glaive Fury v1.0a

TOOLTIP:
The Shaman casts his hidden Glaive Fury magic against the enemy target.In every 0.1 seconds a glaive is thrown to the target dealing certain damage and stunning 0.1 second,making the target go out of options.Throws glaives for a certain time

Level 1 - 25 damage dealt by a glaive.1 second duration.
Level 2 - 30 damage dealt by a glaive.1.5 seconds duration.
Level 3 - 35 damage dealt by a glaive.2.5 seconds duration.
Level 4 - 40 damage dealt by a glaive.3 seconds duration.

Cooldown = 0 seconds.(FOR MUI TEST)
Mana Cost = 0



  • GaF Setup
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- The expiration time for the dummy unit.....It also can be considered as the special effect duration --------
      • Set GaF_Expiration_Timer = 1.00
      • -------- The default value for the animation speed(which will be used in resetting the animation speed) --------
      • Set GaF_Default_Animation_Speed = 100.00
      • -------- The default value for the transparency(which will be used in resetting the transparency) --------
      • Set GaF_Default_Transparency = 0.00
      • -------- The duration time that the glaives are thrown (Arrays are the level of the spell) --------
      • Set GaF_Duration[1] = 1.00
      • Set GaF_Duration[2] = 1.50
      • Set GaF_Duration[3] = 2.00
      • Set GaF_Duration[4] = 2.50
      • -------- The speed/rate of the transparency Increasing (Arrays are the level of the spell) --------
      • Set GaF_Transparency_Increase[1] = 2.20
      • Set GaF_Transparency_Increase[2] = 2.20
      • Set GaF_Transparency_Increase[3] = 2.20
      • Set GaF_Transparency_Increase[4] = 2.20
      • -------- The speed/rate of the Animation speed decreasing (Arrays are the level of the spell) --------
      • Set GaF_Animation_Decrease[1] = 2.50
      • Set GaF_Animation_Decrease[2] = 2.50
      • Set GaF_Animation_Decrease[3] = 2.50
      • Set GaF_Animation_Decrease[4] = 2.50
      • -------- The distance from the caster where the glaives are thrown from (Arrays are the level of the spell) --------
      • Set GaF_Glaive_Distance[1] = 100.00
      • Set GaF_Glaive_Distance[2] = 100.00
      • Set GaF_Glaive_Distance[3] = 100.00
      • Set GaF_Glaive_Distance[4] = 100.00
      • -------- The special effect created on everytime the glaives are thrown --------
      • Set GaF_Effect_Model[1] = Abilities\Spells\Orc\FeralSpirit\feralspiritdone.mdl
      • -------- The attachment of the special effect on the target --------
      • Set GaF_Attachment[1] = chest
      • -------- The special effect created on the dummy --------
      • Set GaF_Effect_Model[2] = Objects\Spawnmodels\NightElf\EntBirthTarget\EntBirthTarget.mdl
      • -------- The attachment of the special effect on the dummy --------
      • Set GaF_Attachment[2] = chest
      • -------- The animation name of the caster while casting the spell --------
      • Set GaF_Animation_Type[1] = throw
      • -------- The interval time of the glaives thrown --------
      • Set GaF_Interval = 0.10
      • Set GaF_Spell = Glaive Fury
      • Set GaF_Added_Spell = Glaive Fury(Dummy)
      • Trigger - Add to GaF Loop <gen> the event (Time - Every GaF_Interval seconds of game time)


  • GaF Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to GaF_Spell
    • Actions
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- IMPORTANT SYSTEM STARTS --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • GaF_Index_Listener Equal to 0
        • Then - Actions
          • Trigger - Turn on GaF Loop <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • GaF_Recycle_Size Greater than 0
        • Then - Actions
          • Set GaF_Recycle_Size = (GaF_Recycle_Size - 1)
          • Set GaF_Current_Index = GaF_Recycle_Container[GaF_Recycle_Size]
        • Else - Actions
          • Set GaF_Current_Index = GaF_Index_Size
          • Set GaF_Index_Size = (GaF_Index_Size + 1)
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- IMPORTANT SYSTEM ENDS --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- SAVES THE TARGET INTO A VARIABLE --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set GaF_Target[GaF_Current_Index] = (Target unit of ability being cast)
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- SAVES THE CASTER INTO A VARIABLE --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set GaF_Caster[GaF_Current_Index] = (Triggering unit)
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- SAVES THE OWNER OF THE CASTER INTO A VARIABLE --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set GaF_Owner = (Owner of GaF_Caster[GaF_Current_Index])
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- SAVES THE LEVEL OF SPELL FOR THE CASTER INTO A VARIABLE --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set GaF_Level[GaF_Current_Index] = (Level of GaF_Spell for GaF_Caster[GaF_Current_Index])
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- SAVES THE DURATION/TIME INTO A VARIABLE --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set GaF_Timer[GaF_Current_Index] = GaF_Duration[GaF_Level[GaF_Current_Index]]
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- SAVES THE STARTING TRANSPARENCY INTO A VARIABLE --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set GaF_Transparency[GaF_Current_Index] = GaF_Default_Transparency
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- SAVES THE STARTING ANIMATION SPEED INTO A VARIABLE --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set GaF_Animation_Speed[GaF_Current_Index] = GaF_Default_Animation_Speed
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- PLAYS THE CASTER'S ANIMATION USING "GaF_Animation_Type" --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Animation - Play GaF_Caster[GaF_Current_Index]'s GaF_Animation_Type[1] animation
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- IMPORTANT SYSTEM STARTS --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • Set GaF_Index_Container[GaF_Index_Listener] = GaF_Current_Index
      • Set GaF_Index_Listener = (GaF_Index_Listener + 1)
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- IMPORTANT SYSTEM ENDS --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------


  • GaF Loop
    • Events
    • Conditions
    • Actions
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • -------- IMPORTANT SYSTEM STARTS --------
      • -------- ------------------------------------------------------------------------------------------------------------------------ --------
      • For each (Integer GaF_Loop) from 0 to (GaF_Index_Listener - 1), do (Actions)
        • Loop - Actions
          • Set GaF_Current_Index = GaF_Index_Container[GaF_Loop]
          • -------- ------------------------------------------------------------------------------------------------------------------------ --------
          • -------- IMPORTANT SYSTEM ENDS --------
          • -------- ------------------------------------------------------------------------------------------------------------------------ --------
          • -------- ------------------------------------------------------------------------------------------------------------------------ --------
          • -------- THE MAIN CONDITION(If it returns false it will end the spell for the relative caster) --------
          • -------- ------------------------------------------------------------------------------------------------------------------------ --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (GaF_Caster[GaF_Current_Index] is alive) Equal to True
              • (GaF_Target[GaF_Current_Index] is alive) Equal to True
              • GaF_Timer[GaF_Current_Index] Greater than or equal to 0.00
            • Then - Actions
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- SUBTRACTS THE TIMER WITH "GaF_Interval" --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Set GaF_Timer[GaF_Current_Index] = (GaF_Timer[GaF_Current_Index] - GaF_Interval)
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- SAVES THE DECREASED ANIMATION SPEED --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Set GaF_Animation_Speed[GaF_Current_Index] = (GaF_Animation_Speed[GaF_Current_Index] - GaF_Animation_Decrease[GaF_Level[GaF_Current_Index]])
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- SAVES THE INCREASED TRANSPARENCY --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Set GaF_Transparency[GaF_Current_Index] = (GaF_Transparency[GaF_Current_Index] + GaF_Transparency_Increase[GaF_Level[GaF_Current_Index]])
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- SAVE THE POINTS FOR THE CASTER & THE TARGET & THE SPAWN POINT --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Set GaF_Caster_Point = (Position of GaF_Caster[GaF_Current_Index])
              • Set GaF_Target_Point = (Position of GaF_Target[GaF_Current_Index])
              • Set GaF_Spawn_Point = (GaF_Caster_Point offset by GaF_Glaive_Distance[GaF_Level[GaF_Current_Index]] towards (Angle from GaF_Caster_Point to GaF_Target_Point) degrees)
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- CREATES & DESTROY THE SPECIAL EFFECT using "GaF_Effect_Model[1]" on the target --------
              • -------- P.S. Create and Destroy still shows the animation for once. --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_GaF_Effect_Model[1], udg_GaF_Target[udg_GaF_Current_Index],udg_GaF_Attachment[1]))
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- INCREASES THE TRANSPERENCY WITH "GaF_Transparency" --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Animation - Change GaF_Caster[GaF_Current_Index]'s vertex coloring to (100.00%, 100.00%, 100.00%) with GaF_Transparency[GaF_Current_Index]% transparency
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- DECREASES THE ANIMATION SPEED WITH "GaF_Animation_Speed" --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Animation - Change GaF_Caster[GaF_Current_Index]'s animation speed to GaF_Animation_Speed[GaF_Current_Index]% of its original speed
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- BELOW IS THE MAIN PART OF THE SPELL --------
              • -------- In every GaF_Interval it creates a dummy and orders the created dummy to cast a dummy spell to the target --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Unit - Create 1 Universal Dummy for GaF_Owner at GaF_Spawn_Point facing (Angle from GaF_Caster_Point to GaF_Target_Point) degrees
              • Set GaF_Dummy = (Last created unit)
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- CREATES & DESTROY THE SPECIAL EFFECT using "GaF_Effect_Model[2]" on the dummy --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Custom script: call DestroyEffect(AddSpecialEffectTarget(udg_GaF_Effect_Model[2], udg_GaF_Dummy,udg_GaF_Attachment[2]))
              • Unit - Add a GaF_Expiration_Timer second Generic expiration timer to GaF_Dummy
              • Unit - Add GaF_Added_Spell to GaF_Dummy
              • Unit - Set level of GaF_Added_Spell for GaF_Dummy to GaF_Level[GaF_Current_Index]
              • Unit - Order GaF_Dummy to Human Mountain King - Storm Bolt GaF_Target[GaF_Current_Index]
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- ABOVE IS THE MAIN PART OF THE SPELL --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- CLEAN THE LOCATION LEAKS --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Custom script: call RemoveLocation(udg_GaF_Caster_Point)
              • Custom script: call RemoveLocation(udg_GaF_Target_Point)
              • Custom script: call RemoveLocation(udg_GaF_Spawn_Point)
            • Else - Actions
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- RESETS THE ANIMATION SPEED AND TRANSPARENCY --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Animation - Change GaF_Caster[GaF_Current_Index]'s animation speed to GaF_Default_Animation_Speed% of its original speed
              • Animation - Change GaF_Caster[GaF_Current_Index]'s vertex coloring to (100.00%, 100.00%, 100.00%) with GaF_Default_Transparency% transparency
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- IMPORTANT SYSTEM STARTS --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • Set GaF_Caster[GaF_Current_Index] = No unit
              • Set GaF_Target[GaF_Current_Index] = No unit
              • Set GaF_Dummy = No unit
              • Set GaF_Index_Listener = (GaF_Index_Listener - 1)
              • Set GaF_Index_Container[GaF_Loop] = GaF_Index_Container[GaF_Index_Listener]
              • Set GaF_Recycle_Container[GaF_Current_Index] = GaF_Current_Index
              • Set GaF_Recycle_Size = (GaF_Recycle_Size + 1)
              • Set GaF_Loop = (GaF_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • GaF_Index_Listener Equal to 0
                • Then - Actions
                  • Trigger - Turn off GaF Loop <gen>
                • Else - Actions
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------
              • -------- IMPORTANT SYSTEM ENDS --------
              • -------- ------------------------------------------------------------------------------------------------------------------------ --------


  • GaF Dummy Dies
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Universal Dummy
    • Actions
      • Unit - Remove (Triggering unit) from the game




UPLOADED HERE(FIRST RELEASE)


Cleaned the spawning point leak



glaivefuryjp.jpg



I thought of using the height formulas and projectile system instead of creating and ordering units to cast.But If the loop will be used instead of simply using the object editor,I think it will lag the game pretty much.So I ended up using the object editor.


Keywords:
Glaives,Fury,Spell,Orc,Undead,GUI,MUI,TRIGGER,Simple,B-UP,Classic
Contents

Glaive Fury v0.01a (Map)

Reviews
16:33, 9th Dec 2012 Magtheridon96: Awesome! Your code is clean, commented, and it's efficient ;) One tip: - In the loop, you can store the angle between the caster and the target into a temporary real variable so you don't end up repeating the...

Moderator

M

Moderator

16:33, 9th Dec 2012
Magtheridon96: Awesome!
Your code is clean, commented, and it's efficient ;)

One tip:
- In the loop, you can store the angle between the caster and the target into a temporary real variable so you don't end up repeating the calculation more than once.
 
Top