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

Hook Ride v1.2 [GUI][MUI]

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Descriptions:
-----------------------------------------
Level Descriptions:
Create a lightning arrow for the caster,the arrow will bring the caster move forward the target point,the units which near will damaged and push out of the arrow,when the caster is moving,it will have bonus armor.
181889-albums4279-picture49639.jpg
Triggers
  • HS Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Hook Ride
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HS_IndexSize Equal to 0
        • Then - Actions
          • Trigger - Turn on HS Loop <gen>
        • Else - Actions
      • Set HS_IndexSize = (HS_IndexSize + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HS_IndexSize Greater than HS_IndexMaxSize
        • Then - Actions
          • Set HS_Index[HS_IndexSize] = HS_IndexSize
          • Set HS_IndexMaxSize = HS_IndexSize
        • Else - Actions
      • Set HS_TempInt = HS_Index[HS_IndexSize]
      • Set HS_Caster[HS_TempInt] = (Triggering unit)
      • Set HS_CasterPoint = (Position of HS_Caster[HS_TempInt])
      • Set HS_StartTimer[HS_TempInt] = 100.00
      • Set HS_ExpiredTimer[HS_TempInt] = 0.00
      • Set HS_Boolean[HS_TempInt] = True
      • Set HS_Damage[HS_TempInt] = (5.00 x (Real((Level of Hook Ride for HS_Caster[HS_TempInt]))))
      • Unit - Create 1 HS_Dummy for (Owner of HS_Caster[HS_TempInt]) at HS_CasterPoint facing (Facing of HS_Caster[HS_TempInt]) degrees
      • Set HS_Dummy[HS_TempInt] = (Last created unit)
      • Unit - Add a 4.00 second Generic expiration timer to HS_Dummy[HS_TempInt]
      • Set HS_DummyPoint = (Position of HS_Dummy[HS_TempInt])
      • Lightning - Create a Spirit Link lightning effect from source HS_CasterPoint to target HS_DummyPoint
      • Set HS_LightningEffect[HS_TempInt] = (Last created lightning effect)
      • Unit - Turn collision for HS_Caster[HS_TempInt] Off
      • Unit - Turn collision for HS_Dummy[HS_TempInt] Off
      • Unit - Add Armor to HS_Caster[HS_TempInt]
      • Unit - Pause HS_Caster[HS_TempInt]
      • Custom script: call RemoveLocation(udg_HS_CasterPoint)
      • Custom script: call RemoveLocation(udg_HS_DummyPoint)
  • HS Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer HS_Index_Loop) from 1 to HS_IndexSize, do (Actions)
        • Loop - Actions
          • Set HS_TempInt = HS_Index[HS_Index_Loop]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (HS_Caster[HS_TempInt] is alive) Equal to True
              • HS_StartTimer[HS_TempInt] Greater than or equal to HS_ExpiredTimer[HS_TempInt]
            • Then - Actions
              • Set HS_ExpiredTimer[HS_TempInt] = (HS_ExpiredTimer[HS_TempInt] + 1.00)
              • Set HS_CasterPoint = (Position of HS_Caster[HS_TempInt])
              • Set HS_DummyPoint = (Position of HS_Dummy[HS_TempInt])
              • Set HS_OffPoint = (HS_DummyPoint offset by 30.00 towards (Facing of HS_Dummy[HS_TempInt]) degrees)
              • Special Effect - Create a special effect attached to the weapon of HS_Caster[HS_TempInt] using Abilities\Spells\Items\AIlb\AIlbSpecialArt.mdl
              • Special Effect - Destroy (Last created special effect)
              • Animation - Play HS_Caster[HS_TempInt]'s spell one animation
              • Unit - Move HS_Dummy[HS_TempInt] instantly to HS_OffPoint
              • Lightning - Move HS_LightningEffect[HS_TempInt] to source HS_CasterPoint and target HS_DummyPoint
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between HS_CasterPoint and HS_DummyPoint) Greater than or equal to 250.00
                  • (Terrain pathing at HS_CasterPoint of type Walkability is off) Not equal to True
                • Then - Actions
                  • Set HS_OffPoint2 = (HS_CasterPoint offset by 30.00 towards (Facing of HS_Dummy[HS_TempInt]) degrees)
                  • Unit - Move HS_Caster[HS_TempInt] instantly to HS_OffPoint2
                  • Custom script: set bj_wantDestroyGroup=true
                  • Unit Group - Pick every unit in (Units within 300.00 of HS_DummyPoint matching ((((Matching unit) belongs to an enemy of (Owner of HS_Caster[HS_TempInt])) Equal to True) and ((((Matching unit) is A structure) Not equal to True) and (((Matching unit) is alive) Equal to True)))) and do (Actions)
                    • Loop - Actions
                      • Set HS_PickedUnit = (Picked unit)
                      • Set HS_PickedPoint = (Position of HS_PickedUnit)
                      • Set HS_PickedOffPoint = (HS_PickedPoint offset by -35.00 towards (Facing of (Picked unit)) degrees)
                      • Unit - Move (Picked unit) instantly to HS_PickedOffPoint, facing HS_CasterPoint
                      • Unit - Cause HS_Caster[HS_TempInt] to damage (Picked unit), dealing HS_Damage[HS_TempInt] damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Weapons\Bolt\BoltImpact.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: call RemoveLocation(udg_HS_PickedPoint)
                      • Custom script: call RemoveLocation(udg_HS_PickedOffPoint)
                  • Custom script: call RemoveLocation(udg_HS_OffPoint2)
                • Else - Actions
              • Custom script: call RemoveLocation(udg_HS_CasterPoint)
              • Custom script: call RemoveLocation(udg_HS_DummyPoint)
              • Custom script: call RemoveLocation(udg_HS_OffPoint)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • HS_Boolean[HS_TempInt] Equal to True
                • Then - Actions
                  • Unit - Unpause HS_Caster[HS_TempInt]
                  • Unit - Remove Armor from HS_Caster[HS_TempInt]
                  • Unit - Turn collision for HS_Caster[HS_TempInt] On
                  • Unit - Explode HS_Dummy[HS_TempInt]
                  • Lightning - Destroy HS_LightningEffect[HS_TempInt]
                  • Set HS_Boolean[HS_TempInt] = False
                  • Set HS_Index[HS_Index_Loop] = HS_Index[HS_IndexSize]
                  • Set HS_Index[HS_IndexSize] = HS_TempInt
                  • Set HS_IndexSize = (HS_IndexSize - 1)
                  • Set HS_Index_Loop = (HS_Index_Loop - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • HS_IndexSize Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
Suggestions?
You can leave a message for suggestions.
Bugs?
You can report a bug :p

Changelogs

v1.1 fixed some small explode dummy things :p
v1.2 The caster won't go out the bounds,and fixed some indexing bugs.
Keywords:
Hook,Ride,Hook Ride,Fly,Flying,Shock,Lightning,thunder,bomb
Contents

Hook Ride v1.2 (Map)

Reviews
12th Dec 2015 IcemanBo: For too long time as NeedsFix. Rejected. Remove invulnerability from caster, it has locust so it is already invulnerable. You don't need to turn off the colluision of the dummy with a trigger, the dummy has locust . The...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: For too long time as NeedsFix. Rejected.

Maker, 5th Aug 2011, Hook Ride v1.2

Remove invulnerability from caster, it has locust so it is already invulnerable.
You don't need to turn off the colluision of the dummy with a trigger, the dummy has locust .
The ability shouldn't pause the caster.
You're creating an effect every 0.03 seconds. That's kind of too much.
You could create one when the spell begins and destroy it when the spell end. Or just create less effects.
Playing a unit's animation every 0.03 seconds is not a good solution.
You could use follwo through time on the ability or manipulate animation speed and order a animation when the spell is cast.
It would be nice that the caster didn't travel that far of if one could manipulate the travel length.
Being able to stop at any time would be a bonus and please many users.
You can travel through trees and buildings, is that what you want?
If the caster stops at a map edge or at a cliff, the lightning still moves.
 
Level 12
Joined
Aug 12, 2008
Messages
349
Nice spell. You do improved a lot.
This two custom scripts
  • Custom script: call RemoveLocation(udg_HS_PickedPoint)
  • Custom script: call RemoveLocation(udg_HS_PickedOffPoint)
should put outside of the unit group :)

My comment is that it travels too far. My suggestion is that you should make it so that it stop at the target point instead of travel so far away towards the target point. Besides that, maybe you should add in some better effects during the loop; making it looks like dragging the caster. Good job!
4/5 Vote for approval :) I can vote for 5/5 if you can update it so that the caster stops at the target point.

EDIT:
- dummy's death type should be "Can't raise, Does not decay"
- turn off the collision of dummy; set the collision to 0
suggestion: adjust the shadow of the dummy to make it looks nicer :)
 
Level 16
Joined
Apr 4, 2011
Messages
995
You should save the angle of it as a real for the loop. I'm not sure about it, but other things that change angle could possibly break spell, if I'm correct.

Filter out magic immune units from the damage. You need to make the dummy explode on death, cant raise doesnt decay isn't needed.
 
Level 13
Joined
May 10, 2009
Messages
868
↑ Yep.
--
The lightning isn't linked between the hero and dummy, you could use the function: 'call MoveLightningEx().'




  • Custom script: set udg_Tmp_R1 = GetLocationZ(udg_HS_CasterPoint) + GetUnitFlyHeight(udg_HS_Caster[udg_HS_TempInt]) + 40.
  • Custom script: set udg_Tmp_R2 = GetLocationZ(udg_HS_OffPoint) + GetUnitFlyHeight(udg_HS_Dummy[udg_HS_TempInt])
  • Custom script: call MoveLightningEx(udg_HS_LightningEffect[udg_HS_TempInt], true, GetLocationX(udg_HS_CasterPoint), GetLocationY(udg_HS_CasterPoint), udg_Tmp_R1, GetLocationX(udg_HS_OffPoint), GetLocationY(udg_HS_OffPoint), udg_Tmp_R2)
Damn.. Stupid Custom Script character limit ¬¬.
 
Last edited:
Level 37
Joined
Mar 6, 2006
Messages
9,240
Dummies should be usually set to can't raise, does not decay.

Units with locust won't be raised anyway. The decaying is important. If a unit is set to decay, it will remain there for the duration of flesh + bone decaying. Flesh dacay time is bout 8 seconds and bone decay is 88 seconds. If a unit is set to not decay, the bone decay time is skipped and the dummy is removed sooner from the game.
 
Level 16
Joined
Apr 4, 2011
Messages
995
Dummies should be usually set to can't raise, does not decay.

Units with locust won't be raised anyway. The decaying is important. If a unit is set to decay, it will remain there for the duration of flesh + bone decaying. Flesh dacay time is bout 8 seconds and bone decay is 88 seconds. If a unit is set to not decay, the bone decay time is skipped and the dummy is removed sooner from the game.

Having a unit explode completely negates the need for this, or am I just being an idiot?
 
Top