[Solved] AOE attack speed modifier buff

Level 30
Joined
Aug 29, 2012
Messages
1,382
You can probably use Acid Bomb targeted on friendly units, just remove the damage over time and armor reduction, then you can use those fields

1718155598346.png


Note: for some reason, this field behaves in a weird way, if you put e.g. 0.50, it will actually INCREASE the attack rate of the affected unit, so in your case that's what you're looking for
 
Level 12
Joined
Jul 5, 2014
Messages
551
You can probably use Acid Bomb targeted on friendly units, just remove the damage over time and armor reduction, then you can use those fields

View attachment 475737

Note: for some reason, this field behaves in a weird way, if you put e.g. 0.50, it will actually INCREASE the attack rate of the affected unit, so in your case that's what you're looking for
Acid bomb is not a Roar-type spell though as I recall. Unless I have some dummy throw it around but I'm not sure if it properly affects everyone in the area.
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
Is there any AOE buff/debuff that has attack speed modifier option? I couldn't find any and I considered making a hero spell like Roar, except it would give an attack speed decrease to nearby enemies.
Thunder Clap has an attack speed debuff. You could give it negative values and make it target Allies to turn it into a buff.
 
Level 12
Joined
Jul 5, 2014
Messages
551
Thunder Clap has an attack speed debuff. You could give it negative values and make it target Allies to turn it into a buff.
That would work well if I could remove the terrain deformation and the debuff could be dispelled. Is it possible?

The same method I suggested in your thread about an AoE stun applies here, too. Cripple is a debuff so would show the proper red debuff text instead of green text that negative-Bloodlust would have.
Using triggered single target spells on an undefined number of enemy units feels like complicating things too much. Alternatively, I could roll with a reversed scroll of protection ability but I'd prefer a not overly triggered attack speed one.
 
Level 45
Joined
Feb 27, 2007
Messages
5,578
Using triggered single target spells on an undefined number of enemy units feels like complicating things too much.
No, that is how literally 100% of the wc3 community would and should approach needing to apply an effect that (in some cases only) a single-target ability can provide. You will not ever notice an effect on performance because there will not be one.

This has been the method used for actual decades, it works fine, and it would have taken you less time to do than waiting for any more replies here. If you really want to be lazy you can just copy/paste this once you’ve done it once.

The only reason not to use such a method is the quirk about collision size and units whose origin is not technically inside the search radius that I mentioned in the other thread.
  • Set TP = (Position of (Triggering Unit))
  • Unit - Create 1 DUMMY for (Owner of (Triggering Unit) at TP facing Default building facing degrees
  • Set CD = (Last created unit)
  • Unit - Add DUMMY SPELL to CD
  • Unit - Set level of DUMMY SPELL for CD to (Level of REAL SPELL for (Triggering Unit))
  • Unit - Add a 1.00 second generic expiration timer to CD
  • Custom script: call RemoveLocation(udg_TP)
  • Set TP = (Target point of ability being cast)
  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit within RANGE of TP and do (Actions)
    • Loop - Actions
      • Set PU = (Picked Unit)
      • If (All conditions are true) then do (Then actions) else do (Else actions)
        • If - Conditions
          • //filter units here for targeting
        • Then - Actions
          • Unit - Order CD to Human Mountain King - Storm Bolt TU
    • Custom script: call RemoveLocation(udg_TP)
That would work well if I could remove the terrain deformation
It’s a texture effect on the terrain, not a deformation as far as I am aware. War Stomp is a terrain deformation. Deformations don’t show in Fog of War and are thus extremely common to cause desyncs if anything in your map checks terrain height for something. In any case these are far bigger reasons not to use these abilities than feeling like a dummy cast loop is overly complicated.
 
Last edited:
Level 12
Joined
Jul 5, 2014
Messages
551
No, that is how literally 100% of the wc3 community would and should approach needing to apply an effect that (in some cases only) a single-target ability can provide. You will not ever notice an effect on performance because there will not be one.

This has been the method used for actual decades, it works fine, and it would have taken you less time to do than waiting for any more replies here. If you really want to be lazy you can just copy/paste this once you’ve done it once.
  • Set TP = (Position of (Triggering Unit))
  • Unit - Create 1 DUMMY for (Owner of (Triggering Unit) at TP facing Default building facing degrees
  • Set CD = (Last created unit)
  • Unit - Add DUMMY SPELL to CD
  • Unit - Set level of DUMMY SPELL for CD to (Level of REAL SPELL for (Triggering Unit))
  • Unit - Add a 1.00 second generic expiration timer to CD
  • Custom script: call RemoveLocation(udg_TP)
  • Set TP = (Target point of ability being cast)
  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit within RANGE of TP and do (Actions)
    • Loop - Actions
      • Set PU = (Picked Unit)
      • If (All conditions are true) then do (Then actions) else do (Else actions)
        • If - Conditions
          • //filter units here for targeting
        • Then - Actions
          • Unit - Order CD to Human Mountain King - Storm Bolt TU
    • Custom script: call RemoveLocation(udg_TP)
It’s a texture effect on the terrain, not a deformation as far as I am aware. War Stomp is a terrain deformation. Deformations don’t show in Fog of War and are thus extremely common to cause desyncs if anything in your map checks terrain height for something. In any case these are far bigger reasons not to use these abilities than feeling like a dummy cast loop is overly complicated.
No offense but last time you've suggested a similar triggering and in the end it turned out that simply using the Inferno spell would avoid triggering and even prevent the vision problem your suggestion had. I'm not a pro at triggering and the more trigger I use, the more chance is there for bugs. Why should I complicate things if there could be a simpler solution?

The terrain has a same wave with thunder clap as with war stomp. I could live with that as an excuse for sound wave but I'm not sure if thunder clap's effects can be dispelled (and the spell should be a dispelable debuff)
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
The terrain has a same wave with thunder clap as with war stomp. I could live with that as an excuse for sound wave but I'm not sure if thunder clap's effects can be dispelled (and the spell should be a dispelable debuff)
The solution is clear then, you have to trigger it.

A Dummy unit casting the Slow debuff is the fix since it can be dispelled and can modify attack speed. The chance for bugs is only there if you fail to recreate the trigger that Pyro already created for you, but I don't see how that's possible when it's literally right there. You also get the added benefit of learning how to turn any single target ability into an AoE one, which is pretty damn useful for making cool custom spells -> AoE Bloodlust, AoE Hex, etc. There's a million examples of these on Hive already. Like Pyro said, this is how custom spells are done in Warcraft 3, it's not really overcomplicating things, it's actually one of the first steps towards making your own custom content.

Anyway, if you're on the latest patch then we could make the trigger for you and you could just copy and paste it, that way you can't mess up.
 
Last edited:
Level 12
Joined
Jul 5, 2014
Messages
551
The solution is clear then, you have to trigger it.

A Dummy unit casting the Slow debuff is the fix since it can be dispelled and can modify attack speed. The chance for bugs is only there if you fail to recreate the trigger that Pyro already created for you, but I don't see how that's possible when it's literally right there. You also get the added benefit of learning how to turn any single target ability into an AoE one, which is pretty damn useful for making cool custom spells -> AoE Bloodlust, AoE Hex, etc. There's a million examples of these on Hive already. Like Pyro said, this is how custom spells are done in Warcraft 3, it's not really overcomplicating things, it's actually one of the first steps towards making your own custom content.

Anyway, if you're on the latest patch then we could make the trigger for you and you could just copy and paste it, that way you can't mess up.
It's not Pyro's trigger I expect bug with, it's my own other ducktaped triggers' reaction. Plus, there's the issue of line of sight of the dummy that would have caused gaps on the AOE stun too. I also struggle with hardcoded/bugged elements, sometimes unable to tell which is which, especially since I'm just back from a huge break from map editing. That's why I wanted to check if there's an alternative solution for my idea than making it all trigger-based.

Unfortunately, I'm on 1.26, I think there were a number of patches since then.
 
Level 45
Joined
Feb 27, 2007
Messages
5,578
You can entirely avoid the casting issue by making the casting dummy owned by a computer player with a visibility modifier across the playable map area (and for context it only applies to unit-targeted abilities). This of course does matter if you're trying to use a dummy-casted ability to deal damage to the target, since then the killing player would not be properly credited... but if you need to damage a target with a dummy you could instead cause the casting (non-dummy) unit to damage the target directly with the action Unit - Cause Unit to Damage Target. If you need a projectile and the proper timing use a DDS and a Unit indexer to link the dummy and caster directly in order to use Unit Damage Target with a 'delay'.

No solution is a perfect solution because this game is old and got fucked by Reforged. WC3 modding is a game of kludging, interpolation between approximate solutions, and improvisation. Many users remember many abilities but we forget stuff too; I did with Inferno. Here is a document with detailed information about basically every ability in the game, their quirks, and what they can do; you can search it for terms like "attack speed" and see what shows up (I found nothing else).

In my opinion what you're doing here is the equivalent of: driving around in a crowded parking lot for 5 minutes looking for a spot close to the store you're going to instead of taking a spot that's a 1 minute walk. I don’t understand that mentality. You have a method; it works just fine if you are aware of the limitations, and the exact sequence of actions has been described/shown to you. Learn the method and you will not mess it up in the future.

I'm not a pro at triggering and the more trigger I use, the more chance is there for bugs. Why should I complicate things if there could be a simpler solution?
@Kyrbi0 Please, please, please give your honest/unfiltered input on this ^ even if it is different from what I clearly prioritize.

You will never get 'better' at writing triggers if you don't... write triggers. What you might see as the 'simplest' solution was given by Chaosium with Acid Bomb. The quirk there is that it has to be unit-targeted, which means briefly spawning a targetable dummy hostile to the caster and then dummy-targeting it with Acid Bomb.
Unfortunately, I'm on 1.26, I think there were a number of patches since then.
Updating is free and you do not need to own Reforged to do it. There are issues with the modern editor, before you blame me for suggesting you update and then having that fuckery in your face. But you gain so much more functionality than it costs you.
The terrain has a same wave with thunder clap as with war stomp.
You are indeed correct; sorry for the misinformation. Avoid both of those at all costs unless you are 100% sure your map never has and never will use any systems or code that check terrain height for any reason.
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
It's not Pyro's trigger I expect bug with, it's my own other ducktaped triggers' reaction. Plus, there's the issue of line of sight of the dummy that would have caused gaps on the AOE stun too. I also struggle with hardcoded/bugged elements, sometimes unable to tell which is which, especially since I'm just back from a huge break from map editing. That's why I wanted to check if there's an alternative solution for my idea than making it all trigger-based.

Unfortunately, I'm on 1.26, I think there were a number of patches since then.
Thunder Clap is the only "Instant" ability that can slow the attack speed of nearby units as far as I know. I know for a fact it's Buff is not dispellable, so unfortunately it won't work the way you'd like. The line of sight issue can be resolved, I believe you can Share vision of the target unit right before ordering the Dummy to cast Slow on it, and that'll solve everything:
  • Loop - Actions
    • Unit - Grant shared vision of TARGET to (Owner of Dummy)
    • Unit - Order Dummy to Human - Sorceress - Slow TARGET
    • Unit - Remove shared vision of TARGET to (Owner of Dummy)
It really shouldn't interfere with your other triggers, that's just not how things work. It has an Event that happens when a very specific thing occurs (a unit successfully casts an ability) and a Condition that prevents the rest of the trigger from running if it fails (the ability being cast is your SPECIFIC ability). So the Actions of the trigger, which is where things could go wrong, only occur when the specified ability is cast. Luckily, those Actions are very straightforward and simple.

That being said, I'll show you an example of how another trigger could cause interference:
  • Events
    • Unit - A unit is issued an Order targeting an object
  • Conditions
  • Actions
    • Unit - Kill (Triggering unit)
This would kill the Dummy unit the moment it tries to cast Slow, thus preventing the triggered spell from ever working. However, this trigger would break everything in your map and kill ANY unit that tries to cast a unit-targeted ability, so the way I see it, the only issue you'll run into is an issue that had already existed beforehand, therefore this new trigger won't actually break anything.
 
Last edited:
Level 12
Joined
Jul 5, 2014
Messages
551
You can entirely avoid the casting issue by making the casting dummy owned by a computer player with a visibility modifier across the playable map area (and for context it only applies to unit-targeted abilities). This of course does matter if you're trying to use a dummy-casted ability to deal damage to the target, since then the killing player would not be properly credited... but if you need to damage a target with a dummy you could instead cause the casting (non-dummy) unit to damage the target directly with the action Unit - Cause Unit to Damage Target. If you need a projectile and the proper timing use a DDS and a Unit indexer to link the dummy and caster directly in order to use Unit Damage Target with a 'delay'.

No solution is a perfect solution because this game is old and got fucked by Reforged. WC3 modding is a game of kludging, interpolation between approximate solutions, and improvisation. Many users remember many abilities but we forget stuff too; I did with Inferno. Here is a document with detailed information about basically every ability in the game, their quirks, and what they can do; you can search it for terms like "attack speed" and see what shows up (I found nothing else).

In my opinion what you're doing here is the equivalent of: driving around in a crowded parking lot for 5 minutes looking for a spot close to the store you're going to instead of taking a spot that's a 1 minute walk. I don’t understand that mentality. You have a method; it works just fine if you are aware of the limitations, and the exact sequence of actions has been described/shown to you. Learn the method and you will not mess it up in the future.


@Kyrbi0 Please, please, please give your honest/unfiltered input on this ^ even if it is different from what I clearly prioritize.

You will never get 'better' at writing triggers if you don't... write triggers. What you might see as the 'simplest' solution was given by Chaosium with Acid Bomb. The quirk there is that it has to be unit-targeted, which means briefly spawning a targetable dummy hostile to the caster and then dummy-targeting it with Acid Bomb.

Updating is free and you do not need to own Reforged to do it. There are issues with the modern editor, before you blame me for suggesting you update and then having that fuckery in your face. But you gain so much more functionality than it costs you.

You are indeed correct; sorry for the misinformation. Avoid both of those at all costs unless you are 100% sure your map never has and never will use any systems or code that check terrain height for any reason.
Look, the reason I appear anti-trigger is because I'm working on a Rexxar-like campaign which requires massive triggering, many which is way beyond my current knowledge. So, I have plenty of triggers without relying on potentially unnecessary triggering. Going by parking example, I'd rather not have a narrowly enough parking space when there's a massive one behind a car. When I can use the Inferno ability itself, I'd rather not make dummy and real spells and a trigger just to achieve the same thing. So I see no harm in asking if there's a function of some spell I overlooked and would make my life easier. But if it turns out to be necessary, I'll rely on trigger. But again, I just came back from a long break, caused by many problems with my campaign that nearly made me want to give up on it. I found a possible solution that could save it but my map editor skills are still rusty, so I've started with simpler elements.
 
Level 12
Joined
Jul 5, 2014
Messages
551
Thunder Clap is the only "Instant" ability that can slow the attack speed of nearby units as far as I know. I know for a fact it's Buff is not dispellable, so unfortunately it won't work the way you'd like. The line of sight issue can be resolved, I believe you can Share vision of the target unit right before ordering the Dummy to cast Slow on it, and that'll solve everything:
  • Loop - Actions
    • Unit - Grant shared vision of TARGET to (Owner of Dummy)
    • Unit - Order Dummy to Human - Sorceress - Slow TARGET
    • Unit - Remove shared vision of TARGET to (Owner of Dummy)
It really shouldn't interfere with your other triggers, that's just not how things work. It has an Event that happens when a very specific thing occurs (a unit successfully casts an ability) and a Condition that prevents the rest of the trigger from running if it fails (the ability being cast is your SPECIFIC ability). So the Actions of the trigger, which is where things could go wrong, only occur when the specified ability is cast. Luckily, those Actions are very straightforward and simple.

That being said, I'll show you an example of how another trigger could cause interference:
  • Events
    • Unit - A unit is issued an Order targeting an object
  • Conditions
  • Actions
    • Unit - Kill (Triggering unit)
This would kill the Dummy unit the moment it tries to cast Slow, thus preventing the triggered spell from ever working. However, this trigger would break everything in your map and kill ANY unit that tries to cast a unit-targeted ability, so the way I see it, the only issue you'll run into is an issue that had already existed beforehand, therefore this new trigger won't actually break anything.
My paranoia comes from the possibility of a regularly used trigger-based skill/other thing that meet with a scripted event that's not completely mutually exclusive with it. I don't know if things like "picked unit", matching unit and such could get mixed up or some conflict can happen with 2 anti-leak temporary point/unit group custom script due to same name (temp_point and such). There were triggers with which I shot myself in the foot, there are even ones I can't figure out why they behave the way they do.
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
My paranoia comes from the possibility of a regularly used trigger-based skill/other thing that meet with a scripted event that's not completely mutually exclusive with it. I don't know if things like "picked unit", matching unit and such could get mixed up or some conflict can happen with 2 anti-leak temporary point/unit group custom script due to same name (temp_point and such). There were triggers with which I shot myself in the foot, there are even ones I can't figure out why they behave the way they do.
I understand, but that's all manageable with a proper understanding of what's happening and what to avoid:

1) Don't reuse the same Variables throughout your triggers unless you know it's safe. Just use new variables for this new trigger and this problem goes away.

2) Avoid using Waits in your more complex triggers, especially a custom triggered spell that could have multiple instances running at once. When Waits are used properly it should be fine but you need to account for things like Event Responses / Variables being overwritten from outside sources. Not all Event Responses can be overwritten, some will remain local to the trigger instance. Also, some Event Responses are simply lost after a Wait, even if nothing else happened.

3) Be aware of Actions that can cause other Events to run. A unit Dies is the most dangerous Event that you will want to plan around. An Order Event like the one I showed you before is another culprit since it would run in response to your Dummy trying to cast Slow (this isn't an issue if you have proper Conditions that exclude the Dummy from running these order-based triggers). Conditions should really help prevent most if not all of these issues.

Triggers will almost always run in separate instances, even when they cause other triggers to run in a chain reaction. So these problems are generally not an issue. There are just some specific edge cases to be aware of, particularly what I mentioned in #3.

Again, the trigger Pyro suggested will be completely safe, assuming that:
1) You use proper Conditions throughout your triggers. You'd probably notice other bugs beforehand if this was an issue in your map.
2) You use newly created Variables in this particular trigger.
3) Your Dummy unit is setup properly.

These are 3 very simple requirements. I have a feeling you can ignore #1 and focus on #2 and #3.
 
Last edited:
Level 12
Joined
Jul 5, 2014
Messages
551
I understand, but that's all manageable with a proper understanding of what's happening:

1) Don't reuse the same Variables throughout your triggers unless you know it's safe. Just use new variables for this new trigger and this problem goes away.

2) Avoid using Waits in your more complex triggers, especially a custom triggered spell that could have multiple instances running at once. When Waits are used properly it should be fine but you need to account for things like Event Responses / Variables being overwritten from outside sources. Not all Event Responses can be overwritten, some will remain local to the trigger instance.

3) Be aware of Actions that can cause other Events to run. A unit Dies is the most dangerous Event that you will want to plan around. An Order Event like the one I showed you before is another culprit since it would run in response to your Dummy trying to cast Slow (this isn't an issue if you have proper Conditions that exclude the Dummy from running these triggers). Conditions should really help prevent most if not all of these issues.

Triggers will almost always run in separate instances, even when they cause other triggers to run in a chain reaction. So these problems are generally not an issue. There are just some specific edge cases to be aware of, particularly what I mentioned in #3.

Again, the trigger Pyro suggested will be completely safe, assuming that:
1) You use proper Conditions throughout your triggers. You'd probably notice other bugs beforehand if this was an issue in your map.
2) You use newly created Variables in this particular trigger.
3) Your Dummy unit is setup properly.

These are 3 very simple requirements.
I see. What about identifiers like "Triggering unit"? Does the game keep multiple identification of "Triggering unit"? Like, having two triggers that are not necessarily clash but both activates around the same time and both uses "Triggering unit". Will it cause one of the triggers losing their own triggering unit? Or they can run without problem and the game can tell that "triggering unit 1" is tied to "trigger 1" and "triggering unit 2" is "trigger 2"?
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
I see. What about identifiers like "Triggering unit"? Does the game keep multiple identification of "Triggering unit"? Like, having two triggers that are not necessarily clash but both activates around the same time and both uses "Triggering unit". Will it cause one of the triggers losing their own triggering unit? Or they can run without problem and the game can tell that "triggering unit 1" is tied to "trigger 1" and "triggering unit 2" is "trigger 2"?
(Triggering unit) is perfectly safe to use and will NEVER get overwritten. It acts like a local variable that is local to the trigger instance that created it. I use this Event Response as my default in every trigger that relies on a Unit-based Event.

Here's more info on that subject:
The good majority of Event Responses are safe to use.

Note that (Picked unit) is missing from that list. It is NOT safe, which is why Pyro is tracking the (Picked unit) in a Variable - problem solved!

The Variables that Pyro used in his example trigger are important for ensuring that nothing goes wrong. Since they're unique to this one particular trigger we know that no outside sources can mess with them. That way we don't have to worry about them changing. Also, since his trigger doesn't have any time component (no Waits) we can guarantee that it will always be running in separate instances. These execute one by one in what's known as the Trigger Queue.
 
Last edited:
Level 12
Joined
Jul 5, 2014
Messages
551
(Triggering unit) is perfectly safe to use and will NEVER get overwritten. It acts like a local variable that is local to the trigger instance that created it. I use this Event Response as my default in every trigger that relies on a Unit-based Event.

Here's more info on that subject:
The good majority of Event Responses are safe to use.

Note that (Picked unit) is missing from that list. It is NOT safe, which is why Pyro is tracking the (Picked unit) in a Variable - problem solved!

The Variables that Pyro used in his example trigger are important for ensuring that nothing goes wrong. Since they're unique to this one particular trigger we know that no outside sources can mess with them. That way we don't have to worry about them changing. Also, since his trigger doesn't have any time component (no Waits) we can guarantee that it will always be running in separate instances. These execute one by one in what's known as the Trigger Queue.
That's a relief. I was always worried about these identifiers.

Pyro's trigger don't seem to work properly for me though for some reason. Warcry is the activating spell and Real Warcry is the one the dummy uses and based on slow. It's supposed to be area effect but only hit 1-2 enemies.

Warcry
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Warcry
Actions
Set TP = (Position of (Triggering unit))
Unit - Create 1 Dummy for Player 8 (Pink) at TP facing Default building facing degrees
Set WarcryCaster = (Last created unit)
Unit - Grant shared vision of WarcryCaster to Player 1 (Red)
Unit - Add Real Warcry to WarcryCaster
Unit - Set level of Real Warcry for WarcryCaster to (Level of Warcry for (Triggering unit))
Unit - Add a 1.00 second Generic expiration timer to WarcryCaster
Custom script: call RemoveLocation(udg_TP)
Set TP = (Target point of ability being cast)
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within 250.00 of TP) and do (Actions)
Loop - Actions
Set PU = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) belongs to an enemy of Player 2 (Blue)) Equal to True
Then - Actions
Unit - Order WarcryCaster to Human Sorceress - Slow (Picked unit)
Unit - Deny shared vision of WarcryCaster to Player 1 (Red)
Else - Actions
Custom script: call RemoveLocation(udg_TP)
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
Your Dummy unit should be setup like this:

1) Copy and paste the Locust.
2) Set it's Model = None, Shadow = None, Attacks Enabled = None, Movement Type = None, Speed Base = 0.

This allows it to cast spells "instantly", that is without needing to turn to face it's target and without any delays. The Locust already has 0.00 for it's Cast Animations, which Chaosium mentioned.

Cast Point: The delay between beginning to cast an ability and when it actually executes.
Cast Backswing: How long the unit will continue to play it's cast animation AFTER the effects of the ability have executed.

Note how the Archmage has a very short Cast Point and it takes only a brief moment for him to summon a Water Elemental. However, afterwards he will continue playing his cast animation for the full length of the Cast Backswing. This feature exists in order to make units spend time performing actions rather than everything happening instantaneously. Note that you can interrupt the Cast Backswing animation by issuing a new order, this is known as animation cancelling and I'm sure you've been doing it all of this time. Attacks use the same concept with Damage Point and Damage Backswing.
 
Last edited:
Level 45
Joined
Feb 27, 2007
Messages
5,578
I appreciate that you stuck to it, asked questions, clarified what confused/concerned you, and finally arrived at a working trigger which inevitably taught you some skills! That is genuinely all I was hoping to achieve by my perhaps overly-aggressive replies here, and I apologize for having been so. Regarding the trigger: it shouldn't make a difference here, but for completeness you should be using the variable PU here in place of the Picked Unit calls. And you revoked the vision (cool solution, Uncle) but had never given it in the first place:
  • If - Conditions
    • ((Picked unit) belongs to an enemy of Player 2 (Blue)) Equal to True
  • Then - Action
    • Unit - Order WarcryCaster to Human Sorceress - Slow (Picked unit)
    • Unit - Deny shared vision of WarcryCaster to Player 1 (Red) //it was never granted!
Look, the reason I appear anti-trigger is because I'm working on a Rexxar-like campaign which requires massive triggering, many which is way beyond my current knowledge. So, I have plenty of triggers without relying on potentially unnecessary triggering.
I understand, and the value of a forum like this is in being able to learn from others what you need to know to be self-sufficient rather than having to wing it. We are a great resource;you are both welcome and encouraged to post as many threads as you need to gain an understanding of all the triggers and tasks you will need to accomplish for your campaign. There is also the Hive discord server or you are welcome to message me directly at any time: a.travesty

As Uncle has highlighted, there is often a safe path through the trigger forest that will keep you clear of all the monsters that dwell there. Stay on the path and nothing unexpected can happen or hurt you. Many of us here know the way and can show you.
Going by parking example, I'd rather not have a narrowly enough parking space when there's a massive one behind a car. When I can use the Inferno ability itself, I'd rather not make dummy and real spells and a trigger just to achieve the same thing.
Yes that is reasonable and is why I tagged Kyrbi0 here, though I think he will ultimately not respond. He's a past maintainer of the ability insight document and a friend who for many years basically only used existing Object Editor abilities to create whatever he needed instead of using (m)any triggers. He did discover some fun stuff and achieve novel solutions. I thought perhaps he might have insight/opinion (different from mine) on trying to use simpler solutions in such a way that might speak to you.
So I see no harm in asking if there's a function of some spell I overlooked and would make my life easier.
There is not; I agree. I was certain this time there was no AoE solution because I used the ability insight document whereas I did not do that for Inferno because I thought there was no such ability.
 
Level 12
Joined
Jul 5, 2014
Messages
551
I appreciate that you stuck to it, asked questions, clarified what confused/concerned you, and finally arrived at a working trigger which inevitably taught you some skills! That is genuinely all I was hoping to achieve by my perhaps overly-aggressive replies here, and I apologize for having been so. Regarding the trigger: it shouldn't make a difference here, but for completeness you should be using the variable PU here in place of the Picked Unit calls. And you revoked the vision (cool solution, Uncle) but had never given it in the first place:
  • If - Conditions
    • ((Picked unit) belongs to an enemy of Player 2 (Blue)) Equal to True
  • Then - Action
    • Unit - Order WarcryCaster to Human Sorceress - Slow (Picked unit)
    • Unit - Deny shared vision of WarcryCaster to Player 1 (Red) //it was never granted!
I understand, and the value of a forum like this is in being able to learn from others what you need to know to be self-sufficient rather than having to wing it. We are a great resource;you are both welcome and encouraged to post as many threads as you need to gain an understanding of all the triggers and tasks you will need to accomplish for your campaign. There is also the Hive discord server or you are welcome to message me directly at any time: a.travesty

As Uncle has highlighted, there is often a safe path through the trigger forest that will keep you clear of all the monsters that dwell there. Stay on the path and nothing unexpected can happen or hurt you. Many of us here know the way and can show you.

Yes that is reasonable and is why I tagged Kyrbi0 here, though I think he will ultimately not respond. He's a past maintainer of the ability insight document and a friend who for many years basically only used existing Object Editor abilities to create whatever he needed instead of using (m)any triggers. He did discover some fun stuff and achieve novel solutions. I thought perhaps he might have insight/opinion (different from mine) on trying to use simpler solutions in such a way that might speak to you.

There is not; I agree. I was certain this time there was no AoE solution because I used the ability insight document whereas I did not do that for Inferno because I thought there was no such ability.

It's alright. I usually try making things work on my own or look up existing answers before asking. The community helped me a lot already though this is a big project and sometimes I worry that maybe it's too big (but I really love the idea of map travelling, rpg-ish maps like the OrcX campaign was which is why I'm trying to do one). I'm trying to go one step at a time and I could write a swarm of questions but I'm trying to proceed one step at a time. Since you offered I may ask stuff in message when it comes to, preferably when I'm sure it's already requires triggers, lol. I'm not very accustomed to custom scripts or which triggers prone to leak. I'll try keep an eye on the "what's working and what's not" list because it's annoying when I spend an hour to see what's wrong with my trigger, only to find out that it's the editor's fault.

Btw, I did include shared vision.

  • Set TP = (Position of (Triggering unit))
  • Unit - Create 1 Dummy for Player 8 (Pink) at TP facing Default building facing degrees
  • Set WarcryCaster = (Last created unit)
  • Unit - Grant shared vision of WarcryCaster to Player 1 (Red) <------ here
  • Unit - Add Real Warcry to WarcryCaster
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
I think you're mixing things up. There are 2 separate solutions for the vision problem:

1) Make the Dummy unit belong to a Computer player that has vision of the entire map.

OR

2) Make the Dummy unit belong to the casting player. Then grant temporary shared vision of the enemy unit(s) you're going to Slow inside of the Pick Every Unit loop. Grant vision of picked unit -> Slow picked unit -> Remove vision of picked unit.

It appears like you want to do #1, assuming that Player 8 is your all-seeing CPU, in which case you don't have to grant shared vision of anything.
Here's the final trigger:
  • Warcry
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Warcry
    • Actions
      • Set TP = (Position of (Triggering unit))
      • Unit - Create 1 Dummy for Player 8 (Pink) at TP facing Default building facing degrees
      • Set WarcryCaster = (Last created unit)
      • Unit - Add Real Warcry to WarcryCaster
      • Unit - Set level of Real Warcry for WarcryCaster to (Level of Warcry for (Triggering unit))
      • Unit - Add a 1.00 second Generic expiration timer to WarcryCaster
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 250.00 of TP) and do (Actions)
        • Loop - Actions
          • Set PU = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (PU belongs to an enemy of Player 2 (Blue)) Equal to True
            • Then - Actions
              • Unit - Order WarcryCaster to Human Sorceress - Slow PU
            • Else - Actions
      • Custom script: call RemoveLocation(udg_TP)
Note some changes I made, TP only needs to be set/removed once and you forgot to use PU.

Also, I recommend naming your variables using a logical pattern, IE: WarcryPoint, WarcryDummy, WarcryTarget. This lets future you know that these variables are intended for the Warcry spell as well as being clear as to what their role is. Otherwise, a month from now you may wonder what the hell a TP and a PU is, lol.

Lastly, there may be times when you may want your Dummy unit to belong to your casting player so that proper credit is rewarded. For example, if the Dummy is casting a spell that deals damage then you'll want the kill credit to go to the casting player and not some random CPU. In this case it shouldn't matter since Slow doesn't deal any damage plus we're relying on P8's vision.
 
Last edited:
Level 12
Joined
Jul 5, 2014
Messages
551
I think you're mixing things up. There are 2 separate solutions for the vision problem:

1) Make the Dummy unit belong to a Computer player that has vision of the entire map.

OR

2) Make the Dummy unit belong to the casting player. Then grant temporary shared vision of the enemy unit you're going to Slow inside of the Pick Every Unit loop. Grant vision of picked unit -> Slow picked unit -> Remove vision of picked unit.

It appears like you want to do #1, assuming that Player 8 is your all-seeing CPU, in which case you don't have to grant shared vision of anything. With that mind in here's the final trigger:
  • Warcry
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Warcry
    • Actions
      • Set TP = (Position of (Triggering unit))
      • Unit - Create 1 Dummy for Player 8 (Pink) at TP facing Default building facing degrees
      • Set WarcryCaster = (Last created unit)
      • Unit - Add Real Warcry to WarcryCaster
      • Unit - Set level of Real Warcry for WarcryCaster to (Level of Warcry for (Triggering unit))
      • Unit - Add a 1.00 second Generic expiration timer to WarcryCaster
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 250.00 of TP) and do (Actions)
        • Loop - Actions
          • Set PU = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (PU belongs to an enemy of Player 2 (Blue)) Equal to True
            • Then - Actions
              • Unit - Order WarcryCaster to Human Sorceress - Slow PU
            • Else - Actions
      • Custom script: call RemoveLocation(udg_TP)
Note some changes I made, TP only needs to be set/removed once and you forgot to use PU.

Also, I recommend naming your variables using a logical pattern, IE: WarcryPoint, WarcryDummy, WarcryTarget. This lets future you know that these variables are intended for the Warcry spell as well as being clear as to what their role is. Otherwise, a month from now you may wonder what the hell a TP and a PU is, lol.

In some cases you may want your Dummy unit to belong to your casting player so that proper credit is rewarded. For example, if the Dummy is casting a spell that deals damage then you'll want the kill credit to go to the casting player and not some random CPU. In this case it shouldn't matter since Slow doesn't deal any damage.
The reason of the mix up was that it was late and I was very defocused. I've tried finding the global vision option for the computer player but I couldn't so I rolled with giving vision. And I didn't want the dummy sharing vision with the player because I'm guessing the sudden vision share with the enemy makes them ALL pop up for a moment all over the map.

And you're right, it's better to change those variables to something more telling. I just wanted to finish this ability quickly and rolled mostly with the trigger.

The double removal was in Pyro's trigger. It was removed twice because first it referred to the position of the caster then removed and implemented again as the ability's range. So, same variable name, different points.
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,866
The reason of the mix up was that it was late and I was very defocused. I've tried finding the global vision option for the computer player but I couldn't so I rolled with giving vision. And I didn't want the dummy sharing vision with the player because I'm guessing the sudden vision share with the enemy makes them ALL pop up for a moment all over the map.

And you're right, it's better to change those variables to something more telling. I just wanted to finish this ability quickly and rolled mostly with the trigger.

The double removal was in Pyro's trigger. It was removed twice because first it referred to the position of the caster then removed and implemented again as the ability's range. So, same variable name, different points.
No worries, but what you were doing with the vision didn't make sense nor did it solve anything.

Here's how to make Player 8 have global vision:
  • Events
    • Time - Elapsed game time is 0.01 seconds
  • Conditions
  • Actions
    • Visibility - Create an initially Enabled visibility modifier for Player 8 (Pink) emitting Visibility across (Entire map)
Now they can see the (Entire map) throughout the game.

Also, the double setting and removing of TP was unnecessary and wouldn't have worked. There is no (Target point of ability being cast) if your Ability doesn't target a Point. So for example, Thunder Clap and Holy Light don't have a (Target point of ability being cast) since the first has no target and the second targets a unit. However, an ability like Shockwave does have a (Target point of ability being cast) since the user must target a point on the ground to cast it (technically you can click a unit as well, but that just targets the unit's position).
 
Last edited:
Level 12
Joined
Jul 5, 2014
Messages
551
No worries, but what you were doing with the vision didn't make sense nor did it solve anything.

Here's how to make Player 8 have global vision:
  • Events
    • Time - Elapsed game time is 0.01 seconds
  • Conditions
  • Actions
    • Visibility - Create an initially Enabled visibility modifier for Player 8 (Pink) emitting Visibility across (Entire map)
Now they can see the (Entire map) throughout the game.

Also, the double setting and removal of TP was unnecessary and wouldn't have worked. There is no (Target point of ability being cast) if your Ability doesn't target a Point. So for example, Thunder Clap and Holy Light don't have a (Target point of ability being cast) since the first has no target and the second targets a unit. However, an ability like Shockwave does have a (Target point of ability being cast) since the user must target a point on the ground to cast it (technically you can click a unit as well, but that just targets the unit's position).
Oh, I see, it makes sense. Maybe Pyro misunderstood my ability or something.
 
Level 45
Joined
Feb 27, 2007
Messages
5,578
Yeah mistakenly I thought you wanted area-targeted attack speed, not self-targeted area effect. That’s my bad; your messages were clear, I just wasn’t thinking.

The reason for spawning the dummy at the caster’s position (it will match perfectly because the dummy has Locust to remove its pathing & collision) is in the case that you want to show projectiles coming from the caster to hit everything in a targeted area. Doesn’t matter here but for any other ‘make into a mass aoe spell’ stuff you may want it to look like the caster made all the projectiles rather than them coming from the middle of the target zone.
 
Level 12
Joined
Jul 5, 2014
Messages
551
Yeah mistakenly I thought you wanted area-targeted attack speed, not self-targeted area effect. That’s my bad; your messages were clear, I just wasn’t thinking.

The reason for spawning the dummy at the caster’s position (it will match perfectly because the dummy has Locust to remove its pathing & collision) is in the case that you want to show projectiles coming from the caster to hit everything in a targeted area. Doesn’t matter here but for any other ‘make into a mass aoe spell’ stuff you may want it to look like the caster made all the projectiles rather than them coming from the middle of the target zone.
Yes, I know that's why the dummy's there. It makes sense that it pretends to be the casting unit.
 
Top