Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
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)
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
-------- 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)
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
-------- 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
-------- 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)
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
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?
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 )
-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
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.
-------------------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
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
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 , 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.)
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...
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.
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.
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 One of them im getting a little confused , please dont think im stupid tho lol
Heres the part
Updated to v4 - Read description to see details!
And do not forget to vote on what the spell should look like next version (Look at description to see more details about the pictures)!
Allrightt sirrr 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
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.
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.
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.
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
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
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.