Cloak_Master
Active Member
- Reaction score
- 41
Spiritual Pinball
I honestly felt that the screenshot completely failed to do the ability justice. Before judging, I'd recommend trying it out in game, as I'm quite aware that my fail art sense makes it's function look ambiguous.Description: The ability is a fairly accurate repersentation of it's name. The caster will transform into an ephemeral pinball that bounces from nearby enemy to nearby enemy, damaging them as it goes. The amount of enemies it bounces to is entirely customizable.
This spell is entirely GUI and MPI. It is now also fully MUI.
Trigger 1:
Code:
Spiritual Pinball
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Spiritual Pinball
Actions
Set MultiValue = (MultiValue + 1)
Set Heroes[MultiValue] = (Casting unit)
Set Point[1] = (Position of (Casting unit))
Set TrashGroup = (Units within 800.00 of Point[1] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of (Casting unit))) Equal to True) and ((((Matching unit) is in PinballTargetGroup[MultiValue]) Not equal to True) and (
-------- The + 4 is used to set the default amount of hits + the level of pinball for the casting unit. You can change this to anything to increase or decrease targets. --------
For each (Integer A) from 1 to ((Level of Spiritual Pinball for Heroes[MultiValue]) + 4), do (Actions)
Loop - Actions
Unit Group - Add (Random unit from TrashGroup) to PinballTargetGroup[MultiValue]
Set TrashGroup = (Units within 800.00 of Point[1] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of (Casting unit))) Equal to True) and ((((Matching unit) is in PinballTargetGroup[MultiValue]) Not equal to True) and (
Unit - Order (Casting unit) to Stop
Unit - Hide (Casting unit)
Unit - Create 1 Pinball for (Owner of (Casting unit)) at Point[1] facing Default building facing degrees
Unit - Set the custom value of (Last created unit) to MultiValue
Animation - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
Special Effect - Create a special effect at Point[1] using Abilities\Spells\NightElf\Blink\BlinkTarget.mdl
Special Effect - Destroy (Last created special effect)
Set PinballTarget[MultiValue] = (Random unit from PinballTargetGroup[MultiValue])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in PinballTargetGroup[MultiValue]) Equal to 0
Then - Actions
Set PinballTarget[MultiValue] = Heroes[MultiValue]
Else - Actions
Custom script: call RemoveLocation (udg_Point[1])
Custom script: call DestroyGroup (udg_TrashGroup)
Code:
Pinball Slide
Events
Time - Every 0.03 seconds of game time
Conditions
(Number of units in (Units of type Pinball)) Greater than 0
Actions
Set TrashGroup = (Units of type Pinball)
Unit Group - Pick every unit in TrashGroup and do (Actions)
Loop - Actions
Set Point[1] = (Position of (Picked unit))
Set Point[2] = (Position of PinballTarget[(Custom value of (Picked unit))])
Set Point[3] = (Point[1] offset by 35.00 towards (Angle from Point[1] to Point[2]) degrees)
Unit - Move (Picked unit) instantly to Point[3]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between Point[1] and Point[2]) Less than or equal to 90.00
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
PinballTarget[(Custom value of (Picked unit))] Equal to Heroes[(Custom value of (Picked unit))]
Then - Actions
Special Effect - Create a special effect at Point[2] using Abilities\Spells\NightElf\Blink\BlinkTarget.mdl
Special Effect - Destroy (Last created special effect)
Unit - Unhide Heroes[(Custom value of (Picked unit))]
Selection - Add Heroes[(Custom value of (Picked unit))] to selection for (Owner of (Picked unit))
Unit - Remove (Picked unit) from the game
Skip remaining actions
Else - Actions
Special Effect - Create a special effect at Point[2] using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect at Point[2] using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Special Effect - Destroy (Last created special effect)
-------- 500 is an arbitrary value, set that to the damage you want the spell to cause. You could also make it incremental, and deal Level of Pinball for Heroes[custom value of picked unit] times X. --------
Unit - Cause (Picked unit) to damage PinballTarget[(Custom value of (Picked unit))], dealing 500.00 damage of attack type Spells and damage type Normal
Unit Group - Remove PinballTarget[(Custom value of (Picked unit))] from PinballTargetGroup[(Custom value of (Picked unit))]
Set PinballTarget[(Custom value of (Picked unit))] = (Random unit from PinballTargetGroup[(Custom value of (Picked unit))])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in PinballTargetGroup[(Custom value of (Picked unit))]) Equal to 0
Then - Actions
Set PinballTarget[(Custom value of (Picked unit))] = Heroes[(Custom value of (Picked unit))]
Else - Actions
Do nothing
Else - Actions
Custom script: call RemoveLocation (udg_Point[1])
Custom script: call RemoveLocation (udg_Point[2])
Custom script: call RemoveLocation (udg_Point[3])
Custom script: call DestroyGroup (udg_TrashGroup)