T
Tubba
Guest
GUI or JASS: GUI.
Lagless: Light and Dark might lag if several units cast it at once.
Leakless: Should be.
MUI: Yes, all of them (Light and Dark up to one thousand targets, but your computer will crash before you reach that, most likely)
Import Difficulty: Easy
Editing difficulty: Medium (Requires basic-moderate triggering knowledge, especially for leveling since it requires some copying and pasting)
Sorry about the really bad screenshots, I lack an F13 button, and taking screenshots with a mac is very tricky. I'd appreciate and credit anyone who would take some better
Frost Storm
The Sage channels frost energy around him to freeze approaching units. Duration and number of frost bolts sent increase as the ability is leveled up.
Screenie:
Code:
Fire Blast
The Sage summons fiery energy, creating great explosions at locations around him. They deal damage to all units within their explosion.
Screenie:
Code:
Discharge
The Sage releases static energy towards nearby enemies, de-buffing them, slowing them and dealing damage.
Screenie:
Code:
And, my personal favourite.
Light and Darkness
The Sage manipulates Light and Darkness into a powerful spell. By channeling them at an enemy, he can create massive amounts of energy, dealing large damage. However, streams of darkness and light leak from the spell, dealing damage or healing units nearby. Any unit, even the Sage himself, can take damage or be healed from these streams.
Screenie:
Code:
README/HOWTO:
Like I said, the screenies aren't very good, so make sure to try out for yourself! I used the Grassy template map. Any questions or comments? Feel free to post.
~Credit isn't neccesary but appreciated (Just don't state you made them yourself
)~
Lagless: Light and Dark might lag if several units cast it at once.
Leakless: Should be.
MUI: Yes, all of them (Light and Dark up to one thousand targets, but your computer will crash before you reach that, most likely)
Import Difficulty: Easy
Editing difficulty: Medium (Requires basic-moderate triggering knowledge, especially for leveling since it requires some copying and pasting)
Sorry about the really bad screenshots, I lack an F13 button, and taking screenshots with a mac is very tricky. I'd appreciate and credit anyone who would take some better
Frost Storm
The Sage channels frost energy around him to freeze approaching units. Duration and number of frost bolts sent increase as the ability is leveled up.
Screenie:

Code:
Code:
Frost Storm
Events
Unit - A unit Begins channeling an ability
Conditions
(Ability being cast) Equal to Frost Storm
Actions
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.50 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Wait (2.49 - ((Real((Level of (Ability being cast) for (Triggering unit)))) / 2.00)) seconds
If ((Current order of (Triggering unit)) Equal to (Order(channel))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Unit - Create 1 Dummy Unit for Player 1 (Red) at Temp_Point facing Default building facing degrees
Unit - Add Dummy Frost Bolt to (Last created unit)
Set tempGroup = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Random unit from tempGroup)
Custom script: call RemoveLocation (udg_Temp_Point)
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Custom script: call DestroyGroup(udg_tempGroup)
Fire Blast
The Sage summons fiery energy, creating great explosions at locations around him. They deal damage to all units within their explosion.
Screenie:

Code:
Code:
Fire Blast
Events
Unit - A unit Begins channeling an ability
Conditions
(Ability being cast) Equal to Fireblast
Actions
Set Temp_Point = (Position of (Triggering unit))
Set tempFirePoint = (Temp_Point offset by (Real((Random integer number between 100 and 1600))) towards (Real((Random integer number between 1 and 360))) degrees)
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing tempFirePoint
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Dummy Flamestrike to (Last created unit)
Unit - Set level of Dummy Flamestrike for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Order (Last created unit) to Undead Dreadlord - Inferno tempFirePoint
Custom script: call RemoveLocation (udg_tempFirePoint)
Custom script: call RemoveLocation (udg_Temp_Point)
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Wait 1.00 seconds
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Set tempFirePoint = (Temp_Point offset by (Real((Random integer number between 100 and 1600))) towards (Real((Random integer number between 1 and 360))) degrees)
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing tempFirePoint
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Dummy Flamestrike to (Last created unit)
Unit - Set level of Dummy Flamestrike for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Order (Last created unit) to Undead Dreadlord - Inferno tempFirePoint
Custom script: call RemoveLocation (udg_tempFirePoint)
Custom script: call RemoveLocation (udg_Temp_Point)
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Wait 1.00 seconds
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Set tempFirePoint = (Temp_Point offset by (Real((Random integer number between 100 and 1600))) towards (Real((Random integer number between 1 and 360))) degrees)
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing tempFirePoint
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Dummy Flamestrike to (Last created unit)
Unit - Set level of Dummy Flamestrike for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Order (Last created unit) to Undead Dreadlord - Inferno tempFirePoint
Custom script: call RemoveLocation (udg_tempFirePoint)
Custom script: call RemoveLocation (udg_Temp_Point)
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
If ((Level of (Ability being cast) for (Triggering unit)) Equal to 1) then do (Skip remaining actions) else do (Wait 1.00 seconds)
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Set tempFirePoint = (Temp_Point offset by (Real((Random integer number between 100 and 1600))) towards (Real((Random integer number between 1 and 360))) degrees)
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing tempFirePoint
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Dummy Flamestrike to (Last created unit)
Unit - Set level of Dummy Flamestrike for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Order (Last created unit) to Undead Dreadlord - Inferno tempFirePoint
Custom script: call RemoveLocation (udg_Temp_Point)
Custom script: call RemoveLocation (udg_tempFirePoint)
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
If ((Level of (Ability being cast) for (Triggering unit)) Equal to 2) then do (Skip remaining actions) else do (Wait 1.00 seconds)
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Set tempFirePoint = (Temp_Point offset by (Real((Random integer number between 100 and 1600))) towards (Real((Random integer number between 1 and 360))) degrees)
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing tempFirePoint
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Dummy Flamestrike to (Last created unit)
Unit - Set level of Dummy Flamestrike for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Order (Last created unit) to Undead Dreadlord - Inferno tempFirePoint
Custom script: call RemoveLocation (udg_tempFirePoint)
Custom script: call RemoveLocation (udg_Temp_Point)
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Wait 1.00 seconds
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Set tempFirePoint = (Temp_Point offset by (Real((Random integer number between 100 and 1600))) towards (Real((Random integer number between 1 and 360))) degrees)
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing tempFirePoint
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Dummy Flamestrike to (Last created unit)
Unit - Set level of Dummy Flamestrike for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Order (Last created unit) to Undead Dreadlord - Inferno tempFirePoint
Custom script: call RemoveLocation (udg_tempFirePoint)
Custom script: call RemoveLocation (udg_Temp_Point)
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Wait 0.90 seconds
If ((Current order of (Triggering unit)) Equal to (Order(voodoo))) then do (Do nothing) else do (Skip remaining actions)
Set Temp_Point = (Position of (Triggering unit))
Set Temp_Point = (Position of (Triggering unit))
Set tempFirePoint = (Temp_Point offset by (Real((Random integer number between 100 and 1600))) towards (Real((Random integer number between 1 and 360))) degrees)
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at Temp_Point facing tempFirePoint
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Dummy Flamestrike to (Last created unit)
Unit - Set level of Dummy Flamestrike for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
Unit - Order (Last created unit) to Undead Dreadlord - Inferno tempFirePoint
Custom script: call RemoveLocation (udg_tempFirePoint)
Custom script: call RemoveLocation (udg_Temp_Point)
Discharge
The Sage releases static energy towards nearby enemies, de-buffing them, slowing them and dealing damage.
Screenie:

Code:
Code:
Discharge
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Discharge
Actions
Set Temp_Point = (Position of (Triggering unit))
Set tempGroupDischarge = (Units within 600.00 of Temp_Point matching (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True))
Unit Group - Pick every unit in tempGroupDischarge and do (Actions)
Loop - Actions
Set PickedPos = (Position of (Picked unit))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at PickedPos facing Default building facing degrees
Unit - Add Dummy Purge to (Last created unit)
Unit - Set level of Dummy Purge for (Last created unit) to (Level of Discharge for (Triggering unit))
Unit - Order (Last created unit) to Orc Shaman - Purge (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Cause (Triggering unit) to damage (Picked unit), dealing (60.00 x (Real((Level of Discharge for (Triggering unit))))) damage of attack type Spells and damage type Lightning
Custom script: call RemoveLocation (udg_PickedPos)
Custom script: call RemoveLocation (udg_Temp_Point)
Custom script: call DestroyGroup (udg_tempGroupDischarge)
And, my personal favourite.
Light and Darkness
The Sage manipulates Light and Darkness into a powerful spell. By channeling them at an enemy, he can create massive amounts of energy, dealing large damage. However, streams of darkness and light leak from the spell, dealing damage or healing units nearby. Any unit, even the Sage himself, can take damage or be healed from these streams.
Screenie:

Code:
Code:
Light And Dark
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Light and Darkness
Actions
If (IntegerArray Equal to 1000) then do (Set IntegerArray = 0) else do (Set IntegerArray = (IntegerArray + 1))
Set tempCaster[IntegerArray] = (Triggering unit)
Set tempTarget[IntegerArray] = (Target unit of ability being cast)
Set tempUnitPoint = (Position of (Target unit of ability being cast))
Unit - Create 1 Dummy Unit for (Owner of (Triggering unit)) at tempUnitPoint facing Default building facing degrees
Unit - Set the custom value of (Last created unit) to IntegerArray
Unit Group - Add (Last created unit) to DummyGroup
Custom script: call RemoveLocation (udg_tempUnitPoint )
Code:
LightAndDarkStream
Events
Time - Every 0.50 seconds of game time
Conditions
(Number of units in DummyGroup) Greater than 0
Actions
Unit Group - Pick every unit in DummyGroup and do (Actions)
Loop - Actions
Set TrueArrayInteger = (Custom value of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((tempTarget[TrueArrayInteger] is dead) Equal to True) or ((Integer(timeLeft[TrueArrayInteger])) Greater than or equal to 20)
Then - Actions
Unit - Remove (Picked unit) from the game
Else - Actions
Set PointLnD[TrueArrayInteger] = (Position of tempTarget[TrueArrayInteger])
Unit - Move (Picked unit) instantly to PointLnD[TrueArrayInteger]
Set GroupHealorDie[TrueArrayInteger] = (Units within 600.00 of PointLnD[TrueArrayInteger] matching (((Matching unit) Not equal to tempTarget[TrueArrayInteger]) and ((Matching unit) Not equal to (Picked unit))))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Random integer number between 1 and 3) Equal to 1
Then - Actions
Set tempTargetDarkLight[TrueArrayInteger] = (Random unit from GroupHealorDie[TrueArrayInteger])
Set tempTargetLnDPoint[TrueArrayInteger] = (Position of tempTargetDarkLight[TrueArrayInteger])
Unit - Create 1 Dummy Unit for (Owner of tempCaster[TrueArrayInteger]) at tempTargetLnDPoint[TrueArrayInteger] facing tempTargetLnDPoint[TrueArrayInteger]
Unit - Add Dummy Light (Neutral Hostile) to (Last created unit)
Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning tempTargetDarkLight[TrueArrayInteger]
Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
Else - Actions
Set tempTargetDarkLight[TrueArrayInteger] = (Random unit from GroupHealorDie[TrueArrayInteger])
Set tempTargetLnDPoint[TrueArrayInteger] = (Position of tempTargetDarkLight[TrueArrayInteger])
Unit - Create 1 Dummy Unit for (Owner of tempCaster[TrueArrayInteger]) at tempTargetLnDPoint[TrueArrayInteger] facing tempTargetLnDPoint[TrueArrayInteger]
Unit - Add Dummy Darkness (Neutral Hostile) to (Last created unit)
Unit - Order (Last created unit) to Orc Far Seer - Chain Lightning tempTargetDarkLight[TrueArrayInteger]
Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
Set timeLeft[TrueArrayInteger] = (timeLeft[TrueArrayInteger] + 0.50)
Custom script: call RemoveLocation (udg_PointLnD [udg_TrueArrayInteger] )
Custom script: call RemoveLocation (udg_tempTargetLnDPoint [udg_TrueArrayInteger] )
Custom script: call DestroyGroup (udg_GroupHealorDie [udg_TrueArrayInteger])
README/HOWTO:
Code:
1. Go to the Object Editor, and copy + paste the following:
For Frost Storm: The Frost Storm Ability, the ability Dummy Frostbolt, the buff Frozen (Used by Dummy Frostbolt).
For Fire Blast: The Fire Blast ability, the ability Dummy Flamestrike.
For Discharge: The Discharge Ability, the ability Dummy Purge.
For Light and Dark: The abilities Light and Dark, Dummy Darkness and Dummy Light.
2. Copy the triggers <<paste your spell trigger names here>>,
then paste them into your map.
For Frost Storm: The trigger with the same name.
For Fire Blast: The trigger with the same name.
For Discharge: The trigger with the same name.
For Light and Dark: The trigger Light and Dark as well as LightAndDarkStream.
3. Note that Frost Storm and Fire Blast are both based on Channel, but use different Order ID:s (channel and voodoo, respectively). If you change the order ID:s
due to for example using one of them in other spells (on the same hero), you MUST change the order stringed checked in the triggers. Otherwise, they will not work
properly.
Notes on leveling: Frost Storm and Fire Blast require some basic trigger knowledge to level higher properly. Simply copy the last segment (Starting with
the second to last If/Then/Else which checks whether the hero is still channeling), paste it, and modify the Wait as you want to. For Frost Bolt, you also might want
to check the earlier Waits to make them exactly as you want them to. For Fire Blast, make sure you make additional levels for the Dummy Flamestrike for each level you add.
For Discharge, just change the dummy Purge and add any modifiers to the damage unit action as you want to.
For leveling Light and Dark, just modify the dummy Darkness/Light to add more levels, then add an action similar to the one in Fire Blast which levels the dummy skill accordingly to the
level of the ability being cast (To be specific, put the following action after Add ability: Set Level of Dummy Darkness/Light for (Last Created Unit) to (Level of Light and Dark
ness for tempCaster[TrueArrayInteger])
Make sure to have "Generate unknown variables" checked in Preferences.
~Thanks to Flare for showing me how to use arrays to make a spell MUI.
Like I said, the screenies aren't very good, so make sure to try out for yourself! I used the Grassy template map. Any questions or comments? Feel free to post.
~Credit isn't neccesary but appreciated (Just don't state you made them yourself
Attachments
-
65.3 KB Views: 684