Lightning Warrior Ability

Kalder

New Member
Reaction score
1
Multi-Hook Ability Help

Ok, so im making an ORPG and one of the classes is going to be a Tech warrior. I am making a spell called Static Cling and it acts similarly to pudges meat hook spell in dota except its chain lightning based and pulls multiple targets instead of one. How can i get this to work because the move target of ability being cast only pulls the first target. How can i get this to work and thank you for any help given. :)
 

Kalder

New Member
Reaction score
1
ok

how do i do that but for now here

Trigger:
  • Untitled Trigger 002
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Static Cling
    • Actions
      • Unit - Move (Target unit of ability being cast) instantly to (Position of (Triggering unit))
 

Pritrostell

New Member
Reaction score
1
just throwing this out there, you could create a small region off the side of the map, and have it center on the target of your ability

then instantly move all units in region to point of casting unit

could be slightly flawed if you use units to make buildings, trees, etc. but otherwise should do what you want.

EDIT:

Trigger:
  • Untitled Trigger 002
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Animate Dead
    • Actions
      • Region - Center Region 000 <gen> on (Target point of ability being cast)
      • Unit Group - Pick every unit in (Units in Region 000 <gen>) and do (Actions)
        • Loop - Actions
          • Unit - Move (Triggering unit) instantly to (Position of (Casting unit))


just instead of animate dead make it your static cling
 

ShadowInTheD

Active Member
Reaction score
12
There are probably a lot of ways to do this.. You could put a buff on the unit whenever it gets hit by the spell, and then all the units with that buff gets pulled toward caster. You could throw all the units that were hit by the chain in a group and pull the whole group toward the caster. But you can't use "Target of spell being cast" because your target is only the unit that you click on, not all that have been hit.
 

Kalder

New Member
Reaction score
1
how...?

There are probably a lot of ways to do this.. You could put a buff on the unit whenever it gets hit by the spell, and then all the units with that buff gets pulled toward caster. You could throw all the units that were hit by the chain in a group and pull the whole group toward the caster. But you can't use "Target of spell being cast" because your target is only the unit that you click on, not all that have been hit.

These are good ideas but how would i create the "You could put a buff on the unit whenever it gets hit by the spell, and then all the units with that buff gets pulled toward caster." trigger.
Thanks :confused:
 

ShadowInTheD

Active Member
Reaction score
12
Actually, I don't know how you would add the buffs, thought you could, hmmmmm. Nor do I think you can put them in a group. Another way to do it would be to base the spell off something like stormbolt and get random targets and pull those picked targets toward caster.
 

Kalder

New Member
Reaction score
1
i see...

Actually, I don't know how you would add the buffs, thought you could, hmmmmm. Nor do I think you can put them in a group. Another way to do it would be to base the spell off something like stormbolt and get random targets and pull those picked targets toward caster.
I meant to say i know how to get the buff on the units being hit but how do i get it to pull the buffed units
 

ShadowInTheD

Active Member
Reaction score
12
So this is what I came up with:

Trigger:
  • Chain Pull
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Storm Bolt
    • Actions
      • Set hitUnit[1] = (Target unit of ability being cast)
      • Set Spell_Pivot = (Position of (Targeted unit))
      • Set TempGroup = (Units within 500.00 of Spell_Pivot matching (((Triggering player) is an enemy of (Owner of (Picked unit))) Equal to True))
      • Custom script: call RemoveLocation(udg_Spell_Caster)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set RangeCounter = 500.00
          • Set Spell_Caster = Spell_Pivot
          • Custom script: call RemoveLocation(udg_Spell_Pivot)
          • Unit Group - Pick every unit in TempGroup and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hitUnit[1] Not equal to (Picked unit)
                  • hitUnit[2] Not equal to (Picked unit)
                  • hitUnit[3] Not equal to (Picked unit)
                  • hitUnit[4] Not equal to (Picked unit)
                  • (Distance between Spell_Caster and (Position of (Picked unit))) Less than RangeCounter
                • Then - Actions
                  • Set RangeCounter = (Distance between Spell_Caster and (Position of PickedUnit))
                  • Set Spell_Pivot = (Position of PickedUnit)
                  • Set PickedUnit = (Picked unit)
                  • Set hitUnit[(Integer A)] = (Picked unit)
                • Else - Actions
              • Unit - Create 1 Sorceress for (Owner of (Triggering unit)) at Spell_Caster facing Default building facing degrees
              • Unit - Order (Last created unit) to Neutral - Firebolt PickedUnit
              • Unit - Kill (Last created unit)
              • Custom script: call RemoveLocation(udg_Spell_Caster)
      • Custom script: call DestroyGroup(udg_TempGroup)


Variables:
hitUnit - Unit, Spell_Caster - Point, Spell_Pivot - Point, TempGroup - Group, RangeCounter - Real, PickedUnit - Unit

Spells: The spells are just dummies for animations, so you can choose what ever targetting spell (that does damage and any effects you want) for each of them.

This is just the part to hit them with chain lightning (the reason for this is to make it easy to get the targets to move toward the caster). This trigger, though, has 2 damages, the main spell, which has initial damage, and the second spell which transfers the same amount of damage to the last three targetted units. If you want me to, I can change it so that it does less damage per unit if you want, but it'll be more complicated.

Try just that and see if it works. If it doesn't, tell me and I'll try to fix it.
 

Kalder

New Member
Reaction score
1
How do i integrate in the if condition
Trigger:
  • (Distance between Spell_Caster and (Position of (Picked unit))) Less than RangeCounter
. Thx for this seems to be looking good so far
 

Kalder

New Member
Reaction score
1
Trigger:
  • Untitled Trigger 002
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Static Cling
    • Actions
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in TempGroup and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between Spell_Caster and (Position of PickedUnit)) Less than RangeCounter
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                • Then - Actions
                  • Set hitUnit = (Picked unit)
                  • Set PickedUnit = (Picked unit)
                  • Set Spell_Pivot = (Position of (Picked unit))
                  • Set RangeCounter = (Distance between Spell_Caster and (Position of PickedUnit))
                • Else - Actions
                  • Custom script: call RemoveLocation(udg_Spell_Caster)
                  • Unit - Kill (Last created unit)
                  • Unit - Order (Last created unit) to Neutral - Firebolt PickedUnit
                  • Unit - Create 1 Sorceress for (Owner of (Triggering unit)) at Spell_Caster facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_Spell_Pivot)
          • Set Spell_Caster = Spell_Pivot
          • Set RangeCounter = 500.00
      • Custom script: call DestroyGroup(udg_TempGroup)
      • Set TempGroup = (Units within 500.00 of Spell_Pivot matching (((Triggering player) is an enemy of (Owner of PickedUnit)) Equal to True))
      • Set Spell_Pivot = (Position of (Targeted unit))
      • Set hitUnit = (Target unit of ability being cast)


This does not work it does damage but does not pull them to him why?
 

ShadowInTheD

Active Member
Reaction score
12
I told you it wouldn't pull them... I just wanted to make sure that that worked (I didn't feel like changing all kinds of unit things, so I didn't test, but you can change the animations and effects and w/e for the two spells that I gave so it looks like chain lighting, or however you want).

I'll work on the movement thing now.

Edit: Your posted trigger doesn't match mine exactly. hitUnit is an array, and some of your variable setting is out of order, which could change a lot of stuff.
 

Kalder

New Member
Reaction score
1
I told you it wouldn't pull them... I just wanted to make sure that that worked (I didn't feel like changing all kinds of unit things, so I didn't test, but you can change the animations and effects and w/e for the two spells that I gave so it looks like chain lighting, or however you want).

I'll work on the movement thing now.

Edit: Your posted trigger doesn't match mine exactly. hitUnit is an array, and some of your variable setting is out of order, which could change a lot of stuff.

how would i turn
Trigger:
  • Untitled Trigger 002
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Static Cling
    • Actions
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in TempGroup and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between Spell_Caster and (Position of PickedUnit)) Less than RangeCounter
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                • Then - Actions
                  • Set hitUnit = (Picked unit)
                  • Set PickedUnit = (Picked unit)
                  • Set Spell_Pivot = (Position of (Picked unit))
                  • Set RangeCounter = (Distance between Spell_Caster and (Position of PickedUnit))
                • Else - Actions
                  • Custom script: call RemoveLocation(udg_Spell_Caster)
                  • Unit - Kill (Last created unit)
                  • Unit - Order (Last created unit) to Neutral - Firebolt PickedUnit
                  • Unit - Create 1 Sorceress for (Owner of (Triggering unit)) at Spell_Caster facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_Spell_Pivot)
          • Set Spell_Caster = Spell_Pivot
          • Set RangeCounter = 500.00
      • Custom script: call DestroyGroup(udg_TempGroup)
      • Set TempGroup = (Units within 500.00 of Spell_Pivot matching (((Triggering player) is an enemy of (Owner of PickedUnit)) Equal to True))
      • Set Spell_Pivot = (Position of (Targeted unit))
      • Set hitUnit = (Target unit of ability being cast)


into the hit unit part on yours?
 

ShadowInTheD

Active Member
Reaction score
12
Trigger:
  • Chain Pull
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Storm Bolt
    • Actions
      • Set Spell_Caster = (Position of (Triggering unit))
      • Set hitUnit[1] = (Target unit of ability being cast)
      • Set RangeCounter = 500.00
      • Set Spell_Pivot = (Position of (Targeted unit))
      • Set TempGroup = (Units within 500.00 of Spell_Pivot matching (((Triggering player) is an enemy of (Owner of (Picked unit))) Equal to True))
      • Custom script: call RemoveLocation(udg_Spell_Caster)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set Spell_Caster = Spell_Pivot
          • Custom script: call RemoveLocation(udg_Spell_Pivot)
          • Unit Group - Pick every unit in TempGroup and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hitUnit[1] Not equal to (Picked unit)
                  • hitUnit[2] Not equal to (Picked unit)
                  • hitUnit[3] Not equal to (Picked unit)
                  • hitUnit[4] Not equal to (Picked unit)
                  • (Distance between Spell_Caster and (Position of (Picked unit))) Less than RangeCounter
                • Then - Actions
                  • Set RangeCounter = (Distance between Spell_Caster and (Position of PickedUnit))
                  • Set Spell_Pivot = (Position of PickedUnit)
                  • Set PickedUnit = (Picked unit)
                  • Set hitUnit[(Integer A)] = (Picked unit)
                • Else - Actions
              • Unit - Create 1 Sorceress for (Owner of (Triggering unit)) at Spell_Caster facing Default building facing degrees
              • Unit - Order (Last created unit) to Neutral - Firebolt PickedUnit
              • Unit - Kill (Last created unit)
              • Custom script: call RemoveLocation(udg_Spell_Caster)
      • Custom script: call DestroyGroup(udg_TempGroup)
      • Trigger - Turn on Pulling <gen>
      • Wait 4.00 seconds
      • Trigger - Turn off Pulling <gen>


Trigger:
  • Pulling
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Set hitUnitLoc[(Integer A)] = (Position of hitUnit[(Integer A)])
          • Set offset[(Integer A)] = (hitUnitLoc[(Integer A)] offset by 4.00 towards (Angle from hitUnitLoc[(Integer A)] to Spell_Caster) degrees)
          • Unit - Move hitUnit[(Integer A)] instantly to offset[(Integer A)]
          • Set hitUnitLoc[(Integer A)] = offset[(Integer A)]
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Custom script: call RemoveLocation(udg_hitUnitLoc[GetForLoopIndexA])
          • Custom script: call RemoveLocation(udg_offset[GetForLoopIndexA])


That should hit with chain lightning and then pull for 4 seconds. What you need to do is get all of your lines in order so they match my order exactly. One thing I noticed is that you used your sorcerer to cast neutral firebolt, which I'm assuming you didn't give it. What you need to do is create a dummy unit (size like 1, and give it fireball) and replace sorcerer with dummy unit. I also added some things in the original trigger so look out for those. And you need to make the "Pulling" trigger enabled and turned off.

To change the hitUnit to like mine you need to make it an array - go to edit variables and edit that variable and check array.
 

Kalder

New Member
Reaction score
1
not done

Im not done but how does this look so far?
Trigger:
  • Untitled Trigger 002
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Static Cling
    • Actions
      • Set Tech_Warrior = (Position of (Triggering unit))
      • Set hitUnit = (Target unit of ability being cast)
      • Set RangeCounter = 500.00
      • Set Tech_Pivot = (Position of (Targeted unit))
      • Set TempGroup = (Units within 500.00 of Tech_Pivot matching (((Triggering player) is an enemy of (Owner of PickedUnit)) Equal to True))
      • Custom script: call RemoveLocation(udg_Spell_Pivot)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set Tech_Warrior = Tech_Pivot
          • Custom script: call RemoveLocation(udg_Tech_Pivot)
          • Unit Group - Pick every unit in TempGroup and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                  • hitUnit Not equal to PickedUnit
                  • (Distance between Tech_Warrior and (Position of PickedUnit)) Less than RangeCounter
                • Then - Actions
                  • Set RangeCounter = (Distance between Tech_Warrior and (Position of PickedUnit))
                  • Set Tech_Pivot = (Position of (Picked unit))
                  • Set PickedUnit = (Picked unit)
                  • Set hitUnit = (Picked unit)
                • Else - Actions
                  • Unit - Create 1 Sorceress for (Owner of (Triggering unit)) at Tech_Warrior facing Default building facing degrees
                  • Unit - Order (Last created unit) to Neutral - Firebolt PickedUnit
                  • Unit - Kill (Last created unit)
                  • Custom script: call RemoveLocation(udg_Spell_Caster)
      • Custom script: call DestroyGroup(udg_TempGroup)
 

ShadowInTheD

Active Member
Reaction score
12
Trigger:
  • Chain Pull
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Storm Bolt
    • Actions
      • Set hitUnit[1] = (Target unit of ability being cast)
      • Set RangeCounter = 500.00
      • Set Spell_Pivot = (Position of (Targeted unit))
      • Set TempGroup = (Units within 500.00 of Spell_Pivot matching (((Triggering player) is an enemy of (Owner of (Picked unit))) Equal to True))
      • Custom script: call RemoveLocation(udg_Spell_Caster)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set Spell_Caster = Spell_Pivot
          • Custom script: call RemoveLocation(udg_Spell_Pivot)
          • Unit Group - Pick every unit in TempGroup and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • hitUnit[1] Not equal to (Picked unit)
                  • hitUnit[2] Not equal to (Picked unit)
                  • hitUnit[3] Not equal to (Picked unit)
                  • hitUnit[4] Not equal to (Picked unit)
                  • (Distance between Spell_Caster and (Position of (Picked unit))) Less than RangeCounter
                • Then - Actions
                  • Set RangeCounter = (Distance between Spell_Caster and (Position of PickedUnit))
                  • Set Spell_Pivot = (Position of (Picked unit))
                  • Set PickedUnit = (Picked unit)
                  • Set hitUnit[(Integer A)] = (Picked unit)
                • Else - Actions
              • Unit - Create 1 Sorceress for (Owner of (Triggering unit)) at Spell_Caster facing Default building facing degrees
              • Unit - Order (Last created unit) to Neutral - Firebolt PickedUnit
              • Unit - Kill (Last created unit)
              • Custom script: call RemoveLocation(udg_Spell_Caster)
      • Set Spell_Caster = (Position of (Triggering unit))
      • Custom script: call DestroyGroup(udg_TempGroup)
      • Trigger - Turn on Pulling <gen>
      • Wait 4.00 seconds
      • Trigger - Turn off Pulling <gen>


Two things I noticed, 1: you still haven't made hitUnit an array, and two, you're mixing up "PickedUnit" and "Picked unit". Make sure those are correct.

Also, I edited the first line and I moved it right above:
Trigger:
  • Custom script: call DestroyGroup(udg_TempGroup)
 

ShadowInTheD

Active Member
Reaction score
12
There's a button at the top on a bar that has a big yellow X on it. Click that. It'll have options to add, edit, or remove variables. Click on hitUnit and click Edit. Then under the name and type of variable, you'll see a check box with array next to it. Click that check box. Then just close the menu thing. If it asks if you want to make the change (because it'll change every instance the variable is used) click yes, and go back and change all of the places it needs the array.
 

Tyman2007

Ya Rly >.
Reaction score
74
Try starts the effect of an ability, cause you can use the stop exploit and get as many casts as you want and really screw up the game. Stop before the spell casts and the trigger's running = No cooldown.

The spell can even break temporarily!

Events should be Starts the effect of an ability.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top