Ability "Mass Shadow Strike"

REM.Shephard

New Member
Reaction score
0
Hi! I want to make an ability that can be casted with no target (like "Thunderclap" or "Warstomp) and that launchs "Shadow Strikes" to all nearby enemy units (450 range). I already made the dummy abilities (the one that has no target and the "Shadow Strikes"), but I don't know how to make it work as I want. This is what I have:

Events
Unidad - A unit Comienza a lanzar una habilidad
Conditions
(Ability being cast) Igual a Warstomp
Actions
Set Temp_Point = (Position of (Casting unit))
Grupo de unidad - Pick every unit in (Units within 450.00 of Temp_Point) and do (Actions)
Bucle: Acciones
Unidad - Create 1 Dummy for (Owner of (Casting unit)) at Temp_Point facing Vista edificio predeterminada degrees
Unidad - Add Shadow Strike to (Last created unit)
Unidad - Set level of Shadow Strike for (Last created unit) to (Level of Warstomp for (Casting unit))
Unidad - Order (Last created unit) to Elfa nocturna guardiana - Golpe de sombras (Picked unit)
Unidad - Add a 2.00 second Genérico expiration timer to (Last created unit)
Custom script: call RemoveLocation (udg_Temp_Point)


Can you tell me what am I doing wrong? Thanks in advance.
 

HydraRancher

Truth begins in lies
Reaction score
197
You want something like:

Trigger:
  • Trigger
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) is equal to Warstomp
    • Actions
      • Set TempPoint = (Position of (Triggering Unit))
      • Set TempGroup = (Units within 450.00 of TempPoint)
      • Unit Group - Pick every unit in TempGroup matching (Owner of (Matching Unit)) is an enemy of (Owner of (Triggering Unit)) equal to true and do (Actions)
        • Loop - Actions
          • Unit - Create 1 Dummy for (Owner of (Triggering Unit)) at TempPoint facing Default building facing degrees
          • Unit - Add Shadow Strike to (Last created unit)
          • Unit - Set level of Shadow strike for (Last created unit) to (Level of Warstomp for (Triggering Unit))
          • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Picked unit)
          • Unit - Add a 1.00 Generic expiration timer to (Last created unit)
      • Custom Script: call RemoveLocation (udg_TempPoint)
      • Custom Script: call DestroyGroup (udg_TempGroup)


To get rid of all leaks and that should work fine.

I'm not sure what you mean by "wrong".
 

REM.Shephard

New Member
Reaction score
0
I tried what you said, but it only picks the closest unit like before. I don't really know what is wrong with this trigger...
 

HydraRancher

Truth begins in lies
Reaction score
197
Have you put the Custom Script inside the loop? If so, move it outside.

EDIT:

Trigger:
  • Actions
    • Custom Script: call RemoveLocation (udg_TempPoint)
    • Custom Script: call DestroyGroup (udg_TempGroup)


These lines. Move them outside of the Pick Every Unit.
 

Chilling

New Member
Reaction score
1
@HydraRancher What is the point of the TempPoint variable? You only use it once, and you can just use the position of unit instead.
 

HydraRancher

Truth begins in lies
Reaction score
197
@HydraRancher What is the point of the TempPoint variable? You only use it once, and you can just use the position of unit instead.

Position of unit creates a memory leak. If these build up, it can seriously lag your game. So we strive to remove them. Using the set TempPoint and then using a JASS code to remove it.
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
613
Why create 1 dummy for each unit? You can just have 1 dummy cast on all units at once, but the dummy mustn't have any backswing animations etc. or cooldown for the dummy ability.
 

HydraRancher

Truth begins in lies
Reaction score
197
Why create 1 dummy for each unit? You can just have 1 dummy cast on all units at once, but the dummy mustn't have any backswing animations etc. or cooldown for the dummy ability.

It generally works better, because if this is a particularly large group, of let's say, 20 units, you'll have shadow strikes random popping up in succession. But with the multiple dummies, they will all appear in unison. Also, if you order the unit to cast it on another unit whilst it is still casting, then it might interrupt its orders and end up only casting on one unit.
 

vypur85

Hibernate
Reaction score
803
Code:
Trigger
   Events
      Unit - A unit Starts the effect of an ability
   Conditions
      (Ability being cast) is equal to Warstomp
   Actions
      Set TempPoint = (Position of (Triggering Unit))
[B]      Set TempGroup = (Units within 450.00 of TempPoint matching (Owner of (Matching Unit)) is an enemy of (Owner of (Triggering Unit) Equal to True and (Matching unit) is alive Equal to True)))[/B]
      Unit Group - Pick every unit in TempGroup and do (Actions)
         Loop - Actions
            Unit - Create 1 Dummy for (Owner of (Triggering Unit)) at TempPoint facing Default building facing degrees
            Unit - Add Shadow Strike to (Last created unit)
            Unit - Set level of Shadow strike for (Last created unit) to (Level of Warstomp for (Triggering Unit))
            Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Picked unit)
            Unit - Add a 1.00 Generic expiration timer to (Last created unit)
      Custom Script: call RemoveLocation (udg_TempPoint)
      Custom Script: call DestroyGroup (udg_TempGroup)

> Why create 1 dummy for each unit?
Personal preference, I'd say. But single unit is always more efficient.


> but it only picks the closest unit like before
Very likely because you used 'Casting unit' instead of 'Triggering unit'. The former is known to bug in loops.
 

REM.Shephard

New Member
Reaction score
0
Thank you very much for all your answers. Each of them really help me to make the ability work. Keep on the good job!!!:)
 

Wummi

Just Relax and Smile!
Reaction score
58
Luckily for you, I happen to have the exact same spell in my map. Here's what I used (and it's been tested and it works well)

Trigger:
  • Poisonous Food
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to The Great Cheese Explosion
    • Actions
      • Set PoisonGroup = (Units within 1000.00 of (Position of (Triggering unit)) matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and (((Owner of (Matching unit)) is an enemy of (Owner of (Triggering unit))) Equal to True)))
      • Set PoisonInterger = (Number of units in PoisonGroup)
      • Set PoisonLevel = (Level of (Ability being cast) for (Triggering unit))
      • For each (Integer A) from 1 to PoisonInterger, do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in PoisonGroup and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PoisonLevel Equal to 1
                • Then - Actions
                  • Unit - Create 1 Dummy for (Triggering player) at (Position of (Triggering unit)) facing Default building facing degrees
                  • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
                  • Unit - Add Poisonous Food Strike Level 1 to (Last created unit)
                  • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Picked unit)
                  • Custom script: call DestroyGroup(udg_PoisonGroup)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PoisonLevel Equal to 2
                • Then - Actions
                  • Unit - Create 1 Dummy for (Triggering player) at (Position of (Triggering unit)) facing Default building facing degrees
                  • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
                  • Unit - Add Poisonous Food Strike Level 2 to (Last created unit)
                  • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Picked unit)
                  • Custom script: call DestroyGroup(udg_PoisonGroup)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PoisonLevel Equal to 3
                • Then - Actions
                  • Unit - Create 1 Dummy for (Triggering player) at (Position of (Triggering unit)) facing Default building facing degrees
                  • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
                  • Unit - Add Poisonous Food Strike Level 3 to (Last created unit)
                  • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Picked unit)
                  • Custom script: call DestroyGroup(udg_PoisonGroup)
                • Else - Actions


I know I could have made it a hero ability and then set the level according to level of ability cast, but I didn't know that at the time I made it and I'm too lazy to redo the spell, so this is what I have in my map right now and it works fine.
 

skyblader

You're living only because it's illegal killing.
Reaction score
159
It generally works better, because if this is a particularly large group, of let's say, 20 units, you'll have shadow strikes random popping up in succession. But with the multiple dummies, they will all appear in unison. Also, if you order the unit to cast it on another unit whilst it is still casting, then it might interrupt its orders and end up only casting on one unit.

Actually if the dummy unit has 0 cooldown 0 casting point 0 baskswing and all, the spell will be casted 20 times in an instant. :p
 

KaerfNomekop

Swim, fishies. Swim through the veil of steel.
Reaction score
613
It really does cast 20 times almost instantly, because with no hindrances, the dummy can cast again immediately after casting, so there's no delay between one cast end the next.
 

HydraRancher

Truth begins in lies
Reaction score
197
If that's really true you can just tweak it.

Trigger:
  • Trigger
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) is equal to Warstomp
    • Actions
      • Set TempPoint = (Position of (Triggering Unit))
      • Set TempGroup = (Units within 450.00 of TempPoint)
      • Unit - Create 1 Dummy for (Owner of (Triggering Unit)) at TempPoint facing Default building facing degrees
      • Unit - Add Shadow Strike to (Last created unit)
      • Unit - Set level of Shadow strike for (Last created unit) to (Level of Warstomp for (Triggering Unit))
      • Unit - Add a 1.00 Generic expiration timer to (Last created unit)
      • Unit Group - Pick every unit in TempGroup matching (Owner of (Matching Unit)) is an enemy of (Owner of (Triggering Unit)) equal to true and do (Actions)
        • Loop - Actions
          • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Picked unit)
      • Custom Script: call RemoveLocation (udg_TempPoint)
      • Custom Script: call DestroyGroup (udg_TempGroup)
 

Ayanami

칼리
Reaction score
288
If that's really true you can just tweak it.

Trigger:
  • Trigger
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) is equal to Warstomp
    • Actions
      • Set TempPoint = (Position of (Triggering Unit))
      • Set TempGroup = (Units within 450.00 of TempPoint)
      • Unit - Create 1 Dummy for (Owner of (Triggering Unit)) at TempPoint facing Default building facing degrees
      • Unit - Add Shadow Strike to (Last created unit)
      • Unit - Set level of Shadow strike for (Last created unit) to (Level of Warstomp for (Triggering Unit))
      • Unit - Add a 1.00 Generic expiration timer to (Last created unit)
      • Unit Group - Pick every unit in TempGroup matching (Owner of (Matching Unit)) is an enemy of (Owner of (Triggering Unit)) equal to true and do (Actions)
        • Loop - Actions
          • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Picked unit)
      • Custom Script: call RemoveLocation (udg_TempPoint)
      • Custom Script: call DestroyGroup (udg_TempGroup)

For Shadow Strike, I recommend you make the Dummy's living duration a tad longer than the Shadow Strike duration. If a unit dies from Shadow Strike, it won't know who killed it, so gold won't be awarded properly.
 

REM.Shephard

New Member
Reaction score
0
Dummy must have 0 movement speed as well.

Yes, that's right. If you give the dummy unit 522 movement speed (like I did), the dummy spell will be casted 0.5 secs later. I don't know why, but I changed the movement speed to 0, and it works well now, thanks for that too ^^
 

skyblader

You're living only because it's illegal killing.
Reaction score
159
I'm thinking it's the turn rate. o.o Just make it a building and no matter where it faces, it'll cast :p
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Monovertex Monovertex:
    How are you all? :D
    +1
  • Ghan Ghan:
    Howdy
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top