- Joined
- Aug 12, 2008
- Messages
- 350
This is a spell that I uploaded it to the "Spells section". However, this spell crashes due to some weird problem. I've tried quite a long time to figure out the problem but I can't. The spell crashes when the dummy moved out of the boundary. Although I did check whether the point is in playable map area but still it crashes. I've asked several seniors in this workshop but there are no replies and so I decided to ask it here.
Link to the spell: Frigid Blast [v1.0b] (Needs fix condition)
Spell Description
Active Ability
Spell Type: Point Target (turns to Instant after cast)
Cast Range: X Range
Jaina sends a small piece of crystal shard towards. She can activate it to cause a freezing explosion upon the area around that crystal, dealing damage to all the enemies around the area of the crystal and freezes them for 2 seconds. Damage and area of effect slightly increases by the distance travelled of that crystal.
Level 1: 50 base damage. Max 150 damage
Level 2: 100 base damage. Max 300 damage
Level 3: 150 base damage. Max 450 damage
Cooldown: 5 seconds
Spell inspired from DotA's Ancient Apparition's ultimate spell
The idea is unoriginal but at least it does not follow exactly how the spell works
I uploaded it because as far as I can see no one upload this spell yet
[trigger=Frigid Blast]Frigid Blast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Frigid Blast (Target)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_indexSize Equal to 0
Then - Actions
Trigger - Turn on Frigid Blast loop <gen>
Else - Actions
Set FB_indexSize = (FB_indexSize + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_indexSize Greater than FB_indexMax
Then - Actions
Set FB_index1[FB_indexSize] = FB_indexSize
Set FB_indexMax = FB_indexSize
Else - Actions
Set FB_index2 = FB_index1[FB_indexSize]
-------- ======================================================== --------
Set FB_check[FB_index2] = False
Set FB_caster[FB_index2] = (Triggering unit)
Set tempReal = (Real((Level of Frigid Blast (Target) for FB_caster[FB_index2])))
-------- --------------------------------------------- Configurable --------------------------------------------- --------
Set FB_baseDamage[FB_index2] = (50.00 x tempReal)
Set FB_baseAoE[FB_index2] = 200.00
Set FB_damageIncrement[FB_index2] = tempReal
Set FB_AoEIncrement[FB_index2] = (1.50 x tempReal)
Set FB_maxDamage[FB_index2] = (150.00 x tempReal)
Set FB_speed[FB_index2] = (40.00 - (2.00 x tempReal))
Set FB_cooldown[FB_index2] = 5.00
-------- ----------------------------------------- Configurable End ----------------------------------------- --------
Set tempPoint = (Position of FB_caster[FB_index2])
Set tempPoint2 = (Target point of ability being cast)
Set FB_angle[FB_index2] = (Angle from tempPoint to tempPoint2)
Set tempPoint3 = (tempPoint offset by 120.00 towards FB_angle[FB_index2] degrees)
Unit - Create 1 Frigid Blast_dummy for (Owner of FB_caster[FB_index2]) at tempPoint3 facing Default building facing degrees
Set FB_dummy[FB_index2] = (Last created unit)
Unit Group - Add FB_caster[FB_index2] to FB_casterGroup
Unit - Remove Frigid Blast (Target) from FB_caster[FB_index2]
Unit - Add Frigid Blast (Instant) to FB_caster[FB_index2]
Unit - Set level of Frigid Blast (Instant) for FB_caster[FB_index2] to (Integer(tempReal))
Custom script: call RemoveLocation (udg_tempPoint3)
Custom script: call RemoveLocation (udg_tempPoint2)
Custom script: call RemoveLocation (udg_tempPoint)
[/trigger]
[trigger=Frigid Blast loop]Frigid Blast loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer FB_index3) from 1 to FB_indexSize, do (Actions)
Loop - Actions
Set FB_index2 = FB_index1[FB_index3]
-------- ---------------------------------------------------------------------------------------------------------------- --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(FB_caster[FB_index2] is alive) Equal to True
(FB_caster[FB_index2] is in FB_casterGroup) Equal to True
Then - Actions
Set tempPoint = (Position of FB_dummy[FB_index2])
Set tempPoint2 = (tempPoint offset by FB_speed[FB_index2] towards FB_angle[FB_index2] degrees)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Playable map area) contains tempPoint2) Equal to True
Then - Actions
Unit - Move FB_dummy[FB_index2] instantly to tempPoint2
Set FB_baseAoE[FB_index2] = (FB_baseAoE[FB_index2] + FB_AoEIncrement[FB_index2])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_baseDamage[FB_index2] Less than FB_maxDamage[FB_index2]
Then - Actions
Set FB_baseDamage[FB_index2] = (FB_baseDamage[FB_index2] + FB_damageIncrement[FB_index2])
Else - Actions
Else - Actions
Unit - Order FB_caster[FB_index2] to Night Elf Warden - Fan Of Knives
Custom script: call RemoveLocation (udg_tempPoint2)
Custom script: call RemoveLocation (udg_tempPoint)
Else - Actions
Set tempPoint = (Position of FB_dummy[FB_index2])
Unit - Explode FB_dummy[FB_index2]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(FB_caster[FB_index2] is alive) Equal to True
FB_check[FB_index2] Equal to False
Then - Actions
Set FB_check[FB_index2] = True
For each (Integer tempInteger) from 1 to 12, do (Actions)
Loop - Actions
Set tempPoint2 = (tempPoint offset by FB_baseAoE[FB_index2] towards (30.00 x (Real(tempInteger))) degrees)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Playable map area) contains tempPoint2) Equal to True
Then - Actions
Unit - Create 1 Frigid Blast_check for (Owner of FB_caster[FB_index2]) at tempPoint2 facing Default building facing degrees
Else - Actions
Custom script: call RemoveLocation (udg_tempPoint2)
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within FB_baseAoE[FB_index2] of tempPoint matching (((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) is Magic Immune) Equal to False))) and ((((Matching unit) is alive) Equal and do (Actions)
Loop - Actions
Set tempPoint3 = (Position of (Picked unit))
Unit - Cause FB_caster[FB_index2] to damage (Picked unit), dealing FB_baseDamage[FB_index2] damage of attack type Spells and damage type Normal
Unit - Create 1 dummy_unit for (Owner of FB_caster[FB_index2]) at tempPoint3 facing Default building facing degrees
Unit - Add Frigid Blast (dummy) to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Picked unit)
Custom script: call RemoveLocation (udg_tempPoint3)
Special Effect - Create a special effect at tempPoint using war3mapImported\Shiva'sWrath.mdx
Special Effect - Destroy (Last created special effect)
Else - Actions
Custom script: call RemoveLocation (udg_tempPoint)
-------- ---------------------------------------------------------------------------------------------------------------- --------
Set FB_cooldown[FB_index2] = (FB_cooldown[FB_index2] - 0.03)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_cooldown[FB_index2] Less than or equal to 0.00
Then - Actions
Unit - Remove Frigid Blast (Instant) from FB_caster[FB_index2]
Unit - Add Frigid Blast (Target) to FB_caster[FB_index2]
Set FB_index1[FB_index3] = FB_index1[FB_indexSize]
Set FB_index1[FB_indexSize] = FB_index2
Set FB_indexSize = (FB_indexSize - 1)
Set FB_index3 = (FB_index3 - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_indexSize Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
[/trigger]
[trigger=Frigid Blast explode]Frigid Blast explode
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Frigid Blast (Instant)
Actions
Unit Group - Remove (Triggering unit) from FB_casterGroup
[/trigger]
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Frigid Blast (Target)
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_indexSize Equal to 0
Then - Actions
Trigger - Turn on Frigid Blast loop <gen>
Else - Actions
Set FB_indexSize = (FB_indexSize + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_indexSize Greater than FB_indexMax
Then - Actions
Set FB_index1[FB_indexSize] = FB_indexSize
Set FB_indexMax = FB_indexSize
Else - Actions
Set FB_index2 = FB_index1[FB_indexSize]
-------- ======================================================== --------
Set FB_check[FB_index2] = False
Set FB_caster[FB_index2] = (Triggering unit)
Set tempReal = (Real((Level of Frigid Blast (Target) for FB_caster[FB_index2])))
-------- --------------------------------------------- Configurable --------------------------------------------- --------
Set FB_baseDamage[FB_index2] = (50.00 x tempReal)
Set FB_baseAoE[FB_index2] = 200.00
Set FB_damageIncrement[FB_index2] = tempReal
Set FB_AoEIncrement[FB_index2] = (1.50 x tempReal)
Set FB_maxDamage[FB_index2] = (150.00 x tempReal)
Set FB_speed[FB_index2] = (40.00 - (2.00 x tempReal))
Set FB_cooldown[FB_index2] = 5.00
-------- ----------------------------------------- Configurable End ----------------------------------------- --------
Set tempPoint = (Position of FB_caster[FB_index2])
Set tempPoint2 = (Target point of ability being cast)
Set FB_angle[FB_index2] = (Angle from tempPoint to tempPoint2)
Set tempPoint3 = (tempPoint offset by 120.00 towards FB_angle[FB_index2] degrees)
Unit - Create 1 Frigid Blast_dummy for (Owner of FB_caster[FB_index2]) at tempPoint3 facing Default building facing degrees
Set FB_dummy[FB_index2] = (Last created unit)
Unit Group - Add FB_caster[FB_index2] to FB_casterGroup
Unit - Remove Frigid Blast (Target) from FB_caster[FB_index2]
Unit - Add Frigid Blast (Instant) to FB_caster[FB_index2]
Unit - Set level of Frigid Blast (Instant) for FB_caster[FB_index2] to (Integer(tempReal))
Custom script: call RemoveLocation (udg_tempPoint3)
Custom script: call RemoveLocation (udg_tempPoint2)
Custom script: call RemoveLocation (udg_tempPoint)
[/trigger]
[trigger=Frigid Blast loop]Frigid Blast loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer FB_index3) from 1 to FB_indexSize, do (Actions)
Loop - Actions
Set FB_index2 = FB_index1[FB_index3]
-------- ---------------------------------------------------------------------------------------------------------------- --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(FB_caster[FB_index2] is alive) Equal to True
(FB_caster[FB_index2] is in FB_casterGroup) Equal to True
Then - Actions
Set tempPoint = (Position of FB_dummy[FB_index2])
Set tempPoint2 = (tempPoint offset by FB_speed[FB_index2] towards FB_angle[FB_index2] degrees)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Playable map area) contains tempPoint2) Equal to True
Then - Actions
Unit - Move FB_dummy[FB_index2] instantly to tempPoint2
Set FB_baseAoE[FB_index2] = (FB_baseAoE[FB_index2] + FB_AoEIncrement[FB_index2])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_baseDamage[FB_index2] Less than FB_maxDamage[FB_index2]
Then - Actions
Set FB_baseDamage[FB_index2] = (FB_baseDamage[FB_index2] + FB_damageIncrement[FB_index2])
Else - Actions
Else - Actions
Unit - Order FB_caster[FB_index2] to Night Elf Warden - Fan Of Knives
Custom script: call RemoveLocation (udg_tempPoint2)
Custom script: call RemoveLocation (udg_tempPoint)
Else - Actions
Set tempPoint = (Position of FB_dummy[FB_index2])
Unit - Explode FB_dummy[FB_index2]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(FB_caster[FB_index2] is alive) Equal to True
FB_check[FB_index2] Equal to False
Then - Actions
Set FB_check[FB_index2] = True
For each (Integer tempInteger) from 1 to 12, do (Actions)
Loop - Actions
Set tempPoint2 = (tempPoint offset by FB_baseAoE[FB_index2] towards (30.00 x (Real(tempInteger))) degrees)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Playable map area) contains tempPoint2) Equal to True
Then - Actions
Unit - Create 1 Frigid Blast_check for (Owner of FB_caster[FB_index2]) at tempPoint2 facing Default building facing degrees
Else - Actions
Custom script: call RemoveLocation (udg_tempPoint2)
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within FB_baseAoE[FB_index2] of tempPoint matching (((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) is Magic Immune) Equal to False))) and ((((Matching unit) is alive) Equal and do (Actions)
Loop - Actions
Set tempPoint3 = (Position of (Picked unit))
Unit - Cause FB_caster[FB_index2] to damage (Picked unit), dealing FB_baseDamage[FB_index2] damage of attack type Spells and damage type Normal
Unit - Create 1 dummy_unit for (Owner of FB_caster[FB_index2]) at tempPoint3 facing Default building facing degrees
Unit - Add Frigid Blast (dummy) to (Last created unit)
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Picked unit)
Custom script: call RemoveLocation (udg_tempPoint3)
Special Effect - Create a special effect at tempPoint using war3mapImported\Shiva'sWrath.mdx
Special Effect - Destroy (Last created special effect)
Else - Actions
Custom script: call RemoveLocation (udg_tempPoint)
-------- ---------------------------------------------------------------------------------------------------------------- --------
Set FB_cooldown[FB_index2] = (FB_cooldown[FB_index2] - 0.03)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_cooldown[FB_index2] Less than or equal to 0.00
Then - Actions
Unit - Remove Frigid Blast (Instant) from FB_caster[FB_index2]
Unit - Add Frigid Blast (Target) to FB_caster[FB_index2]
Set FB_index1[FB_index3] = FB_index1[FB_indexSize]
Set FB_index1[FB_indexSize] = FB_index2
Set FB_indexSize = (FB_indexSize - 1)
Set FB_index3 = (FB_index3 - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
FB_indexSize Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
[/trigger]
[trigger=Frigid Blast explode]Frigid Blast explode
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Frigid Blast (Instant)
Actions
Unit Group - Remove (Triggering unit) from FB_casterGroup
[/trigger]
Link to the spell: Frigid Blast [v1.0b] (Needs fix condition)