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!
12th Dec 2015
IcemanBo: For long time as NeedsFix. Rejected.
Bribe:
>Leaks plenty
>Use Triggering unit not Casting unit
>Use 0.03 second periodic event, not 0.01, that will produce some bad lag
>Not MUI (using waits and not using indexing)...
12th Dec 2015
IcemanBo: For long time as NeedsFix. Rejected.
Bribe:
>Leaks plenty
>Use Triggering unit not Casting unit
>Use 0.03 second periodic event, not 0.01, that will produce some bad lag
>Not MUI (using waits and not using indexing)
>No configurables
Overall, needs lots and lots and lots of work. Please ask for help in the Triggers & Scripts section how to make these spells MUI, efficient and leakless
I assume that's you... if not, I hope you have proof of permission to upload these spells from him/her.
Thunder Cross Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Thunder Cross
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between (Position of (Casting unit)) and (Target point of ability being cast)) Less than 250.00
Then - Actions
Unit - Order (Casting unit) to Stop
Game - Display to (Player group((Owner of (Casting unit)))) for 2.00 seconds the text: ...
Else - Actions
Set Caster = (Casting unit)
Unit - Create 1 (thunder cross) for (Owner of (Casting unit)) at ((Position of (Casting unit)) offset by 100.00 towards (Facing of (Casting unit)) degrees) facing (Facing of (Casting unit)) degrees
Set Dummy[0] = (Last created unit)
Set Point[0] = (Target point of ability being cast)
Set Distance_1 = (Distance between (Position of (Casting unit)) and Point[0])
Set Boolean[0] = True
Thunder Cross Loop
Events
Time - Every 0.01 seconds of game time
Conditions
Boolean[0] Equal to True
Actions
Unit - Move Dummy[0] instantly to ((Position of Dummy[0]) offset by 5.00 towards (Facing of Dummy[0]) degrees)
Set Distance_1 = (Distance_1 - 5.00)
Thunder Cross End
Events
Game - Distance_1 becomes Less than or equal to 0.00
Conditions
Boolean[0] Equal to True
Actions
Unit - Kill Dummy[0]
-------- here you can change the size of the AoE --------
Lightning - Create a Chain Lightning - Primary lightning effect from source (Point[0] offset by 275.00 towards 45.00 degrees) to target (Point[0] offset by 275.00 towards 225.00 degrees)
Set Lighting[0] = (Last created lightning effect)
Lightning - Create a Chain Lightning - Primary lightning effect from source (Point[0] offset by 275.00 towards 135.00 degrees) to target (Point[0] offset by 275.00 towards 315.00 degrees)
Set Lighting[1] = (Last created lightning effect)
Set Boolean[0] = False
-------- here you can change the damage in the AoE --------
Unit Group - Pick every unit in (Units within 550.00 of Point[0] matching (((Matching unit) belongs to an enemy of (Owner of Caster)) Equal to True)) and do (Actions)
Loop - Actions
Unit - Cause Caster to damage (Picked unit), dealing (225.00 x (Real((Level of Thunder Cross for Caster)))) damage of attack type Spells and damage type Normal
Wait 0.50 seconds
-------- the cross disappear --------
Lightning - Destroy Lighting[0]
Lightning - Destroy Lighting[1]
Wisp of Chaos Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Wisp of Chaos
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between (Position of (Casting unit)) and (Target point of ability being cast)) Less than 350.00
Then - Actions
Unit - Order (Casting unit) to Stop
Game - Display to (Player group((Owner of (Casting unit)))) for 2.00 seconds the text: ...
Else - Actions
Set Caster = (Casting unit)
Unit - Create 1 (wisp of chaos) for (Owner of (Casting unit)) at ((Position of (Casting unit)) offset by 100.00 towards (Facing of (Casting unit)) degrees) facing (Facing of (Casting unit)) degrees
Set Dummy[1] = (Last created unit)
Set Point[1] = (Target point of ability being cast)
Set Distance_2 = (Distance between (Position of (Casting unit)) and Point[1])
Set Boolean[1] = True
Set Boolean[2] = True
Wisp of Chaos Loop
Events
Time - Every 0.01 seconds of game time
Conditions
Boolean[1] Equal to True
Actions
Unit - Move Dummy[1] instantly to ((Position of Dummy[1]) offset by 5.00 towards (Facing of Dummy[1]) degrees)
Set Point[3] = (Position of Dummy[1])
Set Distance_2 = (Distance_2 - 5.00)
Wisp of Chaos Circle
Events
Game - Distance_2 becomes Less than or equal to 500.00
Conditions
Boolean[2] Equal to True
Actions
-------- you can change the circle size --------
Lightning - Create a Chain Lightning - Primary lightning effect from source (Position of Dummy[1]) to target ((Position of Dummy[1]) offset by 350.00 towards ((Facing of Dummy[1]) + 90.00) degrees)
Set Lighting[2] = (Last created lightning effect)
Set Rotation[0] = ((Facing of Dummy[1]) + 90.00)
Lightning - Create a Finger of Death lightning effect from source (Position of Dummy[1]) to target ((Position of Dummy[1]) offset by 350.00 towards ((Facing of Dummy[1]) - 90.00) degrees)
Set Lighting[3] = (Last created lightning effect)
Set Rotation[1] = ((Facing of Dummy[1]) - 90.00)
Set Boolean[2] = False
Set Boolean[3] = True
Wisp of Chaos Circle Rotation
Events
Time - Every 0.01 seconds of game time
Conditions
Boolean[3] Equal to True
Actions
-------- you can change the rotation speed --------
Set Rotation[0] = (Rotation[0] + 2.00)
Lightning - Move Lighting[2] to source Point[3] and target (Point[3] offset by 350.00 towards Rotation[0] degrees)
Set Rotation[1] = (Rotation[1] + 2.00)
Lightning - Move Lighting[3] to source Point[3] and target (Point[3] offset by 350.00 towards Rotation[1] degrees)
Wisp of Chaos End
Events
Game - Distance_2 becomes Less than or equal to 0.00
Conditions
Boolean[1] Equal to True
Actions
-------- here you can change the damage in the AoE --------
Unit Group - Pick every unit in (Units within 700.00 of Point[3] matching (((Matching unit) belongs to an enemy of (Owner of Caster)) Equal to True)) and do (Actions)
Loop - Actions
Unit - Cause Caster to damage (Picked unit), dealing (250.00 x (Real((Level of Wisp of Chaos for Caster)))) damage of attack type Spells and damage type Normal
-------- the circle disappear --------
Unit - Kill Dummy[1]
Wait 0.50 seconds
Lightning - Destroy Lighting[2]
Lightning - Destroy Lighting[3]
Set Boolean[3] = False
Set Boolean[1] = False
Burning Hearth Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Burning Hearth
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between (Position of (Casting unit)) and (Target point of ability being cast)) Less than 350.00
Then - Actions
Unit - Order (Casting unit) to Stop
Game - Display to (Player group((Owner of (Casting unit)))) for 2.00 seconds the text: ...
Else - Actions
Set Caster = (Casting unit)
Unit - Create 1 (burning hearth) for (Owner of (Casting unit)) at ((Position of (Casting unit)) offset by 100.00 towards (Facing of (Casting unit)) degrees) facing (Facing of (Casting unit)) degrees
Set Dummy[2] = (Last created unit)
Set Point[4] = (Target point of ability being cast)
Set Distance_3 = (Distance between (Position of (Casting unit)) and Point[4])
Set Boolean[4] = True
Burning Hearth Loop
Events
Time - Every 0.01 seconds of game time
Conditions
Boolean[4] Equal to True
Actions
Unit - Move Dummy[2] instantly to ((Position of Dummy[2]) offset by 5.00 towards (Facing of Dummy[2]) degrees)
Set Distance_3 = (Distance_3 - 5.00)
Burning Hearth End
Events
Game - Distance_3 becomes Less than or equal to 0.00
Conditions
Boolean[4] Equal to True
Actions
Unit - Create 1 (burning hearth) for (Owner of Dummy[2]) at (Position of Dummy[2]) facing Default building facing degrees
Set Dummy[3] = (Last created unit)
Set Boolean[4] = False
Unit - Kill Dummy[2]
Unit - Order Dummy[3] to Human Blood Mage - Flame Strike (Position of Dummy[3])
Unit Group - Pick every unit in (Units within 200.00 of (Target point of ability being cast) matching (((Matching unit) has buff Burning Hearth ) Equal to True)) and do (Unit - Cause Caster to damage (Picked unit), dealing (300.00 x (Real((Level of Burning Hearth for Caster)))) damage of attack type Spells and damage type Normal)
Burning Hearth Fire
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in (Units in (Playable map area) matching (((Matching unit) has buff Burning Hearth ) Equal to True)) and do (Unit - Cause Caster to damage (Picked unit), dealing (30.00 x (Real((Level of Burning Hearth for Caster)))) damage of attack type Spells and damage type Normal)
Tornado of Doom Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Tornado of Doom
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between (Position of (Casting unit)) and (Target point of ability being cast)) Less than 250.00
Then - Actions
Unit - Order (Casting unit) to Stop
Game - Display to (Player group((Owner of (Casting unit)))) for 2.00 seconds the text: ...
Else - Actions
Set Caster = (Casting unit)
Unit - Create 1 (tornado of doom) for (Owner of (Casting unit)) at ((Position of (Casting unit)) offset by 100.00 towards (Facing of (Casting unit)) degrees) facing (Facing of (Casting unit)) degrees
Set Dummy[5] = (Last created unit)
Set Point[5] = (Target point of ability being cast)
Set Distance_4 = (Distance between (Position of (Casting unit)) and Point[5])
Set Boolean[5] = True
Tornado of Doom Loop
Events
Time - Every 0.01 seconds of game time
Conditions
Boolean[5] Equal to True
Actions
Unit - Move Dummy[5] instantly to ((Position of Dummy[5]) offset by 5.00 towards (Facing of Dummy[5]) degrees)
Set Distance_4 = (Distance_4 - 5.00)
Tornado of Doom End
Events
Game - Distance_4 becomes Less than or equal to 0.00
Conditions
Boolean[5] Equal to True
Actions
Unit - Kill Dummy[5]
For each (Integer A) from 1 to 6, do (Actions)
Loop - Actions
Unit - Create 1 (tornado of doom) for (Owner of Caster) at Point[5] facing Default building facing degrees
Unit - Order (Last created unit) to Undead Crypt Lord - Impale ((Position of (Last created unit)) offset by 350.00 towards ((Real((Integer A))) x 60.00) degrees)
Set Boolean[5] = False
Tornado of Doom Stun
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in (Units in (Playable map area) matching (((Matching unit) has buff Tornado ) Equal to True)) and do (Unit - Cause Caster to damage (Picked unit), dealing (30.00 x (Real((Level of Tornado of Doom for Caster)))) damage of attack type Spells and damage type Normal)
------------------------------------------------------------------------------------------
"Spells must be free of bugs, leaks, unreasonable lag, and must be fully multiinstanceable."
Try casting the spells with two different units... it doesn't work great. Spells must be fully MUI, means that more than one unit may cast the spell at the same time and have it work.
You use arrayed variables [#] in places that you don't need 'em. They take up more memory and are usually slower. Make another variable and de-array the ones that are using the arrays.
Set Lighting[0] = (Last created lightning effect)
Set Lighting[1] = (Last created lightning effect)
//Change that to:
Set LightningA = (Last created lightning effect)
Set LightningB = (Last created lightning effect)
A loop of .01 is waaaay to fast. Use .03 for the best results. Also, you should turn on/off the loops when they're not in use, as it helps reduce lagg.
Position of (Caster) or any (Position of (Unit)) leaks, set it to a variable and destroy it when done.
Waits usually prevent spells from being MUI, unless you're dealing with locals... still, they're not great. I suggest using a loop and increasing a integer to avoid this...
You use 2+ loops per spell. You should merge the loops, and its more efficient and can help reduce the map file size... slightly.
Unit Group - Pick every unit in (Units within 700.00 of Point[3] matching (((Matching unit) belongs to an enemy of (Owner of Caster)) Equal to True)) and do (Actions)
Loop - Actions
//This leaks. Use this to prevent it:
//
//
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within 700.00 of Point[3] matching (((Matching unit) belongs to an enemy of (Owner of Caster)) Equal to True)) and do (Actions)
Loop - Actions
============================================
Unit - Order Dummy[3] to Human Blood Mage - Flame Strike (Position of Dummy[3])
The caster does not inflict damage with this... the dummy unit does. This can conflict with systems...
============================================
For each (Integer A) from 1 to 6, do (Actions)
Loop - Actions
Unit - Create 1 (tornado of doom) for (Owner of Caster) at Point[5] facing Default building facing degrees
Unit - Order (Last created unit) to Undead Crypt Lord - Impale ((Position of (Last created unit)) offset by 350.00 towards ((Real((Integer A))) x 60.00) degrees)
Don't use (Integer A), use a variable... its more efficient.
===============================
Instead of creating lightning effects in GUI, you may create it in custom script and apply height (Z), which makes lightning look alot better.
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.