• 🏆 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!

Flame Nova ability not working properly

Status
Not open for further replies.
Level 4
Joined
Aug 17, 2014
Messages
102
Essentially, I am trying to create the following spell :
Flame Nova: Cause a nova of fire to explode outwards from the targeted area dealing (1.5 x Intelligence) damage to all units caught within. Additionally, units caught within flame nova are set Ablaze and will explode after 3 seconds dealing (.5 x Intelligence) damage to all nearby allies.

I have two abilities created Flame Nova itself and a dummy spell for the Ablaze debuff.

The spell actually works as intended, but not as precisely i'd like whenever there are more than about 4 or 5 units within the spell the Ablaze part does not seem to go off at all, but when it is less than that it works 100% fine. I'm sure there's a way to fix this using arrays, but unfortunately i'm still a relative novice.

Triggers I am using for now:
  • Flame Nova
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Flame Nova (Disciple of Fire)
    • Actions
      • Set Damage = (Real((Intelligence of (Triggering unit) (Include bonuses))))
      • Set Caster_FlameNova = (Triggering unit)
      • Special Effect - Create a special effect at (Target point of ability being cast) using war3mapImported\FireNova2.mdx
      • Special Effect - Set Scale of (Last created special effect) to 0.50
      • Unit Group - Pick every unit in (Units within 300.00 of (Target point of ability being cast) matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True)) and do (Actions)
        • Loop - Actions
          • Set Target_FlameNova = (Picked unit)
          • Unit - Cause (Triggering unit) to damage (Picked unit), dealing (1.50 x Damage) damage of attack type Magic and damage type Normal
          • Unit - Create 1 Dummy for (Owner of (Triggering unit)) at (Position of (Picked unit)) facing Default building facing degrees
          • Set Temp_Unit_Flamenova = (Last created unit)
          • Unit - Add a 0.50 second Generic expiration timer to Temp_Unit_Flamenova
          • Unit - Add Ablaze (Flame Nova effect) to Temp_Unit_Flamenova
          • Unit - Order Temp_Unit_Flamenova to Undead Banshee - Curse (Picked unit)
          • Trigger - Run Flame Nova Ablaze <gen> (checking conditions)
  • Flame Nova Ablaze
    • Events
    • Conditions
    • Actions
      • Wait 3.00 seconds
      • Special Effect - Create a special effect attached to the origin of Target_FlameNova using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Unit Group - Pick every unit in (Units within 175.00 of (Position of Target_FlameNova) matching (((Matching unit) belongs to an enemy of (Owner of Caster_FlameNova)) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Cause Caster_FlameNova to damage (Picked unit), dealing (0.50 x Damage) damage of attack type Magic and damage type Normal
 
Last edited:
Your current Triggers will:
  1. Deal damage to current picked Unit
  2. wait 3 seconds
  3. Deal AoE damage around same target
  4. repeat for all units in the group. Waits inside a group loop tend to fail.
Total result, if it works, is your spell takes 3 x targets seconds to be completed.

But what you want to do, as I Understand is:
  1. Deal AoE Damage around Caster
    • Place some buff
  2. wait 3 seconds
  3. Deal AoE damage around every unit taken damage before the wait
Dat requiers either indexing/dynamic timers or a local shadow group you take over the wait.

But beaware with that local stuff: Group Loops and Conditions are in a subfunction, Therefore inside such a subfunction there is no access to the locals of the main function. If you only make the group local and use the "not recommented" way of group finding it should work.
 
Level 4
Joined
Aug 17, 2014
Messages
102
The trigger actually is properly doing the aoe[debuff] for all the picked units within the initial aoe, but for some reason only when its a small number of units. Whenever it's more than 4 individuals it doesn't occur at all.

My intention for the spell is:
1. Deal instant aoe damage in a target area and place a debuff on every enemy unit within that area
2. after 3 seconds
3. those enemy units with the debuff deal additional aoe in a much smaller radius around them

As far as "local shadow group" I have no idea what that is like I mentioned I really am not too great with triggering yet.
 
Level 7
Joined
Apr 17, 2017
Messages
316
Well, I am no expert but I did the best I could. You might wanna use a timer or a counter instead of wait.

  • Flame Nova
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Flame Nova (Disciple of Fire)
    • Actions
      • Set Caster_FlameNova = (Triggering unit)
      • Set Damage = (Real((Intelligence of Caster_FlameNova (Include bonuses))))
      • Set FlameNova_Targ = (Target point of ability being cast)
      • Special Effect - Create a special effect at FlameNova_Targ using war3mapImported\FireNova2.mdx
      • Special Effect - Set Scale of (Last created special effect) to 0.50
      • Special Effect - Destroy (Last created special effect)
      • Set FlameNova_UnitGroup = (Units within 300.00 of FlameNova_Targ matching (((Matching unit) belongs to an enemy of (Owner of Caster_FlameNova)) Equal to True))
      • Unit Group - Pick every unit in FlameNova_UnitGroup and do (Actions)
        • Loop - Actions
          • Set Target_FlameNova = (Picked unit)
          • Unit - Cause Caster_FlameNova to damage Target_FlameNova, dealing (1.50 x Damage) damage of attack type Magic and damage type Normal
          • Unit - Create 1 Dummy for (Owner of Caster_FlameNova) at (Position of Target_FlameNova) facing Default building facing degrees
          • Set Temp_Unit_Flamenova = (Last created unit)
          • Unit - Add a 0.50 second Generic expiration timer to Temp_Unit_Flamenova
          • Unit - Add Ablaze (Flame Nova Effect) to Temp_Unit_Flamenova
          • Unit - Order Temp_Unit_Flamenova to Undead Banshee - Curse Target_FlameNova
      • Countdown Timer - Start FlameNovaTimer as a One-shot timer that will expire in 3.00 seconds
      • Trigger - Turn on Flame Nova Ablaze <gen>
  • Flame Nova Ablaze
    • Events
      • Time - FlameNovaTimer expires
    • Conditions
    • Actions
      • Unit Group - Pick every unit in FlameNova_UnitGroup and do (Actions)
        • Loop - Actions
          • Set Target_FlameNova = (Picked unit)
          • Set Target_FlameNovaPosition = (Position of Target_FlameNova)
          • Special Effect - Create a special effect at Target_FlameNovaPosition using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
          • Special Effect - Destroy (Last created special effect)
          • Custom script: call RemoveLocation(udg_Target_FlameNovaPosition)
          • Set FlameNova_UnitGroup2 = (Units within 175.00 of (Position of Target_FlameNova) matching ((((Matching unit) belongs to an enemy of (Owner of Caster_FlameNova)) Equal to True) and (((Matching unit) is in FlameNova_UnitGroup) Equal to False)))
          • Unit Group - Pick every unit in FlameNova_UnitGroup2 and do (Actions)
            • Loop - Actions
              • Set Target_FlameNovaPosition2 = (Position of (Picked unit))
              • Special Effect - Create a special effect at Target_FlameNovaPosition2 using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
              • Special Effect - Destroy (Last created special effect)
              • Unit - Cause Caster_FlameNova to damage (Picked unit), dealing (0.50 x Damage) damage of attack type Magic and damage type Normal
              • Custom script: call RemoveLocation(udg_Target_FlameNovaPosition2)
      • Custom script: call DestroyGroup(udg_FlameNova_UnitGroup2)
      • Custom script: call DestroyGroup(udg_FlameNova_UnitGroup)
      • Custom script: call RemoveLocation(udg_FlameNova_Targ)
      • Trigger - Turn off (This trigger)
 
Status
Not open for further replies.
Top