Moderator
M
Moderator
Maker, 2nd Aug, Amazon Spellpack v1.3
Approved. Good spell pack. The spells are original and the effects are fine.
| Impaling Arrow | Shoots a powerful arrow straight forward that damages and knocks back enemy units. |
Impaling Arrow

Events

Conditions

Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




IAHas[IALastRecycled] Equal to True



Then - Actions




Set IAMax = (IAMax + 1)




Set IAIndex = IAMax



Else - Actions




Set IAIndex = IALastRecycled




Set IALastRecycled = IARecycledList[IALastRecycled]


Set IACaster[IAIndex] = (Triggering unit)


Set IATargetPoint[IAIndex] = (Target point of ability being cast)


Set IACasterPoint[IAIndex] = (Position of IACaster[IAIndex])


Set IAMaxDistance[IAIndex] = (800.00 + (200.00 x (Real((Level of Impaling Arrow for IACaster[IAIndex])))))


Set IADistance[IAIndex] = 0.00


Set IADamage[IAIndex] = (50.00 x (Real((Level of Impaling Arrow for IACaster[ARIndex]))))


Set IAHas[IAIndex] = True


Set IACount = (IACount + 1)


Set IAAngle[IAIndex] = (Angle from IACasterPoint[IAIndex] to IATargetPoint[IAIndex])


Unit - Create 1 Arrow Dummy for (Triggering player) at IACasterPoint[IAIndex] facing IAAngle[IAIndex] degrees


Set IAArrow[IAIndex] = (Last created unit)


Custom script: set udg_IADMGGroup[udg_IAIndex] = CreateGroup()


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




(Impaling Arrow Loop <gen> is on) Equal to False



Then - Actions




Trigger - Turn on Impaling Arrow Loop <gen>



Else - Actions
Impaling Arrow Loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer IAInteger) from 0 to IAMax, do (Actions)



Loop - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






IAHas[IAInteger] Equal to True





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








IADistance[IAInteger] Less than IAMaxDistance[IAInteger]







Then - Actions








Set IADistance[IAInteger] = (IADistance[IAInteger] + 50.00)








Set TempLoc = (IACasterPoint[IAInteger] offset by IADistance[IAInteger] towards IAAngle[IAInteger] degrees)








Unit - Move IAArrow[IAInteger] instantly to TempLoc








Custom script: set bj_wantDestroyGroup = true








Unit Group - Pick every unit in (Units within 100.00 of TempLoc matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((((Matching unit) is alive) Equal to True) and (((Matching unit) is in IADMGGroup[IAInteger]) Equal to Fa and do (Actions)









Loop - Actions










Unit Group - Add (Picked unit) to IADMGGroup[IAInteger]










Unit - Cause IACaster[IAInteger] to damage (Picked unit), dealing IADamage[IAInteger] damage of attack type Pierce and damage type Normal








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










(IADistance[IAInteger] mod 400.00) Equal to 0.00









Then - Actions










Unit - Create 1 Pulse for (Owner of IACaster[IAInteger]) at TempLoc facing IAAngle[IAInteger] degrees










Animation - Change (Last created unit)'s vertex coloring to (50.00%, 50.00%, 50.00%) with 75.00% transparency










Unit - Add a 1.00 second Generic expiration timer to (Last created unit)









Else - Actions








Custom script: set bj_wantDestroyGroup = true








Unit Group - Pick every unit in (Units within 100.00 of TempLoc matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of IACaster and do (Actions)









Loop - Actions










Set TempLoc2 = (Position of (Picked unit))










Set TempLoc3 = (TempLoc2 offset by 20.00 towards (Angle from IACasterPoint[IAInteger] to TempLoc2) degrees)










Unit - Move (Picked unit) instantly to TempLoc3










Special Effect - Create a special effect at TempLoc2 using Abilities\Spells\Orc\Devour\DevourEffectArt.mdl










Special Effect - Destroy (Last created special effect)










Custom script: call RemoveLocation (udg_TempLoc2)










Custom script: call RemoveLocation (udg_TempLoc3)








Custom script: call RemoveLocation (udg_TempLoc)







Else - Actions








Unit - Explode IAArrow[IAInteger]








Unit Group - Remove all units from IADMGGroup[IAInteger]








Custom script: call DestroyGroup (udg_IADMGGroup[udg_IAInteger])








Custom script: call RemoveLocation (udg_IATargetPoint[udg_IAInteger])








Custom script: call RemoveLocation (udg_IACasterPoint[udg_IAInteger])








Set IACount = (IACount - 1)








Set IAHas[IAInteger] = False








Set IARecycledList[IAInteger] = IALastRecycled








Set IALastRecycled = IAInteger








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










IACount Equal to 0









Then - Actions










Set IARecycledList[IAInteger] = 0










Set IALastRecycled = 0










Set IAMax = 0










Trigger - Turn off (This trigger)









Else - Actions





Else - Actions
| Arrow Rain | Shoots an arrow to the sky that splits into pieces then falls down damagind enemy units in the target area. |
Arrow Rain

Events

Conditions

Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




ARHas[ARLastRecycled] Equal to True



Then - Actions




Set ARMax = (ARMax + 1)




Set ARIndex = ARMax



Else - Actions




Set ARIndex = ARLastRecycled




Set ARLastRecycled = ARRecycledList[ARLastRecycled]


Set ARCaster[ARIndex] = (Triggering unit)


Set ARTargetPoint[ARIndex] = (Target point of ability being cast)


Set ARDelay[ARIndex] = 1.00


Set ARHas[ARIndex] = True


Set ARArrows[ARIndex] = (35 + (5 x (Level of Arrow Rain for ARCaster[ARIndex])))


Set ARCount = (ARCount + 1)


Set ARDamage[ARIndex] = (20.00 + (5.00 x (Real((Level of Arrow Rain for ARCaster[ARIndex])))))


Set TempLoc = (Position of ARCaster[ARIndex])


Unit - Create 1 Small Arrow Dummy Up for (Triggering player) at TempLoc facing Default building facing degrees


Animation - Change (Last created unit) flying height to 1500.00 at 2500.00


Unit - Add a 1.00 second Generic expiration timer to (Last created unit)


Custom script: call RemoveLocation (udg_TempLoc)


Custom script: set udg_ARArrowsGroup[udg_ARIndex] = CreateGroup()


Custom script: set udg_ARArrowsGroup2[udg_ARIndex] = CreateGroup()


For each (Integer A) from 1 to ARArrows[ARIndex], do (Actions)



Loop - Actions




Unit - Create 1 Small Arrow Dummy for (Triggering player) at ARTargetPoint[ARIndex] facing Default building facing degrees




Unit Group - Add (Last created unit) to ARArrowsGroup[ARIndex]




Animation - Change (Last created unit) flying height to 1500.00 at 0.00


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




(Arrow Rain Loop <gen> is on) Equal to False



Then - Actions




Trigger - Turn on Arrow Rain Loop <gen>



Else - Actions
Arrow Rain Loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer ARInteger) from 0 to ARMax, do (Actions)



Loop - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






ARHas[ARInteger] Equal to True





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








ARDelay[ARInteger] Greater than 0.00







Then - Actions








Set ARDelay[ARInteger] = (ARDelay[ARInteger] - 0.03)







Else - Actions








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










Or - Any (Conditions) are true











Conditions












(Number of units in ARArrowsGroup[ARInteger]) Greater than 0












(Number of units in ARArrowsGroup2[ARInteger]) Greater than 0









Then - Actions










If (All Conditions are True) then do (Then Actions) else do (Else Actions)











If - Conditions












(Number of units in ARArrowsGroup[ARInteger]) Greater than 0











Then - Actions












Set TempUnit = (Random unit from ARArrowsGroup[ARInteger])












Set ARArrows[ARInteger] = (ARArrows[ARInteger] - 1)












Unit Group - Add TempUnit to ARArrowsGroup2[ARInteger]












Unit Group - Remove TempUnit from ARArrowsGroup[ARInteger]












Set TempLoc = (ARTargetPoint[ARInteger] offset by (Random real number between 0.00 and 150.00) towards (Random angle) degrees)












Unit - Move TempUnit instantly to TempLoc












Custom script: call RemoveLocation (udg_TempLoc)











Else - Actions










Unit Group - Pick every unit in ARArrowsGroup2[ARInteger] and do (Actions)











Loop - Actions












Set TempReal = ((Current flying height of (Picked unit)) - 50.00)












Animation - Change (Picked unit) flying height to TempReal at 0.00












If (All Conditions are True) then do (Then Actions) else do (Else Actions)













If - Conditions














TempReal Less than or equal to 0.00













Then - Actions














Unit - Add a 1.00 second Generic expiration timer to (Picked unit)














Set TempLoc = (Position of (Picked unit))














Custom script: set bj_wantDestroyGroup = true














Unit Group - Pick every unit in (Units within 50.00 of TempLoc matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of ARCaster[ and do (Actions)















Loop - Actions
















Unit - Cause ARCaster[ARInteger] to damage (Picked unit), dealing ARDamage[ARInteger] damage of attack type Pierce and damage type Normal














Custom script: call RemoveLocation (udg_TempLoc)














Unit Group - Remove (Picked unit) from ARArrowsGroup2[ARInteger]













Else - Actions









Else - Actions










Set ARCount = (ARCount - 1)










Set ARHas[ARInteger] = False










Custom script: call RemoveLocation (udg_ARTargetPoint[udg_ARInteger])










Custom script: call DestroyGroup (udg_ARArrowsGroup[udg_ARInteger])










Custom script: call DestroyGroup (udg_ARArrowsGroup2[udg_ARInteger])










Set ARRecycledList[ARInteger] = ARLastRecycled










Set ARLastRecycled = ARInteger










If (All Conditions are True) then do (Then Actions) else do (Else Actions)











If - Conditions












ARCount Equal to 0











Then - Actions












Set ARRecycledList[ARInteger] = 0












Set ARLastRecycled = 0












Set ARMax = 0












Trigger - Turn off (This trigger)











Else - Actions





Else - Actions
| Flare Arrow | Launches an enchanted arrow above a target point, which reveals that area and blinds enemy units. Blinded units can miss on attack. |
Flare Arrow

Events

Conditions

Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




FAHas[FALastRecycled] Equal to True



Then - Actions




Set FAMax = (FAMax + 1)




Set FAIndex = FAMax



Else - Actions




Set FAIndex = FALastRecycled




Set FALastRecycled = FARecycledList[FALastRecycled]


Set FACaster[FAIndex] = (Triggering unit)


Set FAHas[FAIndex] = True


Set FACount = (FACount + 1)


Set FATargetPoint[FAIndex] = (Target point of ability being cast)


Set FATimer[FAIndex] = 5.00


Set FADelay[FAIndex] = 1.00


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




(Flare Arrow Loop <gen> is on) Equal to False



Then - Actions




Trigger - Turn on Flare Arrow Loop <gen>



Else - Actions
Flare Arrow Loop

Events


Time - Every 0.10 seconds of game time

Conditions

Actions


For each (Integer FAInteger) from 0 to FAMax, do (Actions)



Loop - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






FAHas[FAInteger] Equal to True





Then - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








FADelay[FAInteger] Greater than 0.00







Then - Actions








Set FADelay[FAInteger] = (FADelay[FAInteger] - 0.10)







Else - Actions








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










FATimer[FAInteger] Greater than 0.00









Then - Actions










Set FATimer[FAInteger] = (FATimer[FAInteger] - 0.10)










Custom script: set bj_wantDestroyGroup = true










Set TempInt = (Level of Flare Arrow for FACaster[FAInteger])










Unit Group - Pick every unit in (Units within 250.00 of FATargetPoint[FAInteger] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of ( and do (Actions)











Loop - Actions












Unit - Create 1 Dummy for (Owner of FACaster[FAInteger]) at FATargetPoint[FAInteger] facing Default building facing degrees












Set TempUnit = (Last created unit)












Unit - Add Blind to TempUnit












Unit - Set level of Blind for TempUnit to TempInt












Unit - Add a 1.00 second Generic expiration timer to TempUnit












Unit - Order TempUnit to Undead Banshee - Curse (Picked unit)









Else - Actions










Set FACount = (FACount - 1)










Set FAHas[FAInteger] = False










Custom script: call RemoveLocation (udg_FATargetPoint[udg_FAInteger])










Set FARecycledList[FAInteger] = FALastRecycled










Set FALastRecycled = FAInteger










If (All Conditions are True) then do (Then Actions) else do (Else Actions)











If - Conditions












FACount Equal to 0











Then - Actions












Set FARecycledList[FAInteger] = 0












Set FALastRecycled = 0












Set FAMax = 0












Trigger - Turn off (This trigger)











Else - Actions





Else - Actions
| Split Cold Arrows | Shoots an arrow that splits into several pieces to damage enemy units around the target unit slowing and damaging them. |
Split Cold Arrows

Events

Conditions

Actions


Set Caster = (Triggering unit)


Set Target = (Target unit of ability being cast)


Set TempLoc = (Position of Caster)


Set TempLoc2 = (Position of Target)


Set TempGroup = (Units within 250.00 of TempLoc2 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Triggering playe


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




(Number of units in TempGroup) Greater than 1



Then - Actions




Set TempReal = ((Real((Agility of Caster (Include bonuses)))) / ((Real((Number of units in TempGroup))) / 2.00))



Else - Actions




Set TempReal = (Real((Agility of Caster (Include bonuses))))


Set TempInt2 = (Level of Split Cold Arrows for Caster)


Unit Group - Pick every unit in TempGroup and do (Actions)



Loop - Actions




Unit - Create 1 Dummy Attack for (Triggering player) at TempLoc facing Default building facing degrees




Set TempUnit = (Last created unit)




Unit - Add Dummy Damage to TempUnit




Unit - Set level of Dummy Damage for TempUnit to (Integer(TempReal))




Unit - Add Split Cold Arrows Dummy to TempUnit




Unit - Set level of Split Cold Arrows Dummy for TempUnit to TempInt2




Unit - Add a 1.00 second Generic expiration timer to TempUnit




Unit - Order TempUnit to Neutral Naga Sea Witch - Activate Frost Arrows




Unit - Order TempUnit to Attack Once (Picked unit)


Custom script: call RemoveLocation (udg_TempLoc)


Custom script: call RemoveLocation (udg_TempLoc2)


Custom script: call DestroyGroup (udg_TempGroup)
| Shadow Shot | Creates a shadow of the hero behind the target to damage it. The damage dealt is equal to the hero's agility. |
Shadow Shot

Events

Conditions

Actions


Set Caster = (Triggering unit)


Set Target = (Target unit of ability being cast)


Set TempLoc = (Position of Target)


Set TempLoc2 = (TempLoc offset by 500.00 towards ((Facing of Target) + (Random real number between 160.00 and 200.00)) degrees)


Unit - Create 1 Dummy Amazon Attack for (Triggering player) at TempLoc2 facing TempLoc


Special Effect - Create a special effect at TempLoc2 using Abilities\Spells\Items\AIil\AIilTarget.mdl


Special Effect - Destroy (Last created special effect)


Set TempUnit = (Last created unit)


Set TempInt = (Agility of Caster (Include bonuses))


Animation - Change TempUnit's vertex coloring to (50.00%, 50.00%, 50.00%) with 50.00% transparency


Unit - Add Dummy Damage to TempUnit


Unit - Set level of Dummy Damage for TempUnit to TempInt


Unit - Add a 1.00 second Generic expiration timer to TempUnit


Unit - Order TempUnit to Attack Once (Picked unit)


Custom script: call RemoveLocation (udg_TempLoc)


Custom script: call RemoveLocation (udg_TempLoc2)