Moderator
M
Moderator
|
Moderator: Pharaoh_ Date: 25th Feb 2012, 9:15
|
Spirit Scorpions Configuration

Events


Map initialization

Conditions

Actions


-------- Do not touch --------


Hashtable - Create a hashtable


Set SS_Hash = (Last created hashtable)


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


-------- Determines the area the eggs will be scattered on --------


Set SS_AoeBase = 150.00


Set SS_AoePerLevel = 50.00


-------- Determines the damage dealt by the curse being inflicted on the unit --------


Set SS_DamageBase = 50.00


Set SS_DamagePerLevel = 25.00


-------- Determines how long the curse will last for --------


Set SS_CurseDurationBase = 4.00


Set SS_CurseDurationPerLevel = 2.00


-------- Determines how many Eggs will be thrown --------


Set SS_EggCountBase = 6


Set SS_EggCountPerLevel = 2


-------- Determines how many attacks each Scorpion can make before disappearing --------


Set SS_AttackCountsBase = 0


Set SS_AttackCountsBasePerLevel = 1


-------- Determines how fast the eggs fly through the sky --------


Set SS_EggFlySpeed = 20.00


-------- Determines how long it takes for the eggs to hatch --------


Set SS_EggHatchTime = 1.00


-------- Determines the height of the arc in relevence to the distance the eggs being thrown will be --------


Set SS_HeightMultiplyer = 0.45


-------- Determines how close the spell must be casted at minimum --------


Set SS_MinRange = 200.00


-------- Determines the speed of the Scorpions chasing --------


Set SS_ScorpionRunSpeed = 4.00


-------- Determines the AOE in which the Scorpions will actively search for a target --------


Set SS_ScorpionSearchAoeBase = 200.00


Set SS_ScorpionSearchAoePerLevel = 50.00


-------- Determines the unit type used as the egg --------


Set SS_ScorpionEgg = Spirit Scorpion Egg


-------- Determines the unit type used as the Scorpion --------


Set SS_SpiritScorpion = Spirit Scorpion


-------- Determines the spell used to act as the activation spell --------


Set SS_Spell = Spirit Scorpions


-------- Determines the SFX used upon the Scorpions hatching --------


Set SS_HatchSFX = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl


-------- Determines the SFX used upon the Scorpions disappearing --------


Set SS_RemovalSFX = Abilities\Spells\Human\DispelMagic\DispelMagicTarget.mdl


-------- Determines the SFX used as the curse --------


Set SS_CurseSFX = Abilities\Spells\Undead\Curse\CurseTarget.mdl
Spirit Scorpions Activation

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to SS_Spell

Actions


-------- Target location setup --------


Set SS_U = (Triggering unit)


Set SS_TempPoint = (Position of SS_U)


Set SS_TempPoint2 = (Target point of ability being cast)


Set SS_TempReal = (Real((Level of SS_Spell for SS_U)))


Set SS_Angle = (Angle from SS_TempPoint to SS_TempPoint2)


-------- Minimum range check --------


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



If - Conditions




(Distance between SS_TempPoint and SS_TempPoint2) Less than SS_MinRange



Then - Actions




Custom script: call RemoveLocation (udg_SS_TempPoint2)




Set SS_TempPoint2 = (SS_TempPoint offset by SS_MinRange towards SS_Angle degrees)



Else - Actions


-------- Egg creation --------


Set SS_EggCalc = (SS_EggCountBase + ((Integer(SS_TempReal)) x SS_EggCountPerLevel))


For each (Integer SS_i) from 1 to SS_EggCalc, do (Actions)



Loop - Actions




-------- Target selection --------




Set SS_TempPoint3 = (SS_TempPoint2 offset by (Random real number between 0.00 and (SS_AoeBase + (SS_TempReal x SS_AoePerLevel))) towards (Random angle) degrees)




Set SS_Angle = (Angle from SS_TempPoint to SS_TempPoint3)




-------- Creating Egg --------




Unit - Create 1 SS_ScorpionEgg for (Owner of SS_U) at SS_TempPoint facing SS_Angle degrees




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




Set SS_TempU = (Last created unit)




Custom script: set udg_SS_UHandle = GetHandleId(udg_SS_TempU)




-------- Casting Unit ID --------




Hashtable - Save Handle OfSS_U as 1 of SS_UHandle in SS_Hash




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




-------- Passing Parameters --------




-------- Saving the distance the egg will travel --------




Hashtable - Save (Distance between SS_TempPoint and SS_TempPoint3) as 2 of SS_UHandle in SS_Hash




-------- Saving the height the egg will reach in the arc --------




Hashtable - Save ((Distance between SS_TempPoint and SS_TempPoint3) x SS_HeightMultiplyer) as 3 of SS_UHandle in SS_Hash




-------- Saving the current distance travelled by the egg --------




Hashtable - Save 0.00 as 4 of SS_UHandle in SS_Hash




-------- Saving the damage of the curse --------




Hashtable - Save (SS_DamageBase + (SS_TempReal x SS_DamagePerLevel)) as 5 of SS_UHandle in SS_Hash




-------- Saving the duration of the Scorpion's curse --------




Hashtable - Save (SS_CurseDurationBase + (SS_TempReal x SS_CurseDurationPerLevel)) as 6 of SS_UHandle in SS_Hash




-------- Saving the search radius of the Scorpion --------




Hashtable - Save (SS_ScorpionSearchAoeBase + (SS_TempReal x SS_ScorpionSearchAoePerLevel)) as 7 of SS_UHandle in SS_Hash




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




-------- Saving the amount of attacks possible by the Scorpion --------




Hashtable - Save (SS_AttackCountsBase + ((Integer(SS_TempReal)) x SS_AttackCountsBasePerLevel)) as 12 of SS_UHandle in SS_Hash




-------- Stage ID --------




Hashtable - Save 1 as 8 of SS_UHandle in SS_Hash




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




-------- Setting up the egg for the loop --------




Unit Group - Add SS_TempU to SS_Scorpions




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




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




Custom script: call RemoveLocation (udg_SS_TempPoint3)




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


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


Custom script: call RemoveLocation (udg_SS_TempPoint2)


Custom script: call RemoveLocation (udg_SS_TempPoint)


-------- Starting the loop --------


Trigger - Turn on Spirit Scorpions Loop <gen>
Spirit Scorpions Loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


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



Loop - Actions




-------- Setup --------




Set SS_U = (Picked unit)




Custom script: set udg_SS_UHandle = GetHandleId(udg_SS_U)




Set SS_TempU2 = (Load 1 of SS_UHandle in SS_Hash)




Set SS_TempInteger = (Load 8 of SS_UHandle from SS_Hash)




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




-------- Stage 1 --------




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





If - Conditions






SS_TempInteger Equal to 1





Then - Actions






-------- Movement --------






Custom script: set udg_SS_TempX = GetUnitX(udg_SS_U)






Custom script: set udg_SS_TempY = GetUnitY(udg_SS_U)






Set SS_Angle = (Facing of SS_U)






Custom script: call SetUnitX(udg_SS_U, udg_SS_TempX + udg_SS_EggFlySpeed * Cos(udg_SS_Angle * bj_DEGTORAD))






Custom script: call SetUnitY(udg_SS_U, udg_SS_TempY + udg_SS_EggFlySpeed * Sin(udg_SS_Angle * bj_DEGTORAD))






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






-------- Fly Height Control --------






Set SS_RealCache[1] = (Load 2 of SS_UHandle from SS_Hash)






Set SS_RealCache[2] = (Load 3 of SS_UHandle from SS_Hash)






Set SS_RealCache[3] = ((Load 4 of SS_UHandle from SS_Hash) + SS_EggFlySpeed)






Hashtable - Save SS_RealCache[3] as 4 of SS_UHandle in SS_Hash






Set SS_RealCache[4] = (((4.00 x SS_RealCache[2]) / SS_RealCache[1]) x ((SS_RealCache[3] / SS_RealCache[1]) x (SS_RealCache[1] - SS_RealCache[3])))






Animation - Change SS_U flying height to SS_RealCache[4] at 0.00






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






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







If - Conditions








SS_RealCache[4] Less than 0.00







Then - Actions








-------- Stage 2 Setup --------








Hashtable - Save 2 as 8 of SS_UHandle in SS_Hash








Unit - Add a SS_EggHatchTime second Generic expiration timer to SS_U








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







Else - Actions





Else - Actions




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




-------- Stage 2 --------




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




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





If - Conditions






SS_TempInteger Equal to 2






(SS_U is dead) Equal to True





Then - Actions






Set SS_TempPoint = (Position of SS_U)






-------- Hatching SFX --------






Special Effect - Create a special effect at SS_TempPoint using SS_HatchSFX






Special Effect - Destroy (Last created special effect)






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






-------- Hatching --------






Unit - Create 1 SS_SpiritScorpion for (Owner of SS_U) at SS_TempPoint facing 270.00 degrees






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






Custom script: call RemoveLocation (udg_SS_TempPoint)






-------- Setup --------






Set SS_TempU = (Last created unit)






Custom script: set udg_SS_UHandleC = GetHandleId(udg_SS_TempU)






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






-------- Passing Parameters --------






-------- Curse Damage --------






Hashtable - Save (Load 5 of SS_UHandle from SS_Hash) as 5 of SS_UHandleC in SS_Hash






-------- Curse Duration --------






Hashtable - Save (Load 6 of SS_UHandle from SS_Hash) as 6 of SS_UHandleC in SS_Hash






-------- Target search AOE --------






Hashtable - Save (Load 7 of SS_UHandle from SS_Hash) as 7 of SS_UHandleC in SS_Hash






-------- Amount of possible attacks --------






Hashtable - Save (Load 12 of SS_UHandle from SS_Hash) as 12 of SS_UHandleC in SS_Hash






-------- Current amount of attacks --------






Hashtable - Save 0 as 13 of SS_UHandle in SS_Hash






-------- Current Fade state --------






Hashtable - Save 0.00 as 11 of SS_UHandle in SS_Hash






-------- Stage ID --------






Hashtable - Save 3 as 8 of SS_UHandleC in SS_Hash






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






-------- Casting Unit ID --------






Hashtable - Save Handle OfSS_TempU2 as 1 of SS_UHandleC in SS_Hash






-------- Target ID --------






Hashtable - Save Handle OfSS_TempU2 as 9 of SS_UHandleC in SS_Hash






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






-------- Setting up unit groups --------






Unit Group - Add SS_TempU to SS_Scorpions






Unit Group - Remove SS_U from SS_Scorpions






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





Else - Actions




-------- Stages 3 & 4 --------




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





If - Conditions






Or - Any (Conditions) are true







Conditions








SS_TempInteger Equal to 3








SS_TempInteger Equal to 4





Then - Actions






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






Set SS_TempU3 = (Load 9 of SS_UHandle in SS_Hash)






-------- Fading Control --------






Set SS_RealCache[5] = ((Load 11 of SS_UHandle from SS_Hash) + 0.20)






Animation - Change SS_U's vertex coloring to (100.00%, 100.00%, 100.00%) with SS_RealCache[5]% transparency






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







If - Conditions








SS_RealCache[5] Greater than or equal to 80.00







Then - Actions








-------- Unit cleanup --------








Set SS_TempPoint = (Position of SS_U)








-------- Unit disappear SFX --------








Special Effect - Create a special effect at SS_TempPoint using SS_RemovalSFX








Special Effect - Destroy (Last created special effect)








Unit Group - Remove SS_U from SS_Scorpions








Unit Group - Remove SS_TempU3 from SS_Targets








-------- Trigger control --------








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









If - Conditions










(Number of units in SS_Scorpions) Equal to 0









Then - Actions










Trigger - Turn off (This trigger)









Else - Actions








Hashtable - Clear all child hashtables of child SS_UHandle in SS_Hash








Unit - Remove SS_U from the game








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








Custom script: call RemoveLocation(udg_SS_TempPoint)







Else - Actions






Hashtable - Save SS_RealCache[5] as 11 of SS_UHandle in SS_Hash






Set SS_TempInteger2 = (Load 10 of SS_UHandle from SS_Hash)






-------- Stage 3 --------






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







If - Conditions








SS_TempInteger Equal to 3







Then - Actions








-------- Target finding --------








Set SS_TempPoint = (Position of SS_U)








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









If - Conditions










SS_TempU3 Equal to SS_TempU2









Then - Actions










-------- Selection of possible targets --------










Set SS_TempGroup = (Units within (Load 7 of SS_UHandle from SS_Hash) of SS_TempPoint)










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











Loop - Actions












-------- Target filter --------












Set SS_TempU = (Picked unit)












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













If - Conditions














SS_TempU3 Equal to SS_TempU2














(SS_TempU is Magic Immune) Equal to False














((Unit-type of SS_TempU) is A structure) Equal to False














(SS_TempU is A ground unit) Equal to True














(SS_TempU is alive) Equal to True














(SS_TempU belongs to an enemy of (Owner of SS_U)) Equal to True














(SS_TempU is in SS_Targets) Equal to False














(SS_TempU is in SS_Scorpions) Equal to False













Then - Actions














-------- Target setup --------














Set SS_TempU3 = SS_TempU














Hashtable - Save Handle OfSS_TempU3 as 9 of SS_UHandle in SS_Hash














Hashtable - Save 30 as 10 of SS_UHandle in SS_Hash














Unit Group - Add SS_TempU3 to SS_Targets













Else - Actions










Custom script: call DestroyGroup(udg_SS_TempGroup)









Else - Actions










-------- Animation Control --------










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











If - Conditions












SS_TempInteger2 Equal to 30











Then - Actions












Animation - Play SS_U's morph animation











Else - Actions












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













If - Conditions














SS_TempInteger2 Equal to 60













Then - Actions














Animation - Play SS_U's morph alternate animation














Hashtable - Save 0 as 10 of SS_UHandle in SS_Hash













Else - Actions










-------- Movement --------










Set SS_TempPoint2 = (Position of SS_TempU3)










Custom script: set udg_SS_TempX = GetUnitX(udg_SS_U)










Custom script: set udg_SS_TempY = GetUnitY(udg_SS_U)










Set SS_Angle = (Angle from SS_TempPoint to SS_TempPoint2)










Custom script: call SetUnitX(udg_SS_U, udg_SS_TempX + udg_SS_ScorpionRunSpeed * Cos(udg_SS_Angle * bj_DEGTORAD))










Custom script: call SetUnitY(udg_SS_U, udg_SS_TempY + udg_SS_ScorpionRunSpeed * Sin(udg_SS_Angle * bj_DEGTORAD))










Custom script: call SetUnitFacing(udg_SS_U, udg_SS_Angle)










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










-------- Animation control --------










Hashtable - Save ((Load 10 of SS_UHandle from SS_Hash) + 1) as 10 of SS_UHandle in SS_Hash










-------- Target within range check --------










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











If - Conditions












(Distance between SS_TempPoint and SS_TempPoint2) Less than or equal to 90.00











Then - Actions












-------- Attack setup --------












Hashtable - Save 4 as 8 of SS_UHandle in SS_Hash












Hashtable - Save 30 as 10 of SS_UHandle in SS_Hash











Else - Actions










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










Custom script: call RemoveLocation (udg_SS_TempPoint2)








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








Custom script: call RemoveLocation (udg_SS_TempPoint)







Else - Actions






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






-------- Stage 4 --------






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







If - Conditions








SS_TempInteger Equal to 4







Then - Actions








-------- Animation control --------








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









If - Conditions










SS_TempInteger2 Equal to 30









Then - Actions










Animation - Play SS_U's spell animation










Hashtable - Save 0 as 10 of SS_UHandle in SS_Hash









Else - Actions








-------- Target Setup --------








Custom script: set udg_SS_UHandleC = GetHandleId(udg_SS_TempU3)








-------- Damage --------








Unit - Cause SS_TempU2 to damage SS_TempU3, dealing (Load 5 of SS_UHandle from SS_Hash) damage of attack type Spells and damage type Normal








-------- Curse setup --------








Unit Group - Add SS_TempU3 to SS_Scorpions








Hashtable - Save 5 as 8 of SS_UHandleC in SS_Hash








Special Effect - Create a special effect attached to the overhead of SS_TempU3 using SS_CurseSFX








-------- Saving curse effect --------








Hashtable - Save Handle Of(Last created special effect) as 14 of SS_UHandleC in SS_Hash








-------- Saving curse duration --------








Hashtable - Save (Load 6 of SS_UHandle from SS_Hash) as 6 of SS_UHandleC in SS_Hash








-------- Saving time to freeze countdown --------








Hashtable - Save 100.00 as 15 of SS_UHandleC in SS_Hash








-------- Saving Delayer Timer --------








Hashtable - Save 0 as 16 of SS_UHandle in SS_Hash








-------- Saving Current Curse duration timer --------








Hashtable - Save 0.00 as 17 of SS_UHandleC in SS_Hash








-------- Saving original caster as Target --------








Hashtable - Save Handle OfSS_TempU2 as 9 of SS_UHandle in SS_Hash








-------- Saving amount of attacks dealt --------








Set SS_TempInteger2 = ((Load 13 of SS_UHandle from SS_Hash) + 1)








Hashtable - Save SS_TempInteger2 as 13 of SS_UHandle in SS_Hash








-------- New target find --------








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









If - Conditions










SS_TempInteger2 Less than (Load 12 of SS_UHandle from SS_Hash)









Then - Actions










-------- New target setup --------










Hashtable - Save 30 as 10 of SS_UHandle in SS_Hash










Hashtable - Save 3 as 8 of SS_UHandle in SS_Hash









Else - Actions










-------- Unit cleanup --------










Set SS_TempPoint = (Position of SS_U)










-------- Disappear SFX --------










Special Effect - Create a special effect at SS_TempPoint using SS_RemovalSFX










Special Effect - Destroy (Last created special effect)










Unit Group - Remove SS_U from SS_Scorpions










Unit Group - Remove SS_TempU3 from SS_Targets










-------- Trigger check --------










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











If - Conditions












(Number of units in SS_Scorpions) Equal to 0











Then - Actions












Trigger - Turn off (This trigger)











Else - Actions










Hashtable - Clear all child hashtables of child SS_UHandle in SS_Hash










Unit - Remove SS_U from the game










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










Custom script: call RemoveLocation(udg_SS_TempPoint)







Else - Actions






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





Else - Actions




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




-------- Stages 5 & 6 --------




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





If - Conditions






(SS_U is dead) Equal to True






Or - Any (Conditions) are true







Conditions








SS_TempInteger Equal to 5








SS_TempInteger Equal to 6





Then - Actions






-------- Death cleanup --------






Animation - Change SS_U's animation speed to 100.00% of its original speed






Unit Group - Remove SS_U from SS_Targets






Special Effect - Destroy (Load 14 of SS_UHandle in SS_Hash)






Hashtable - Clear all child hashtables of child SS_UHandle in SS_Hash






-------- Trigger check --------






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







If - Conditions








(Number of units in SS_Scorpions) Equal to 0







Then - Actions








Trigger - Turn off (This trigger)







Else - Actions





Else - Actions






-------- Stage 5 --------






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







If - Conditions








(Load 8 of SS_UHandle from SS_Hash) Equal to 5







Then - Actions








-------- Current freeze Countdown setting --------








Set SS_RealCache[6] = ((Load 15 of SS_UHandle from SS_Hash) - 1.00)








-------- Animation slowing --------








Animation - Change SS_U's animation speed to SS_RealCache[6]% of its original speed








-------- Sacing current countdown --------








Hashtable - Save SS_RealCache[6] as 15 of SS_UHandle in SS_Hash








-------- Countdown complete --------








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









If - Conditions










SS_RealCache[6] Equal to 0.00









Then - Actions










-------- Freezing unit --------










Unit - Pause SS_U










-------- Stage ID --------










Hashtable - Save 6 as 8 of SS_UHandle in SS_Hash










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









Else - Actions







Else - Actions






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






-------- Stage 6 --------






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







If - Conditions








(Load 8 of SS_UHandle from SS_Hash) Equal to 6







Then - Actions








-------- Unfreeze timer --------








Set SS_TempInteger2 = (Load 16 of SS_UHandle from SS_Hash)








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









If - Conditions










SS_TempInteger2 Equal to 20









Then - Actions










-------- Delayer reset --------










Hashtable - Save 0 as 16 of SS_UHandle in SS_Hash










-------- Current Curse duration expired increase --------










Set SS_TempReal = ((Load 17 of SS_UHandle from SS_Hash) + 1.00)










Hashtable - Save SS_TempReal as 17 of SS_UHandle in SS_Hash










-------- Curse end check --------










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











If - Conditions












SS_TempReal Greater than or equal to (Load 6 of SS_UHandle from SS_Hash)











Then - Actions












-------- Spell cleanup --------












Unit - Unpause SS_U












Animation - Change SS_U's animation speed to 100.00% of its original speed












Special Effect - Destroy (Load 14 of SS_UHandle in SS_Hash)












Unit Group - Remove SS_U from SS_Targets












Unit Group - Remove SS_U from SS_Scorpions












Hashtable - Clear all child hashtables of child SS_UHandle in SS_Hash












-------- Trigger check --------












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













If - Conditions














(Number of units in SS_Scorpions) Equal to 0













Then - Actions














Trigger - Turn off (This trigger)













Else - Actions











Else - Actions









Else - Actions










-------- Delayer Increase --------










Hashtable - Save (SS_TempInteger2 + 1) as 16 of SS_UHandle in SS_Hash







Else - Actions






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




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