• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Solved] Ability being cast for autocast abilities?

Status
Not open for further replies.
Level 5
Joined
Jan 5, 2012
Messages
116
I'm using this basic trigger for an autocast ability based off searing arrows. My question is does this work for autocast or only when you cast it manually?

  • Arcane Glaive
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Arcane Glaive
    • Actions
      • Unit - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing ((5.00 x (1.00 + (Real((Level of Arcane Glaive for (Triggering unit)))))) + ((0.25 x (Real((Level of Arcane Glaive for (Triggering unit))))) x (Real((Strength of (Triggering unit) (Include bonuses)))))) damage of attack type Normal and damage type Magic
 
Level 5
Joined
Jan 5, 2012
Messages
116
Trigger works fine now, only small issue is that the damage is dealt before the projectile and normal attack hit, which is a small inconvenience. Any simple workaround for that?

EDIT: This way isn't MUI right? Like if I have 2 same units with the same ability if one turns it on then it will turn on for the other unit too?
 
Last edited:
Level 5
Joined
Jan 5, 2012
Messages
116
I actually have a damage detection system already in my map. It's GDD by Weep, can you guide me on how to use it for this occasion? Also about the MUI concern, if two same heroes have the spell and one of them turns it on, will the other deal extra damage while having it off?
I'm using this trigger:
  • Arcane Glaive Autocast
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Court Guard
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(flamingarrows))
        • Then - Actions
          • Trigger - Turn on Arcaine Glaive detection <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(unflamingarrows))
        • Then - Actions
          • Trigger - Turn off Arcaine Glaive detection <gen>
        • Else - Actions
 
Level 28
Joined
Feb 18, 2014
Messages
3,574
I actually have a damage detection system already in my map. It's GDD by Weep, can you guide me on how to use it for this occasion? Also about the MUI concern, if two same heroes have the spell and one of them turns it on, will the other deal extra damage while having it off?
I'm using this trigger:
  • Arcane Glaive Autocast
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Court Guard
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(flamingarrows))
        • Then - Actions
          • Trigger - Turn on Arcaine Glaive detection <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(unflamingarrows))
        • Then - Actions
          • Trigger - Turn off Arcaine Glaive detection <gen>
        • Else - Actions
It's not MUI unfortunately, so yeah if one of the two heroes turn on the spell the other will also deal extra damage even if the spell is turned off. Normally, all you need is a DDS and then check if the damaged unit has a buff but since searing arrows doesn't leave a buff on the target then it wouldn't work unless you want to base your spell on something different like Black Arrows or Frost Arrows instead.
 
Level 5
Joined
Jan 5, 2012
Messages
116
I based my spell off frost arrows and I'm using this trigger :
  • Arcaine Glaive detection
    • Events
      • Game - GDD_Event becomes Equal to 0.00
    • Conditions
      • (GDD_DamagedUnit has buff Arcane Glaive (Non-stacking)) Equal to True
    • Actions
      • Set VariableSet ArcaineGlaive_Damage = ((5.00 x (1.00 + (Real((Level of Arcane Glaive for GDD_DamageSource))))) + ((0.25 x (Real((Level of Arcane Glaive for GDD_DamageSource)))) x (Real((Strength of GDD_DamageSource (Include bonuses))))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (GDD_DamagedUnit belongs to an enemy of (Owner of GDD_DamageSource).) Equal to True
          • (GDD_DamagedUnit is A structure) Equal to False
        • Then - Actions
          • Unit - Cause GDD_DamageSource to damage GDD_DamagedUnit, dealing ArcaineGlaive_Damage damage of attack type Normal and damage type Magic
          • Game - Display to (All players) the text: (String(ArcaineGlaive_Damage))
        • Else - Actions
But it doesn't work and one time it crashed my map. What could be wrong?
 
Level 28
Joined
Feb 18, 2014
Messages
3,574
I based my spell off frost arrows and I'm using this trigger :
  • Arcaine Glaive detection
    • Events
      • Game - GDD_Event becomes Equal to 0.00
    • Conditions
      • (GDD_DamagedUnit has buff Arcane Glaive (Non-stacking)) Equal to True
    • Actions
      • Set VariableSet ArcaineGlaive_Damage = ((5.00 x (1.00 + (Real((Level of Arcane Glaive for GDD_DamageSource))))) + ((0.25 x (Real((Level of Arcane Glaive for GDD_DamageSource)))) x (Real((Strength of GDD_DamageSource (Include bonuses))))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (GDD_DamagedUnit belongs to an enemy of (Owner of GDD_DamageSource).) Equal to True
          • (GDD_DamagedUnit is A structure) Equal to False
        • Then - Actions
          • Unit - Cause GDD_DamageSource to damage GDD_DamagedUnit, dealing ArcaineGlaive_Damage damage of attack type Normal and damage type Magic
          • Game - Display to (All players) the text: (String(ArcaineGlaive_Damage))
        • Else - Actions
But it doesn't work and one time it crashed my map. What could be wrong?
Apparently, that DDS has a problem with auto-cast abilities or something like that, I just tested it and it crashed for me too. Anyway I'd recommand using a different DDS such as this one : Physical Damage Detection for GUI v1.3.0.0 or this one Damage Engine 5.5.0.0
 
Level 5
Joined
Jan 5, 2012
Messages
116
Apparently, that DDS has a problem with auto-cast abilities or something like that, I just tested it and it crashed for me too. Anyway I'd recommand using a different DDS such as this one : Physical Damage Detection for GUI v1.3.0.0 or this one Damage Engine 5.5.0.0

Map not crashing now, but I'm getting double damage text, like the trigger is running twice with each attack, also some random 5 numbers when moving. Is it a problem with the buff?
  • Arcaine Glaive detection
    • Events
      • Game - DamageEvent becomes Equal to 1.00
    • Conditions
      • (DamageEventTarget has buff Arcane Glaive (Non-stacking)) Equal to True
    • Actions
      • Set VariableSet ArcaineGlaive_Damage = ((5.00 x (1.00 + (Real((Level of Arcane Glaive (cold) for DamageEventSource))))) + ((0.25 x (Real((Level of Arcane Glaive (cold) for DamageEventSource)))) x (Real((Strength of DamageEventSource (Include bonuses))))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to True
          • (DamageEventTarget is A structure) Equal to False
        • Then - Actions
          • Unit - Cause DamageEventSource to damage DamageEventTarget, dealing ArcaineGlaive_Damage damage of attack type Normal and damage type Magic
          • Game - Display to (All players) the text: (String(ArcaineGlaive_Damage))
        • Else - Actions
 
Map not crashing now, but I'm getting double damage text, like the trigger is running twice with each attack, also some random 5 numbers when moving. Is it a problem with the buff?
  • Arcaine Glaive detection
    • Events
      • Game - DamageEvent becomes Equal to 1.00
    • Conditions
      • (DamageEventTarget has buff Arcane Glaive (Non-stacking)) Equal to True
    • Actions
      • Set VariableSet ArcaineGlaive_Damage = ((5.00 x (1.00 + (Real((Level of Arcane Glaive (cold) for DamageEventSource))))) + ((0.25 x (Real((Level of Arcane Glaive (cold) for DamageEventSource)))) x (Real((Strength of DamageEventSource (Include bonuses))))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to True
          • (DamageEventTarget is A structure) Equal to False
        • Then - Actions
          • Unit - Cause DamageEventSource to damage DamageEventTarget, dealing ArcaineGlaive_Damage damage of attack type Normal and damage type Magic
          • Game - Display to (All players) the text: (String(ArcaineGlaive_Damage))
        • Else - Actions

Normally, arrow abilities deal 2 instances of damage, one based on the unit's attack, and another based on the object editor fields.

Since Damage Engine is being used, try setting the extra damage to 0 (in object editor) to suppress the second event execution.
 
Level 5
Joined
Jan 5, 2012
Messages
116
Normally, arrow abilities deal 2 instances of damage, one based on the unit's attack, and another based on the object editor fields.

Since Damage Engine is being used, try setting the extra damage to 0 (in object editor) to suppress the second event execution.

The extra damage field in Object editor is 0 so something else must be causing the trigger to run twice. I did a workaround by dividing the damage by 2. But I can't think of anything to make that ability MUI, any suggestions by more experienced users would be nice.
 
Level 5
Joined
Jan 5, 2012
Messages
116
Took another look at the trigger. Try removing the buff before dealing extra damage.

I have changed the trigger a lot of times to try out a solution, and I'm now using a hidden aura buff to detect the unit. I tried removing it after damage but that just loses the detection after one cast. These are the full triggers:

  • Arcane Glaive Autocast
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Court Guard
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(blackarrowon))
        • Then - Actions
          • Unit - Add Arcane Glaive dummy to (Triggering unit)
          • Unit - For (Triggering unit), Ability Arcane Glaive dummy , Hide ability: True
          • Trigger - Turn on Arcaine Glaive detection <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(blackarrowoff))
        • Then - Actions
          • Unit - Remove Arcane Glaive dummy from (Triggering unit)
          • Trigger - Turn off Arcaine Glaive detection <gen>
        • Else - Actions
  • Arcaine Glaive detection
    • Events
      • Game - DamageEvent becomes Equal to 1.00
    • Conditions
      • (DamageEventSource has buff Arcane Glaive (buff)) Equal to True
      • (Unit-type of DamageEventSource) Equal to Court Guard
    • Actions
      • Set VariableSet ArcaineGlaive_Damage = ((5.00 x (1.00 + (Real((Level of Arcane Glaive for DamageEventSource))))) + ((0.25 x (Real((Level of Arcane Glaive for DamageEventSource)))) x (Real((Strength of DamageEventSource (Include bonuses))))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to True
          • (DamageEventTarget is A structure) Equal to False
        • Then - Actions
          • Unit - Cause DamageEventSource to damage DamageEventTarget, dealing ArcaineGlaive_Damage damage of attack type Normal and damage type Normal
          • Game - Display to (All players) the text: (String(ArcaineGlaive_Damage))
        • Else - Actions
 
  • Arcaine Glaive detection
    • Events
      • Game - DamageEvent becomes Equal to 1.00
    • Conditions
      • (DamageEventTarget has buff Arcane Glaive (Non-stacking)) Equal to True
    • Actions
      • Set VariableSet ArcaineGlaive_Damage = ((5.00 x (1.00 + (Real((Level of Arcane Glaive for DamageEventSource))))) + ((0.25 x (Real((Level of Arcane Glaive for DamageEventSource)))) x (Real((Strength of DamageEventSource (Include bonuses))))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to True
          • (DamageEventTarget is A structure) Equal to False
        • Then - Actions
          • Unit - Remove (Arcane Glaive (Non-stacking)) from DamageEventTarget
          • Unit - Cause DamageEventSource to damage DamageEventTarget, dealing ArcaineGlaive_Damage damage of attack type Normal and damage type Normal
          • Game - Display to (All players) the text: (String(ArcaineGlaive_Damage))
        • Else - Actions
 
Level 28
Joined
Feb 18, 2014
Messages
3,574
I have changed the trigger a lot of times to try out a solution, and I'm now using a hidden aura buff to detect the unit. I tried removing it after damage but that just loses the detection after one cast. These are the full triggers:

  • Arcane Glaive Autocast
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Court Guard
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(blackarrowon))
        • Then - Actions
          • Unit - Add Arcane Glaive dummy to (Triggering unit)
          • Unit - For (Triggering unit), Ability Arcane Glaive dummy , Hide ability: True
          • Trigger - Turn on Arcaine Glaive detection <gen>
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(blackarrowoff))
        • Then - Actions
          • Unit - Remove Arcane Glaive dummy from (Triggering unit)
          • Trigger - Turn off Arcaine Glaive detection <gen>
        • Else - Actions
  • Arcaine Glaive detection
    • Events
      • Game - DamageEvent becomes Equal to 1.00
    • Conditions
      • (DamageEventSource has buff Arcane Glaive (buff)) Equal to True
      • (Unit-type of DamageEventSource) Equal to Court Guard
    • Actions
      • Set VariableSet ArcaineGlaive_Damage = ((5.00 x (1.00 + (Real((Level of Arcane Glaive for DamageEventSource))))) + ((0.25 x (Real((Level of Arcane Glaive for DamageEventSource)))) x (Real((Strength of DamageEventSource (Include bonuses))))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget belongs to an enemy of (Owner of DamageEventSource).) Equal to True
          • (DamageEventTarget is A structure) Equal to False
        • Then - Actions
          • Unit - Cause DamageEventSource to damage DamageEventTarget, dealing ArcaineGlaive_Damage damage of attack type Normal and damage type Normal
          • Game - Display to (All players) the text: (String(ArcaineGlaive_Damage))
        • Else - Actions
Do what @MyPad said above, also remove the first trigger "Arcane Claive Autocast" it's now useless since you have a DDS. Your spell is now perfectly MUI.
 
Status
Not open for further replies.
Top