• 🏆 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!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

[Trigger] What leaks in this spells

Status
Not open for further replies.
Level 19
Joined
Feb 15, 2008
Messages
2,184
They gona be mui gui meelee.

First.

  • Omnislash
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Legolas Omnislash 4
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CL_Index[1] Equal to 0
        • Then - Actions
          • Trigger - Turn on Omnislash Loop <gen>
        • Else - Actions
      • Set CL_Index[1] = (CL_Index[1] + 1)
      • Set CL_Index[2] = (CL_Index[2] + 1)
      • Set CL_Caster[CL_Index[2]] = (Triggering unit)
      • Set CL_Player[CL_Index[2]] = (Owner of (Triggering unit))
      • Set CL_Target[CL_Index[2]] = (Target unit of ability being cast)
      • Set CL_AbilityLevel[CL_Index[2]] = (Level of Legolas Omnislash 4 for CL_Caster[CL_Index[2]])
      • Set CL_Boolean[CL_Index[2]] = True
      • Set CL_Slashes[CL_Index[2]] = (2 + (3 x CL_AbilityLevel[CL_Index[2]]))
      • Set CL_Damage[CL_Index[2]] = (75 x CL_AbilityLevel[CL_Index[2]])
      • Set CL_AOE[CL_Index[2]] = 800.00
      • Special Effect - Create a special effect attached to the weapon of CL_Caster[CL_Index[2]] using Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
      • Set CL_FirstTarget[CL_Index[2]] = True
      • Set CL_Special[CL_Index[2]] = (Last created special effect)
      • Unit - Pause CL_Caster[CL_Index[2]]
      • Animation - Change CL_Caster[CL_Index[2]]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
      • Animation - Change CL_Caster[CL_Index[2]]'s animation speed to 200.00% of its original speed
  • Omnislash Loop
    • Events
      • Time - Every 0.30 seconds of game time
    • Conditions
    • Actions
      • For each (Integer CL_Index[3]) from 1 to CL_Index[2], do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • CL_Boolean[CL_Index[3]] Equal to True
            • Then - Actions
              • Set CL_Slashes[CL_Index[3]] = (CL_Slashes[CL_Index[3]] - 1)
              • Set CL_Loc[1] = (Position of CL_Target[CL_Index[3]])
              • Set CL_Group[1] = (Units within CL_AOE[CL_Index[3]] of CL_Loc[1] matching ((((Matching unit) is A flying unit) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of CL_Player[CL_Index[3]]) Equal to True))))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • CL_FirstTarget[CL_Index[3]] Equal to True
                • Then - Actions
                  • Unit - Move CL_Caster[CL_Index[3]] instantly to CL_Loc[1]
                  • Unit - Make CL_Caster[CL_Index[3]] face CL_Loc[1] over 0.00 seconds
                  • Unit - Cause CL_Caster[CL_Index[3]] to damage CL_Target[CL_Index[3]], dealing (Real(CL_Damage[CL_Index[3]])) damage of attack type Normal and damage type Normal
                  • Animation - Play CL_Caster[CL_Index[3]]'s attack animation
                  • Special Effect - Create a special effect attached to the origin of CL_Caster[CL_Index[3]] using Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set CL_FirstTarget[CL_Index[3]] = False
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CL_Slashes[CL_Index[3]] Greater than 0
                      • (Number of units in CL_Group[1]) Greater than 0
                    • Then - Actions
                      • Set CL_Victim[CL_Index[3]] = (Random unit from CL_Group[1])
                      • Set CL_Loc[2] = (Position of CL_Victim[CL_Index[3]])
                      • Set CL_Loc[3] = (CL_Loc[2] offset by 50.00 towards (Random angle) degrees)
                      • Unit - Move CL_Caster[CL_Index[3]] instantly to CL_Loc[3]
                      • Unit - Make CL_Caster[CL_Index[3]] face CL_Loc[2] over 0.00 seconds
                      • Unit - Cause CL_Caster[CL_Index[3]] to damage CL_Victim[CL_Index[3]], dealing (Real(CL_Damage[CL_Index[3]])) damage of attack type Normal and damage type Normal
                      • Animation - Play CL_Caster[CL_Index[3]]'s attack animation
                      • Special Effect - Create a special effect attached to the origin of CL_Caster[CL_Index[3]] using Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: call RemoveLocation( udg_CL_Loc[2] )
                      • Custom script: call RemoveLocation( udg_CL_Loc[3] )
                    • Else - Actions
                      • Set CL_Index[1] = (CL_Index[1] - 1)
                      • Set CL_Boolean[CL_Index[3]] = False
                      • Special Effect - Destroy CL_Special[CL_Index[3]]
                      • Unit - Unpause CL_Caster[CL_Index[3]]
                      • Animation - Change CL_Caster[CL_Index[3]]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                      • Animation - Reset CL_Caster[CL_Index[3]]'s animation
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CL_Index[1] Equal to 0
                        • Then - Actions
                          • Set CL_Index[2] = 0
                          • Trigger - Turn off (This trigger)
                        • Else - Actions
              • Custom script: call RemoveLocation( udg_CL_Loc[1] )
              • Custom script: call DestroyGroup( udg_CL_Group[1] )
            • Else - Actions
Second.

  • Hook Table
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set PH_Table = (Last created hashtable)
  • Hook25
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Cave Troll Hook Move 1
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • PH_Index[1] Equal to 0
        • Then - Actions
          • Trigger - Turn on Hook Loop25 <gen>
        • Else - Actions
      • Set PH_Index[1] = (PH_Index[1] + 1)
      • Set PH_Index[2] = (PH_Index[2] + 1)
      • Set PH_Counter[PH_Index[2]] = 0
      • Set PH_Cast_Point = (Position of (Triggering unit))
      • Set PH_Target_Point = (Target point of ability being cast)
      • Set PH_Caster[PH_Index[2]] = (Triggering unit)
      • Unit - Pause PH_Caster[PH_Index[2]]
      • Animation - Play PH_Caster[PH_Index[2]]'s attack animation
      • Set PH_Hook_Angle[PH_Index[2]] = (Angle from PH_Cast_Point to PH_Target_Point)
      • Set PH_Near_Point = (PH_Cast_Point offset by 100.00 towards PH_Hook_Angle[PH_Index[2]] degrees)
      • Unit - Create 1 Hook for (Owner of PH_Caster[PH_Index[2]]) at PH_Near_Point facing Default building facing degrees
      • Set PH_Dummy[PH_Index[2]] = (Last created unit)
      • Set PH_Hooked_Is[PH_Index[2]] = False
      • Set PH_Hooked_Unit[PH_Index[2]] = No unit
      • Custom script: call RemoveLocation(udg_PH_Near_Point)
      • Custom script: call RemoveLocation(udg_PH_Cast_Point)
      • Set PH_Damage = (100 x (Level of (Ability being cast) for PH_Caster[PH_Index[2]]))
      • Set PH_Distance = (15 + (5 x (Level of (Ability being cast) for PH_Caster[PH_Index[2]])))
  • Hook Loop25
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer PH_Index[3]) from 1 to PH_Index[2], do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • PH_Counter[PH_Index[3]] Less than PH_Distance
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PH_Hooked_Is[PH_Index[3]] Equal to False
                • Then - Actions
                  • Set PH_Counter[PH_Index[3]] = (PH_Counter[PH_Index[3]] + 1)
                  • Set PH_Dummy_Point[PH_Index[3]] = (Position of PH_Dummy[PH_Index[3]])
                  • Set PH_Hook_Point[PH_Index[3]] = (PH_Dummy_Point[PH_Index[3]] offset by 30.00 towards PH_Hook_Angle[PH_Index[3]] degrees)
                  • Unit - Move PH_Dummy[PH_Index[3]] instantly to PH_Hook_Point[PH_Index[3]]
                  • Unit - Create 1 Effect for (Owner of PH_Caster[PH_Index[3]]) at PH_Dummy_Point[PH_Index[3]] facing PH_Hook_Angle[PH_Index[3]] degrees
                  • Unit - Turn collision for (Last created unit) Off
                  • Hashtable - Save Handle Of(Last created unit) as PH_Counter[PH_Index[3]] of PH_Index[3] in PH_Table
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within 64.00 of PH_Hook_Point[PH_Index[3]] matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of PH_Caster[PH_Index[3]])) Equal to True))) and do (Actions)
                    • Loop - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked unit) is Magic Immune) Equal to False
                          • ((Picked unit) is A structure) Equal to False
                          • ((Picked unit) belongs to an ally of (Owner of PH_Caster[PH_Index[3]])) Equal to False
                          • PH_Hooked_Is[PH_Index[3]] Equal to False
                        • Then - Actions
                          • Set PH_Hooked_Unit[PH_Index[3]] = (Picked unit)
                          • Set PH_Hooked_Is[PH_Index[3]] = True
                          • Unit - Pause (Picked unit)
                          • Unit - Turn collision for (Picked unit) Off
                          • Unit - Cause PH_Caster[PH_Index[3]] to damage (Picked unit), dealing (Real(PH_Damage)) damage of attack type Spells and damage type Lightning
                        • Else - Actions
                          • Custom script: call RemoveLocation(udg_PH_Dummy_Point[udg_PH_Index[3]])
                          • Custom script: call RemoveLocation(udg_PH_Hook_Point[udg_PH_Index[3]])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PH_Counter[PH_Index[3]] Equal to PH_Distance
                    • Then - Actions
                      • Set PH_Hooked_Is[PH_Index[3]] = True
                      • Unit - Unpause PH_Caster[PH_Index[3]]
                    • Else - Actions
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PH_Hooked_Is[PH_Index[3]] Equal to True
                • Then - Actions
                  • Set PH_Counter[PH_Index[3]] = (PH_Counter[PH_Index[3]] - 1)
                  • Set PH_Dummy_Point[PH_Index[3]] = (Position of PH_Dummy[PH_Index[3]])
                  • Set PH_Hook_Point[PH_Index[3]] = (PH_Dummy_Point[PH_Index[3]] offset by 30.00 towards (PH_Hook_Angle[PH_Index[3]] - 180.00) degrees)
                  • Set PH_Effect = (Load (PH_Counter[PH_Index[3]] + 1) of PH_Index[3] in PH_Table)
                  • Unit - Kill PH_Effect
                  • Unit - Remove PH_Effect from the game
                  • Unit - Move PH_Dummy[PH_Index[3]] instantly to PH_Hook_Point[PH_Index[3]]
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PH_Hooked_Unit[PH_Index[3]] Not equal to No unit
                    • Then - Actions
                      • Unit - Move PH_Hooked_Unit[PH_Index[3]] instantly to PH_Dummy_Point[PH_Index[3]]
                    • Else - Actions
                  • Custom script: call RemoveLocation(udg_PH_Dummy_Point[udg_PH_Index[3]])
                  • Custom script: call RemoveLocation(udg_PH_Hook_Point[udg_PH_Index[3]])
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PH_Counter[PH_Index[3]] Equal to 0
                • Then - Actions
                  • Unit - Kill PH_Dummy[PH_Index[3]]
                  • Unit - Remove PH_Dummy[PH_Index[3]] from the game
                  • Unit - Unpause PH_Caster[PH_Index[3]]
                  • Animation - Reset PH_Caster[PH_Index[3]]'s animation
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PH_Hooked_Unit[PH_Index[3]] Not equal to No unit
                    • Then - Actions
                      • Unit - Unpause PH_Hooked_Unit[PH_Index[3]]
                      • Unit - Turn collision for PH_Hooked_Unit[PH_Index[3]] On
                    • Else - Actions
                  • Set PH_Index[1] = (PH_Index[1] - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PH_Index[1] Equal to 0
                    • Then - Actions
                      • Set PH_Index[2] = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
            • Else - Actions
Third.

  • Fury Peak
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) has buff Fury Peak: Buff ) Equal to True
      • ((Attacked unit) is A structure) Equal to False
      • ((Attacked unit) is Magic Immune) Equal to False
      • ((Attacked unit) belongs to an enemy of (Owner of (Attacking unit))) Equal to True
    • Actions
      • Set FP_Point = (Position of (Attacked unit))
      • Floating Text - Create floating text that reads (|c00C80000 + (String((Integer(((Current movement speed of (Attacking unit)) x (0.10 x (Real((Level of Grishnakh Fury Peak 2 for (Attacking unit))))))))))) above (Attacked unit) with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
      • Floating Text - Change the fading age of (Last created floating text) to 0.75 seconds
      • Floating Text - Change the lifespan of (Last created floating text) to 1.50 seconds
      • Floating Text - Change (Last created floating text): Disable permanence
      • Special Effect - Create a special effect attached to the chest of (Attacked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
      • Special Effect - Destroy (Last created special effect)
      • Custom script: call RemoveLocation (udg_FP_Point)
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
You're not destroying PH_Target_Point in Hook25 trigger.

In Hook Loop 25, these
  • Custom script: call RemoveLocation(udg_PH_Dummy_Point[udg_PH_Index[3]])
  • Custom script: call RemoveLocation(udg_PH_Hook_Point[udg_PH_Index[3]])
should be right after the unit group loop, not inside it.
 
Status
Not open for further replies.
Top