• Check out the results of the Techtree Contest #19!
  • Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!

Hello guys

Can u help me what should I do

  • Is it possible?

    Votes: 0 0.0%
  • Or its hardcoded?

    Votes: 0 0.0%

  • Total voters
    0
Level 1
Joined
Feb 22, 2026
Messages
3
I saw a bug in wc3 about black arrow
When i play dark ranger and activate black arrow and use on a enemy unit it works normally

But computer player hero dark ranger dosnt cast it or fires black arrow untill her target's hp becomes 10% or lower but other arrows like searing arrows and frost arrows fire rapidly as hero has enough mana

i want balck arrow to fire normaly like user players or other orb arrows but it doesn't i changed and edited every single settings and stats of this black arrow in editor but doesn't work
 
I'm pretty sure that's typical AI behavior with that specific spell.

You're probably better off triggering your own version with a dummy spell based on envenomed spears (with a custom buff). Use the "A Unit Dies" event, and if the dying unit has your custom buff, do X things.
 
I made a arrow based on poison arrows and used trigger to create skeletons of black arrow
Dying unit has black arrow buff equal to true
Then create 1 skeleton etc
But dying unit condition doesn't work
 
Unfortunately yes a dying/dead unit is considered to have no buffs so you can't use that condition

Have you tried setting it as the default active ability here?

1771791472980.png


I don't think the computer can turn it off on its own
 
I made a arrow based on poison arrows and used trigger to create skeletons of black arrow
Dying unit has black arrow buff equal to true
Then create 1 skeleton etc
But dying unit condition doesn't work
Bribe's Damage Engine can detect buffs on dying units fairly well IIRC.

Can try it that way.

Edit: If not, could always just check if killing unit has ability. Another alternative would be to use the damage engine and have a dummy unit apply a parasite clone to the target unit being damaged by arrow.
 
Last edited:
Unfortunately yes a dying/dead unit is considered to have no buffs so you can't use that condition

Have you tried setting it as the default active ability here?

View attachment 575941

I don't think the computer can turn it off on its own
Yes i did also i made a unit ability black arrow and gave it to dark ranger normal ability beside of inventory still didn't work 😕
 
AI is hardcoded to use Black Arrow as a finishing move so to speak, since it is hardcoded that way, the best way to bypass this is to create your own system by creating a custom orb ability.
  • Events
    • Game - DamageEvent becomes Equal to 1.0
  • Conditions
    • (DamageEventSource) Equal to DarkRanger
  • Actions
    • Set TempUnit = DamageEventTarget
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • (DarkRanger has custom orb ability) Equal to True // or use a buff check
      • Then - Actions
        • // Apply a dummy buff to the target
        • Unit - Create 1 DummyUnit for (Owner of DarkRanger) at (Position of TempUnit) facing default
        • Unit - Add DummyBuffAbility to (Last created unit)
        • Unit - Order (Last created unit) to Human Sorceress - Slow TempUnit
        • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
        • // Store relationship (optional, for debugging)
        • Set CustomValue[TempUnit] = (Custom value of DarkRanger)
      • Else - Actions
  • Events
    • Unit - A unit Dies
  • Conditions
    • (Custom value of (Dying unit)) Not equal to 0 // or use a custom value to indicate it was marked
  • Actions
    • Set TempPoint = (Position of (Dying unit))
    • Unit - Create 1 Skeleton for (Owner of DarkRanger) at TempPoint facing default
    • Custom script: call RemoveLocation(udg_TempPoint)
    • // Reset custom value
    • Set CustomValue[(Dying unit)] = 0

  • Events
    • Game - DamageEvent becomes Equal to 1.0 (using Bribe's Damage Engine)
  • Conditions
    • (DamageEventSource) is a Hero equal to True // optional, or check specific unit type
    • (DamageEventSource) has your custom orb ability equal to True
  • Actions
    • Set TempTarget = DamageEventTarget
    • Set TempSource = DamageEventSource
    • // Store the source in hashtable, keyed by the target unit's handle ID
    • Custom script: call SaveUnitHandle(udg_BlackArrowHash, GetHandleId(udg_TempTarget), 0, udg_TempSource)
    • // Also store a timestamp or simply rely that the buff will be removed after death
    • // Optionally apply a dummy buff for visual feedback, but not needed for logic
  • Events
    • Unit - A unit Dies
  • Conditions
  • Actions
    • Set TempDying = (Dying unit)
    • Custom script: set udg_TempSource = LoadUnitHandle(udg_BlackArrowHash, GetHandleId(udg_TempDying), 0)
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • TempSource Not equal to No unit
      • Then - Actions
        • Set TempPoint = (Position of TempDying)
        • Unit - Create 1 Skeleton for (Owner of TempSource) at TempPoint facing default
        • Custom script: call RemoveLocation(udg_TempPoint)
        • // Clean up hashtable entry
        • Custom script: call RemoveSavedHandle(udg_BlackArrowHash, GetHandleId(udg_TempDying), 0)
      • Else - Actions
This should work with dmg engine;
I’ll give this a test later today, so this should basically be customizable since the ai will treat this as any other attack modifier. Regards!
 
Last edited:
Looks like AI is smart and saving mana by activating black arrow only on low hp targets.
Maybe try to make own ability based on flame arrows and...

event: unit is damaged
condition: if level of ability "your black arrow (based on flame arrow)" higher than 0
Action= add (ability) black arrow bull to triggering unit.
(not sure how game would determine owner of spawned unit,

it would need extra trigger with action "add event[unit is damaged] to main trigger
and some extra conditions to avoid infinite loop if both targers have this ability)



2nd idea
As i know black arrow could be used like regular spell with target

event=unit is attacked
Condition=level of black arrow higher than 0 (original black arrow)
Action= order attacking unit to cast Black Arrow on attacked unit.
 
Looks like AI is smart and saving mana by activating black arrow only on low hp targets.
Maybe try to make own ability based on flame arrows and...

event: unit is damaged
condition: if level of ability "your black arrow (based on flame arrow)" higher than 0
Action= add (ability) black arrow bull to triggering unit.
(not sure how game would determine owner of spawned unit,

it would need extra trigger with action "add event[unit is damaged] to main trigger
and some extra conditions to avoid infinite loop if both targers have this ability)



2nd idea
As i know black arrow could be used like regular spell with target

event=unit is attacked
Condition=level of black arrow higher than 0 (original black arrow)
Action= order attacking unit to cast Black Arrow on attacked unit.
I'd say the 2nd idea is best, Damage Events introduce overhead and hurt performance - assuming you don't already use them. Forcing the AI to "behave properly" is lightweight. Also, "A unit is attacked" may have similar overhead implications but it's definitely a less complicated Event.
 
Last edited:
Back
Top