Moderator
M
Dark Wave
DW Config
Events
Map initialization
Conditions
Actions
-------- ----------------------------------- --------
Hashtable - Create a hashtable
Set Dark_Wave_Hash = (Last created hashtable)
-------- ----------------------------------- --------
Set Dark_Wave_Ability = Dark Wave
-------- ----------------------------------- --------
Set Dark_Wave_Speed[1] = 45.00
Set Dark_Wave_Speed[2] = 45.00
Set Dark_Wave_Speed[3] = 45.00
Set Dark_Wave_Speed[4] = 45.00
-------- ----------------------------------- --------
Set Dark_Wave_Radius_Detect[1] = 150.00
Set Dark_Wave_Radius_Detect[2] = 150.00
Set Dark_Wave_Radius_Detect[3] = 150.00
Set Dark_Wave_Radius_Detect[4] = 150.00
-------- ----------------------------------- --------
Set Dark_Wave_Effect = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
-------- ----------------------------------- --------
Set Dark_Wave_DestroyTrees = True
Set Dark_Wave_Alive = True
Set Dark_Wave_Ally = False
Set Dark_Wave_Structure = False
Set Dark_Wave_Mechanical = False
Set Dark_Wave_MagicImmune = False
-------- ----------------------------------- --------
Set Dark_Wave_Time_Event = 0.03
-------- ----------------------------------- --------
Trigger - Add to DW Loop <gen> the event (Time - Every Dark_Wave_Time_Event seconds of game time)
-------- -------------------------------------------------------------------------------------------------------------------- --------
-------- Knockback System --------
-------- ----------------------------------- --------
Set DWKB_Speed[1] = 12.00
Set DWKB_Speed[2] = 12.00
Set DWKB_Speed[3] = 12.00
Set DWKB_Speed[4] = 12.00
-------- ----------------------------------- --------
Set DWKB_Distance[1] = 200.00
Set DWKB_Distance[2] = 200.00
Set DWKB_Distance[3] = 200.00
Set DWKB_Distance[4] = 200.00
-------- ----------------------------------- --------
Set DWKB_Damage[1] = 150.00
Set DWKB_Damage[2] = 200.00
Set DWKB_Damage[3] = 250.00
Set DWKB_Damage[4] = 300.00
-------- ----------------------------------- --------
Set Knockback_Attack_Type = Spells
Set Knockback_Damage_Type = Unknown
-------- ----------------------------------- --------
Set Knockback_Effect = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
-------- ----------------------------------- --------
Hashtable - Create a hashtable
Set Knockback_Hash = (Last created hashtable)
-------- ----------------------------------- --------
Set Knockback_Time_Event = 0.03
-------- ----------------------------------- --------
Trigger - Add to DW KB <gen> the event (Time - Every Knockback_Time_Event seconds of game time)
-------- -------------------------------------------------------------------------------------------------------------------- --------
Custom script: set udg_IsDestructableHarvester = CreateUnit(Player(15), 'hpea', 0, 0, 0)
Custom script: call UnitAddAbility(udg_IsDestructableHarvester, 'Aloc')
Custom script: call UnitAddAbility(udg_IsDestructableHarvester, 'Ahrl')
Unit - Hide IsDestructableHarvester
DW Cast
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Dark_Wave_Ability
Actions
Custom script: local integer h
Set Dark_Wave_Caster = (Triggering unit)
Set Dark_Wave_TempLoc1 = (Position of Dark_Wave_Caster)
Set Dark_Wave_TempLoc2 = (Target point of ability being cast)
Set Dark_Wave_Ability_Level = (Level of Dark_Wave_Ability for Dark_Wave_Caster)
Set Dark_Wave_Angle = (Angle from Dark_Wave_TempLoc1 to Dark_Wave_TempLoc2)
Set Dark_Wave_Distance = (Distance between Dark_Wave_TempLoc1 and Dark_Wave_TempLoc2)
Custom script: call RemoveLocation(udg_Dark_Wave_TempLoc1)
Custom script: call RemoveLocation(udg_Dark_Wave_TempLoc2)
-------- -------------------------------------------------------------------------------------------------------------------- --------
Custom script: set h = GetHandleId( udg_Dark_Wave_Caster)
Custom script: call SaveReal( udg_Dark_Wave_Hash, h, 0, udg_Dark_Wave_Angle)
Custom script: call SaveReal( udg_Dark_Wave_Hash, h, 1, udg_Dark_Wave_Distance)
Custom script: call SaveReal( udg_Dark_Wave_Hash, h, 2, udg_Dark_Wave_Speed[udg_Dark_Wave_Ability_Level])
Custom script: call SaveReal( udg_Dark_Wave_Hash, h, 3, udg_Dark_Wave_Radius_Detect[udg_Dark_Wave_Ability_Level])
-------- -------------------------------------------------------------------------------------------------------------------- --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Dark_Wave_CasterG is empty) Equal to True
Then - Actions
Trigger - Turn on DW Loop <gen>
Else - Actions
Unit - Turn collision for Dark_Wave_Caster Off
Unit Group - Add Dark_Wave_Caster to Dark_Wave_CasterG
DW Loop
Events
Conditions
Actions
Unit Group - Pick every unit in Dark_Wave_CasterG and do (Actions)
Loop - Actions
-------- create local variables for move action --------
Custom script: local real x
Custom script: local real y
-------- setting unit --------
Set Dark_Wave_Caster = (Picked unit)
-------- getting unit handle Id --------
Custom script: set udg_Dark_Wave_HandleID = GetHandleId( udg_Dark_Wave_Caster )
-------- distance reducer --------
Hashtable - Save ((Load 1 of Dark_Wave_HandleID from Dark_Wave_Hash) - (Load 2 of Dark_Wave_HandleID from Dark_Wave_Hash)) as 1 of Dark_Wave_HandleID in Dark_Wave_Hash
-------- unit location --------
Set Dark_Wave_TempLoc1 = (Position of Dark_Wave_Caster)
-------- get unit x --------
Custom script: set x = GetUnitX( udg_Dark_Wave_Caster )
-------- get unit y --------
Custom script: set y = GetUnitY( udg_Dark_Wave_Caster )
-------- create ITE --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of Dark_Wave_HandleID from Dark_Wave_Hash) Greater than 0.00
(Terrain pathing at Dark_Wave_TempLoc1 of type Walkability is off) Equal to False
Then - Actions
-------- Move the unit --------
Custom script: call SetUnitX(udg_Dark_Wave_Caster, x + LoadReal( udg_Dark_Wave_Hash, udg_Dark_Wave_HandleID, 2 ) * Cos(LoadReal( udg_Dark_Wave_Hash, udg_Dark_Wave_HandleID, 0 ) * bj_DEGTORAD))
Custom script: call SetUnitY(udg_Dark_Wave_Caster, y + LoadReal( udg_Dark_Wave_Hash, udg_Dark_Wave_HandleID, 2 ) * Sin(LoadReal( udg_Dark_Wave_Hash, udg_Dark_Wave_HandleID, 0 ) * bj_DEGTORAD))
-------- create effect --------
Custom script: call DestroyEffect(AddSpecialEffect(udg_Dark_Wave_Effect, x, y))
-------- tree destroyer --------
Destructible - Pick every destructible within (Load 3 of Dark_Wave_HandleID from Dark_Wave_Hash) of Dark_Wave_TempLoc1 and do (Actions)
Loop - Actions
-------- get pick tree --------
Set IsDestructableTree = (Picked destructible)
-------- create ITE --------
Custom script: if IssueTargetOrderById(udg_IsDestructableHarvester,852018,udg_IsDestructableTree) and IssueImmediateOrderById(udg_IsDestructableHarvester,851972) and GetWidgetLife(udg_IsDestructableTree) > 0.405 then
-------- then if true kill the tree --------
Destructible - Kill IsDestructableTree
Custom script: else
Custom script: endif
-------- create unit group variable --------
Set Dark_Wave_Search_Target = (Units within (Load 3 of Dark_Wave_HandleID from Dark_Wave_Hash) of Dark_Wave_TempLoc1)
-------- set the created group in action unit group --------
Unit Group - Pick every unit in Dark_Wave_Search_Target and do (Actions)
Loop - Actions
-------- get the pick unit --------
Set Dark_Wave_Knockback_Unit = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Dark_Wave_Knockback_Unit is alive) Equal to Dark_Wave_Alive
(Dark_Wave_Knockback_Unit is A structure) Equal to Dark_Wave_Structure
(Dark_Wave_Knockback_Unit is Mechanical) Equal to Dark_Wave_Mechanical
(Dark_Wave_Knockback_Unit is Magic Immune) Equal to Dark_Wave_MagicImmune
(Dark_Wave_Knockback_Unit belongs to an ally of (Owner of Dark_Wave_Caster)) Equal to Dark_Wave_Ally
(Dark_Wave_Knockback_Unit is in Knockback_Group) Equal to False
Dark_Wave_Knockback_Unit Not equal to Dark_Wave_Caster
Then - Actions
-------- get location of picked unit --------
Set Dark_Wave_TempLoc3 = (Position of Dark_Wave_Knockback_Unit)
-------- get the level of ability of main unit --------
-------- Dark_Wave_Caster is the main unit --------
Set Dark_Wave_Ability_Level = (Level of Dark_Wave_Ability for Dark_Wave_Caster)
-------- get handle id of pick unit --------
-------- Dark_Wave_Knockback_Unit is the pick unit --------
Custom script: set udg_Knockback_HandleId = GetHandleId( udg_Dark_Wave_Knockback_Unit)
-------- saving damage of knockback --------
Hashtable - Save DWKB_Damage[Dark_Wave_Ability_Level] as 0 of Knockback_HandleId in Knockback_Hash
-------- saving distance --------
Hashtable - Save DWKB_Distance[Dark_Wave_Ability_Level] as 1 of Knockback_HandleId in Knockback_Hash
-------- saving speed --------
Hashtable - Save DWKB_Speed[Dark_Wave_Ability_Level] as 2 of Knockback_HandleId in Knockback_Hash
-------- saving angle --------
Hashtable - Save (Angle from Dark_Wave_TempLoc1 to Dark_Wave_TempLoc3) as 3 of Knockback_HandleId in Knockback_Hash
Hashtable - Save Handle OfDark_Wave_Caster as 4 of Knockback_HandleId in Knockback_Hash
-------- saving main unit --------
-------- I save the main unit to damage the pick unit --------
-------- Create ITE for Turning on the DW KB trigger --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Knockback_Group is empty) Equal to True
Then - Actions
-------- if the condition is true then turn on --------
Trigger - Turn on DW KB <gen>
Else - Actions
-------- turning off collision of pick unit --------
Unit - Turn collision for Dark_Wave_Knockback_Unit Off
-------- then add pick unit in group so that pick unit will not repeat it all ^^ --------
Unit Group - Add Dark_Wave_Knockback_Unit to Knockback_Group
-------- remove leak --------
Custom script: call RemoveLocation(udg_Dark_Wave_TempLoc3)
Else - Actions
-------- remove leak --------
Custom script: call RemoveLocation(udg_Dark_Wave_TempLoc1)
Else - Actions
-------- remove leak --------
Custom script: call RemoveLocation(udg_Dark_Wave_TempLoc1)
-------- turning on collision of main unit --------
Unit - Turn collision for Dark_Wave_Caster On
-------- remove main unit in this group --------
Unit Group - Remove Dark_Wave_Caster from Dark_Wave_CasterG
-------- remove all child key of main unit in Dark_Wave_Hash --------
Hashtable - Clear all child hashtables of child Dark_Wave_HandleID in Dark_Wave_Hash
-------- create ITE --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Dark_Wave_CasterG is empty) Equal to True
Then - Actions
-------- if coindtion is true the turn of this trigger --------
Trigger - Turn off (This trigger)
Else - Actions
-------- END --------
DW KB
Events
Conditions
Actions
Unit Group - Pick every unit in Knockback_Group and do (Actions)
Loop - Actions
-------- create local variables --------
Custom script: local real kbx
Custom script: local real kby
-------- get main unit --------
Set Knockback_Unit = (Picked unit)
-------- get main unit's X and Y --------
Custom script: set kbx = GetUnitX( udg_Knockback_Unit )
Custom script: set kby = GetUnitY( udg_Knockback_Unit )
-------- get main unit's location --------
Set Knockback_TempLoc1 = (Position of Knockback_Unit)
-------- get main unit's ID --------
Custom script: set udg_Knockback_HandleId = GetHandleId( udg_Knockback_Unit)
-------- distance reducer --------
Hashtable - Save ((Load 1 of Knockback_HandleId from Knockback_Hash) - (Load 2 of Knockback_HandleId from Knockback_Hash)) as 1 of Knockback_HandleId in Knockback_Hash
-------- create ITE for ending --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of Knockback_HandleId from Knockback_Hash) Greater than 0.00
(Terrain pathing at Knockback_TempLoc1 of type Walkability is off) Equal to False
Then - Actions
-------- move the main unit by using X and Y --------
Custom script: call SetUnitX(udg_Knockback_Unit, kbx + LoadReal(udg_Knockback_Hash, udg_Knockback_HandleId, 2 ) * Cos(LoadReal( udg_Knockback_Hash, udg_Knockback_HandleId, 3 ) * bj_DEGTORAD))
Custom script: call SetUnitY(udg_Knockback_Unit, kby + LoadReal(udg_Knockback_Hash, udg_Knockback_HandleId, 2 ) * Sin(LoadReal( udg_Knockback_Hash, udg_Knockback_HandleId, 3 ) * bj_DEGTORAD))
-------- craete special effect --------
Custom script: call DestroyEffect(AddSpecialEffect(udg_Knockback_Effect, kbx, kby))
Else - Actions
-------- remove leak --------
Custom script: call RemoveLocation( udg_Knockback_TempLoc1 )
-------- damage the main unit --------
Unit - Cause (Load 4 of Knockback_HandleId in Knockback_Hash) to damage Knockback_Unit, dealing (Load 0 of Knockback_HandleId from Knockback_Hash) damage of attack type Knockback_Attack_Type and damage type Knockback_Damage_Type
-------- turn on collision of main unit --------
Unit - Turn collision for Knockback_Unit On
-------- remove main unit in this group --------
Unit Group - Remove Knockback_Unit from Knockback_Group
-------- remove all child key of main unit in Knockback_Hash --------
Hashtable - Clear all child hashtables of child Knockback_HandleId in Knockback_Hash
-------- create ITE --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Knockback_Group is empty) Equal to True
Then - Actions
-------- if condition is true then turn this trigger off --------
Trigger - Turn off (This trigger)
Else - Actions
-------- remove leak --------
Custom script: call RemoveLocation( udg_Knockback_TempLoc1 )