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

Ripple of Purification v1.2

  • Like
Reactions: -Derp-
The Caster calls down a massive force of purification which heals all friendly units and damages all enemy units in an area around him.

A simple spell which is easily customizable and combines healing and damage abilities.
Please credit me for my work if you use it.

  • Ripple of Purification
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Ripple of Purification
    • Actions
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Spell constants --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Ripple_Purification_Caster = (Triggering unit)
      • Set Ripple_Purification_Owner = (Owner of Ripple_Purification_Caster)
      • Set Ripple_Purification_Location = (Position of Ripple_Purification_Caster)
      • Set Ripple_Purification_Level = (Level of (Ability being cast) for Ripple_Purification_Caster)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Spell values --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Ripple_Purification_Dmg_Base = 0.00
      • Set Ripple_Purification_Dmg_Bonus = 600.00
      • Set Ripple_Purification_Dmg_Total = (Ripple_Purification_Dmg_Base + (Ripple_Purification_Dmg_Bonus x (Real(Ripple_Purification_Level))))
      • Set Ripple_Purification_Heal_Base = 500.00
      • Set Ripple_Purification_Heal_Bonus = 500.00
      • Set Ripple_Purification_Heal_Total = (Ripple_Purification_Heal_Base + (Ripple_Purification_Heal_Bonus x (Real(Ripple_Purification_Level))))
      • Set Ripple_Purification_Base_AOE = 900.00
      • Set Ripple_Purification_BonusAOE = 0.00
      • Set Ripple_Purification_TotalAOE = (Ripple_Purification_Base_AOE + (Ripple_Purification_BonusAOE x (Real(Ripple_Purification_Level))))
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within Ripple_Purification_TotalAOE of Ripple_Purification_Location matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True))) and do (Actions)
        • Loop - Actions
          • Set Ripple_Purification_PickedUnit = (Picked unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Ripple_Purification_PickedUnit belongs to an ally of Ripple_Purification_Owner) Equal to False
            • Then - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Damaging the targets in the area and creating special effect --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Unit - Cause Ripple_Purification_Caster to damage (Picked unit), dealing Ripple_Purification_Dmg_Total damage of attack type Spells and damage type Normal
              • Special Effect - Create a special effect attached to the origin of Ripple_Purification_PickedUnit using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
              • Special Effect - Destroy (Last created special effect)
            • Else - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Healing the targets in the area and creating special effect --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Unit - Set life of Ripple_Purification_PickedUnit to ((Life of Ripple_Purification_PickedUnit) + Ripple_Purification_Heal_Total)
              • Special Effect - Create a special effect attached to the origin of Ripple_Purification_PickedUnit using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
              • Special Effect - Destroy (Last created special effect)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Creating special effect at caster --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Special Effect - Create a special effect at Ripple_Purification_Location using Abilities\Spells\Human\Resurrect\ResurrectCaster.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect at Ripple_Purification_Location using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Clearing leaks --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_Ripple_Purification_Location)
Changelog
v1.0 Uploaded first release.
v1.1 Fixed a bug that also showed special effects for allied dead units.
Changed the damage type to normal.
Changed how the total aoe is calculated.
v1.2 Simplified the triggers
Keywords:
Ripple of Purification, Heal, Damage, Area of Effect, Healer, Holy, Purify, Spell, AoE, GUI
Contents

Ripple of Purification v1.2 (Map)

Reviews
Approved. Quite simple but could be useful. You could make the level variable a real since you're not using the integer for anything, and you're doing the integer to real conversion multiple times. You should use bj_wantDestroyGroup = true instead...

Moderator

M

Moderator

Maker, 7th Aug 2011, Ripple of Purification v1.1

Approved. Quite simple but could be useful.
You could make the level variable a real since you're not using the integer for anything, and you're doing the integer to real conversion multiple times.
You should use bj_wantDestroyGroup = true instead of unit group variables.
Only use one unit group pick, check whether picked unit is an ally or enemy. Remember to handle neutrals correctly.
 
Level 11
Joined
Jun 28, 2011
Messages
540
When uploading spells, please post the triggers in [trigger][/trigger] tags.

  • Ripple of Purification
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Ripple of Purification
    • Actions
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Getting the Spell constants --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Ripple_Purification_Caster = (Triggering unit)
      • Set Ripple_Purification_Owner = (Owner of Ripple_Purification_Caster)
      • Set Ripple_Purification_Location = (Position of Ripple_Purification_Caster)
      • Set Ripple_Purification_Level = (Level of (Ability being cast) for Ripple_Purification_Caster)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Setting the Spell values --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Ripple_Purification_Dmg_Base = 0.00
      • Set Ripple_Purification_Dmg_Bonus = 600.00
      • Set Ripple_Purification_Dmg_Total = (Ripple_Purification_Dmg_Base + (Ripple_Purification_Dmg_Bonus x (Real(Ripple_Purification_Level))))
      • Set Ripple_Purification_Heal_Base = 500.00
      • Set Ripple_Purification_Heal_Bonus = 500.00
      • Set Ripple_Purification_Heal_Total = (Ripple_Purification_Heal_Base + (Ripple_Purification_Heal_Bonus x (Real(Ripple_Purification_Level))))
      • Set Ripple_Purification_Base_AOE = 900.00
      • Set Ripple_Purification_BonusAOE = 75.00
      • Set Ripple_Purification_TotalAOE = Ripple_Purification_Base_AOE
      • Set Ripple_Purification_Dmg_Group = (Units within Ripple_Purification_TotalAOE of Ripple_Purification_Location matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an enemy of Ripple_Purification_Owner) E
      • Set Ripple_Purification_Heal_Group = (Units within Ripple_Purification_TotalAOE of Ripple_Purification_Location matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an ally of Ripple_Purification_Owner) Eq
      • Unit Group - Pick every unit in Ripple_Purification_Dmg_Group and do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Damaging the targets in the area and creating special effect --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Set Ripple_Purification_Dmg_Unit = (Picked unit)
          • Unit - Cause Ripple_Purification_Caster to damage (Picked unit), dealing Ripple_Purification_Dmg_Total damage of attack type Spells and damage type Unknown
          • Special Effect - Create a special effect attached to the origin of Ripple_Purification_Dmg_Unit using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
          • Special Effect - Destroy (Last created special effect)
      • Unit Group - Pick every unit in Ripple_Purification_Heal_Group and do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Healing the targets in the area and creating special effect --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Set Ripple_Purification_Heal_Unit = (Picked unit)
          • Unit - Set life of Ripple_Purification_Heal_Unit to ((Life of Ripple_Purification_Heal_Unit) + Ripple_Purification_Heal_Total)
          • Special Effect - Create a special effect attached to the origin of Ripple_Purification_Heal_Unit using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
          • Special Effect - Destroy (Last created special effect)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Creating special effect at caster --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Special Effect - Create a special effect at Ripple_Purification_Location using Abilities\Spells\Human\Resurrect\ResurrectCaster.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect at Ripple_Purification_Location using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Clearing leaks --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_Ripple_Purification_Location)
      • Custom script: call DestroyGroup(udg_Ripple_Purification_Dmg_Group)
      • Custom script: call DestroyGroup(udg_Ripple_Purification_Heal_Group)


  • Set Ripple_Purification_Owner = (Owner of Ripple_Purification_Caster)
This can be simplified to:

  • Set Ripple_Purification_Owner = (Triggering player)


Many of your constant variables (Variables that do not change) should not be used, or moved to a map initialization trigger.




The unit enumeration triggers can be simplified to this:

  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within Ripple_Purification_TotalAOE of Ripple_Purification_Location matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True))) and do (Actions)
    • Loop - Actions
      • Set Ripple_Purification_Dmg_Unit = (Picked unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ripple_Purification_Dmg_Unit belongs to an ally of Ripple_Purification_Owner) Equal to False
        • Then - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Damaging the targets in the area and creating special effect --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Unit - Cause Ripple_Purification_Caster to damage (Picked unit), dealing Ripple_Purification_Dmg_Total damage of attack type Spells and damage type Unknown
          • Special Effect - Create a special effect attached to the origin of Ripple_Purification_Dmg_Unit using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
          • Special Effect - Destroy (Last created special effect)
        • Else - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Healing the targets in the area and creating special effect --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Unit - Set life of Ripple_Purification_Dmg_Unit to ((Life of Ripple_Purification_Dmg_Unit) + Ripple_Purification_Heal_Total)
          • Special Effect - Create a special effect attached to the origin of Ripple_Purification_Dmg_Unit using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
          • Special Effect - Destroy (Last created special effect)



Apparently, only two damage types actually do anything. Universal ignores armor, whilst normal includes armor when inflicting damage.
You might want to take this into consideration.
  • Unit - Cause Ripple_Purification_Caster to damage (Picked unit), dealing Ripple_Purification_Dmg_Total damage of attack type Spells and damage type Unknown
 
Level 3
Joined
Jun 11, 2010
Messages
23
When uploading spells, please post the triggers in [trigger][/trigger] tags.

  • Ripple of Purification
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Ripple of Purification
    • Actions
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Getting the Spell constants --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Ripple_Purification_Caster = (Triggering unit)
      • Set Ripple_Purification_Owner = (Owner of Ripple_Purification_Caster)
      • Set Ripple_Purification_Location = (Position of Ripple_Purification_Caster)
      • Set Ripple_Purification_Level = (Level of (Ability being cast) for Ripple_Purification_Caster)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Setting the Spell values --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set Ripple_Purification_Dmg_Base = 0.00
      • Set Ripple_Purification_Dmg_Bonus = 600.00
      • Set Ripple_Purification_Dmg_Total = (Ripple_Purification_Dmg_Base + (Ripple_Purification_Dmg_Bonus x (Real(Ripple_Purification_Level))))
      • Set Ripple_Purification_Heal_Base = 500.00
      • Set Ripple_Purification_Heal_Bonus = 500.00
      • Set Ripple_Purification_Heal_Total = (Ripple_Purification_Heal_Base + (Ripple_Purification_Heal_Bonus x (Real(Ripple_Purification_Level))))
      • Set Ripple_Purification_Base_AOE = 900.00
      • Set Ripple_Purification_BonusAOE = 75.00
      • Set Ripple_Purification_TotalAOE = Ripple_Purification_Base_AOE
      • Set Ripple_Purification_Dmg_Group = (Units within Ripple_Purification_TotalAOE of Ripple_Purification_Location matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an enemy of Ripple_Purification_Owner) E
      • Set Ripple_Purification_Heal_Group = (Units within Ripple_Purification_TotalAOE of Ripple_Purification_Location matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an ally of Ripple_Purification_Owner) Eq
      • Unit Group - Pick every unit in Ripple_Purification_Dmg_Group and do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Damaging the targets in the area and creating special effect --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Set Ripple_Purification_Dmg_Unit = (Picked unit)
          • Unit - Cause Ripple_Purification_Caster to damage (Picked unit), dealing Ripple_Purification_Dmg_Total damage of attack type Spells and damage type Unknown
          • Special Effect - Create a special effect attached to the origin of Ripple_Purification_Dmg_Unit using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
          • Special Effect - Destroy (Last created special effect)
      • Unit Group - Pick every unit in Ripple_Purification_Heal_Group and do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Healing the targets in the area and creating special effect --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Set Ripple_Purification_Heal_Unit = (Picked unit)
          • Unit - Set life of Ripple_Purification_Heal_Unit to ((Life of Ripple_Purification_Heal_Unit) + Ripple_Purification_Heal_Total)
          • Special Effect - Create a special effect attached to the origin of Ripple_Purification_Heal_Unit using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
          • Special Effect - Destroy (Last created special effect)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Creating special effect at caster --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Special Effect - Create a special effect at Ripple_Purification_Location using Abilities\Spells\Human\Resurrect\ResurrectCaster.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect at Ripple_Purification_Location using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Clearing leaks --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_Ripple_Purification_Location)
      • Custom script: call DestroyGroup(udg_Ripple_Purification_Dmg_Group)
      • Custom script: call DestroyGroup(udg_Ripple_Purification_Heal_Group)


  • Set Ripple_Purification_Owner = (Owner of Ripple_Purification_Caster)
This can be simplified to:

  • Set Ripple_Purification_Owner = (Triggering player)


Many of your constant variables (Variables that do not change) should not be used, or moved to a map initialization trigger.




The unit enumeration triggers can be simplified to this:

  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within Ripple_Purification_TotalAOE of Ripple_Purification_Location matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is alive) Equal to True))) and do (Actions)
    • Loop - Actions
      • Set Ripple_Purification_Dmg_Unit = (Picked unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ripple_Purification_Dmg_Unit belongs to an ally of Ripple_Purification_Owner) Equal to False
        • Then - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Damaging the targets in the area and creating special effect --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Unit - Cause Ripple_Purification_Caster to damage (Picked unit), dealing Ripple_Purification_Dmg_Total damage of attack type Spells and damage type Unknown
          • Special Effect - Create a special effect attached to the origin of Ripple_Purification_Dmg_Unit using Abilities\Spells\Orc\Reincarnation\ReincarnationTarget.mdl
          • Special Effect - Destroy (Last created special effect)
        • Else - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Healing the targets in the area and creating special effect --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Unit - Set life of Ripple_Purification_Dmg_Unit to ((Life of Ripple_Purification_Dmg_Unit) + Ripple_Purification_Heal_Total)
          • Special Effect - Create a special effect attached to the origin of Ripple_Purification_Dmg_Unit using Abilities\Spells\Human\Resurrect\ResurrectTarget.mdl
          • Special Effect - Destroy (Last created special effect)



Apparently, only two damage types actually do anything. Universal ignores armor, whilst normal includes armor when inflicting damage.
You might want to take this into consideration.
  • Unit - Cause Ripple_Purification_Caster to damage (Picked unit), dealing Ripple_Purification_Dmg_Total damage of attack type Spells and damage type Unknown

Thanks for the feedback and for pasting the triggers :D. I'll fix what you said.
 
Level 16
Joined
May 1, 2008
Messages
1,605
Moin moin o_O

Sorry to say this, but did I miss something in the last year, that those spells are celebrated like this? =O

I don't want say something bad about this spell, but for some time like a half year, these spells was "Omg-hell-way-to-easy-spell" and some even was deleted that way.

But dude (hope you are one^^) for real, this easy instant spell and you made in GUI. Why not take this one and code it in jass, because who wants waste so much variables for something like this (not bad meaning just a tip^^)

Greetings and Peace
Dr. Boom
 
Level 3
Joined
Jun 11, 2010
Messages
23
Moin moin o_O

Sorry to say this, but did I miss something in the last year, that those spells are celebrated like this? =O

I don't want say something bad about this spell, but for some time like a half year, these spells was "Omg-hell-way-to-easy-spell" and some even was deleted that way.

But dude (hope you are one^^) for real, this easy instant spell and you made in GUI. Why not take this one and code it in jass, because who wants waste so much variables for something like this (not bad meaning just a tip^^)

Greetings and Peace
Dr. Boom

Actually, this is my first spell and I haven't bothered with jass yet. From what I've seen however I think its much more difficult for me to code something in jass. I'm just starting to learn the basics and thought GUI was much easier for a start.

And by the way I am a dude. :p
 
Level 23
Joined
Jan 1, 2011
Messages
1,504
Actually, this is my first spell and I haven't bothered with jass yet. From what I've seen however I think its much more difficult for me to code something in jass. I'm just starting to learn the basics and thought GUI was much easier for a start.

And by the way I am a dude. :p

Use a hashtable for your spells values so that you don't have like 20 variables just for one spell and just put trigger tags above each value explaining what it does. And there isn't a huge difference between GUI and Jass except GUI takes longer to code (and jass has some nice hidden features)
Btw this is really too easy of a spell to be useful =s
 
Level 3
Joined
Jun 11, 2010
Messages
23
Use a hashtable for your spells values so that you don't have like 20 variables just for one spell and just put trigger tags above each value explaining what it does. And there isn't a huge difference between GUI and Jass except GUI takes longer to code (and jass has some nice hidden features)
Btw this is really too easy of a spell to be useful =s

As I said before this is my first spell and I know its too simple :p but it could prove useful for some. I am currently trying to learn using hashtables.
 
Top