• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!

[General] recreate the original Black Arrow

I would like to recreate this cut ability from beta, which is the original Black Arrow ability,
as i but dont really know where to start with. So any help would be appreciated.

Saelendious over at the WC3 Beta: old Hero Info + a bit of item info thread said:
This is certainly one of the most interesting things discovered. Description says it all:
'Damages and drains the life of a unit.
If the unit reaches 0 hit points, the afflicted unit will go into a state of suspended animation,
unable to move, attack and cast spells until the Black Arrow is dispelled.
If the unit has 0 hit points when you dispel Black Arrow, it will die.'
.slk files show that it dealt 50 dmg on impact and 50 dps, 300 mana 240 seconds cooldown.
Procedural effect data says that unit in suspended animation will have '128,0,128' coloration (R,G,B).
 
This is confusing. Would the unit, instead of dying kinda get stunned until it's duration is out or is dispelled unless healed?
I can see some issues caused by regeneration making this hard, but with the dps of 50, it should overcome most regeneration.
So, in other words. It deals 50 + 50 dps. Heals user 50 per second (until buff is gone) and target doesn't really die, but is kept alive at 1 hp or something? Should the unit be invulnerable too so the AI don't target it with normal attacks?
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,570
You would probably have to use a Damage Event and do the following:

1) When you cast Black Arrow, add the target to a Unit Group and use the standard Periodic trigger approach to check on it's status and deal the damage/heal over time. A Unit Indexer come to mind to track things like damage dealt and the damage source (caster).

2) When a target receives lethal damage, "mark" the unit as dead using a boolean, and prevent the lethal damage and suspend the target. Suspending it would set it's Animation Speed to 0%, Vertex Colors to 50%/0%/50%, and Stun it (use a Dummy with Storm Bolt or the BlzPauseUnitEx() function). Now any future damage the unit takes while "marked" will simply reduce it to 1 hp but no less. We can't actually ever kill the unit or the whole thing breaks.

3) Referring back to the Periodic trigger which manages damage/healing, also check for the Black Arrow buff on the target. If the target ever loses the buff then do one of the following:

If the target is marked as dead -> Unsuspend it (undoing all of the previous effects) and cause the caster to deal 9999999 damage to it so it dies.

If the target isn't marked as dead -> Unsuspend it.

There's no easy way to check if Black Arrow is "dispelled" so instead check when the buff "expires". Dispelling it will still yield the desired results. You can set the duration of Black Arrow to 0 seconds to make it permanent but in that case you'd want it to only target non-hero units (unless you're into that sort of sadistic thing).

Edit:
Here it is, I think I created close to what you described. The only issue I can see is that the life drain is always healing for 50 regardless of damage dealt.
 

Attachments

  • Black Arrow Beta.w3m
    86.7 KB · Views: 2
Last edited:
Top