I am currently trying to reproduce the mechanics for several orb/arrow abilities used in WC3, also used in several AoS games like Dota2.
For anyone not familiar with this kind of ability, a quick explanation first:
Ability is tied to your main attack, it usually grants some sort of beneficial effect to the attack or a debuff to the enemy. These can vary from additional damage over splash, manaburn, slows, armor reductions... you get the idea. These additional effects were called orb effects.
Ability is casted on a target. Casting the ability once will cause you to attack once with your main weapon, this attack will then be amplified with the orb effect.
Casting the ability multiple times would never exceed your attackspeed with the main weapon.
Ability can be set to autocast, amplifying every shot automatically.
Ability can have a cooldown independent to your attach speed and can have mana costs, both of which are executed the moment your weapon fires.
I have seen many attempts to replicate this exact behavior in SC2, I have used a couple of workarounds myself. However, so far everything I found has been lacking in some department, and since the spell mechanic in WC3 makes a lot of sense and is quite intuitive to use, I am currently trying to emulate this behavior entirely, with as few compromises as possible. If you know any exact recreations already, please notify me.
Popular workarounds include:
A simple toggleable ability. This provides the autocast part and if combined with validators and modify unit effects can also account for energy costs on each attack, also behaviors can be used for cooldowns. Lacks the ability for single casts or selecting a target with the ability. Also doesn't display the cost and cooldown on the icon, you would need to simulate that.
Instant-cast buff, amplifying the next attack. Buff has a damage response or is checked at weapon launch to launch a modified attack. Can be autocasted, can be single casted to only amplify the next attack. Cannot target a specific enemy with the ability, costs are executed when applying the buff, not, when your weapon launches.
Autocastable ability providing a secondary attack. Not tied to attackspeed at all, doesn't modify the main weapon. Needs a cooldown.
Augment ability applying a buff to the caster. Same specifications for the buff as before. Can be autocasted, can be manually casted, however will continue to cast the ability whenever possible, so no single cast possible. Cost still triggers on ability cast instead of on weapon launch. Needs a cooldown of some sort, otherwise will be spammed indefinitely or until you run out of mana, before your first attack even comes through.
This is just to describe the things I tried and I am not entirely satisfied with, however, maybe some of this information helps in finding a good solution. It might not be possible to get a perfect replication, however, I would like to get a little closer than what I tried so far.
SInce selecting a target and issuing an attack order while modifying the weapon at the same time seems only possible with an Augment ability, I decided to start from there. My current approach is quite messy, it involves an augment ability issuing an attack order and applying a buff, while also instantly recovering its costs (well, actually after a 0.0625 delay, otherwise it tries to add energy before the costs are substracted, making it fail on full energy). Then the weapon checks for the buff, subtracts the costs again, removes the buff and launches a modified attack. The buff prevents the augment ability from being executed, so it works fine without a cooldown.
However adding a cooldown would cause some discrepancy, also single casts are still impossible, casting the ability once will still use it until your energy is depleted. I tried to fix this by adding the validator or a short cooldown (no effect, even though the ability currently cannot be casted, it will remain in the order queue), by issuing a Stop order (breaks queued orders, interrupts current attack order, causes the unit to lose or switch targets) and with a Cancel Order effect (sounds promising, but had no effect at all).
It has some other minor discrepancies, but if I can manage to add single cast support and properly working cooldowns, I would be quite satisfied with the result.
I attached an example map. Using the orb spell of the Dragoons makes them do splash damage.
A cooldown seems to work fine apart from the fact your "Max Distance" validator allows 2 more range than the weapon, if anything the problem is the inability to adapt to different weapon ranges. Could you elaborate on the problems you found?
You should also be able to use an autocast Effect-Target ability, they allow Smart Commands for right-click activation and the Unit Weapon Firing validator class sounds like it could be used to prevent autocasts unless the unit is actually shooting.
I don't see any way of fixing the range issue while keeping the active-cast component though, especially if you add in temporary range-altering buffs. I suggest you stick with a Toggle ability and make a seperate setup whenever the single-cast attack is important. No one used it on the regular arrow abilities, only for custom super-buffed versions that were retooled as ultimates, and in that case you could hard-lock it to one unit type.
A cooldown seems to work fine apart from the fact your "Max Distance" validator allows 2 more range than the weapon, if anything the problem is the inability to adapt to different weapon ranges. Could you elaborate on the problems you found?
They are Dragoons, of course they will get their +2 range upgrade from Broodwar :D
Problem with the cooldown is obviously, that it triggers the moment you cast the ability. The cooldown is not likely to be synchronized with your shots at all times, so sometimes it will trigger between 2 shots. Also, you can cancel the attack before it actually executes, so the cooldown will be wasted, unless you attack within the 3 second timeframe the buff persists, however in this case you will shoot an amplified shot without ordering so.
This is a problem in the current state as well. It becomes most obvious, if you issue the cast manually with autocast deactivated, then issue a move command after the shot. In most cases, the ability was already re-casted after the first shot, making your next shot an amplified one without ever ordering that.
Quote:
You should also be able to use an autocast Effect-Target ability, they allow Smart Commands for right-click activation and the Unit Weapon Firing validator class sounds like it could be used to prevent autocasts unless the unit is actually shooting.
Does the Weapon Firing validator work nowadays? All it did when I tried it before was crash the game. Also, smart-activated abilities would not issue an attack order, right? € also they trigger on each and every rightclick, even when auto-cast is off. Not what I want.
Quote:
I don't see any way of fixing the range issue while keeping the active-cast component though, especially if you add in temporary range-altering buffs. I suggest you stick with a Toggle ability and make a seperate setup whenever the single-cast attack is important. No one used it on the regular arrow abilities, only for custom super-buffed versions that were retooled as ultimates, and in that case you could hard-lock it to one unit type.
Oh, especially in those Dota maps, it was widely used. It had some advantages over the autocast, for example using castpoint instead of attackpoint and using a different range buffer allowing for longer range shots as well as not aggroing creeps :)
Also, my final version is supposed to be more restrictive in terms of energy cost; if you only have 3 shots using a single cast on a specific target could be very viable.
Oh, especially in those Dota maps, it was widely used. It had some advantages over the autocast, for example using castpoint instead of attackpoint and using a different range buffer allowing for longer range shots as well as not aggroing creeps :)
Also, my final version is supposed to be more restrictive in terms of energy cost; if you only have 3 shots using a single cast on a specific target could be very viable.
...And that won't work with any proposed setup as the actual effect is tied to attacking with the main weapon. Switch effect or Damage Response, neither alters the attack range unless you add a buff with a range boost.
You can use a validator "caster attacking target" to remove the buff if any other order is given, and refund cost and cooldown via Modify Unit effects.
The "restrictive energy cost" is what I meant with ultimates, those would normally be locked to a specific unit and fit their "theme", so you have more options for coding parts of it into the unit itself. What you describe is not an augmented weapon, but a targeted ability that adds your weapon damage to its own.
And as far as I know, Orbs and Arrows were seperate types of abilities. Orbs would be simple passives using damage responses, Arrows, by SC2 standard, would have to be individually tailored to each unit using them.
...And that won't work with any proposed setup as the actual effect is tied to attacking with the main weapon. Switch effect or Damage Response, neither alters the attack range unless you add a buff with a range boost.
That is correct, and not that important anyway. If needed, it could be added later on.
Quote:
You can use a validator "caster attacking target" to remove the buff if any other order is given, and refund cost and cooldown via Modify Unit effects.
I could try that, never got modify unit effects working properly for cooldowns...
I would make it a transient effect - target ability that can target self. If ordered to target a unit a switch effect uses an issue order to tell the unit to attack the target as well but if it casts on the caster it just applies the buff.
Modify unit effects can apply the cost per shot and the buff can remove itself when fired. A validator removing the buff if you lack the resources would also fit.
Rollback Post to RevisionRollBack
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
Do Transient abilities still have that annoying bug/restriction where you get an error from targeting units out of range? That would be really annoying for anyone actually using the active-cast component.
I still get a "Target out of range" error. I'm referring to manually targeting the ability, not the autocast spamming you with errors (the ability I tried doesn't have an autocast)
The problem is that a Move order isn't transient, so the standard solution of "walk up to max range, then fire" contradicts the intention of the flag.
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Hey.
I am currently trying to reproduce the mechanics for several orb/arrow abilities used in WC3, also used in several AoS games like Dota2.
For anyone not familiar with this kind of ability, a quick explanation first:
I have seen many attempts to replicate this exact behavior in SC2, I have used a couple of workarounds myself. However, so far everything I found has been lacking in some department, and since the spell mechanic in WC3 makes a lot of sense and is quite intuitive to use, I am currently trying to emulate this behavior entirely, with as few compromises as possible. If you know any exact recreations already, please notify me.
Popular workarounds include:
This is just to describe the things I tried and I am not entirely satisfied with, however, maybe some of this information helps in finding a good solution. It might not be possible to get a perfect replication, however, I would like to get a little closer than what I tried so far.
SInce selecting a target and issuing an attack order while modifying the weapon at the same time seems only possible with an Augment ability, I decided to start from there. My current approach is quite messy, it involves an augment ability issuing an attack order and applying a buff, while also instantly recovering its costs (well, actually after a 0.0625 delay, otherwise it tries to add energy before the costs are substracted, making it fail on full energy). Then the weapon checks for the buff, subtracts the costs again, removes the buff and launches a modified attack. The buff prevents the augment ability from being executed, so it works fine without a cooldown.
However adding a cooldown would cause some discrepancy, also single casts are still impossible, casting the ability once will still use it until your energy is depleted. I tried to fix this by adding the validator or a short cooldown (no effect, even though the ability currently cannot be casted, it will remain in the order queue), by issuing a Stop order (breaks queued orders, interrupts current attack order, causes the unit to lose or switch targets) and with a Cancel Order effect (sounds promising, but had no effect at all).
It has some other minor discrepancies, but if I can manage to add single cast support and properly working cooldowns, I would be quite satisfied with the result.
I attached an example map. Using the orb spell of the Dragoons makes them do splash damage.
So... anyone an idea, how to improve this? ;)
A cooldown seems to work fine apart from the fact your "Max Distance" validator allows 2 more range than the weapon, if anything the problem is the inability to adapt to different weapon ranges. Could you elaborate on the problems you found?
You should also be able to use an autocast Effect-Target ability, they allow Smart Commands for right-click activation and the Unit Weapon Firing validator class sounds like it could be used to prevent autocasts unless the unit is actually shooting.
I don't see any way of fixing the range issue while keeping the active-cast component though, especially if you add in temporary range-altering buffs. I suggest you stick with a Toggle ability and make a seperate setup whenever the single-cast attack is important. No one used it on the regular arrow abilities, only for custom super-buffed versions that were retooled as ultimates, and in that case you could hard-lock it to one unit type.
They are Dragoons, of course they will get their +2 range upgrade from Broodwar :D
Problem with the cooldown is obviously, that it triggers the moment you cast the ability. The cooldown is not likely to be synchronized with your shots at all times, so sometimes it will trigger between 2 shots. Also, you can cancel the attack before it actually executes, so the cooldown will be wasted, unless you attack within the 3 second timeframe the buff persists, however in this case you will shoot an amplified shot without ordering so.
This is a problem in the current state as well. It becomes most obvious, if you issue the cast manually with autocast deactivated, then issue a move command after the shot. In most cases, the ability was already re-casted after the first shot, making your next shot an amplified one without ever ordering that.
Does the Weapon Firing validator work nowadays? All it did when I tried it before was crash the game. Also, smart-activated abilities would not issue an attack order, right? € also they trigger on each and every rightclick, even when auto-cast is off. Not what I want.
Oh, especially in those Dota maps, it was widely used. It had some advantages over the autocast, for example using castpoint instead of attackpoint and using a different range buffer allowing for longer range shots as well as not aggroing creeps :)
Also, my final version is supposed to be more restrictive in terms of energy cost; if you only have 3 shots using a single cast on a specific target could be very viable.
...And that won't work with any proposed setup as the actual effect is tied to attacking with the main weapon. Switch effect or Damage Response, neither alters the attack range unless you add a buff with a range boost.
You can use a validator "caster attacking target" to remove the buff if any other order is given, and refund cost and cooldown via Modify Unit effects.
The "restrictive energy cost" is what I meant with ultimates, those would normally be locked to a specific unit and fit their "theme", so you have more options for coding parts of it into the unit itself. What you describe is not an augmented weapon, but a targeted ability that adds your weapon damage to its own.
And as far as I know, Orbs and Arrows were seperate types of abilities. Orbs would be simple passives using damage responses, Arrows, by SC2 standard, would have to be individually tailored to each unit using them.
That is correct, and not that important anyway. If needed, it could be added later on.
I could try that, never got modify unit effects working properly for cooldowns...
I would make it a transient effect - target ability that can target self. If ordered to target a unit a switch effect uses an issue order to tell the unit to attack the target as well but if it casts on the caster it just applies the buff.
Modify unit effects can apply the cost per shot and the buff can remove itself when fired. A validator removing the buff if you lack the resources would also fit.
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
https://www.sc2mapster.com/forums/resources/tutorials/179654-data-actor-events-message-texture-select-by-id
https://media.forgecdn.net/attachments/187/40/Screenshot2011-04-17_09_16_21.jpg
@DrSuperEvil: Go
Do Transient abilities still have that annoying bug/restriction where you get an error from targeting units out of range? That would be really annoying for anyone actually using the active-cast component.
Thought that could be fixed by having the autocast range being two less than the max range?
Contribute to the wiki (Wiki button at top of page) Considered easy altering of the unit textures?
https://www.sc2mapster.com/forums/resources/tutorials/179654-data-actor-events-message-texture-select-by-id
https://media.forgecdn.net/attachments/187/40/Screenshot2011-04-17_09_16_21.jpg
@DrSuperEvil: Go
I still get a "Target out of range" error. I'm referring to manually targeting the ability, not the autocast spamming you with errors (the ability I tried doesn't have an autocast)
The problem is that a Move order isn't transient, so the standard solution of "walk up to max range, then fire" contradicts the intention of the flag.