Moderator
M
Moderator
17:36, 1st Jan 2010
TriggerHappy:
You added everything I asked and it looked good.
TriggerHappy:
You added everything I asked and it looked good.
Setup

Events


Time - Elapsed game time is 1.00 seconds

Conditions

Actions


-------- This creates the hashtable --------


-------- * --------


Hashtable - Create a hashtable


-------- This sets the hashtable as a variable for later referance --------


-------- * --------


Set EFB_Hash = (Last created hashtable)


-------- Config --------


-------- Final explosioin, mini projectile count --------


Set Config[1] = 18


-------- projectile surround sfx count --------


Set Config[2] = 10


-------- projectile Base damage (per mini projectile) --------


Set Config[3] = 25


-------- Parabola height divider --------


Set Config[4] = (Integer(2.50))


-------- Min fire range --------


Set Config[5] = 100


-------- Automated fire distance --------


Set Config[6] = 650
Initial Fire

Events


Unit - A unit Starts the effect of an ability

Conditions

Actions


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



If - Conditions




(Ability being cast) Equal to Magic Flame bolt



Then - Actions




-------- This sets the casting location --------




-------- as well as the missile starting point --------




-------- * --------




Set Temp_Point = (Position of (Triggering unit))




-------- This sets the missiles landing area --------




-------- * --------




Set Temp_Point_2 = (Target point of ability being cast)




-------- This sets the distance between the two points --------




-------- * --------




Set Temp_Distance = (Distance between Temp_Point and Temp_Point_2)




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





If - Conditions






Temp_Distance Less than or equal to (Real(Config[5]))





Then - Actions






-------- This checks too see if they are too close to the caster --------






-------- The it sets it automatically to a distance further away --------






-------- Removes leak --------






Custom script: call RemoveLocation (udg_Temp_Point_2)






-------- Retarget --------






Set Temp_Point_2 = (Temp_Point offset by (Real(Config[6])) towards (Facing of (Triggering unit)) degrees)






-------- * --------






-------- New distance calculation --------






Set Temp_Distance = (Distance between Temp_Point and Temp_Point_2)





Else - Actions




-------- This creates the dummy unit --------




-------- Set it to your dummy missile --------




Unit - Create 1 Enchanted Flame Bolt for (Owner of (Triggering unit)) at Temp_Point facing (Angle from Temp_Point to Temp_Point_2) degrees




-------- This allows fly height manipulation --------




-------- useing triggers --------




-------- * --------




Unit - Add Crow Form to (Last created unit)




-------- This sets the total distance that will be travelled --------




-------- * --------




Hashtable - Save Temp_Distance as 3 of (Key (Last created unit)) in EFB_Hash




-------- This sets the fly height it will reach so the parabola will look --------




-------- Similar every time --------




-------- change the divider to change the appearance of your parabola. --------




-------- the lower the divider the higher the missile goes --------




-------- the higher the divider the lower the missile goes --------




Hashtable - Save ((Load 3 of (Key (Last created unit)) from EFB_Hash) / (Real(Config[4]))) as 1 of (Key (Last created unit)) in EFB_Hash




-------- This is set to 0 so that you dont get muddled up if your changing it alot --------




-------- It's not 100% neccercarry --------




Hashtable - Save 0.00 as 2 of (Key (Last created unit)) in EFB_Hash




-------- Damage calculation for later dummies --------




-------- This projectile doesn't actually deal any damage itself --------




Hashtable - Save (((Real((Intelligence of (Triggering unit) (Include bonuses)))) x (Real((Level of Magic Flame bolt for (Triggering unit))))) + (Real(Config[3]))) as 4 of (Key (Last created unit)) in EFB_Hash




-------- This adds the unit to the moving group --------




-------- * --------




Unit Group - Add (Last created unit) to EFB_Moving_Units




-------- This makes sure they do not collide with eachother --------




-------- * --------




Unit - Turn collision for (Last created unit) Off




-------- This gets rid of the crow form again so they dont actually gain it as an ability --------




-------- * --------




Unit - Remove Crow Form from (Last created unit)




-------- This part is for your circle around the main missile --------




-------- the each integer if for the numbr of them, remember, the more you have the more damage it deals --------




For each (Integer Debug) from 1 to Config[2], do (Actions)





Loop - Actions






-------- Sets the distance away from the centre --------






-------- of were it spawns --------






Set Temp_Point_3 = (Temp_Point offset by 50.00 towards Circle_Position_setter degrees)






-------- same as aobut but for the landing area --------






Set Temp_Point_4 = (Temp_Point_2 offset by 50.00 towards Circle_Position_setter degrees)






-------- creates the dummies for your surrounding sfx --------






Unit - Create 1 Flame ring segment for (Owner of (Triggering unit)) at Temp_Point_3 facing (Angle from Temp_Point_3 to Temp_Point_4) degrees






-------- like before allows you to manaipulate units fly hieght using triggers --------






-------- * --------






Unit - Add Crow Form to (Last created unit)






-------- Like pre meantioned these set fly height, distance, and one for future referance --------






-------- This sets the total distance that will be travelled --------






-------- * --------






Hashtable - Save (Distance between Temp_Point_3 and Temp_Point_4) as 3 of (Key (Last created unit)) in EFB_Hash






-------- This sets the fly height it will reach so the parabola will look --------






-------- Similar every time --------






-------- change the divider to change the appearance of your parabola. --------






-------- the lower the divider the higher the missile goes --------






-------- the higher the divider the lower the missile goes --------






Hashtable - Save ((Load 3 of (Key (Last created unit)) from EFB_Hash) / (Real(Config[4]))) as 1 of (Key (Last created unit)) in EFB_Hash






-------- This is set to 0 so that you dont get muddled up if your changing it alot --------






-------- It's not 100% neccercarry --------






Hashtable - Save 0.00 as 2 of (Key (Last created unit)) in EFB_Hash






-------- this calculated damage dealt by the dummies --------






Hashtable - Save (((Real((Intelligence of (Triggering unit) (Include bonuses)))) x (Real((Level of Magic Flame bolt for (Triggering unit))))) + (Real(Config[3]))) as 4 of (Key (Last created unit)) in EFB_Hash






-------- --- --------






-------- * --------






-------- removes leaks --------






Custom script: call RemoveLocation (udg_Temp_Point_4)






Custom script: call RemoveLocation (udg_Temp_Point_3)






-------- --- --------






-------- adds the units to the moving group --------






-------- * --------






Unit Group - Add (Last created unit) to EFB_Moving_Units






-------- Prevents midair collisions --------






-------- * --------






Unit - Turn collision for (Last created unit) Off






-------- Removes the ability so the dummies dont gain it as an actual ability --------






-------- * --------






Unit - Remove Crow Form from (Last created unit)






-------- this is a core part --------






-------- set this to 360/number of surrounding dummies of your main missiles --------






-------- The standard had 10 surrounding --------






-------- so: 360/10 = 36 --------






-------- if you want to do this the easy way --------






-------- change the part after + --------






-------- to another arithmetic function --------






-------- using the above formula --------






Set Circle_Position_setter = (Circle_Position_setter + (360.00 / (Real(Config[2]))))




-------- --- --------




-------- * --------




-------- Leak removal --------




Custom script: call RemoveLocation (udg_Temp_Point_2)




Custom script: call RemoveLocation (udg_Temp_Point)



Else - Actions
Moving

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


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



Loop - Actions




-------- Removed the unit if they go out of bounds --------




-------- * --------




If (((Playable map area) contains (Picked unit)) Equal to False) then do (Unit - Remove (Picked unit) from the game) else do (Do nothing)




-------- moves the unit --------




-------- to change speed, change the number --------




-------- The standard number is 10. --------




Custom script: call MoveUnitFast(GetEnumUnit(), 10, GetUnitFacing(GetEnumUnit())*bj_DEGTORAD)




-------- set the + to the same as your ditance traveled --------




Hashtable - Save ((Load 2 of (Key (Picked unit)) from EFB_Hash) + 10.00) as 2 of (Key (Picked unit)) in EFB_Hash




-------- This is the parabola, It's better if you didn't touch this --------




-------- * --------




Hashtable - Save ((((4.00 x (Load 1 of (Key (Picked unit)) from EFB_Hash)) / (Load 3 of (Key (Picked unit)) from EFB_Hash)) x ((Load 3 of (Key (Picked unit)) from EFB_Hash) - (Load 2 of (Key (Picked unit)) from EFB_Hash))) x ((Load 2 of (Key (Picked unit)) from EFB_Hash) / (L as 5 of (Key (Picked unit)) in EFB_Hash




-------- changes the fly height --------




-------- * --------




Animation - Change (Picked unit) flying height to (Load 5 of (Key (Picked unit)) from EFB_Hash) at 0.00




-------- This kills them upon landing --------




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





If - Conditions






(Load 5 of (Key (Picked unit)) from EFB_Hash) Less than or equal to -1.00





Then - Actions






-------- kills them --------






-------- * --------






Unit - Kill (Picked unit)






-------- Removes them from the moving group --------






-------- * --------






Unit Group - Remove (Picked unit) from EFB_Moving_Units





Else - Actions
Damage and explosion

Events


Unit - A unit Dies

Conditions

Actions


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



If - Conditions




(Unit-type of (Triggering unit)) Equal to Enchanted Flame Bolt



Then - Actions




-------- All these are the same --------




For each (Integer Debug) from 1 to Config[1], do (Actions)





Loop - Actions






-------- Sets the initial location of the main explosion --------






-------- * --------






Set Temp_Point = (Position of (Triggering unit))






-------- Sets the point of landing --------






Set Temp_Point_4 = (Temp_Point offset by 300.00 towards Circle_Position_setter degrees)






-------- Creates the dummies --------






Unit - Create 1 Flame ring segment for (Owner of (Triggering unit)) at Temp_Point facing (Angle from Temp_Point to Temp_Point_4) degrees






-------- Allows fly height manipulation --------






-------- * --------






Unit - Add Crow Form to (Last created unit)






-------- This sets the total distance that will be travelled --------






-------- * --------






Hashtable - Save (Distance between Temp_Point and Temp_Point_4) as 3 of (Key (Last created unit)) in EFB_Hash






-------- This sets the fly height it will reach so the parabola will look --------






-------- Similar every time --------






-------- change the divider to change the appearance of your parabola. --------






-------- the lower the divider the higher the missile goes --------






-------- the higher the divider the lower the missile goes --------






Hashtable - Save ((Load 3 of (Key (Last created unit)) from EFB_Hash) / (Real(Config[4]))) as 1 of (Key (Last created unit)) in EFB_Hash






-------- This is set to 0 so that you dont get muddled up if your changing it alot --------






-------- It's not 100% neccercarry --------






Hashtable - Save 0.00 as 2 of (Key (Last created unit)) in EFB_Hash






-------- this calculated damage dealt by the dummies --------






Hashtable - Save (Load 4 of (Key (Triggering unit)) from EFB_Hash) as 4 of (Key (Last created unit)) in EFB_Hash






-------- --- --------






-------- Removes leaks --------






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_4)






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_3)






-------- --- --------






-------- Adds it to the moving group --------






-------- * --------






Unit Group - Add (Last created unit) to EFB_Moving_Units






-------- Prevents midair collisions --------






-------- * --------






Unit - Turn collision for (Last created unit) Off






-------- Removes the ability again --------






-------- * --------






Unit - Remove Crow Form from (Last created unit)






-------- this is a core part --------






-------- set this to 360/number of surrounding dummies of your main missiles --------






-------- The standard had 10 surrounding --------






-------- so: 360/10 = 36 --------






-------- if you want to do this the easy way --------






-------- change the part after + --------






-------- to another arithmetic function --------






-------- using the above formula --------






Set Circle_Position_setter = (Circle_Position_setter + (360.00 / (Real(Config[1]))))




For each (Integer Debug) from 1 to Config[1], do (Actions)





Loop - Actions






-------- Sets the initial location of the main explosion --------






-------- * --------






Set Temp_Point = (Position of (Triggering unit))






-------- Sets the point of landing --------






Set Temp_Point_4 = (Temp_Point offset by 400.00 towards Circle_Position_setter degrees)






-------- Creates the dummies --------






Unit - Create 1 Flame ring segment for (Owner of (Triggering unit)) at Temp_Point facing (Angle from Temp_Point to Temp_Point_4) degrees






-------- Allows fly height manipulation --------






-------- * --------






Unit - Add Crow Form to (Last created unit)






-------- This sets the total distance that will be travelled --------






-------- * --------






Hashtable - Save (Distance between Temp_Point and Temp_Point_4) as 3 of (Key (Last created unit)) in EFB_Hash






-------- This sets the fly height it will reach so the parabola will look --------






-------- Similar every time --------






-------- change the divider to change the appearance of your parabola. --------






-------- the lower the divider the higher the missile goes --------






-------- the higher the divider the lower the missile goes --------






Hashtable - Save ((Load 3 of (Key (Last created unit)) from EFB_Hash) / (Real(Config[4]))) as 1 of (Key (Last created unit)) in EFB_Hash






-------- This is set to 0 so that you dont get muddled up if your changing it alot --------






-------- It's not 100% neccercarry --------






Hashtable - Save 0.00 as 2 of (Key (Last created unit)) in EFB_Hash






-------- this calculated damage dealt by the dummies --------






Hashtable - Save (Load 4 of (Key (Triggering unit)) from EFB_Hash) as 4 of (Key (Last created unit)) in EFB_Hash






-------- --- --------






-------- Removes leaks --------






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_4)






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_3)






-------- --- --------






-------- Adds it to the moving group --------






-------- * --------






Unit Group - Add (Last created unit) to EFB_Moving_Units






-------- Prevents midair collisions --------






-------- * --------






Unit - Turn collision for (Last created unit) Off






-------- Removes the ability again --------






-------- * --------






Unit - Remove Crow Form from (Last created unit)






-------- this is a core part --------






-------- set this to 360/number of surrounding dummies of your main missiles --------






-------- The standard had 10 surrounding --------






-------- so: 360/10 = 36 --------






-------- if you want to do this the easy way --------






-------- change the part after + --------






-------- to another arithmetic function --------






-------- using the above formula --------






Set Circle_Position_setter = (Circle_Position_setter + (360.00 / (Real(Config[1]))))




For each (Integer Debug) from 1 to Config[1], do (Actions)





Loop - Actions






-------- Sets the initial location of the main explosion --------






-------- * --------






Set Temp_Point = (Position of (Triggering unit))






-------- Sets the point of landing --------






Set Temp_Point_4 = (Temp_Point offset by 500.00 towards Circle_Position_setter degrees)






-------- Creates the dummies --------






Unit - Create 1 Flame ring segment for (Owner of (Triggering unit)) at Temp_Point facing (Angle from Temp_Point to Temp_Point_4) degrees






-------- Allows fly height manipulation --------






-------- * --------






Unit - Add Crow Form to (Last created unit)






-------- This sets the total distance that will be travelled --------






-------- * --------






Hashtable - Save (Distance between Temp_Point and Temp_Point_4) as 3 of (Key (Last created unit)) in EFB_Hash






-------- This sets the fly height it will reach so the parabola will look --------






-------- Similar every time --------






-------- change the divider to change the appearance of your parabola. --------






-------- the lower the divider the higher the missile goes --------






-------- the higher the divider the lower the missile goes --------






Hashtable - Save ((Load 3 of (Key (Last created unit)) from EFB_Hash) / (Real(Config[4]))) as 1 of (Key (Last created unit)) in EFB_Hash






-------- This is set to 0 so that you dont get muddled up if your changing it alot --------






-------- It's not 100% neccercarry --------






Hashtable - Save 0.00 as 2 of (Key (Last created unit)) in EFB_Hash






-------- this calculated damage dealt by the dummies --------






Hashtable - Save (Load 4 of (Key (Triggering unit)) from EFB_Hash) as 4 of (Key (Last created unit)) in EFB_Hash






-------- --- --------






-------- Removes leaks --------






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_4)






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_3)






-------- --- --------






-------- Adds it to the moving group --------






-------- * --------






Unit Group - Add (Last created unit) to EFB_Moving_Units






-------- Prevents midair collisions --------






-------- * --------






Unit - Turn collision for (Last created unit) Off






-------- Removes the ability again --------






-------- * --------






Unit - Remove Crow Form from (Last created unit)






-------- this is a core part --------






-------- set this to 360/number of surrounding dummies of your main missiles --------






-------- The standard had 10 surrounding --------






-------- so: 360/10 = 36 --------






-------- if you want to do this the easy way --------






-------- change the part after + --------






-------- to another arithmetic function --------






-------- using the above formula --------






Set Circle_Position_setter = (Circle_Position_setter + (360.00 / (Real(Config[1]))))




For each (Integer Debug) from 1 to Config[1], do (Actions)





Loop - Actions






-------- Sets the initial location of the main explosion --------






-------- * --------






Set Temp_Point = (Position of (Triggering unit))






-------- Sets the point of landing --------






Set Temp_Point_4 = (Temp_Point offset by 600.00 towards Circle_Position_setter degrees)






-------- Creates the dummies --------






Unit - Create 1 Flame ring segment for (Owner of (Triggering unit)) at Temp_Point facing (Angle from Temp_Point to Temp_Point_4) degrees






-------- Allows fly height manipulation --------






-------- * --------






Unit - Add Crow Form to (Last created unit)






-------- This sets the total distance that will be travelled --------






-------- * --------






Hashtable - Save (Distance between Temp_Point and Temp_Point_4) as 3 of (Key (Last created unit)) in EFB_Hash






-------- This sets the fly height it will reach so the parabola will look --------






-------- Similar every time --------






-------- change the divider to change the appearance of your parabola. --------






-------- the lower the divider the higher the missile goes --------






-------- the higher the divider the lower the missile goes --------






Hashtable - Save ((Load 3 of (Key (Last created unit)) from EFB_Hash) / (Real(Config[4]))) as 1 of (Key (Last created unit)) in EFB_Hash






-------- This is set to 0 so that you dont get muddled up if your changing it alot --------






-------- It's not 100% neccercarry --------






Hashtable - Save 0.00 as 2 of (Key (Last created unit)) in EFB_Hash






-------- this calculated damage dealt by the dummies --------






Hashtable - Save (Load 4 of (Key (Triggering unit)) from EFB_Hash) as 4 of (Key (Last created unit)) in EFB_Hash






-------- --- --------






-------- Removes leaks --------






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_4)






-------- * --------






Custom script: call RemoveLocation (udg_Temp_Point_3)






-------- --- --------






-------- Adds it to the moving group --------






-------- * --------






Unit Group - Add (Last created unit) to EFB_Moving_Units






-------- Prevents midair collisions --------






-------- * --------






Unit - Turn collision for (Last created unit) Off






-------- Removes the ability again --------






-------- * --------






Unit - Remove Crow Form from (Last created unit)






-------- this is a core part --------






-------- set this to 360/number of surrounding dummies of your main missiles --------






-------- The standard had 10 surrounding --------






-------- so: 360/10 = 36 --------






-------- if you want to do this the easy way --------






-------- change the part after + --------






-------- to another arithmetic function --------






-------- using the above formula --------






Set Circle_Position_setter = (Circle_Position_setter + (360.00 / (Real(Config[1]))))



Else - Actions


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



If - Conditions




(Unit-type of (Triggering unit)) Equal to Flame ring segment



Then - Actions




-------- Sets the location of the units death area --------




Set Temp_Point = (Position of (Triggering unit))




-------- Creates sfx on the explosion area --------




Special Effect - Create a special effect at Temp_Point using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl




-------- Kills the sfx --------




-------- * --------




Special Effect - Destroy (Last created special effect)




-------- specifies requirements for targets --------




Set Temp_Group = (Units within 100.00 of Temp_Point matching ((((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is A ground unit) Equal to True) and (((Matching




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





Loop - Actions






-------- Damages the units --------






-------- * --------






Unit - Cause (Triggering unit) to damage (Picked unit), dealing (Load 4 of (Key (Triggering unit)) from EFB_Hash) damage of attack type Spells and damage type Normal




-------- Removes leak --------




-------- * --------




Custom script: call RemoveLocation (udg_Temp_Point)




-------- * --------




Custom script: call DestroyGroup (udg_Temp_Group)



Else - Actions