• 🏆 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] Holy Word: Sanctify

Status
Not open for further replies.
Level 9
Joined
Dec 16, 2017
Messages
343
Hello guys, i am trying to make a spell that heals in some AOE that is represented by a field(as SFX), and i want to give a buff to every unit that enters in the area, and remove the buff when the unit leaves the area but i am not sure how to do it, this is what i got so far without the buff. The spell is based of Silence.

  • Holy Word Sanctify Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Holy Word: Sanctify NEW
    • Actions
      • Set HWS_Index = (HWS_Index + 1)
      • Set HWS_Caster[HWS_Index] = (Triggering unit)
      • Set HWS_Target[HWS_Index] = (Target point of ability being cast)
      • Set HWS_Heal[HWS_Index] = (25.00 + (45.00 x (Real((Level of (Ability being cast) for HWS_Caster[HWS_Index])))))
      • Set HWS_Duration[HWS_Index] = 10
      • Unit - Create 1 Dummy Empty for (Owner of HWS_Caster[HWS_Index]) at HWS_Target[HWS_Index] facing 0.00 degrees
      • Set HWS_Dummy[HWS_Index] = (Last created unit)
      • Special Effect - Create a special effect attached to the origin of HWS_Dummy[HWS_Index] using BlessedField.mdx
      • Set HWS_SFX[HWS_Index] = (Last created special effect)
      • Animation - Change HWS_Dummy[HWS_Index]'s size to (150.00%, 150.00%, 150.00%) of its original size
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HWS_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Holy Word Sanctify Loop <gen>
        • Else - Actions
  • Holy Word Sanctify Loop
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer HWS_Loop) from 1 to HWS_Index, do (Actions)
        • Loop - Actions
          • Set HWS_Duration[HWS_Loop] = (HWS_Duration[HWS_Loop] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HWS_Duration[HWS_Loop] Greater than or equal to 0
            • Then - Actions
              • Custom script: set bj_wantDestroyGroup = true
              • Unit Group - Pick every unit in (Units within 300.00 of HWS_Target[HWS_Loop]) and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ((Picked unit) is alive) Equal to True
                      • ((Picked unit) belongs to an ally of (Owner of HWS_Caster[HWS_Loop])) Equal to True
                    • Then - Actions
                      • Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + HWS_Heal[HWS_Loop])
                      • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                    • Else - Actions
            • Else - Actions
              • Custom script: call RemoveLocation(udg_HWS_Target[udg_HWS_Loop])
              • Unit - Add a 0.10 second Generic expiration timer to HWS_Dummy[HWS_Loop]
              • Special Effect - Destroy HWS_SFX[HWS_Loop]
              • Set HWS_Caster[HWS_Loop] = HWS_Caster[HWS_Index]
              • Set HWS_SFX[HWS_Loop] = HWS_SFX[HWS_Index]
              • Set HWS_Dummy[HWS_Loop] = HWS_Dummy[HWS_Index]
              • Set HWS_Target[HWS_Loop] = HWS_Target[HWS_Index]
              • Set HWS_Duration[HWS_Loop] = HWS_Duration[HWS_Index]
              • Set HWS_Heal[HWS_Loop] = HWS_Heal[HWS_Index]
              • Set HWS_Index = (HWS_Index - 1)
              • Set HWS_Loop = (HWS_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • HWS_Index Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,516
How about ordering the Dummy to cast an AoE spell which applies a buff to nearby units. Then make the buff last 1 second so when the units walk away it disappears. Or you can use a Unit Targeted spell for the buff and incorporate it into the Pick Every Unit function (probably more efficient).
 
Status
Not open for further replies.
Top