• 🏆 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!

GUI MUI Pyroball Spell v1.2

  • Like
Reactions: baassee
[Simple] Pyroball
Transforms the caster into a fireball and rolls forward on the ground, burning nearby units on its way and dealing damage on detonation.
[Detailed] Pyroball (Sample 1)
Transforms the caster into a fireball and rolls forward on the ground, burning nearby units on its way and dealing damage on detonation.

Attack Type: Spell
Damage Type: Fire
Friendly Damage: False
Casting Time: 1s
Cooldown Time: 7s
Detonation Time: 2s
Detonation Damage: (180 x Ability Level)
Detonation Damage Range: 320
Burn Damage: (4 x Ability Level)
Burn Damage Range: 190

The fireball will detonate if the timer expires/caster dies/in contact with water or unplayable regions. Burn damage does not affect flying-classified and magic-immune units. Detonation damage does not affect magic-immune units. The caster will become a ground unit until the pyroball form expires.
// Configurable Variables
PB_attacktype = attack type of burn damage and detonation damage.
PB_damagetype = damage type of burn damage and detonation damage.
PB_bdamage = amount of burn damage to multiply with the spell level (Burn Damage = bdamage x spell level).
PB_bdamagerange = range of units affected by the burn damage.
PB_bkilldestructibles = if true, destructibles along the burn damage range will be killed.
PB_ddamage = amount of detonation damage to multiply with the spell level (Detonation Damage = ddamage x spell level).
PB_ddamagerange = range of units affected by the detonation damage.
PB_dkilldestructibles = if true, destructibles along the detonation damage range will be killed.
PB_speed = speed of fireball.
PB_detonatetime = amount of time set to detonate.
PB_friendlydamage = if true, allied and passive units will be affected by the burn damage and detonation damage.
PB_losebuffs = if true, caster will lose all buffs on the effect of casting.

  • Spell Sample 1
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Pyroball 1
    • Actions
      • -------- Begin Configuration Settings --------
      • Set PB_attacktype = Spells
      • Set PB_damagetype = Fire
      • Set PB_bdamage = 4.00
      • Set PB_bdamagerange = 190.00
      • Set PB_bkilldestructibles = True
      • Set PB_ddamage = 180.00
      • Set PB_ddamagerange = 320.00
      • Set PB_dkilldestructibles = True
      • Set PB_speed = 18.00
      • Set PB_detonatetime = 2.00
      • Set PB_friendlydamage = False
      • Set PB_losebuffs = False
      • -------- End Configuration Settings --------
      • Trigger - Run PB System 1 <gen> (checking conditions)
  • Spell Sample 2
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Pyroball 2
    • Actions
      • -------- Begin Configuration Settings --------
      • Set PB_attacktype = Spells
      • Set PB_damagetype = Fire
      • Set PB_bdamage = 4.00
      • Set PB_bdamagerange = 190.00
      • Set PB_bkilldestructibles = False
      • Set PB_ddamage = 180.00
      • Set PB_ddamagerange = 320.00
      • Set PB_dkilldestructibles = False
      • Set PB_speed = 18.00
      • Set PB_detonatetime = 2.00
      • Set PB_friendlydamage = True
      • Set PB_losebuffs = True
      • -------- End Configuration Settings --------
      • Trigger - Run PB System 1 <gen> (checking conditions)
  • PB System 1
    • Events
    • Conditions
    • Actions
      • Set PB_integer[0] = (PB_integer[0] + 1)
      • Set PB_spell[PB_integer[0]] = (Ability being cast)
      • Set PB_point[0] = (Position of (Triggering unit))
      • Set PB_previousturnspeed[PB_integer[0]] = (Current turn speed of (Triggering unit))
      • Set PB_previousheight[PB_integer[0]] = (Current flying height of (Triggering unit))
      • -------- Begin Storing Configuration Settings --------
      • Set PB_attacktype_s[PB_integer[0]] = PB_attacktype
      • Set PB_bdamage_s[PB_integer[0]] = PB_bdamage
      • Set PB_bdamagerange_s[PB_integer[0]] = PB_bdamagerange
      • Set PB_bkilldestructibles_s[PB_integer[0]] = PB_bkilldestructibles
      • Set PB_damagetype_s[PB_integer[0]] = PB_damagetype
      • Set PB_ddamage_s[PB_integer[0]] = PB_ddamage
      • Set PB_ddamagerange_s[PB_integer[0]] = PB_ddamagerange
      • Set PB_detonatetime_s[PB_integer[0]] = PB_detonatetime
      • Set PB_dkilldestructibles_s[PB_integer[0]] = PB_dkilldestructibles
      • Set PB_friendlydamage_s[PB_integer[0]] = PB_friendlydamage
      • Set PB_losebuffs_s[PB_integer[0]] = PB_losebuffs
      • Set PB_speed_s[PB_integer[0]] = PB_speed
      • -------- End Storing Configuration Settings --------
      • Unit - Set the custom value of (Triggering unit) to PB_integer[0]
      • Unit - Pause (Triggering unit)
      • Unit - Make (Triggering unit) Vulnerable
      • Unit - Turn collision for (Triggering unit) Off
      • Unit Group - Add (Triggering unit) to PB_group[0]
      • Special Effect - Create a special effect attached to the chest of (Triggering unit) using Abilities\Weapons\FireBallMissile\FireBallMissile.mdl
      • Set PB_specialeffect[PB_integer[0]] = (Last created special effect)
      • Animation - Change (Triggering unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
      • Animation - Change (Triggering unit) turn speed to 0.00
      • Animation - Change (Triggering unit) flying height to 0.00 at 0.00
      • Animation - Change (Triggering unit)'s size to (0.00%, 0.00%, 0.00%) of its original size
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • PB_losebuffs_s[PB_integer[0]] Equal to True
        • Then - Actions
          • Unit - Remove All buffs from (Triggering unit)
        • Else - Actions
      • Unit - Create 1 Pyroball (Dummy) for Neutral Passive at PB_point[0] facing (Facing of (Triggering unit)) degrees
      • Set PB_dummy[PB_integer[0]] = (Last created unit)
      • Unit - Add a PB_detonatetime_s[PB_integer[0]] second Generic expiration timer to PB_dummy[PB_integer[0]]
      • Unit - Turn collision for PB_dummy[PB_integer[0]] Off
      • Set PB_online[PB_integer[0]] = True
      • Trigger - Turn on PB System 2 <gen>
      • Custom script: call RemoveLocation (udg_PB_point[0])
  • PB System 2
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (PB_group[0] is empty) Equal to True
        • Then - Actions
          • Set PB_integer[0] = 0
          • Set PB_integer[1] = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in PB_group[0] and do (Actions)
            • Loop - Actions
              • Set PB_caster = (Picked unit)
              • Set PB_integer[1] = (Custom value of PB_caster)
              • Set PB_point[1] = (Position of PB_caster)
              • Set PB_point[2] = (PB_point[1] offset by PB_speed_s[PB_integer[1]] towards (Facing of PB_caster) degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • PB_online[PB_integer[1]] Equal to True
                  • (PB_caster is alive) Equal to True
                  • (PB_dummy[PB_integer[1]] is alive) Equal to True
                  • (Terrain pathing at PB_point[2] of type Floatability is off) Equal to True
                  • (Terrain pathing at PB_point[2] of type Flyability is off) Equal to False
                • Then - Actions
                  • Unit - Order PB_dummy[PB_integer[1]] to Orc Raider - Ensnare PB_caster
                  • Unit - Turn collision for PB_caster Off
                  • Unit - Move PB_caster instantly to PB_point[2]
                  • Special Effect - Create a special effect at PB_point[1] using Abilities\Weapons\FireBallMissile\FireBallMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Set PB_group[1] = (Units within PB_bdamagerange_s[PB_integer[1]] of PB_point[1])
                  • Unit Group - Remove PB_caster from PB_group[1]
                  • Unit Group - Pick every unit in PB_group[1] and do (Actions)
                    • Loop - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked unit) is A flying unit) Equal to False
                          • ((Picked unit) is Magic Immune) Equal to False
                          • ((Picked unit) is alive) Equal to True
                        • Then - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • PB_friendlydamage_s[PB_integer[1]] Equal to True
                            • Then - Actions
                              • Unit - Cause PB_caster to damage (Picked unit), dealing (PB_bdamage_s[PB_integer[1]] x (Real((Level of PB_spell[PB_integer[1]] for PB_caster)))) damage of attack type PB_attacktype_s[PB_integer[1]] and damage type PB_damagetype_s[PB_integer[1]]
                              • Special Effect - Create a special effect attached to the origin of (Picked unit) using Environment\LargeBuildingFire\LargeBuildingFire2.mdl
                              • Special Effect - Destroy (Last created special effect)
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • ((Picked unit) belongs to an enemy of (Owner of PB_caster)) Equal to True
                                • Then - Actions
                                  • Unit - Cause PB_caster to damage (Picked unit), dealing (PB_bdamage_s[PB_integer[1]] x (Real((Level of PB_spell[PB_integer[1]] for PB_caster)))) damage of attack type PB_attacktype_s[PB_integer[1]] and damage type PB_damagetype_s[PB_integer[1]]
                                  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Environment\LargeBuildingFire\LargeBuildingFire2.mdl
                                  • Special Effect - Destroy (Last created special effect)
                                • Else - Actions
                        • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PB_bkilldestructibles_s[PB_integer[1]] Equal to True
                    • Then - Actions
                      • Destructible - Pick every destructible within PB_bdamagerange_s[PB_integer[1]] of PB_point[1] and do (Actions)
                        • Loop - Actions
                          • Destructible - Kill (Picked destructible)
                    • Else - Actions
                • Else - Actions
                  • Set PB_online[PB_integer[1]] = False
                  • Unit - Remove PB_dummy[PB_integer[1]] from the game
                  • Unit - Unpause PB_caster
                  • Unit Group - Remove PB_caster from PB_group[0]
                  • Animation - Change PB_caster's vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                  • Animation - Change PB_caster turn speed to PB_previousturnspeed[PB_integer[1]]
                  • Animation - Change PB_caster flying height to PB_previousheight[PB_integer[1]] at 0.00
                  • Animation - Change PB_caster's size to (100.00%, 100.00%, 100.00%) of its original size
                  • Unit - Turn collision for PB_caster On
                  • Unit - Remove Pyroball Form (Air) buff from PB_caster
                  • Unit - Remove Pyroball Form (Ground) buff from PB_caster
                  • Special Effect - Create a special effect at PB_point[2] using Objects\Spawnmodels\Other\NeutralBuildingExplosion\NeutralBuildingExplosion.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Create a special effect at PB_point[2] using Abilities\Spells\Other\Doom\DoomDeath.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Special Effect - Destroy PB_specialeffect[PB_integer[1]]
                  • Set PB_group[2] = (Units within PB_ddamagerange_s[PB_integer[1]] of PB_point[1])
                  • Unit Group - Remove PB_caster from PB_group[2]
                  • Unit Group - Pick every unit in PB_group[2] and do (Actions)
                    • Loop - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked unit) is Magic Immune) Equal to False
                          • ((Picked unit) is alive) Equal to True
                        • Then - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • PB_friendlydamage_s[PB_integer[1]] Equal to True
                            • Then - Actions
                              • Unit - Cause PB_caster to damage (Picked unit), dealing (PB_ddamage_s[PB_integer[1]] x (Real((Level of PB_spell[PB_integer[1]] for PB_caster)))) damage of attack type PB_attacktype_s[PB_integer[1]] and damage type PB_damagetype_s[PB_integer[1]]
                              • Special Effect - Create a special effect attached to the origin of (Picked unit) using Environment\LargeBuildingFire\LargeBuildingFire2.mdl
                              • Special Effect - Destroy (Last created special effect)
                            • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • ((Picked unit) belongs to an enemy of (Owner of PB_caster)) Equal to True
                                • Then - Actions
                                  • Unit - Cause PB_caster to damage (Picked unit), dealing (PB_ddamage_s[PB_integer[1]] x (Real((Level of PB_spell[PB_integer[1]] for PB_caster)))) damage of attack type PB_attacktype_s[PB_integer[1]] and damage type PB_damagetype_s[PB_integer[1]]
                                  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Environment\LargeBuildingFire\LargeBuildingFire2.mdl
                                  • Special Effect - Destroy (Last created special effect)
                                • Else - Actions
                        • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • PB_dkilldestructibles_s[PB_integer[1]] Equal to True
                    • Then - Actions
                      • Destructible - Pick every destructible within PB_ddamagerange_s[PB_integer[1]] of PB_point[1] and do (Actions)
                        • Loop - Actions
                          • Destructible - Kill (Picked destructible)
                    • Else - Actions
      • Custom script: call RemoveLocation (udg_PB_point[1])
      • Custom script: call RemoveLocation (udg_PB_point[2])
      • Custom script: call DestroyGroup (udg_PB_group[1])
      • Custom script: call DestroyGroup (udg_PB_group[2])



  • Stored custom values in an array.
  • Add checks to prevent dead units from getting damaged (No point damaging them since they are already dead).
  • Replaced 'remove invulnerability buff' with 'remove all buffs'.
  • Added a new configurable boolean variable, PB_losebuffs.
  • Made use of PB_point[1] in PB System 2.
  • Now everything can get burned except for invulnerable, magic-immune and flying-classified units.
  • Made a few changes on the descriptions to fit the spell.
  • Increased pyroball ensnare duration to 3 seconds.
  • Changed burning effect attachment points from chest to origin.


  • Removed all do nothing's.
  • Corrected spelling mistakes.


Easily configured, GUI, Multi-units & Multi-spells. :wink:
Named it pyroball instead of fireball since those already exist here and this is my first working spell without errors.. Well.. NONE that i know OF! :xxd:
Also, Special thanks to Pharaoh_ for correcting the mui part and adding the terrain conditions!

Keywords:
accelerate, accelerating, ball, explode, explosion, explosive, fire, fireball, flame, flameball, ground, kaboom, pyro, pyroball, roll, rolling, shock
Contents

GUI MUI Pyroball Spell v1.2 (Map)

Reviews
16:38, 9th Jun 2010 TriggerHappy: Coding seemed fine and spell worked.

Moderator

M

Moderator

16:38, 9th Jun 2010
TriggerHappy:

Coding seemed fine and spell worked.
 
Level 22
Joined
Nov 14, 2008
Messages
3,256
It is a function which calls an action which doesn't do anything.

Edit:

Uses custom values, avoid that, use some kind of array storage.

Damages structures.

Can fuck other spells that uses invulnerablity.

Sort out magic immune units for less calls as they wont be damaged by neither spell or magic damage. (doesnt matter if you use other attack types, they will go threw magic immune units)
 
Level 31
Joined
May 3, 2008
Messages
3,155
Ok i will :p But why though? Is it because the function itself does absolutely nothing? I had the thought that it prevent other stuff from happening.. if you get what i mean :xxd:

Let me give you a rather stupid example.

1) Assume that you are not doing anything at this moment.
2) I call you to come cause I have thing for you to do.
3) I call you cause I want to tell you to do absolutely nothing at this moment.
 
Level 5
Joined
Dec 21, 2008
Messages
101
Forgot to mention that this a no-target spell, since it was based on the dash-type of spell that i made. You can still change the target type from (instant no-target) to (unit-target) or (point-target) easily and increase the casting range that fits your spell. You can do this because the spell was based on the channel ability (made for custom abilities)

Lastly, thank you king_drift_alex!

EDIT: Take Notes (For Future Fixing Purpose *v1.3*)
- Slight edit to description.
- Lose all buff while in and during transformation into fireball/pyroball.
- Red ribbon effect during transform.
- Perform code check for leaks and other stuff.

EDIT AGAIN: Cancelled 1.3
 
Last edited:
Top