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!
My first time upload spells
I made it just for fun ^_^ hope you like it
some easy spells and pet system
Inferno
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Inferno (Sorceress)
Actions
Set Inferno_Integers[3] = (Inferno_Integers[3] + 1)
Set PlayerNumber_Integers[0] = (Player number of (Owner of (Casting unit)))
Set Inferno_UnitNumber_Integers[PlayerNumber_Integers[0]] = 0
Set Sorceress[PlayerNumber_Integers[0]] = (Casting unit)
Set Inferno_CasterPoints[PlayerNumber_Integers[0]] = (Position of Sorceress[PlayerNumber_Integers[0]])
Set Inferno_TargetPoints[PlayerNumber_Integers[0]] = (Target point of ability being cast)
Set Inferno_AngleReals[PlayerNumber_Integers[0]] = (Angle from Inferno_CasterPoints[PlayerNumber_Integers[0]] to Inferno_TargetPoints[PlayerNumber_Integers[0]])
Set Inferno_CasterPoints[PlayerNumber_Integers[0]] = (Inferno_CasterPoints[PlayerNumber_Integers[0]] offset by 140.00 towards Inferno_AngleReals[PlayerNumber_Integers[0]] degrees)
Set Inferno_Booleans[PlayerNumber_Integers[0]] = True
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Inferno_Integers[3] Less than 1
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Inferno Move Loop
Events
Time - Every 0.04 seconds of game time
Conditions
Actions
For each (Integer Inferno_Integers[2]) from 1 to Inferno_UnitNumber_Integers[0], do (Actions)
Loop - Actions
Unit - Move Inferno_Units[Inferno_Integers[2]] instantly to ((Position of Inferno_Units[Inferno_Integers[2]]) offset by 20.00 towards Inferno_UnitAngle_Reals[Inferno_Integers[2]] degrees)
Unit Group - Pick every unit in (Units within 115.00 of (Position of Inferno_Units[Inferno_Integers[2]]) matching ((((Matching unit) belongs to an enemy of (Owner of Inferno_Units[Inferno_Integers[2]])) Equal to True) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) is and do (Actions)
Loop - Actions
Unit - Cause Sorceress[(Player number of (Owner of Inferno_Units[Inferno_Integers[2]]))] to damage (Picked unit), dealing 30.00 damage of attack type Spells and damage type Normal
Unit Group - Add (Picked unit) to Inferno_SafeGroups[Inferno_Integers[2]]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in (Units of type Inferno)) Equal to 0
Then - Actions
For each (Integer Inferno_Integers[5]) from 1 to Inferno_UnitNumber_Integers[0], do (Actions)
Loop - Actions
Unit Group - Remove all units from Inferno_SafeGroups[Inferno_Integers[5]]
Set Inferno_UnitNumber_Integers[0] = 0
Trigger - Turn off (This trigger)
Else - Actions
Inferno Stop N Finish
Events
Unit - A unit Stops casting an ability
Unit - A unit Finishes casting an ability
Conditions
(Ability being cast) Equal to Inferno (Sorceress)
Actions
Set PlayerNumber_Integers[0] = (Player number of (Owner of (Casting unit)))
Set Inferno_Booleans[PlayerNumber_Integers[0]] = False
Inferno Return Animation
Events
Unit - A unit Dies
Conditions
Inferno Equal to (Unit-type of (Dying unit))
Actions
Animation - Change (Dying unit)'s animation speed to 300.00% of its original speed
Glacial Spike
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Glacial Spike
Actions
Set PlayerNumber_Integers[0] = (Player number of (Owner of (Casting unit)))
Unit Group - Remove all units from GlacialSpike_SafeGroups[PlayerNumber_Integers[0]]
Set GlacialSpike_NumberIntegers[PlayerNumber_Integers[0]] = 0
Set GlacialSpike_DistanceReals[PlayerNumber_Integers[0]] = 0.00
Set GlacialSpike_CastPoints[PlayerNumber_Integers[0]] = (Position of Sorceress[PlayerNumber_Integers[0]])
Set GlacialSpike_TargetPoints[PlayerNumber_Integers[0]] = (Target point of ability being cast)
Set GlacialSpike_AngleReals[PlayerNumber_Integers[0]] = (Angle from GlacialSpike_CastPoints[PlayerNumber_Integers[0]] to GlacialSpike_TargetPoints[PlayerNumber_Integers[0]])
Set GlacialSpike_CastPoints[PlayerNumber_Integers[0]] = (GlacialSpike_CastPoints[PlayerNumber_Integers[0]] offset by 75.00 towards GlacialSpike_AngleReals[PlayerNumber_Integers[0]] degrees)
Set GlacialSpike_Booleans[PlayerNumber_Integers[0]] = True
Trigger - Turn on Glacial Spike Loop <gen>
Glacial Spike Loop
Events
Time - Every 0.05 seconds of game time
Conditions
Actions
Set GlacialSpike_Integers[0] = 6
For each (Integer GlacialSpike_Integers[1]) from 1 to 6, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
GlacialSpike_Booleans[GlacialSpike_Integers[1]] Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
GlacialSpike_NumberIntegers[GlacialSpike_Integers[1]] Less than 20
Then - Actions
Set GlacialSpike_Integers[2] = (GlacialSpike_Integers[2] + 1)
Set GlacialSpike_NumberIntegers[GlacialSpike_Integers[1]] = (GlacialSpike_NumberIntegers[GlacialSpike_Integers[1]] + 1)
Set GlacialSpike_DistanceReals[GlacialSpike_Integers[1]] = (GlacialSpike_DistanceReals[GlacialSpike_Integers[1]] + 40.00)
Set GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] = (GlacialSpike_CastPoints[GlacialSpike_Integers[1]] offset by GlacialSpike_DistanceReals[GlacialSpike_Integers[1]] towards GlacialSpike_AngleReals[GlacialSpike_Integers[1]] degrees)
Set GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] = (GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] offset by (Random real number between 0.00 and 50.00) towards (Random angle) degrees)
Set GlacialSpike_MaxSizeReals[GlacialSpike_Integers[2]] = (40.00 + (((Real(GlacialSpike_NumberIntegers[GlacialSpike_Integers[1]])) x 10.00) / 5.00))
Set GlacialSpike_SizeReals[GlacialSpike_Integers[2]] = 5.00
Unit - Create 1 Glacial Spike for (Player(GlacialSpike_Integers[1])) at GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] facing GlacialSpike_AngleReals[GlacialSpike_Integers[1]] degrees
Set GlacialSpike_Units[GlacialSpike_Integers[2]] = (Last created unit)
Unit - Add a 6.00 second Generic expiration timer to GlacialSpike_Units[GlacialSpike_Integers[2]]
Animation - Change GlacialSpike_Units[GlacialSpike_Integers[2]]'s size to (GlacialSpike_SizeReals[GlacialSpike_Integers[2]]%, GlacialSpike_SizeReals[GlacialSpike_Integers[2]]%, GlacialSpike_SizeReals[GlacialSpike_Integers[2]]%) of its original size
Unit - Add Locust to GlacialSpike_Units[GlacialSpike_Integers[2]]
Unit - Remove Locust from GlacialSpike_Units[GlacialSpike_Integers[2]]
Unit - Turn collision for GlacialSpike_Units[GlacialSpike_Integers[2]] Off
Unit - Move GlacialSpike_Units[GlacialSpike_Integers[2]] instantly to GlacialSpike_UnitPoints[GlacialSpike_Integers[2]]
Unit - Turn collision for GlacialSpike_Units[GlacialSpike_Integers[2]] On
Special Effect - Create a special effect at GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] using Abilities\Weapons\FrostWyrmMissile\FrostWyrmMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit Group - Pick every unit in (Units within 150.00 of (Position of GlacialSpike_Units[GlacialSpike_Integers[2]]) matching ((((Matching unit) belongs to an enemy of (Owner of GlacialSpike_Units[GlacialSpike_Integers[2]])) Equal to True) and ((((Matching unit) is alive) Equal to True) and ( and do (Actions)
Loop - Actions
Unit - Cause Sorceress[(Player number of (Owner of GlacialSpike_Units[GlacialSpike_Integers[2]]))] to damage (Picked unit), dealing 150.00 damage of attack type Spells and damage type Normal
Unit Group - Add (Picked unit) to GlacialSpike_SafeGroups[GlacialSpike_Integers[1]]
Unit - Create 1 Dummy for (Player(GlacialSpike_Integers[1])) at GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] facing GlacialSpike_AngleReals[GlacialSpike_Integers[1]] degrees
Set GlacialSpike_DummyUnit = (Last created unit)
Unit - Add a 1.00 second Generic expiration timer to GlacialSpike_DummyUnit
Unit - Order GlacialSpike_DummyUnit to Undead Lich - Frost Nova (Picked unit)
Set GlacialSpike_SizeBooleans[GlacialSpike_Integers[2]] = True
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
GlacialSpike_Booleans[GlacialSpike_Integers[1]] Equal to True
Then - Actions
Set GlacialSpike_Booleans[GlacialSpike_Integers[1]] = False
Set GlacialSpike_Integers[2] = (GlacialSpike_Integers[2] + 1)
Set GlacialSpike_DistanceReals[GlacialSpike_Integers[1]] = (GlacialSpike_DistanceReals[GlacialSpike_Integers[1]] + 100.00)
Set GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] = (GlacialSpike_CastPoints[GlacialSpike_Integers[1]] offset by GlacialSpike_DistanceReals[GlacialSpike_Integers[1]] towards GlacialSpike_AngleReals[GlacialSpike_Integers[1]] degrees)
Set GlacialSpike_MaxSizeReals[GlacialSpike_Integers[2]] = 150.00
Set GlacialSpike_SizeReals[GlacialSpike_Integers[2]] = 15.00
Unit - Create 1 Glacial Spike for (Player(GlacialSpike_Integers[1])) at GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] facing GlacialSpike_AngleReals[GlacialSpike_Integers[1]] degrees
Set GlacialSpike_Units[GlacialSpike_Integers[2]] = (Last created unit)
Unit - Add a 6.00 second Generic expiration timer to GlacialSpike_Units[GlacialSpike_Integers[2]]
Animation - Change GlacialSpike_Units[GlacialSpike_Integers[2]]'s size to (GlacialSpike_SizeReals[GlacialSpike_Integers[2]]%, GlacialSpike_SizeReals[GlacialSpike_Integers[2]]%, GlacialSpike_SizeReals[GlacialSpike_Integers[2]]%) of its original size
Unit - Add Locust to GlacialSpike_Units[GlacialSpike_Integers[2]]
Unit - Remove Locust from GlacialSpike_Units[GlacialSpike_Integers[2]]
Unit - Turn collision for GlacialSpike_Units[GlacialSpike_Integers[2]] Off
Unit - Move GlacialSpike_Units[GlacialSpike_Integers[2]] instantly to GlacialSpike_UnitPoints[GlacialSpike_Integers[2]]
Unit - Turn collision for GlacialSpike_Units[GlacialSpike_Integers[2]] On
Special Effect - Create a special effect at GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] using Abilities\Weapons\FrostWyrmMissile\FrostWyrmMissile.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
Special Effect - Destroy (Last created special effect)
Unit Group - Pick every unit in (Units within 200.00 of (Position of GlacialSpike_Units[GlacialSpike_Integers[2]]) matching ((((Matching unit) belongs to an enemy of (Owner of GlacialSpike_Units[GlacialSpike_Integers[2]])) Equal to True) and (((Matching unit) is alive) Equal to True))) and do (Actions)
Loop - Actions
Unit - Cause Sorceress[(Player number of (Owner of GlacialSpike_Units[GlacialSpike_Integers[2]]))] to damage (Picked unit), dealing 150.00 damage of attack type Spells and damage type Normal
Unit Group - Add (Picked unit) to GlacialSpike_SafeGroups[GlacialSpike_Integers[1]]
Unit - Create 1 Dummy for (Player(GlacialSpike_Integers[1])) at GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] facing GlacialSpike_AngleReals[GlacialSpike_Integers[1]] degrees
Set GlacialSpike_DummyUnit = (Last created unit)
Unit - Add a 1.00 second Generic expiration timer to GlacialSpike_DummyUnit
Unit - Order GlacialSpike_DummyUnit to Undead Lich - Frost Nova (Picked unit)
Unit - Create 1 Dummy for (Player(GlacialSpike_Integers[1])) at GlacialSpike_UnitPoints[GlacialSpike_Integers[2]] facing GlacialSpike_AngleReals[GlacialSpike_Integers[1]] degrees
Set GlacialSpike_DummyUnit = (Last created unit)
Unit - Add a 1.00 second Generic expiration timer to GlacialSpike_DummyUnit
Unit - Order GlacialSpike_DummyUnit to Night Elf Keeper Of The Grove - Entangling Roots (Picked unit)
Set GlacialSpike_SizeBooleans[GlacialSpike_Integers[2]] = True
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
GlacialSpike_Integers[0] Less than 1
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Glacial Spike Grow Loop
Events
Time - Every 0.04 seconds of game time
Conditions
Actions
Set GlacialSpike_Integers[5] = GlacialSpike_Integers[2]
For each (Integer GlacialSpike_Integers[4]) from 1 to GlacialSpike_Integers[2], do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
GlacialSpike_SizeBooleans[GlacialSpike_Integers[4]] Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
GlacialSpike_SizeReals[GlacialSpike_Integers[4]] Less than GlacialSpike_MaxSizeReals[GlacialSpike_Integers[4]]
Then - Actions
Set GlacialSpike_SizeReals[GlacialSpike_Integers[4]] = (GlacialSpike_SizeReals[GlacialSpike_Integers[4]] x 1.15)
Animation - Change GlacialSpike_Units[GlacialSpike_Integers[4]]'s size to (GlacialSpike_SizeReals[GlacialSpike_Integers[4]]%, GlacialSpike_SizeReals[GlacialSpike_Integers[4]]%, GlacialSpike_SizeReals[GlacialSpike_Integers[4]]%) of its original size
Else - Actions
Set GlacialSpike_SizeBooleans[GlacialSpike_Integers[4]] = False
Else - Actions
Set GlacialSpike_Integers[5] = (GlacialSpike_Integers[5] - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
GlacialSpike_Integers[5] Less than 1
Then - Actions
Set GlacialSpike_Integers[2] = 0
Trigger - Turn off (This trigger)
Else - Actions
Phoenix Laser
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Phoenix Laser
Actions
Set PhoenixLaser_Integers[0] = (PhoenixLaser_Integers[0] + 1)
Set PhoenixLaser_DistanceReals[PhoenixLaser_Integers[0]] = 10.00
Set PhoenixLaser_Units[PhoenixLaser_Integers[0]] = (Casting unit)
Set PhoenixLaser_CastPoints[PhoenixLaser_Integers[0]] = (Position of PhoenixLaser_Units[PhoenixLaser_Integers[0]])
Set PhoenixLaser_TargetPoints[PhoenixLaser_Integers[0]] = (Target point of ability being cast)
Set PhoenixLaser_AngleReals[PhoenixLaser_Integers[0]] = (Angle from PhoenixLaser_CastPoints[PhoenixLaser_Integers[0]] to PhoenixLaser_TargetPoints[PhoenixLaser_Integers[0]])
Set PhoenixLaser_AngleReals[PhoenixLaser_Integers[0]] = (PhoenixLaser_AngleReals[PhoenixLaser_Integers[0]] + (Random real number between -45.00 and 45.00))
Set PhoenixLaser_TargetPoints[PhoenixLaser_Integers[0]] = (PhoenixLaser_TargetPoints[PhoenixLaser_Integers[0]] offset by -250.00 towards PhoenixLaser_AngleReals[PhoenixLaser_Integers[0]] degrees)
Set PhoenixLaser_Booleans[PhoenixLaser_Integers[0]] = True
Trigger - Turn on Phoenix Laser Loop <gen>
Phoenix Laser Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
Set PhoenixLaser_Integers[2] = PhoenixLaser_Integers[0]
For each (Integer PhoenixLaser_Integers[1]) from 1 to PhoenixLaser_Integers[0], do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
PhoenixLaser_Booleans[PhoenixLaser_Integers[1]] Equal to False
Then - Actions
Set PhoenixLaser_Integers[2] = (PhoenixLaser_Integers[2] - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
PhoenixLaser_Integers[2] Less than 1
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
And - All (Conditions) are true
Conditions
PhoenixLaser_Booleans[PhoenixLaser_Integers[1]] Equal to True
PhoenixLaser_DistanceReals[PhoenixLaser_Integers[1]] Less than or equal to 650.00
Then - Actions
Set PhoenixLaser_DistanceReals[PhoenixLaser_Integers[1]] = (PhoenixLaser_DistanceReals[PhoenixLaser_Integers[1]] + (9.00 + (PhoenixLaser_DistanceReals[PhoenixLaser_Integers[1]] / 20.00)))
Set PhoenixLaser_LaserPoints[PhoenixLaser_Integers[1]] = (PhoenixLaser_TargetPoints[PhoenixLaser_Integers[1]] offset by PhoenixLaser_DistanceReals[PhoenixLaser_Integers[1]] towards PhoenixLaser_AngleReals[PhoenixLaser_Integers[1]] degrees)
Unit - Create 1 Phoenix Laser for (Owner of PhoenixLaser_Units[PhoenixLaser_Integers[1]]) at PhoenixLaser_CastPoints[PhoenixLaser_Integers[1]] facing Default building facing degrees
Set PhoenixLaser_Dummy = (Last created unit)
Unit - Add a 0.25 second Generic expiration timer to PhoenixLaser_Dummy
Unit - Order PhoenixLaser_Dummy to Attack Ground PhoenixLaser_LaserPoints[PhoenixLaser_Integers[1]]
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
12:58, 18th Jul 2014
BPower:
Your code has location leaks.
Furthermore I recommend you check out the tutorial link I posted in comment 13
Public spell resources must have a configuration...
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
12:58, 18th Jul 2014
BPower:
Your code has location leaks.
Furthermore I recommend you check out the tutorial link I posted in comment 13
Public spell resources must have a configuration trigger instead of beeing completly hard-coded.
- Add Config in every spells (Set All Ability, AoE, Damage, etc)
- In Inferno New Loop, this Set Inferno_Integers[3] = 6 inf front just remove it. In every 0.10, the udg_Inferno_Integers[3] set in 6, so why you put this Set Inferno_Integers[3] = (Inferno_Integers[3] - 1)
- In Inferno Move Loop, you have Unit Group and Point leaks. So in UnitGroup, you forgot add add set bj_wantDestroy=true or call DestroyGroup( udg_VarUG)
- In Inferno Stop N Finish, change this Set PlayerNumber_Integers[0] = (Player number of (Owner of (Casting unit))) to Set PlayerNumber_Integers[0] = (Player number of ( Triggering Player)
- In Inferno Return Animation, Inferno Equal to (Unit-type of (Dying unit)) and Animation - Change (Dying unit)'s animation speed to 300.00% of its original speed, change the Dying Unit into Triggering Unit
- In Glacial Spike, remove this Unit Group - Remove all units from GlacialSpike_SafeGroups[PlayerNumber_Integers[0]], in your loop Set GlacialSpike_Integers[0] = 6. You have Unit Group, SFX (Using Point) Point leaks
i add call DestroyGroup( udg_VarUG) at the end of loop at first cast it work properly, but the second and then that UG isn't work anymore it does multiple damage on a unit
I think you were a bit harsh with the period.
It has been proven that 0.03 is the best period and GUI and still you can use this one, in term in perf and eye-candy.
But we prefer 0.0312500 because it is 1/32, you know you have exactly 32 frame per second.
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.