- Joined
- Jan 1, 2011
- Messages
- 1,534
GUI Workshop
How to request a spell
~Name your spell.
~Give a detailed description on what it does.
~Tell me what base ability to use.
~Submit it on this thread.
How I do spells
All spells I do will be both MUI and leakless.
Spells will be made using vanilla GUI and hashtables.
I will only do one request at a time, in order from who posted first to last.
On finishing a spell I will upload it to the Hiveworkshop spell section.
I request your credit on the map you use this spell in.
Finished Spells
LS Setup
Events
Map initialization
Conditions
Actions
Hashtable - Create a hashtable
Set LSHash = (Last created hashtable)
Custom script: call DestroyTrigger(GetTriggeringTrigger())
LS Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Lightning Strike
Actions
Set TempUnit1 = (Triggering unit)
Set TempUnit2 = (Target unit of ability being cast)
Custom script: set udg_TempInteger1 = GetHandleId(udg_TempUnit2)
Set TempInteger2 = (Level of (Ability being cast) for TempUnit1)
-------- Damage --------
Set TempReal1 = (100.00 x (Real(TempInteger2)))
Unit - Cause TempUnit1 to damage TempUnit2, dealing TempReal1 damage of attack type Magic and damage type Lightning
Special Effect - Create a special effect attached to the origin of TempUnit2 using Abilities\Weapons\Bolt\BoltImpact.mdl
Special Effect - Destroy (Last created special effect)
-------- Jumps --------
Set TempInteger3 = (TempInteger2 + 1)
Set TempReal1 = (TempReal1 x 0.90)
Custom script: call SaveReal(udg_LSHash,udg_TempInteger1,0,udg_TempReal1)
Custom script: call SaveInteger(udg_LSHash,udg_TempInteger1,1,udg_TempInteger3)
Custom script: call SaveUnitHandle(udg_LSHash,udg_TempInteger1,2,udg_TempUnit1)
Set TempPoint1 = (Position of TempUnit1)
Set TempPoint2 = (Position of TempUnit2)
Custom script: set udg_TempReal1=(50+(GetUnitFlyHeight(udg_TempUnit1)+GetLocationZ(udg_TempPoint1)))
Custom script: set udg_TempReal2=(50+(GetUnitFlyHeight(udg_TempUnit2)+GetLocationZ(udg_TempPoint2)))
Custom script: set udg_TempLightning=AddLightningEx("CLPB",true,GetLocationX(udg_TempPoint1),GetLocationY(udg_TempPoint1),udg_TempReal1,GetLocationX(udg_TempPoint2),GetLocationY(udg_TempPoint2),udg_TempReal2)
Custom script: call SaveLightningHandle(udg_LSHash,udg_TempInteger1,3,udg_TempLightning)
Set TempReal1 = (Angle from TempPoint1 to TempPoint2)
Custom script: call SaveReal(udg_LSHash,udg_TempInteger1,4,udg_TempReal1)
Custom script: call RemoveLocation(udg_TempPoint1)
Custom script: call RemoveLocation(udg_TempPoint2)
Unit Group - Add TempUnit2 to LSGroup
Trigger - Turn on LS Periodic <gen>
LS Periodic
Events
Time - Every 0.15 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in LSGroup and do (Actions)
Loop - Actions
Set TempUnit1 = (Picked unit)
Custom script: set udg_TempInteger1 = GetHandleId(udg_TempUnit1)
Custom script: set udg_TempInteger2=LoadInteger(udg_LSHash,udg_TempInteger1,1)
Custom script: set udg_TempUnit2=LoadUnitHandle(udg_LSHash,udg_TempInteger1,2)
Custom script: set udg_TempReal1=LoadReal(udg_LSHash,udg_TempInteger1,0)
Custom script: set udg_TempReal2=LoadReal(udg_LSHash,udg_TempInteger1,4)
Set TempPoint1 = (Position of TempUnit1)
Set TempPoint2 = (TempPoint1 offset by 400.00 towards TempReal2 degrees)
Set TempInteger2 = (TempInteger2 - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TempInteger2 Greater than 0
Then - Actions
For each (Integer TempInteger4) from 1 to 2, do (Actions)
Loop - Actions
Set TempUnit3 = No unit
Set TempReal5 = 400.00
Custom script: set bj_wantDestroyGroup= true
Unit Group - Pick every unit in (Units within 400.00 of TempPoint2 matching ((((Matching unit) is alive) Equal to True) and ((((Owner of TempUnit2) is an enemy of (Owner of (Matching unit))) Equal to True) and (((Matching unit) is in LSGroup) Equal to False)))) and do (Actions)
Loop - Actions
Set TempUnit4 = (Picked unit)
Set TempPoint3 = (Position of TempUnit4)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between TempPoint1 and TempPoint3) Less than TempReal5
Then - Actions
Set TempReal5 = (Distance between TempPoint1 and TempPoint3)
Set TempUnit3 = TempUnit4
Else - Actions
Custom script: call RemoveLocation(udg_TempPoint3)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TempUnit3 Not equal to No unit
Then - Actions
Set TempPoint3 = (Position of TempUnit3)
Custom script: set udg_TempInteger3=GetHandleId(udg_TempUnit3)
Unit - Cause TempUnit2 to damage TempUnit3, dealing TempReal1 damage of attack type Magic and damage type Lightning
Special Effect - Create a special effect attached to the origin of TempUnit3 using Abilities\Weapons\Bolt\BoltImpact.mdl
Special Effect - Destroy (Last created special effect)
Set TempReal1 = (TempReal1 x 0.90)
Custom script: call SaveReal(udg_LSHash,udg_TempInteger3,0,udg_TempReal1)
Custom script: call SaveInteger(udg_LSHash,udg_TempInteger3,1,udg_TempInteger2)
Custom script: call SaveUnitHandle(udg_LSHash,udg_TempInteger3,2,udg_TempUnit2)
Custom script: set udg_TempReal3=(50+(GetUnitFlyHeight(udg_TempUnit1)+GetLocationZ(udg_TempPoint1)))
Custom script: set udg_TempReal4=(50+(GetUnitFlyHeight(udg_TempUnit3)+GetLocationZ(udg_TempPoint3)))
Custom script: set udg_TempLightning=AddLightningEx("CLPB",true,GetLocationX(udg_TempPoint1),GetLocationY(udg_TempPoint1),udg_TempReal3,GetLocationX(udg_TempPoint3),GetLocationY(udg_TempPoint3),udg_TempReal4)
Custom script: call SaveLightningHandle(udg_LSHash,udg_TempInteger3,3,udg_TempLightning)
Custom script: call SaveReal(udg_LSHash,udg_TempInteger3,4,udg_TempReal2)
Custom script: call RemoveLocation(udg_TempPoint3)
Unit Group - Add TempUnit3 to LSGroup
Else - Actions
Else - Actions
Custom script: call RemoveLocation(udg_TempPoint1)
Custom script: call RemoveLocation(udg_TempPoint2)
Unit Group - Remove TempUnit1 from LSGroup
Custom script: set udg_TempLightning=LoadLightningHandle(udg_LSHash,udg_TempInteger1,3)
Lightning - Destroy TempLightning
Hashtable - Clear all child hashtables of child TempInteger1 in LSHash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(LSGroup is empty) Equal to True
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Requested by sonofjay in my spell workshop.ToolTip![]()
Spell Info
How to import
1. Open the spell map
2. Copy and paste the Lightning Strike spell to your map
3. Copy the lightning strike trigger folder to your triggers in your map
4. Edit condition under LS Cast and make it5.Edit
(Ability being cast) Equal to Lightning Strike
to fit your needs
-------- Damage --------
Set TempReal1 = (100.00 x (Real(TempInteger2)))
-------- Jumps --------
Set TempInteger3 = (TempInteger2 + 1)
6. Enjoy and give credits ;pTriggers
AT setup
Events
Map initialization
Conditions
Actions
Hashtable - Create a hashtable
Set ATHash = (Last created hashtable)
Custom script: call DestroyTrigger(GetTriggeringTrigger())
AT Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Ax Toss
Actions
Set TempUnit1 = (Triggering unit)
Set TempInteger1 = (Level of (Ability being cast) for TempUnit1)
Set TempPoint1 = (Position of TempUnit1)
Set TempPoint2 = (Target point of ability being cast)
Set TempPlayer = (Triggering player)
Set TempReal1 = (Angle from TempPoint1 to TempPoint2)
Unit - Create 1 AT Missile for TempPlayer at TempPoint1 facing TempReal1 degrees
Set TempUnit2 = (Last created unit)
Custom script: set udg_TempInteger2 = GetHandleId(udg_TempUnit2)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger2,5,udg_TempReal1)
-------- Distance --------
Set TempReal1 = (400.00 + (100.00 x (Real(TempInteger1))))
Custom script: call SaveReal(udg_ATHash,udg_TempInteger2,0,udg_TempReal1)
-------- Speed --------
Set TempReal1 = 30.00
Custom script: call SaveReal(udg_ATHash,udg_TempInteger2,1,udg_TempReal1)
-------- Damage --------
Set TempReal1 = ((Real(TempInteger1)) x 85.00)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger2,2,udg_TempReal1)
Custom script: call SaveUnitHandle(udg_ATHash,udg_TempInteger2,3,udg_TempUnit1)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger2,4,0.0)
Unit Group - Add TempUnit2 to ATGroup
Trigger - Turn on AT Periodic <gen>
Custom script: call RemoveLocation(udg_TempPoint1)
Custom script: call RemoveLocation(udg_TempPoint2)
AT Periodic
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in ATGroup and do (Actions)
Loop - Actions
Set TempUnit1 = (Picked unit)
Custom script: set udg_TempInteger1 = GetHandleId(udg_TempUnit1)
Custom script: set udg_TempReal1 = LoadReal(udg_ATHash,udg_TempInteger1,0)
Custom script: set udg_TempReal2 = LoadReal(udg_ATHash,udg_TempInteger1,1)
Custom script: set udg_TempReal3 = LoadReal(udg_ATHash,udg_TempInteger1,2)
Custom script: set udg_TempReal4 = LoadReal(udg_ATHash,udg_TempInteger1,4)
Custom script: set udg_TempReal5 = LoadReal(udg_ATHash,udg_TempInteger1,5)
Custom script: set udg_TempUnit2 = LoadUnitHandle(udg_ATHash,udg_TempInteger1,3)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TempReal4 Less than TempReal1
Then - Actions
Set TempReal4 = (TempReal4 + TempReal2)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger1,4,udg_TempReal4)
Set TempPoint1 = (Position of TempUnit1)
Set TempPoint2 = (TempPoint1 offset by TempReal2 towards TempReal5 degrees)
Custom script: call SetUnitX(udg_TempUnit1,GetLocationX(udg_TempPoint2))
Custom script: call SetUnitY(udg_TempUnit1,GetLocationY(udg_TempPoint2))
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within 50.00 of TempPoint2 matching ((((Matching unit) is alive) Equal to True) and (((Owner of (Matching unit)) is an enemy of (Owner of TempUnit1)) Equal to True))) and do (Actions)
Loop - Actions
Hashtable - Clear all child hashtables of child TempInteger1 in ATHash
Unit - Kill TempUnit1
Unit Group - Remove TempUnit1 from ATGroup
Set TempUnit3 = (Picked unit)
Unit - Cause TempUnit2 to damage TempUnit3, dealing TempReal3 damage of attack type Pierce and damage type Force
Set TempPoint3 = (Position of TempUnit2)
Set TempPoint4 = (Position of TempUnit3)
Custom script: set udg_TempInteger1 = GetHandleId(udg_TempUnit2)
-------- Jump Height Speed --------
Set TempReal1 = (250.00 x 0.03)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger1,0,udg_TempReal1)
-------- Time --------
Set TempReal2 = 1.00
-------- Angel --------
Set TempReal3 = (Angle from TempPoint3 to TempPoint4)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger1,4,udg_TempReal3)
-------- Distance --------
Set TempReal4 = (Distance between TempPoint3 and TempPoint4)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger1,1,udg_TempReal4)
-------- Jump Speed --------
Set TempReal5 = ((TempReal4 / TempReal2) x 0.03)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger1,2,udg_TempReal5)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger1,3,0)
Custom script: if UnitAddAbility(udg_TempUnit2,'Amrf') then
Custom script: call UnitRemoveAbility(udg_TempUnit2,'Amrf')
Custom script: endif
Unit - Turn collision for TempUnit2 Off
Unit Group - Add TempUnit2 to LeapGroup
Trigger - Turn on Leap Periodic <gen>
Custom script: call RemoveLocation(udg_TempPoint3)
Custom script: call RemoveLocation(udg_TempPoint4)
Custom script: call RemoveLocation(udg_TempPoint1)
Custom script: call RemoveLocation(udg_TempPoint2)
Else - Actions
Unit - Kill TempUnit1
Unit Group - Remove TempUnit1 from ATGroup
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(ATGroup is empty) Equal to True
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Leap Periodic
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in LeapGroup and do (Actions)
Loop - Actions
Set TempUnit1 = (Picked unit)
Custom script: set udg_TempInteger1 = GetHandleId(udg_TempUnit1)
-------- Jump Height --------
Custom script: set udg_TempReal1 = LoadReal(udg_ATHash,udg_TempInteger1,0)
-------- Distance --------
Custom script: set udg_TempReal2 = LoadReal(udg_ATHash,udg_TempInteger1,1)
-------- Velocity --------
Custom script: set udg_TempReal3 = LoadReal(udg_ATHash,udg_TempInteger1,2)
-------- Distance Covered --------
Custom script: set udg_TempReal4 = LoadReal(udg_ATHash,udg_TempInteger1,3)
-------- Angel --------
Custom script: set udg_TempReal5 = LoadReal(udg_ATHash,udg_TempInteger1,4)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TempReal4 Less than TempReal2
Then - Actions
Set TempReal4 = (TempReal4 + TempReal3)
Custom script: call SaveReal(udg_ATHash,udg_TempInteger1,3,udg_TempReal4)
Set TempPoint1 = (Position of TempUnit1)
Set TempPoint2 = (TempPoint1 offset by TempReal3 towards TempReal5 degrees)
Unit - Move TempUnit1 instantly to TempPoint2
Custom script: call RemoveLocation(udg_TempPoint1)
Custom script: call RemoveLocation(udg_TempPoint2)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(TempReal2 x 0.50) Less than or equal to TempReal4
Then - Actions
Set TempReal1 = (TempReal1 x -1.00)
Else - Actions
Animation - Change TempUnit1 flying height to ((Current flying height of TempUnit1) + TempReal1) at 0.00
Else - Actions
Animation - Change TempUnit1 flying height to (Default flying height of TempUnit1) at 0.00
Unit Group - Remove TempUnit1 from LeapGroup
Special Effect - Create a special effect attached to the origin of TempUnit1 using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
Special Effect - Destroy (Last created special effect)
Unit - Turn collision for TempUnit1 On
Hashtable - Clear all child hashtables of child TempInteger1 in ATHash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(LeapGroup is empty) Equal to True
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Requested by thegreatninjaman in my spell workshopTooltip![]()
Attachments
Last edited: