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

Can you make immolation slow nearby enemy?

Status
Not open for further replies.

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,570
I triggered it for you.

Note that the AoE/Damage/Slow are always the same regardless of ability level, but that can easily be changed in the Immolation Loop trigger. You can reference the Level of the Immolation ability for the ImmoCaster and use that as part of your calculations.

  • Immolation Cast
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Level of Immolation for (Triggering unit)) Greater than 0
    • Actions
      • -------- Immolation On / Immolation Off --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(immolation))
        • Then - Actions
          • Unit Group - Add (Triggering unit) to ImmoCasters
          • Trigger - Turn on Immolation Loop <gen>
          • -------- --------
          • -------- Create the Dummy unit that will cast Slow on damaged enemy units: --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ImmoDummy Equal to No unit
            • Then - Actions
              • Set VariableSet ImmoPoint = (Center of (Playable map area))
              • Unit - Create 1 Immolation Dummy for Neutral Hostile at ImmoPoint facing Default building facing degrees
              • Set VariableSet ImmoDummy = (Last created unit)
              • Custom script: call RemoveLocation(udg_ImmoPoint)
            • Else - Actions
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Issued order) Equal to (Order(unimmolation))
            • Then - Actions
              • Unit Group - Remove (Triggering unit) from ImmoCasters.
            • Else - Actions
  • Immolation Loop
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in ImmoCasters and do (Actions)
        • Loop - Actions
          • Set VariableSet ImmoCaster = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (ImmoCaster has buff Immolation) Equal to True
            • Then - Actions
              • Set VariableSet ImmoPlayer = (Owner of ImmoCaster)
              • Set VariableSet ImmoPoint = (Position of ImmoCaster)
              • Set VariableSet ImmoTargets = (Units within 250.00 of ImmoPoint.)
              • Custom script: call RemoveLocation(udg_ImmoPoint)
              • -------- --------
              • -------- Damage / Slow nearby enemy units: --------
              • Unit Group - Pick every unit in ImmoTargets and do (Actions)
                • Loop - Actions
                  • Set VariableSet ImmoTarget = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (ImmoTarget is alive) Equal to True
                      • (ImmoTarget is A ground unit) Equal to True
                      • (ImmoTarget belongs to an enemy of ImmoPlayer.) Equal to True
                      • (ImmoTarget is A structure) Equal to False
                      • (ImmoTarget is Mechanical) Equal to False
                      • (ImmoTarget is Magic Immune) Equal to False
                      • (ImmoTarget is invulnerable) Equal to False
                    • Then - Actions
                      • Unit - Order ImmoDummy to Human Sorceress - Slow ImmoTarget
                      • Unit - Cause ImmoCaster to damage ImmoTarget, dealing 10.00 damage of attack type Spells and damage type Normal
                    • Else - Actions
              • -------- --------
              • Custom script: call DestroyGroup(udg_ImmoTargets)
            • Else - Actions
              • -------- The Caster no longer has the buff so they must've deactivated the ability: --------
              • Unit Group - Remove ImmoCaster from ImmoCasters.
      • -------- --------
      • -------- If no Immolations are active we can turn off the Loop trigger: --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in ImmoCasters) Equal to 0
        • Then - Actions
          • Trigger - Turn off Immolation Loop <gen>
        • Else - Actions
 

Attachments

  • Immolation Slow.w3m
    19.3 KB · Views: 12
Last edited:
Level 6
Joined
Jul 12, 2017
Messages
139
I triggered it for you.

Note that the AoE/Damage/Slow are always the same regardless of ability level, but that can easily be changed in the Immolation Loop trigger. You can reference the Level of the Immolation ability for the ImmoCaster and use that as part of your calculations.

  • Immolation Cast
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Level of Immolation for (Triggering unit)) Greater than 0
    • Actions
      • -------- Immolation On / Immolation Off --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(immolation))
        • Then - Actions
          • Unit Group - Add (Triggering unit) to ImmoCasters
          • Trigger - Turn on Immolation Loop <gen>
          • -------- --------
          • -------- Create the Dummy unit that will cast Slow on damaged enemy units: --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ImmoDummy Equal to No unit
            • Then - Actions
              • Set VariableSet ImmoPoint = (Center of (Playable map area))
              • Unit - Create 1 Immolation Dummy for Neutral Hostile at ImmoPoint facing Default building facing degrees
              • Set VariableSet ImmoDummy = (Last created unit)
              • Custom script: call RemoveLocation(udg_ImmoPoint)
            • Else - Actions
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Issued order) Equal to (Order(unimmolation))
            • Then - Actions
              • Unit Group - Remove (Triggering unit) from ImmoCasters.
            • Else - Actions
  • Immolation Loop
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in ImmoCasters and do (Actions)
        • Loop - Actions
          • Set VariableSet ImmoCaster = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (ImmoCaster has buff Immolation) Equal to True
            • Then - Actions
              • Set VariableSet ImmoPlayer = (Owner of ImmoCaster)
              • Set VariableSet ImmoPoint = (Position of ImmoCaster)
              • Set VariableSet ImmoTargets = (Units within 250.00 of ImmoPoint.)
              • Custom script: call RemoveLocation(udg_ImmoPoint)
              • -------- --------
              • -------- Damage / Slow nearby enemy units: --------
              • Unit Group - Pick every unit in ImmoTargets and do (Actions)
                • Loop - Actions
                  • Set VariableSet ImmoTarget = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (ImmoTarget is alive) Equal to True
                      • (ImmoTarget is A ground unit) Equal to True
                      • (ImmoTarget belongs to an enemy of ImmoPlayer.) Equal to True
                      • (ImmoTarget is A structure) Equal to False
                      • (ImmoTarget is Mechanical) Equal to False
                      • (ImmoTarget is Magic Immune) Equal to False
                      • (ImmoTarget is invulnerable) Equal to False
                    • Then - Actions
                      • Unit - Order ImmoDummy to Human Sorceress - Slow ImmoTarget
                      • Unit - Cause ImmoCaster to damage ImmoTarget, dealing 10.00 damage of attack type Spells and damage type Normal
                    • Else - Actions
              • -------- --------
              • Custom script: call DestroyGroup(udg_ImmoTargets)
            • Else - Actions
              • -------- The Caster no longer has the buff so they must've deactivated the ability: --------
              • Unit Group - Remove ImmoCaster from ImmoCasters.
      • -------- --------
      • -------- If no Immolations are active we can turn off the Loop trigger: --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in ImmoCasters) Equal to 0
        • Then - Actions
          • Trigger - Turn off Immolation Loop <gen>
        • Else - Actions

I have tested and it works as intended. Sorry for the late reply but thanks very much!
 
Level 21
Joined
Mar 29, 2020
Messages
1,237
I triggered it for you.

Note that the AoE/Damage/Slow are always the same regardless of ability level, but that can easily be changed in the Immolation Loop trigger. You can reference the Level of the Immolation ability for the ImmoCaster and use that as part of your calculations.

  • Immolation Cast
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Level of Immolation for (Triggering unit)) Greater than 0
    • Actions
      • -------- Immolation On / Immolation Off --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(immolation))
        • Then - Actions
          • Unit Group - Add (Triggering unit) to ImmoCasters
          • Trigger - Turn on Immolation Loop <gen>
          • -------- --------
          • -------- Create the Dummy unit that will cast Slow on damaged enemy units: --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ImmoDummy Equal to No unit
            • Then - Actions
              • Set VariableSet ImmoPoint = (Center of (Playable map area))
              • Unit - Create 1 Immolation Dummy for Neutral Hostile at ImmoPoint facing Default building facing degrees
              • Set VariableSet ImmoDummy = (Last created unit)
              • Custom script: call RemoveLocation(udg_ImmoPoint)
            • Else - Actions
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Issued order) Equal to (Order(unimmolation))
            • Then - Actions
              • Unit Group - Remove (Triggering unit) from ImmoCasters.
            • Else - Actions
  • Immolation Loop
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in ImmoCasters and do (Actions)
        • Loop - Actions
          • Set VariableSet ImmoCaster = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (ImmoCaster has buff Immolation) Equal to True
            • Then - Actions
              • Set VariableSet ImmoPlayer = (Owner of ImmoCaster)
              • Set VariableSet ImmoPoint = (Position of ImmoCaster)
              • Set VariableSet ImmoTargets = (Units within 250.00 of ImmoPoint.)
              • Custom script: call RemoveLocation(udg_ImmoPoint)
              • -------- --------
              • -------- Damage / Slow nearby enemy units: --------
              • Unit Group - Pick every unit in ImmoTargets and do (Actions)
                • Loop - Actions
                  • Set VariableSet ImmoTarget = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (ImmoTarget is alive) Equal to True
                      • (ImmoTarget is A ground unit) Equal to True
                      • (ImmoTarget belongs to an enemy of ImmoPlayer.) Equal to True
                      • (ImmoTarget is A structure) Equal to False
                      • (ImmoTarget is Mechanical) Equal to False
                      • (ImmoTarget is Magic Immune) Equal to False
                      • (ImmoTarget is invulnerable) Equal to False
                    • Then - Actions
                      • Unit - Order ImmoDummy to Human Sorceress - Slow ImmoTarget
                      • Unit - Cause ImmoCaster to damage ImmoTarget, dealing 10.00 damage of attack type Spells and damage type Normal
                    • Else - Actions
              • -------- --------
              • Custom script: call DestroyGroup(udg_ImmoTargets)
            • Else - Actions
              • -------- The Caster no longer has the buff so they must've deactivated the ability: --------
              • Unit Group - Remove ImmoCaster from ImmoCasters.
      • -------- --------
      • -------- If no Immolations are active we can turn off the Loop trigger: --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in ImmoCasters) Equal to 0
        • Then - Actions
          • Trigger - Turn off Immolation Loop <gen>
        • Else - Actions
another way to get a similar effect could be to slap on and off of the casting unit a negative speed aura.. I think that would probably be a simpler way to go about the same thing...
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,570
another way to get a similar effect could be to slap on and off of the casting unit a negative speed aura.. I think that would probably be a simpler way to go about the same thing...
I always hated that approach though, now you're stuck with the mechanics of an aura which have a 2 second lingering effect, a buff that can't be dispelled, and the slow doesn't sync up with the damage. I agree it's nice for newcomers but from a designer standpoint it's the lazy way of doing it. Plus now if the user wants to add additional effects they can by modifying the trigger.
 
Last edited:
Status
Not open for further replies.
Top