• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Trigger] Frigid Blast

Status
Not open for further replies.
Level 12
Joined
Aug 12, 2008
Messages
349
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.

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]


Link to the spell: Frigid Blast [v1.0b] (Needs fix condition)
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Wait, it causes what error ?

I downloaded your spell at the Spell Resource Section and tested it to cast out of boundary

The dummy is killed when next point is not playable path (meaning out of boundary region), which is a good thing.

So, what's the error then ?

Everything seems to be fine ?
 
Level 12
Joined
Aug 12, 2008
Messages
349
Document when the fatal errors occur and under what conditions so we can find a solution :O
I myself not very sure about it. :/ It seems to have certain kind of range when it crashes. Here's a picture of a sample mini-map to show when it crashed. In the picture, the coloured areas are when it crashes when the dummy moved out of bound. It still works when the dummy moves out of bound if it's not in those 'area'.
154935-albums5387-picture55508.jpg


In the above picture mentioned, the game only crashes at certain point when the unit moved out of boundary especially from one corner to the opposite corner.
The above is a reply to Magtheridon96. In the spell, you can see that the review stated that "The spell causes fatal errors".
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
It is because the dummy is moved out of the map.

The test map has no boundary area. Boundary area is condsidered as not part of playable map area, but still part of the map.

You can either use a point that is slightly ahead of the dummy to do the out of map check or just give the map some boundary area.
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Maker, sometimes when you cast towards outside boundary (without re-clicking the spell hotkey) the dummy is killed when you enter unplayable path area, but certain times, it crashes

This occur almost "certain time" condition lol
 
Status
Not open for further replies.
Top