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

Invulnerable Field v9

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: WizardYu
Description:Creates a invulnerable area wizards are casting that last up to 30 seconds.
You can move out and in and the area will still stay invulnerable to all allies of the caster and the caster itself.

Updated! v9!
-Added a less lag version
-Made spell more cool with special effects
-Dead Units are not damaged
-Made dummy type amounts configurable
-Used variables for unit types and for the ability
-----------
Videos:
Full Version Invulnerable Field:
Less Lag Version:
-----------------------------
Full Version:

  • Channeling
    • Events
      • Unit - A unit Begins channeling an ability
    • Conditions
      • (Ability being cast) Equal to Ability
    • Actions
      • Set CasterPosition = (Position of (Triggering unit))
      • Special Effect - Create a special effect at CasterPosition using Abilities\Spells\Undead\DeathPact\DeathPactTarget.mdl
      • Special Effect - Destroy (Last created special effect)
      • Custom script: call RemoveLocation(udg_CasterPosition)
  • Invulnerable Field
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Ability
    • Actions
      • Set Caster = (Triggering unit)
      • Set CasterPosition = (Position of Caster)
      • Set TriggerPlayer = (Triggering player)
      • Set Level = (Level of Ability for Caster)
      • Unit - Turn collision for Caster Off
      • For each (Integer Loop) from 1 to Repeats[1], do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by IAoE[Level] towards (15.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Units[1] for TriggerPlayer at Offset facing Default building facing degrees
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 Units[2] for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Set level of Invulnerable Field (Unit) for TempUnit to Level
      • Unit - Order TempUnit to Orc Shadow Hunter - Big Bad Voodoo
      • Unit - Create 1 Units[3] for Neutral Hostile at CasterPosition facing Default building facing degrees
      • Set Laser_Taker = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to Laser_Taker
      • For each (Integer Loop) from 1 to Repeats[2], do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by IAoE[Level] towards (30.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Units[4] for TriggerPlayer at Offset facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Set TempPoint = (Position of (Last created unit))
          • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
          • Special Effect - Create a special effect at TempPoint using SpecialFX[4]
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
          • Custom script: call RemoveLocation(udg_Offset)
          • Custom script: call RemoveLocation(udg_TempPoint)
      • Unit - Create 1 Units[5] for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • For each (Integer Loop) from 1 to Repeats[3], do (Actions)
        • Loop - Actions
          • Unit - Create 1 Units[5] for TriggerPlayer at CasterPosition facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Animation - Change TempUnit flying height to (100.00 x (Real(Loop))) at (100.00 x (Real(Loop)))
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Turn collision for Caster On
      • Special Effect - Create a special effect at CasterPosition using SpecialFX[Level]
      • Special Effect - Destroy (Last created special effect)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within AoE[Level] of CasterPosition matching ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True))) and do (Actions)
        • Loop - Actions
          • Unit - Cause Caster to damage (Picked unit), dealing Damage[Level] damage of attack type Spells and damage type Normal
      • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: call RemoveLocation(udg_CasterPosition)
  • Spell Settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- (v7) --------
      • -------- Spell Damage, Also, The numbers at the end is the level of ability once casted. (This applies for everything else in "Spell Settings"). --------
      • Set Damage[1] = 300.00
      • Set Damage[2] = 400.00
      • Set Damage[3] = 500.00
      • -------- The AoE of the damage. --------
      • Set AoE[1] = 700.00
      • Set AoE[2] = 800.00
      • Set AoE[3] = 900.00
      • -------- Special Effect casted at Caster once casted. --------
      • -------- Note: You must know the path for the model to change it. If you don't know the path just leave it how it is. --------
      • -------- Or, you can try and find it like this: Go to Units - Create any unit - Model File - Double Click - Find your Model - Press OK - Double click Model File again - Select the whole line - Copy (CTRL + C) the line "Custom" - Now you have it, just paste it --------
      • Set SpecialFX[1] = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
      • Set SpecialFX[2] = Abilities\Spells\Human\MassTeleport\MassTeleportTarget.mdl
      • Set SpecialFX[3] = Abilities\Spells\Other\Awaken\Awaken.mdl
      • -------- More additional options coming in Invulnerable Field v8 (MABY) --------
      • -------- Yay additional options added! (v8) --------
      • -------- --- --------
      • -------- Unit Range - this is how far apart the wizards and flames are from the caster point. (Note: If you edit this on your map, make sure that it doesnt go below 600 or go higher than 1000) --------
      • -------- And to do this also, set [1] the AoE of level one Invulnerable Field (Unit) and same applies to [2] and [3] | Example: | --------
      • -------- If AoE of spell is 700 at level one, set IAoE[1] to 700. If AoE of spell is 800 at level two, set IAoE[2] to 800. If AoE of spell is 900 at level three, set IAoE[3] to 900 --------
      • Set IAoE[1] = 700.00
      • Set IAoE[2] = 800.00
      • Set IAoE[3] = 900.00
      • -------- Updated! (v9) --------
      • -------- v9 do not edit this part! --------
      • Set Units[1] = Laser Effects (Hidden)
      • Set Units[2] = Invulnerable User
      • Set Units[3] = Laser Taker
      • Set Units[4] = Laser Effects
      • Set Units[5] = SpecialFX
      • -------- Loops (you may edit) (Note: The numbers are the loops in Invulnerable Field trigger, for example, For (Integer Variable) Do 1 to (Repeats(array)) --------
      • -------- Also, The higher the numbers are. the more lag the spell is. --------
      • -------- - --------
      • Set Repeats[1] = 24
      • -------- ^That is the 1st loop in Spell Settings, If you change this, make sure its counting up by 24's or down by twelves (Fire) --------
      • Set Repeats[2] = 12
      • -------- ^That is the 2nd loop in Spell Settings, If you change this, make sure its counting up by 12's or down by twelves (Laser Beams) --------
      • Set Repeats[3] = 3
      • -------- ^Dont edit that at all :P unless you want very high ice. --------
      • -------- Dont edit below! --------
      • Set Ability = Invulnerable Field
      • -------- - --------
      • -------- You may edit this part, this is the special effect eatch wizards make when they are summoned. (You must still know the path to the model) --------
      • Set SpecialFX[4] = Abilities\Spells\Demon\DarkPortal\DarkPortalTarget.mdl
Less Lag Version
  • Channeling
    • Events
      • Unit - A unit Begins channeling an ability
    • Conditions
      • (Ability being cast) Equal to Ability
    • Actions
      • Set CasterPosition = (Position of (Triggering unit))
      • Special Effect - Create a special effect at CasterPosition using Abilities\Spells\Undead\DeathPact\DeathPactTarget.mdl
      • Special Effect - Destroy (Last created special effect)
      • Custom script: call RemoveLocation(udg_CasterPosition)
  • Invulnerable Field
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Ability
    • Actions
      • Set Caster = (Triggering unit)
      • Set CasterPosition = (Position of Caster)
      • Set TriggerPlayer = (Triggering player)
      • Set Level = (Level of Ability for Caster)
      • Unit - Turn collision for Caster Off
      • For each (Integer Loop) from 1 to Repeats[1], do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by IAoE[Level] towards (30.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Units[1] for TriggerPlayer at Offset facing Default building facing degrees
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 Units[2] for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Set level of Invulnerable Field (Unit) for TempUnit to Level
      • Unit - Order TempUnit to Orc Shadow Hunter - Big Bad Voodoo
      • Unit - Create 1 Units[3] for Neutral Hostile at CasterPosition facing Default building facing degrees
      • Set Laser_Taker = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to Laser_Taker
      • For each (Integer Loop) from 1 to Repeats[2], do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by IAoE[Level] towards (60.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Units[4] for TriggerPlayer at Offset facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Set TempPoint = (Position of TempUnit)
          • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
          • Special Effect - Create a special effect at TempPoint using SpecialFX[4]
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
          • Custom script: call RemoveLocation(udg_Offset)
          • Custom script: call RemoveLocation(udg_TempPoint)
      • Unit - Create 1 Units[5] for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • For each (Integer Loop) from 1 to Repeats[3], do (Actions)
        • Loop - Actions
          • Unit - Create 1 Units[5] for TriggerPlayer at CasterPosition facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Animation - Change TempUnit flying height to (100.00 x (Real(Loop))) at (100.00 x (Real(Loop)))
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Turn collision for Caster On
      • Special Effect - Create a special effect at CasterPosition using SpecialFX[Level]
      • Special Effect - Destroy (Last created special effect)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within AoE[Level] of CasterPosition matching ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True))) and do (Actions)
        • Loop - Actions
          • Unit - Cause Caster to damage (Picked unit), dealing Damage[Level] damage of attack type Spells and damage type Normal
      • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: call RemoveLocation(udg_CasterPosition)

  • Spell Settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- (v7) --------
      • -------- Spell Damage, Also, The numbers at the end is the level of ability once casted. (This applies for everything else in "Spell Settings"). --------
      • Set Damage[1] = 300.00
      • Set Damage[2] = 400.00
      • Set Damage[3] = 500.00
      • -------- The AoE of the damage. --------
      • Set AoE[1] = 700.00
      • Set AoE[2] = 800.00
      • Set AoE[3] = 900.00
      • -------- Special Effect casted at Caster once casted. --------
      • -------- Note: You must know the path for the model to change it. If you don't know the path just leave it how it is. --------
      • -------- Or, you can try and find it like this: Go to Units - Create any unit - Model File - Double Click - Find your Model - Press OK - Double click Model File again - Select the whole line - Copy (CTRL + C) the line "Custom" - Now you have it, just paste it --------
      • Set SpecialFX[1] = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
      • Set SpecialFX[2] = Abilities\Spells\Human\MassTeleport\MassTeleportTarget.mdl
      • Set SpecialFX[3] = Abilities\Spells\Other\Awaken\Awaken.mdl
      • -------- More additional options coming in Invulnerable Field v8 (MABY) --------
      • -------- Yay additional options added! (v8) --------
      • -------- --- --------
      • -------- Unit Range - this is how far apart the wizards and flames are from the caster point. (Note: If you edit this on your map, make sure that it doesnt go below 600 or go higher than 1000) --------
      • -------- And to do this also, set [1] the AoE of level one Invulnerable Field (Unit) and same applies to [2] and [3] | Example: | --------
      • -------- If AoE of spell is 700 at level one, set IAoE[1] to 700. If AoE of spell is 800 at level two, set IAoE[2] to 800. If AoE of spell is 900 at level three, set IAoE[3] to 900 --------
      • Set IAoE[1] = 700.00
      • Set IAoE[2] = 800.00
      • Set IAoE[3] = 900.00
      • -------- Updated! (v9) --------
      • -------- v9 do not edit this part! --------
      • Set Units[1] = Laser Effects (Hidden)
      • Set Units[2] = Invulnerable User
      • Set Units[3] = Laser Taker
      • Set Units[4] = Laser Effects
      • Set Units[5] = SpecialFX
      • -------- Loops (you may edit) (Note: The numbers are the loops in Invulnerable Field trigger, for example, For (Integer Variable) Do 1 to (Repeats(array)) --------
      • -------- Also, The higher the numbers are. the more lag the spell is. --------
      • -------- - --------
      • Set Repeats[1] = 12
      • -------- ^That is the 1st loop in Spell Settings, If you change this, make sure its counting up by 24's or down by twelves (Fire) --------
      • Set Repeats[2] = 6
      • -------- ^That is the 2nd loop in Spell Settings, If you change this, make sure its counting up by 12's or down by twelves (Laser Beams) --------
      • Set Repeats[3] = 3
      • -------- ^Dont edit that at all :P unless you want very high ice. --------
      • -------- Dont edit below! --------
      • Set Ability = Invulnerable Field
      • -------- - --------
      • -------- You may edit this part, this is the special effect eatch wizards make when they are summoned. (You must still know the path to the model) --------
      • Set SpecialFX[4] = Abilities\Spells\Demon\DarkPortal\DarkPortalTarget.mdl
Notice
Some Trigger Comments may be out-dated in Less Lag version.
------------------------
Link for Invulnerable Field v9 Less Lag: Press Here
Hope you enjoy!
~xIceShotx
-End

----------v8----------------------------------------------
(And Special thanks to Spartipilo for helping me improve the spell at v3)

Changes (v8): Reduced Units + lag, removed upgrades, and added importing instructions in spell map.

-The How to Import is in the map! Check it out!

  • Invulnerable Field
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Invulnerable Field
    • Actions
      • Set Caster = (Triggering unit)
      • Set CasterPosition = (Position of Caster)
      • Set TriggerPlayer = (Triggering player)
      • Set Level = (Level of Invulnerable Field for Caster)
      • Unit - Turn collision for Caster Off
      • For each (Integer Loop) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by IAoE[Level] towards (15.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 Invulnerable User for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Set level of Invulnerable Field (Unit) for TempUnit to Level
      • Unit - Order TempUnit to Orc Shadow Hunter - Big Bad Voodoo
      • Unit - Create 1 Laser Taker for Neutral Hostile at CasterPosition facing Default building facing degrees
      • Set Laser_Taker = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to Laser_Taker
      • For each (Integer Loop) from 1 to 12, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by IAoE[Level] towards (30.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • For each (Integer Loop) from 1 to 3, do (Actions)
        • Loop - Actions
          • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Animation - Change TempUnit flying height to (100.00 x (Real(Loop))) at (100.00 x (Real(Loop)))
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Turn collision for Caster On
      • Special Effect - Create a special effect at CasterPosition using SpecialFX[Level]
      • Special Effect - Destroy (Last created special effect)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within AoE[Level] of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Cause Caster to damage (Picked unit), dealing Damage[Level] damage of attack type Spells and damage type Normal
      • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: call RemoveLocation(udg_CasterPosition)
  • Spell Settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- (v7) --------
      • -------- Spell Damage, Also, The numbers at the end is the level of ability once casted. (This applies for everything else in Spell Settings). --------
      • Set Damage[1] = 300.00
      • Set Damage[2] = 400.00
      • Set Damage[3] = 500.00
      • -------- The AoE of the damage. --------
      • Set AoE[1] = 700.00
      • Set AoE[2] = 800.00
      • Set AoE[3] = 900.00
      • -------- Special Effect casted at Caster once casted. --------
      • -------- Note: You must know the path for the model to change it. If you don't know the path just leave it how it is. --------
      • -------- Or, you can try and find it like this: Go to Units - Create any unit - Model File - Double Click - Find your Model - Press OK - Double click Model File again - Select the whole line - Copy (CTRL + C) the line Custom - Now you have it, just paste it --------
      • Set SpecialFX[1] = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
      • Set SpecialFX[2] = Abilities\Spells\Human\MassTeleport\MassTeleportTarget.mdl
      • Set SpecialFX[3] = Abilities\Spells\Other\Awaken\Awaken.mdl
      • -------- More additional options coming in Invulnerable Field v8 (MABY) --------
      • -------- Yay additional options added! (v8) --------
      • -------- --- --------
      • -------- Unit Range - this is how far apart the wizards and flames are from the caster point. (Note: If you edit this on your map, make sure that it doesnt go below 600 or go higher than 1000) --------
      • -------- And to do this also, set [1] the AoE of level one Invulnerable Field (Unit) and same applies to [2] and [3] | Example: | --------
      • -------- If AoE of spell is 700 at level one, set IAoE[1] to 700. If AoE of spell is 800 at level two, set IAoE[2] to 800. If AoE of spell is 900 at level three, set IAoE[3] to 900 --------
      • Set IAoE[1] = 700.00
      • Set IAoE[2] = 800.00
      • Set IAoE[3] = 900.00
Trigger:
  • Invulnerable Field
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Invulnerable Field
    • Actions
      • Set Caster = (Triggering unit)
      • Set CasterPosition = (Position of Caster)
      • Set TriggerPlayer = (Triggering player)
      • Unit - Turn collision for Caster Off
      • For each (Integer A) from 1 to 36, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (10.00 x (Real((Integer A)))) degrees)
          • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 Invulnerable User for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • Unit - Add Invulnerable Field (Unit) to (Last created unit)
      • Unit - Order (Last created unit) to Orc Shadow Hunter - Big Bad Voodoo
      • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
          • Animation - Change (Last created unit) flying height to (100.00 x (Real((Integer A)))) at (100.00 x (Real((Integer A))))
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Laser Taker for Neutral Hostile at CasterPosition facing Default building facing degrees
      • Set Laser_Taker = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • Unit - Turn collision for Caster On
      • For each (Integer A) from 1 to 36, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real((Integer A)))) degrees)
          • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
          • Unit - Order (Last created unit) to Human Blood Mage - Siphon Mana Laser_Taker
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: set bj_wantDestroyGroup = true
      • Set UnitGroup = (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of (Owner of (Triggering unit))) Equal to True))
      • Unit Group - Pick every unit in UnitGroup and do (Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal)
      • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: call RemoveLocation(udg_CasterPosition)
      • Custom script: call DestroyGroup(udg_UnitGroup)
Update!
Invulnerable Field v4
Added fixes - Thanks to Magtheridon96.
Reduced Units and Lag by a bit. - |Special| Thanks to Bribe XD
New screenshot of the spell.
The Trigger:
  • Invulnerable Field
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Invulnerable Field
    • Actions
      • Set Caster = (Triggering unit)
      • Set CasterPosition = (Position of Caster)
      • Set TriggerPlayer = (Triggering player)
      • Unit - Turn collision for Caster Off
      • For each (Integer A) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (15.00 x (Real((Integer A)))) degrees)
          • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 Invulnerable User for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • Unit - Add Invulnerable Field (Unit) to (Last created unit)
      • Unit - Order (Last created unit) to Orc Shadow Hunter - Big Bad Voodoo
      • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
          • Animation - Change (Last created unit) flying height to (100.00 x (Real((Integer A)))) at (100.00 x (Real((Integer A))))
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • Unit - Create 1 Laser Taker for Neutral Hostile at CasterPosition facing Default building facing degrees
      • Set Laser_Taker = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • Unit - Turn collision for Caster On
      • For each (Integer A) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real((Integer A)))) degrees)
          • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
          • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
      • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: call RemoveLocation(udg_CasterPosition)
Thanks very much to those two.
If i did something wrong, please tell me!
One quick thing first!
Would You like the spell to look like this on next version?
b7dikk.png

Or how it is right now? Please Voteee on your comment! xD
~xIceShotx

Update!
Invulnerable Field v5!
-Stored unit data into variables (Thanks to Magtheridon96)
-Used Integer Variables (Thanks to Magtheridon96)
-Made fire more straight
-Changed icon (Not really important, but the spell looks more light and stuff not evil or whatever :p)
-New screenshot (Because i made the fire more straight.)
-And I think that is all.
The Trigger:
  • Invulnerable Field
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Invulnerable Field
    • Actions
      • Set Caster = (Triggering unit)
      • Set CasterPosition = (Position of Caster)
      • Set TriggerPlayer = (Triggering player)
      • Unit - Turn collision for Caster Off
      • For each (Integer Loop) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (15.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 Invulnerable User for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Add Invulnerable Field (Unit) to TempUnit
      • Unit - Order TempUnit to Orc Shadow Hunter - Big Bad Voodoo
      • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • For each (Integer Loop) from 1 to 3, do (Actions)
        • Loop - Actions
          • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Animation - Change TempUnit flying height to (100.00 x (Real(Loop))) at (100.00 x (Real((Integer A))))
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Create 1 Laser Taker for Neutral Hostile at CasterPosition facing Default building facing degrees
      • Set Laser_Taker = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to Laser_Taker
      • Unit - Turn collision for Caster On
      • For each (Integer Loop) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
          • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
      • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: call RemoveLocation(udg_CasterPosition)
If any bugs/leaks/need fix on a trigger please tell!
~xIceShotx
--------Edit (Same Version)----------
Somehow the updated picture DID NOT stay the same when it is zoomed!
Here is the real sized image.
2jcbktj.png

-------------------Update!-----------
Invulnerable Field v6 :)
Changes:
-Removed TempUnit variable in first loop.
-Setted dummies to Cant Raise, Does not Decay.
-Removed Invulnerable from dummies because of locust.
-Added additional levels to the spell.
-Removed TempUnit on this part.
  • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
  • Set TempUnit = (Last created unit)
  • Unit - Add a 30.00 second Generic expiration timer to TempUnit
-Thats all i think for now.
Trigger:
  • Invulnerable Field
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Invulnerable Field
    • Actions
      • Set Caster = (Triggering unit)
      • Set CasterPosition = (Position of Caster)
      • Set TriggerPlayer = (Triggering player)
      • Unit - Turn collision for Caster Off
      • For each (Integer Loop) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (15.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 Invulnerable User for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Add Invulnerable Field (Unit) to TempUnit
      • Unit - Order TempUnit to Orc Shadow Hunter - Big Bad Voodoo
      • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • For each (Integer Loop) from 1 to 3, do (Actions)
        • Loop - Actions
          • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Animation - Change TempUnit flying height to (100.00 x (Real(Loop))) at (100.00 x (Real(Loop)))
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Create 1 Laser Taker for Neutral Hostile at CasterPosition facing Default building facing degrees
      • Set Laser_Taker = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to Laser_Taker
      • Unit - Turn collision for Caster On
      • For each (Integer Loop) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
          • Custom script: call RemoveLocation(udg_Offset)
      • Set Level = (Level of Invulnerable Field for Caster)
      • Set Damage[1] = 300.00
      • Set Damage[2] = 400.00
      • Set Damage[3] = 500.00
      • Set AoE[1] = 700.00
      • Set AoE[2] = 800.00
      • Set AoE[3] = 900.00
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within AoE[Level] of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Cause Caster to damage (Picked unit), dealing Damage[Level] damage of attack type Spells and damage type Normal
      • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: call RemoveLocation(udg_CasterPosition)
And that is it.
One quick request though.
I need help on understanding more about Unit Recycling. I am not really comfortable with hashtables though, so i hope its not including them :).
But other than that....
Enjoy!

----Update!!!! Finally!----
Invulnerable Field v7!
Changes:
Removed Line: Add Invulnerable Field (Unit) to TempUnit
Added a Spell Settings; Trigger - You will see what features there are in a sec.
(Note) You can edit Spell Settings on your map, just give credits to me please! thx!
Trigger:
  • Invulnerable Field
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Invulnerable Field
    • Actions
      • Set Caster = (Triggering unit)
      • Set CasterPosition = (Position of Caster)
      • Set TriggerPlayer = (Triggering player)
      • Unit - Turn collision for Caster Off
      • For each (Integer Loop) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (15.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
          • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_Offset)
      • Unit - Create 1 Invulnerable User for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Order TempUnit to Orc Shadow Hunter - Big Bad Voodoo
      • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
      • For each (Integer Loop) from 1 to 3, do (Actions)
        • Loop - Actions
          • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Animation - Change TempUnit flying height to (100.00 x (Real(Loop))) at (100.00 x (Real(Loop)))
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Unit - Create 1 Laser Taker for Neutral Hostile at CasterPosition facing Default building facing degrees
      • Set Laser_Taker = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to Laser_Taker
      • Unit - Turn collision for Caster On
      • For each (Integer Loop) from 1 to 24, do (Actions)
        • Loop - Actions
          • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real(Loop))) degrees)
          • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
          • Set TempUnit = (Last created unit)
          • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
          • Unit - Add a 30.00 second Generic expiration timer to TempUnit
          • Custom script: call RemoveLocation(udg_Offset)
      • Set Level = (Level of Invulnerable Field for Caster)
      • Special Effect - Create a special effect at CasterPosition using SpecialFX[Level]
      • Special Effect - Destroy (Last created special effect)
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within AoE[Level] of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
        • Loop - Actions
          • Unit - Cause Caster to damage (Picked unit), dealing Damage[Level] damage of attack type Spells and damage type Normal
      • Custom script: call RemoveLocation(udg_Offset)
      • Custom script: call RemoveLocation(udg_CasterPosition)
  • Spell Settings (You can edit this in your map but give credits please! Thx)
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Spell Damage, Also, The numbers at the end is the level of ability once casted. (This applies for everything else in Spell Settings). --------
      • Set Damage[1] = 300.00
      • Set Damage[2] = 400.00
      • Set Damage[3] = 500.00
      • -------- The AoE of the damage. --------
      • Set AoE[1] = 700.00
      • Set AoE[2] = 800.00
      • Set AoE[3] = 900.00
      • -------- Special Effect casted at Caster once casted. --------
      • -------- Note: You must know the path for the model to change it. If you don't know the path just leave it how it is. --------
      • -------- Or, you can try and find it like this: Go to Units - Create any unit - Model File - Double Click - Find your Model - Press OK - Double click Model File again - Select the whole line - Copy (CTRL + C) the line Custom; - Now you have it, just paste it --------
      • Set SpecialFX[1] = Abilities\Spells\Human\Thunderclap\ThunderClapCaster.mdl
      • Set SpecialFX[2] = Abilities\Spells\Human\MassTeleport\MassTeleportTarget.mdl
      • Set SpecialFX[3] = Abilities\Spells\Other\Awaken\Awaken.mdl
      • -------- More additional options coming in Invulnerable Field v8 (MABY) --------
Please give Credits if used!
~xIceShotx
How to import the spell to your map:
1: On your map, Go to File > Preferences > Check in Automatically create unknown variables while pasting trigger data then Allow negative real values in the Object Editor.
2: Switch to the spell map.
3: Go to Object Editor
4: Copy all Custom Units, Custom Abilities and Buffs/Effects then paste them into map (It only lets you copy 1 unit, 1 ability and one buff/effect so copy one of each at a time then go to your map) Also, make sure to paste the buff first, ability second, then the units.
5: Once your finished, copy the whole spell folder then paste it to your map.
6: Done, if it has errors in it, go find the error, and double click it then press OK and it will be good.
7: If it still has errors, check to see if world editor changed the condition and the units it creates because it sometimes do that to me too, and then make sure the units have the abilities they're supposed to have because of world editor too :p, if there is a better way to do it than this, do it :) (There is a better version in the map of the spell.)
(There is a better version in the map of the spell.)





Keywords:
Invulnerable, Area, Wizard, Wizards, Arcane, Magic, Invuln, Safe, Instant, Spell, Field.
Contents

Just another Warcraft III map (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Filter out dead units from being damaged. Use variables for unit types and for the ability, set them in settings trigger. Also make the dummy type amounts configurable. The biggest...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.


Maker, Invulnerable Field v8, 10th Nov 2011

Filter out dead units from being damaged.
Use variables for unit types and for the ability, set them in settings trigger.
Also make the dummy type amounts configurable.
The biggest problem with this spell is that is is just Big Bad Voodoo with instant AoE and some effects. It's not that original. Maybe you could make it to be more interesting.
I just remembered we already have a spell like this-> www.hiveworkshop.com/forums/spells-569/gui-divine-protection-v1-2-a-195702

Maker, Invulnerable Field v7, 1st Nov 2011

51 dummies per cast is just too much. Try to use less.
There is no importing instructions.
The dummies use upgrades.
Maker, Invulnerable Field v6, 1st Nov 2011

Add importing instructions
Not needed: Unit - Add Invulnerable Field (Unit) to TempUnit
The unit has the ability in object editor.
The damage and AoE arrays are not needed, you can either move them into a separate init trigger or use an equation in the cast trigger.
Maker, Invulnerable Field v5, 26th Oct 2011

Dont set TempUnit in the forst loop since you only use last created unit once.
The spell doesn't support levels.
Dummies do not need invulnerability ability, they have locust.
Set dummies to can't raise, does not decay.
23rd Oct 2011
Bribe: If you want to use 39 dummies per cast you need to use some form of dummy recycling or just use fewer dummies (I recommend the latter). This is just too much lag per cast.
 
I could've sworn I've seen this before..
You should use the 'Update' button instead of re-uploading the resource.

1) Use an integer variable instead of (Integer A) [Integer A is bug prone]
2) Instead of repeating stuff like (Last created unit) and slowing down the trigger, you should store the data in variables.
For example:
  • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real((Integer A)))) degrees)
  • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
  • Unit - Order (Last created unit) to Human Blood Mage - Siphon Mana Laser_Taker
  • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
  • Custom script: call RemoveLocation(udg_Offset)
->
  • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real((Integer A)))) degrees)
  • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
  • Set TempUnit = (Last created unit)
  • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
  • Unit - Add a 30.00 second Generic expiration timer to TempUnit
  • Custom script: call RemoveLocation(udg_Offset)
3)
  • Set UnitGroup = (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of (Owner of (Triggering unit))) Equal to True))
  • Unit Group - Pick every unit in UnitGroup and do (Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal)
Since you're only setting the group, picking it, manipulating it then destroying it, you can do this instead:

  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of (Owner of (Triggering unit))) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
This way, you don't even need a group variable.

4) I just realized you add that 'set bj_wantDestroyGroup = true' line.
You can remove the line where you set the group variable, and put that '(Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of (Owner of (Triggering unit))) Equal to True))' inside the 'Pick every unit...' line.
Then, just delete the 'DestroyGroup' line and remove the group variable from the variable list.

5) Hope this helps.
 
Level 7
Joined
Aug 31, 2011
Messages
125
I could've sworn I've seen this before..
You should use the 'Update' button instead of re-uploading the resource.

1) Use an integer variable instead of (Integer A) [Integer A is bug prone]
2) Instead of repeating stuff like (Last created unit) and slowing down the trigger, you should store the data in variables.
For example:
  • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real((Integer A)))) degrees)
  • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
  • Unit - Order (Last created unit) to Human Blood Mage - Siphon Mana Laser_Taker
  • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
  • Custom script: call RemoveLocation(udg_Offset)
->
  • Set Offset = (CasterPosition offset by 700.00 towards (30.00 x (Real((Integer A)))) degrees)
  • Unit - Create 1 Laser Effects for TriggerPlayer at Offset facing Default building facing degrees
  • Set TempUnit = (Last created unit)
  • Unit - Order TempUnit to Human Blood Mage - Siphon Mana Laser_Taker
  • Unit - Add a 30.00 second Generic expiration timer to TempUnit
  • Custom script: call RemoveLocation(udg_Offset)
3)
  • Set UnitGroup = (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of (Owner of (Triggering unit))) Equal to True))
  • Unit Group - Pick every unit in UnitGroup and do (Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal)
Since you're only setting the group, picking it, manipulating it then destroying it, you can do this instead:

  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of (Owner of (Triggering unit))) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
This way, you don't even need a group variable.

4) I just realized you add that 'set bj_wantDestroyGroup = true' line.
You can remove the line where you set the group variable, and put that '(Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of (Owner of (Triggering unit))) Equal to True))' inside the 'Pick every unit...' line.
Then, just delete the 'DestroyGroup' line and remove the group variable from the variable list.

5) Hope this helps.

Thanks, if i get a few more mistakes, ill try to fix the trigger as much as possible, and if it does not happen that quickly, ill make sure to get almost all of that :p One of them im getting a little confused :p, please dont think im stupid tho :gg: lol
Heres the part
Then, just delete the 'DestroyGroup' line and remove the group variable from the variable list.
:p
Thanks for telling the stuff i should do :thumbs_up:
 
  • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
  • Unit - Add Invulnerable Field (Unit) to (Last created unit)
  • Unit - Order (Last created unit) to Orc Shadow Hunter - Big Bad Voodoo
  • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
  • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
Step 2 in my first post needs to be applied here too.. In fact, it needs to be applied everywhere.

Also, instead of using (Integer A), create a new integer variable and use it. (Integer A) is quite bug-prone.
 
Level 7
Joined
Aug 31, 2011
Messages
125
  • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
  • Unit - Add Invulnerable Field (Unit) to (Last created unit)
  • Unit - Order (Last created unit) to Orc Shadow Hunter - Big Bad Voodoo
  • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
  • Unit - Add a 30.00 second Generic expiration timer to (Last created unit)
Step 2 in my first post needs to be applied here too.. In fact, it needs to be applied everywhere.

Also, instead of using (Integer A), create a new integer variable and use it. (Integer A) is quite bug-prone.

Allrightt sirrr :p thanks for telling me!
---------Edit----------------
Stored the unit data in triggers - Also, if i need store more please tell me, Ill be posting the triggers in next version.
And, I need help. Im kind of misunderstanding what you mean by "Also, instead of using (Integer A), create a new integer variable and use it.". But.... Maby this is what you mean?

  • For each (Integer A) from 1 to 24, do (Actions)
    • Loop - Actions
      • Set Integer = (Integer A)
      • Set Offset = (CasterPosition offset by 700.00 towards (15.00 x (Real(Integer))) degrees)
      • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Custom script: call RemoveLocation(udg_Offset)
If not, please help!
~xIceShotx
 
Last edited:
No.
I mean this:

  • For each Integer from 1 to 24, do (Actions)
    • Loop - Actions
      • Set Offset = (CasterPosition offset by 700.00 towards (15.00 x (Real(Integer))) degrees)
      • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Custom script: call RemoveLocation(udg_Offset)
 
Level 7
Joined
Aug 31, 2011
Messages
125
No.
I mean this:

  • For each Integer from 1 to 24, do (Actions)
    • Loop - Actions
      • Set Offset = (CasterPosition offset by 700.00 towards (15.00 x (Real(Integer))) degrees)
      • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Custom script: call RemoveLocation(udg_Offset)

Ohhhh! Thanks!
But do i set it like this?
  • Set Integer = (Integer A)
  • For each (Integer Integer) from 1 to 24, do (Actions)
    • Loop - Actions
      • Set Offset = (CasterPosition offset by 700.00 towards (15.00 x (Real(Integer))) degrees)
      • Unit - Create 1 Laser Effects (Hidden) for TriggerPlayer at Offset facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
      • Custom script: call RemoveLocation(udg_Offset)
 
Close.
This line:
  • Set Integer = (Integer A)
is useless.

Also, in that loop, you don't need to set TempUnit to the (Last created unit) because you only used it once.
It's only faster to set the data inside a variable and use it if you're going to use it more than once.
Just use (Last created unit) in that expiration timer line.
 
Level 7
Joined
Aug 31, 2011
Messages
125
Close.
This line:
  • Set Integer = (Integer A)
is useless.

Also, in that loop, you don't need to set TempUnit to the (Last created unit) because you only used it once.
It's only faster to set the data inside a variable and use it if you're going to use it more than once.
Just use (Last created unit) in that expiration timer line.

Oke Dokey! Will be editing.
 
  • For each (Integer Loop) from 1 to 3, do (Actions)
    • Loop - Actions
      • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Animation - Change TempUnit flying height to (100.00 x (Real(Loop))) at (100.00 x (Real((Integer A))))
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
You used (Integer A) ;)


You should make this spell configurable.
Create a new trigger in which you allow users to set variables to modify the spell.
You can create a real array, for example, to modify the spell damage.

Damage[1] => Damage at level 1
Damage[2] => Damage at level 2
Damage[3] => Damage at level 3

You can also create one for the Area of effect.

Range[1] => Range at level 1
Range[2] => Range at level 2
Range[3] => Range at level 3

You'd change this:

  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
to something like this:

  • Set IF_level = (Level of Invulnerable Field for Caster)
  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within IF_spellAoE[IF_level] of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause Caster to damage (Picked unit), dealing Damage[IF_level] damage of attack type Spells and damage type Normal
edit
Also, as Bribe said, you're creating way too many dummies.
You should be recycling dummies in this case.
-Actually, it would be way better if you just use less dummies.
 
Level 7
Joined
Aug 31, 2011
Messages
125
  • For each (Integer Loop) from 1 to 3, do (Actions)
    • Loop - Actions
      • Unit - Create 1 SpecialFX for TriggerPlayer at CasterPosition facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • Animation - Change TempUnit flying height to (100.00 x (Real(Loop))) at (100.00 x (Real((Integer A))))
      • Unit - Add a 30.00 second Generic expiration timer to TempUnit
You used (Integer A) ;)


You should make this spell configurable.
Create a new trigger in which you allow users to set variables to modify the spell.
You can create a real array, for example, to modify the spell damage.

Damage[1] => Damage at level 1
Damage[2] => Damage at level 2
Damage[3] => Damage at level 3

You can also create one for the Area of effect.

Range[1] => Range at level 1
Range[2] => Range at level 2
Range[3] => Range at level 3

You'd change this:

  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within 700.00 of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause Caster to damage (Picked unit), dealing 300.00 damage of attack type Spells and damage type Normal
to something like this:

  • Set IF_level = (Level of Invulnerable Field for Caster)
  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units within IF_spellAoE[IF_level] of CasterPosition matching (((Owner of (Matching unit)) is an enemy of TriggerPlayer) Equal to True)) and do (Actions)
    • Loop - Actions
      • Unit - Cause Caster to damage (Picked unit), dealing Damage[IF_level] damage of attack type Spells and damage type Normal
edit
Also, as Bribe said, you're creating way too many dummies.
You should be recycling dummies in this case.
-Actually, it would be way better if you just use less dummies.

lol, no problem, ill add more levels but i kind of considered this as a final ability like Mountain King - Avatar (Only has one level) but, i guess ill create some more levels for it :p
Thanks for your opinion!
~xIceShotx
 
Damage, AoE, and other things MUST be configurable to a specific caster, so like the damage can be set to 2x int +100.
Also, dont use dummies to cast lightning, trigger it. It will reduce lag and units required to C-N-P.
(Suggestion) For the casting Medhivs or however you spell that, those should be mirror images of the caster.
If a spell isn't done over time (periodically or through timers) then I think it is too simple, therefore I rate this 2/5
rofl
 
Top