- Joined
- Mar 29, 2012
- Messages
- 542
I was making a spell named 'Tornado' but i got a problem...
The caster start the ability, and it spawns a big tornado. The tornado will pick all enemies in range to be spin around the tornado, but it's not happens (I test it by adding a special effect)
I am new using hashtables (switch from indexing to hashtables)
The caster start the ability, and it spawns a big tornado. The tornado will pick all enemies in range to be spin around the tornado, but it's not happens (I test it by adding a special effect)
-
T Configuration
-

Events
-


Map initialization
-
-

Conditions
-

Actions
-


Set T_Ability = Tornado
-


Set T_Dummy_Type = Dummy
-


Set T_Max_Distance[1] = 1500.00
-


Set T_Max_Distance[2] = 1500.00
-


Set T_Max_Distance[3] = 1500.00
-


Set T_Speed[1] = 20.00
-


Set T_Speed[2] = 20.00
-


Set T_Speed[3] = 20.00
-


Set T_Damage[1] = 50.00
-


Set T_Damage[2] = 60.00
-


Set T_Damage[3] = 70.00
-


Set T_AoE[1] = 300.00
-


Set T_AoE[2] = 300.00
-


Set T_AoE[3] = 300.00
-


Set T_Scale[1] = 200.00
-


Set T_Scale[2] = 200.00
-


Set T_Scale[3] = 200.00
-


Set T_Max_Height[1] = 400.00
-


Set T_Max_Height[2] = 400.00
-


Set T_Max_Height[3] = 400.00
-


Set T_Fly_Speed[1] = 10.00
-


Set T_Fly_Speed[2] = 10.00
-


Set T_Fly_Speed[3] = 10.00
-


Set T_Pull_Speed[1] = 25.00
-


Set T_Pull_Speed[2] = 25.00
-


Set T_Pull_Speed[3] = 25.00
-


Set T_Gravity_Speed[1] = 2.00
-


Set T_Gravity_Speed[2] = 2.00
-


Set T_Gravity_Speed[3] = 2.00
-


Set T_Model = Abilities\Spells\Other\Tornado\TornadoElementalSmall.mdl
-


Set T_Target_Effect = Abilities\Spells\Other\Tornado\Tornado_Target.mdl
-


Set T_Attack_Type = Normal
-


Set T_Damage_Type = Normal
-


Set T_Interval = 0.03
-


-------- =========================================================================== --------
-


Hashtable - Create a hashtable
-


Set T_Hashtable = (Last created hashtable)
-


Trigger - Add to T Loop <gen> the event (Time - Every T_Interval seconds of game time)
-


Custom script: set udg_Harvester = CreateUnit(Player(15), 'hpea', 0, 0, 0)
-


Custom script: call ShowUnit(udg_Harvester, false)
-


Custom script: set udg_Harvest_Order = "harvest"
-
-
-
T Cast
-

Events
-


Unit - A unit Starts the effect of an ability
-
-

Conditions
-


(Ability being cast) Equal to T_Ability
-
-

Actions
-


Set T_Unit[1] = (Triggering unit)
-


Set T_Owner = (Triggering player)
-


Set TempLoc = (Position of T_Unit[1])
-


Set TempLoc2 = (Target point of ability being cast)
-


Set T_Real[1] = 0.00
-


Set T_Real[2] = (Angle from TempLoc to TempLoc2)
-


Set T_Level = (Level of T_Ability for T_Unit[1])
-


Custom script: call RemoveLocation(udg_TempLoc2)
-


Set TempLoc2 = (TempLoc offset by 50.00 towards T_Real[2] degrees)
-


Custom script: set udg_T_Unit[2] = CreateUnitAtLoc(udg_T_Owner, udg_T_Dummy_Type, udg_TempLoc2, udg_T_Real[2])
-


Special Effect - Create a special effect attached to the origin of T_Unit[2] using T_Model
-


Animation - Change T_Unit[2]'s size to (T_Scale[T_Level]%, T_Scale[T_Level]%, T_Scale[T_Level]%) of its original size
-


Custom script: set udg_T_Handle_Id = GetHandleId(udg_T_Unit[2])
-


Hashtable - Save Handle OfT_Owner as (Key owner) of T_Handle_Id in T_Hashtable
-


Hashtable - Save T_Real[1] as (Key distance) of T_Handle_Id in T_Hashtable
-


Hashtable - Save T_Real[2] as (Key angle) of T_Handle_Id in T_Hashtable
-


Hashtable - Save T_Level as (Key level) of T_Handle_Id in T_Hashtable
-


Custom script: call RemoveLocation(udg_TempLoc)
-


Custom script: call RemoveLocation(udg_TempLoc2)
-


Unit Group - Add T_Unit[2] to T_Dummy_Group
-


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



If - Conditions
-




(T Loop <gen> is on) Equal to False
-
-



Then - Actions
-




Trigger - Turn on T Loop <gen>
-
-



Else - Actions
-
-
-
-
T Loop
-

Events
-

Conditions
-

Actions
-


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



Loop - Actions
-




Set T_Unit[1] = (Picked unit)
-




Custom script: set udg_T_Handle_Id = GetHandleId(udg_T_Unit[1])
-




Set T_Owner = (Load (Key owner) of T_Handle_Id in T_Hashtable)
-




Set T_Real[1] = (Load (Key distance) of T_Handle_Id from T_Hashtable)
-




Set T_Level = (Load (Key level) of T_Handle_Id from T_Hashtable)
-




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





If - Conditions
-






T_Real[1] Less than T_Max_Distance[T_Level]
-
-





Then - Actions
-






Set T_Real[2] = (Load (Key angle) of T_Handle_Id from T_Hashtable)
-






Custom script: set udg_T_Real[3] = GetUnitX(udg_T_Unit[1])
-






Custom script: set udg_T_Real[4] = GetUnitY(udg_T_Unit[1])
-






Custom script: set udg_T_Real[5] = udg_T_Real[2] * bj_DEGTORAD
-






Custom script: call SetUnitX(udg_T_Unit[1], udg_T_Real[3] + udg_T_Speed[udg_T_Level] * Cos(udg_T_Real[5]))
-






Custom script: call SetUnitY(udg_T_Unit[1], udg_T_Real[4] + udg_T_Speed[udg_T_Level] * Sin(udg_T_Real[5]))
-






Hashtable - Save (T_Real[1] + T_Speed[T_Level]) as (Key distance) of T_Handle_Id in T_Hashtable
-






Set TempLoc = (Position of T_Unit[1])
-






Custom script: set bj_wantDestroyGroup = true
-






Unit Group - Pick every unit in (Units within T_AoE[T_Level] of TempLoc) and do (Actions)
-







Loop - Actions
-








Set T_Unit[2] = (Picked unit)
-








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









If - Conditions
-










And - All (Conditions) are true
-











Conditions
-












(T_Unit[2] is dead) Equal to False
-












(T_Unit[2] belongs to an ally of T_Owner) Equal to False
-












(T_Unit[2] is A ground unit) Equal to True
-












(T_Unit[2] is A flying unit) Equal to True
-












(T_Unit[2] is Magic Immune) Equal to False
-
-
-
-









Then - Actions
-










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











If - Conditions
-












(T_Unit[2] is A structure) Equal to True
-
-











Then - Actions
-












Unit - Cause T_Unit[1] to damage T_Unit[2], dealing T_Damage[T_Level] damage of attack type T_Attack_Type and damage type T_Damage_Type
-
-











Else - Actions
-












Custom script: set udg_T_Handle_Id = GetHandleId(udg_T_Unit[2])
-












Hashtable - Save Handle OfT_Unit[1] as (Key core) of T_Handle_Id in T_Hashtable
-












Hashtable - Save Handle OfT_Owner as (Key owner) of T_Handle_Id in T_Hashtable
-












Hashtable - Save T_Level as (Key level) of T_Handle_Id in T_Hashtable
-












Unit Group - Add T_Unit[2] to T_Target_Group
-
-
-
-









Else - Actions
-
-
-
-






Custom script: call RemoveLocation(udg_TempLoc)
-
-





Else - Actions
-






Unit - Kill T_Unit[1]
-
-
-
-
-


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



Loop - Actions
-
-
-

Last edited:










