Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
Summon a Tensile Field, this field reduced the Movement Speed of nearby enemy units at 450 AoE. Also, drain HP of target and add to himself - Draining can not kill the target if the target is a hero - And also healing nearby friendly units per second. Lasts 40 seconds.
Level 1 - Drain 10 + 0.6x intelligence of Caster, Healing 10 + 0.6x Strength of Target.
Level 2 - Drain 20 + 0.8x intelligence of Caster, Healing 20 + 0.8x Strength of Target.
Level 3 - Drain 30 + 1.0x intelligence of Caster, Healing 30 + 1.0x Strength of Target.
Cooldown 60
Manacost 110/120/130
How to use it:
1- Under Preferences, make sure you have "Automatically create unknown variables while pasting trigger data" checked
2- Copy models to your map (credit: @Mythic )
3- Copy dummy unit, abilities, and buff (TFDummy - Call Field, Tensile Field, Slow Aura - Tensile Field) to your map.
4- Copy Tensile Field Ability trigger to your map.
The tensile field is a field of concentrated biomagic that cripples foes, draining their life force
by an amount equal to the caster's magical affinity, and giving it to allies.
As of the current version (v1.0), this bundle has been set to Awaiting...
The tensile field is a field of concentrated biomagic that cripples foes, draining their life force
by an amount equal to the caster's magical affinity, and giving it to allies.
There are a lot of memory leaks in the spell which are not properly cleaned up, considering that
the loop trigger part of the spell as well as the cast trigger executes multiple times.
These are the leaks detected:
TF Cast
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 Tensile Field
Then - Actions
Comment: ---- TF_Point is not cleaned up within this block ----
Set TF_Point = (Target point of ability being cast)
Unit - Create 1 TFDummy for (Owner of (Triggering unit)) at TF_Point facing Default building facing degrees
Comment: ---- Storing (Last created unit) to a variable would be more efficient ----
Unit - Add a 40.00 second Generic expiration timer to (Last created unit)
Unit - Set life of (Last created unit) to 1.00
Hero - Modify Intelligence of (Last created unit): Set to (Intelligence of (Triggering unit) (Exclude bonuses))
Hero - Modify Agility of (Last created unit): Set to (Level of Tensile Field for (Triggering unit))
Unit Group - Add (Last created unit) to TF_Group
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(TF_Group is empty) Equal to False
Then - Actions
Trigger - Turn on TF Loop <gen>
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Call Field
Then - Actions
Comment: ---- A position handle is created and not cleaned up within this block ----
Special Effect - Create a special effect at (Position of (Target unit of ability being cast)) using Call of Dread Green.mdx
Special Effect - Destroy (Last created special effect)
Else - Actions
TF Loop
Events
Time - Every 1.00 seconds of game time
Conditions
Actions
Unit Group - Pick every unit in TF_Group and do (Actions)
Loop - Actions
Comment: ---- Storing (Picked unit) to a variable is suggested at this point. ----
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) is dead) Equal to True
Then - Actions
Unit Group - Remove (Picked unit) from TF_Group
Else - Actions
Comment: ---- Based on the trigger action, the removed (Picked unit) might still be ordered to ----
Comment: ---- channel the same spell. This wastes at least 2 unit groups and 2 locations. ----
Unit - Order (Picked unit) to Special - Channel
Comment: ---- Move this line above to the suggested point. ----
Set TF_Dummy = (Picked unit)
Comment: ---- The following leaks are spotted: ----
Comment: ---- Unit group leak, Location leak ----
Unit Group - Pick every unit in (Units within 450.00 of (Position of (Picked unit)) matching ((((Matching unit) belongs to an enemy of (Owner of TF_Dummy)) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((Life of (Matching unit)) Greater than (((Max life of (Matching unit) and do (Actions)
Loop - Actions
Comment: ---- Storing (Picked unit) to a separate variable is suggested. ----
Set TF_Damage = (((Real((Agility of TF_Dummy (Exclude bonuses)))) x 10.00) + ((Real((Intelligence of TF_Dummy (Exclude bonuses)))) x (0.40 + ((Real((Agility of TF_Dummy (Exclude bonuses)))) x 0.20))))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Life of (Picked unit)) Greater than or equal to TF_Damage
Then - Actions
Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - TF_Damage)
Unit - Set life of TF_Dummy to ((Life of TF_Dummy) + TF_Damage)
Else - Actions
Set TF_Damage = (Life of (Picked unit))
Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - TF_Damage)
Unit - Set life of TF_Dummy to ((Life of TF_Dummy) + TF_Damage)
Comment: ---- Another bunch of leaks are spotted: ----
Comment: ---- Unit group leak, Location leak ----
Unit Group - Pick every unit in (Units within 450.00 of (Position of (Picked unit)) matching ((((Matching unit) belongs to an ally of (Owner of TF_Dummy)) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((Life of (Matching unit)) Less than (Max life of (Matching unit)))))) and do (Actions)
Loop - Actions
Comment: ---- Storing (Picked unit) to a separate variable is suggested. ----
Set TF_Heal = (((Real((Agility of TF_Dummy (Exclude bonuses)))) x 10.00) + ((Real((Strength of (Picked unit) (Exclude bonuses)))) x (0.40 + ((Real((Agility of TF_Dummy (Exclude bonuses)))) x 0.20))))
Comment: ---- This will leak about n number of unit groups ----
Comment: ---- where n is the number of units within the group above ----
Comment: ---- Storing the above group to a variable is highly suggested. ----
Set TF_Heal = (TF_Heal / (Real((Number of units in (Units within 450.00 of (Position of TF_Dummy) matching ((((Matching unit) belongs to an ally of (Owner of TF_Dummy)) Equal to True) and ((((Matching unit) is alive) Equal to True) and (((Life of (Matching unit)) + TF_Heal))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Life of TF_Dummy) Greater than TF_Heal
Then - Actions
Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + TF_Heal)
Unit - Set life of TF_Dummy to ((Life of TF_Dummy) - TF_Heal)
Else - Actions
Set TF_Heal = ((Life of TF_Dummy) - 1.00)
Unit - Set life of (Picked unit) to ((Life of (Picked unit)) + TF_Heal)
Unit - Set life of TF_Dummy to ((Life of TF_Dummy) - TF_Heal)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(TF_Group is empty) Equal to True
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Aside from the memory leaks, there is still some work that needs to be done regarding the
configurability of the system. The amount of heal is calculated based on fixed factors
that cannot be easily configured. The amount of damage dealt likewise suffers from the same
issue.
The link posted by Devalut would help greatly in making the unit group filters easy to
read and understand. I would suggest giving it a look.
As of the current version (v1.0), this bundle has been set to Awaiting Update
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.