- Joined
- Jul 5, 2014
- Messages
- 551
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.
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.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
Thunder Clap has an attack speed debuff. You could give it negative values and make it target Allies to turn it into a buff.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.
That would work well if I could remove the terrain deformation and the debuff could be dispelled. Is it possible?Thunder Clap has an attack speed debuff. You could give it negative values and make it target Allies to turn it into a buff.
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.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.
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.Using triggered single target spells on an undefined number of enemy units feels like complicating things too much.
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.That would work well if I could remove the terrain deformation
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?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.
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.
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)
The solution is clear then, you have to trigger it.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)
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.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.
@Kyrbi0 Please, please, please give your honest/unfiltered input on this ^ even if it is different from what I clearly prioritize.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?
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.Unfortunately, I'm on 1.26, I think there were a number of patches since then.
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.The terrain has a same wave with thunder clap as with war stomp.
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: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.
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.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.
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.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:
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.
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)
That being said, I'll show you an example of how another trigger could cause interference:
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.
Events
Unit - A unit is issued an Order targeting an object
Conditions
Actions
Unit - Kill (Triggering unit)
I understand, but that's all manageable with a proper understanding of what's happening and what to avoid: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 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"?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.
(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.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"?
That's a relief. I was always worried about these identifiers.(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.Event Response Myths
"All event responses are lost except triggering unit" Who said this non-sense first? Attacked Unit: Same thing with triggering unit Attacking Unit: Working correctly Buying Unit: Working correctly Selling Unit: Working correctly Sold Unit...www.hiveworkshop.com
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.
Shit. Yeah, that was the problem. Thanks.Does your dummy caster have anything other than 0 in these fields?
View attachment 475798
Values >0 may slow down the rate at which it casts so it's possible a 1 second timed life isn't enough for it to target all units
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.travestyLook, 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.
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.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.
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.So I see no harm in asking if there's a function of some spell I overlooked and would make my life easier.
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:
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
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!
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.
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.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:
Note some changes I made, TP only needs to be set/removed once and you forgot to use PU.
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)
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.
No worries, but what you were doing with the vision didn't make sense nor did it solve anything.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.
Oh, I see, it makes sense. Maybe Pyro misunderstood my ability or something.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:
Now they can see the (Entire map) throughout the game.
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)
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).
Yes, I know that's why the dummy's there. It makes sense that it pretends to be the casting unit.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.