I started this hero about 3 weeks ago, planning on creating a full detailed hero which included a skin, all custom ability icons and a unique storyline. The idea got boring after the first week and I slowly progressed doing bits and pieces every few days or so. I'm releasing it now because i really can't be bothered trying to finish it off.
I guess this is more of a 'spell pack'. It contains a spell book with 3 time locking spells and a resistance spell which grants a form of immunity to the time lock spells.
Screenshots are kind of a bit useless since they are kind of instant.
Credits go to Tinki3 for template and Flare for MUI with GUI tutorial.
---------------------------------------------------------------
Implementation
To implement you must copy all variables, abilities, buffs, dummy, units and sounds for the triggers to function properly.
All Abilties/Variables/etc used are listed in the Trigger Comment window of each trigger used.
The above implementation are instructions for implementing the spells, as it is.
Modification of the abilities in the object editor as well as the trigger editor may be needed because the time lock spells only have 1 level and are contained in 1 spellbook. Modification is also needed to make the time lock spells standalone.
---------------------------------------------------------------
Known bugs (which I am either too lazy to fix, or don't know how)
-If a unit is time locked whilst already time locked, Whichever duration reaches 0 first will unfreeze the unit.
-Time Lock (radius) mui-ness is quite buggy and not fully mui. Sometimes iits mui sometimes its not, don't ask why.
Spells
Time Lock (Single)
Time Lock (Area)
Time Lock (Radius)
Well, enjoy =]
Update!
-Used the conditions suggested by flare.
-fixed some coding on the Time Lock Single spell.
-changed the dummy model to none.mdl
I guess this is more of a 'spell pack'. It contains a spell book with 3 time locking spells and a resistance spell which grants a form of immunity to the time lock spells.
Screenshots are kind of a bit useless since they are kind of instant.
Credits go to Tinki3 for template and Flare for MUI with GUI tutorial.
---------------------------------------------------------------
Implementation
To implement you must copy all variables, abilities, buffs, dummy, units and sounds for the triggers to function properly.
All Abilties/Variables/etc used are listed in the Trigger Comment window of each trigger used.
The above implementation are instructions for implementing the spells, as it is.
Modification of the abilities in the object editor as well as the trigger editor may be needed because the time lock spells only have 1 level and are contained in 1 spellbook. Modification is also needed to make the time lock spells standalone.
---------------------------------------------------------------
Known bugs (which I am either too lazy to fix, or don't know how)
-If a unit is time locked whilst already time locked, Whichever duration reaches 0 first will unfreeze the unit.
-Time Lock (radius) mui-ness is quite buggy and not fully mui. Sometimes iits mui sometimes its not, don't ask why.
Spells
Time Lock (Single)
Iroh channels his power to lock a single target in time.|n|nLocks the target unit in time for 3 seconds preventing all actions.|n|n|c006ba5d27 second cooldown.|r
Code:
Time Lock Single
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Time Lock (Single)
Actions
-------- MUI --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
MUI_Value Less than 1000
Then - Actions
Set MUI_Value = (MUI_Value + 1)
Else - Actions
Set MUI_Value = 1
-------- Set Variables --------
Set TLS_Target[MUI_Value] = (Target unit of ability being cast)
Set tmp_point = (Position of TLS_Target[MUI_Value])
Set TLS_DurationDisplay[MUI_Value] = 3
Set TLS_CurrentDuration[MUI_Value] = 3.00
-------- First Floating Text --------
Floating Text - Create floating text that reads (String(TLS_DurationDisplay[MUI_Value])) above TLS_Target[MUI_Value] with Z offset 0.00, using font size 12.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.00 seconds
Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
-------- Effects --------
Sound - Play PossessionMissileHit1 <gen> at 100.00% volume, located at tmp_point with Z offset 0.00
-------- Dummy Cast Buff --------
-------- Check If Resistance Is Learnt --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Resistance for TLS_Target[MUI_Value]) Less than 1
Then - Actions
Animation - Change TLS_Target[MUI_Value]'s animation speed to 0.00% of its original speed
Unit - Pause TLS_Target[MUI_Value]
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Add Time Lock (Buff) to (Last created unit)
Unit - Order (Last created unit) to Neutral Fire Lord - Soul Burn TLS_Target[MUI_Value]
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Else - Actions
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Add Time Lock (Resist) to (Last created unit)
Unit - Set level of Time Lock (Resist) for (Last created unit) to (Level of Resistance for TLS_Target[MUI_Value])
Unit - Order (Last created unit) to Neutral Fire Lord - Soul Burn TLS_Target[MUI_Value]
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Animation - Change TLS_Target[MUI_Value]'s animation speed to 100.00% of its original speed
-------- Check If Resistance Is Learnt --------
-------- Add To Dummy Group --------
Set tmp_point = (Center of (Playable map area))
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Set the custom value of (Last created unit) to MUI_Value
Unit Group - Add (Last created unit) to TLS_UGroup
Custom script: call RemoveLocation (udg_tmp_point)
Code:
Time Lock Single Check
Events
Time - Every 0.01 seconds of game time
Conditions
(Number of units in TLS_UGroup) Greater than 0
Actions
Unit Group - Pick every unit in TLS_UGroup and do (Actions)
Loop - Actions
Set tmp_integer = (Custom value of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
TLS_CurrentDuration[tmp_integer] Equal to 2.00
TLS_CurrentDuration[tmp_integer] Equal to 1.00
Then - Actions
Set TLS_DurationDisplay[tmp_integer] = (TLS_DurationDisplay[tmp_integer] - 1)
-------- The -1 is to fix a bug with the reals rounding up (unexplained) --------
-------- Floating Text --------
Floating Text - Create floating text that reads (String(TLS_DurationDisplay[tmp_integer])) above TLS_Target[tmp_integer] with Z offset 0.00, using font size 12.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.00 seconds
Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((TLS_Target[tmp_integer] is dead) Equal to True) or (TLS_CurrentDuration[tmp_integer] Less than or equal to 0.00)
Then - Actions
-------- Effects --------
Animation - Change TLS_Target[tmp_integer]'s animation speed to 100.00% of its original speed
Unit - Unpause TLS_Target[tmp_integer]
Unit - Remove Time Locked buff from TLS_Target[tmp_integer]
Unit - Remove Time Locked (Resist) buff from TLS_Target[tmp_integer]
Unit Group - Remove (Picked unit) from TLS_UGroup
Unit - Remove (Picked unit) from the game
Set TLS_DurationDisplay[tmp_integer] = 0
Set TLS_CurrentDuration[tmp_integer] = 0.00
Else - Actions
Set TLS_CurrentDuration[tmp_integer] = (TLS_CurrentDuration[tmp_integer] - 0.01)
Time Lock (Area)
Further practice now allows Iroh to once again lock targets within an area rather than a single target.|n|nLocks all units in a 400 diameter in time for 2 seconds preventing all actions. Does not affect time mages.|n|n|c006ba5d28 second cooldown.|r
Code:
Time Lock Area
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Time Lock (Area)
Actions
-------- MUI --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
MUI_Value Less than 1000
Then - Actions
Set MUI_Value = (MUI_Value + 1)
Else - Actions
Set MUI_Value = 1
-------- Set Variables --------
Set TLA_Point[MUI_Value] = (Target point of ability being cast)
Set TLA_Targets[MUI_Value] = (Units within 200.00 of TLA_Point[MUI_Value] matching (((Matching unit) is alive) Equal to True))
Set TLA_DurationDisplay[MUI_Value] = 2
Set TLA_CurrentDuration[MUI_Value] = 2.00
-------- First Floating Text --------
Floating Text - Create floating text that reads (String(TLA_DurationDisplay[MUI_Value])) at TLA_Point[MUI_Value] with Z offset 0.00, using font size 12.00, color (42.00%, 55.00%, 100.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.00 seconds
Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
-------- Effects --------
Sound - Play PossessionMissileHit1 <gen> at 100.00% volume, located at TLA_Point[MUI_Value] with Z offset 0.00
-------- Unit Effects --------
Unit Group - Pick every unit in TLA_Targets[MUI_Value] and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Picked unit) Equal to (Casting unit)
Then - Actions
Unit - Order (Picked unit) to Stop
Else - Actions
-------- Dummy Cast Buff --------
Set tmp_point = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Resistance for (Picked unit)) Less than 1
Then - Actions
Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
Unit - Pause (Picked unit)
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Add Time Lock (Buff) to (Last created unit)
Unit - Order (Last created unit) to Neutral Fire Lord - Soul Burn (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Else - Actions
-------- Check If Resistance Is Learnt --------
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Add Time Lock (Resist) to (Last created unit)
Unit - Set level of Time Lock (Resist) for (Last created unit) to (Level of Resistance for (Picked unit))
Unit - Order (Last created unit) to Neutral Fire Lord - Soul Burn (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
Unit - Unpause (Picked unit)
-------- Check If Resistance Is Learnt --------
-------- Add To Dummy Group --------
Set tmp_point = (Center of (Playable map area))
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Set the custom value of (Last created unit) to MUI_Value
Unit Group - Add (Last created unit) to TLA_UGroup
Custom script: call RemoveLocation (udg_tmp_point)
Code:
Time Lock Area Check
Events
Time - Every 0.01 seconds of game time
Conditions
(Number of units in TLA_UGroup) Greater than 0
Actions
Unit Group - Pick every unit in TLA_UGroup and do (Actions)
Loop - Actions
Set tmp_integer = (Custom value of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TLA_CurrentDuration[tmp_integer] Equal to 1.00
Then - Actions
Set TLA_DurationDisplay[tmp_integer] = ((Integer(TLA_CurrentDuration[tmp_integer])) + 1)
-------- The +1 is to fix a bug with the reals rounding up (unexplained) --------
-------- Floating Text --------
Floating Text - Create floating text that reads (String(TLA_DurationDisplay[tmp_integer])) at TLA_Point[tmp_integer] with Z offset 0.00, using font size 12.00, color (42.00%, 55.00%, 100.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.00 seconds
Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TLA_CurrentDuration[tmp_integer] Less than or equal to 0.00
Then - Actions
Unit Group - Pick every unit in TLA_Targets[tmp_integer] and do (Actions)
Loop - Actions
-------- Effects --------
Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
Unit - Unpause (Picked unit)
Unit - Remove Time Locked buff from (Picked unit)
Unit - Remove Time Locked (Resist) buff from (Picked unit)
Unit Group - Remove (Picked unit) from TLA_UGroup
Unit - Remove (Picked unit) from the game
-------- Leaks --------
Set TLA_CurrentDuration[tmp_integer] = 0.00
Set TLA_DurationDisplay[tmp_integer] = 0
Custom script: call DestroyGroup (udg_TLA_Targets[udg_tmp_integer])
Custom script: call RemoveLocation (udg_TLA_Point[udg_tmp_integer])
Else - Actions
Set TLA_CurrentDuration[tmp_integer] = (TLA_CurrentDuration[tmp_integer] - 0.01)
Time Lock (Radius)
Iroh channels his mana into a concentrated orb of energy in front of his position. The orb rapidly grows and explodes in 3 seconds, freezing all units within a 600 radius for 4 seconds and dealing damage to all enemies equal to Int x 2. A maximum of 245 mana is channeled into the orb of time after spell is casted.|n|n|c006ba5d225 second cooldown.|r
Code:
Time Lock Radius
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Time Lock (Radius)
Actions
-------- MUI --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
MUI_Value Less than 1000
Then - Actions
Set MUI_Value = (MUI_Value + 1)
Else - Actions
Set MUI_Value = 1
-------- Set Variables --------
Set TLR_Caster[MUI_Value] = (Casting unit)
Set TLR_CasterPoint[MUI_Value] = (Position of TLR_Caster[MUI_Value])
Set TLR_OrbPoint[MUI_Value] = (TLR_CasterPoint[MUI_Value] offset by 300.00 towards (Facing of TLR_Caster[MUI_Value]) degrees)
Set TLR_CurrentOrbSize[MUI_Value] = 100.00
Set TLR_OrbDuration[tmp_integer] = 0.00
Set TLR_CurrentDuration[MUI_Value] = 4.00
Set TLR_DurationDisplay[MUI_Value] = 4
-------- Create Orb/Effects --------
Unit - Create 1 Dummy Ball for Neutral Passive at TLR_OrbPoint[MUI_Value] facing Default building facing degrees
Set TLR_Orb[MUI_Value] = (Last created unit)
Unit - Set the custom value of (Last created unit) to MUI_Value
Unit Group - Add (Last created unit) to TLR_OrbGroup
-------- Leaks --------
Custom script: call RemoveLocation (udg_TLR_CasterPoint[udg_MUI_Value])
Code:
Enlarge Orbs
Events
Time - Every 0.03 seconds of game time
Conditions
(Number of units in TLR_OrbGroup) Greater than 0
Actions
Unit Group - Pick every unit in TLR_OrbGroup and do (Actions)
Loop - Actions
Set tmp_integer = (Custom value of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TLR_OrbDuration[tmp_integer] Greater than or equal to 3.00
Then - Actions
Unit - Kill TLR_Orb[tmp_integer]
Animation - Change TLR_Orb[tmp_integer]'s animation speed to 150.00% of its original speed
-------- Freeze Targets --------
Set TLR_Targets[tmp_integer] = (Units within 500.00 of TLR_OrbPoint[tmp_integer] matching (((Matching unit) is alive) Equal to True))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TLR_IsLocked[tmp_integer] Equal to False
Then - Actions
Unit Group - Pick every unit in TLR_Targets[tmp_integer] and do (Actions)
Loop - Actions
Set tmp_point = (Position of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Resistance for (Picked unit)) Less than 1
Then - Actions
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Add Time Lock (Buff) to (Last created unit)
Unit - Order (Last created unit) to Neutral Fire Lord - Soul Burn (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
Unit - Pause (Picked unit)
Else - Actions
-------- Check If Resistance Is Learnt --------
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Add Time Lock (Resist) to (Last created unit)
Unit - Set level of Time Lock (Resist) for (Last created unit) to (Level of Resistance for (Picked unit))
Unit - Order (Last created unit) to Neutral Fire Lord - Soul Burn (Picked unit)
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
-------- Check If Resistance Is Learnt --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Picked unit) belongs to an enemy of (Owner of TLR_Caster[tmp_integer])) Equal to True
Then - Actions
Unit - Cause TLR_Caster[tmp_integer] to damage (Picked unit), dealing ((Real((Intelligence of TLR_Caster[tmp_integer] (Include bonuses)))) x 2.00) damage of attack type Spells and damage type Normal
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TLR_OrbDuration[tmp_integer] Greater than or equal to 3.50
Then - Actions
Unit Group - Remove TLR_Orb[tmp_integer] from TLR_OrbGroup
Unit - Remove TLR_Orb[tmp_integer] from the game
-------- Remove Orb --------
Set TLR_Orb[tmp_integer] = No unit
Else - Actions
Else - Actions
Set TLR_IsLocked[tmp_integer] = True
-------- Check If Sound Is Played --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TLR_PlaySound[tmp_integer] Equal to False
Then - Actions
Sound - Play DarkSummoningLaunch1 <gen> at 100.00% volume, located at TLR_OrbPoint[tmp_integer] with Z offset 0.00
Sound - Play DeathCoilSpecialArt1 <gen> at 100.00% volume, located at TLR_OrbPoint[tmp_integer] with Z offset 0.00
Set TLR_PlaySound[tmp_integer] = True
-------- Check If Sound Is Played --------
-------- If used to check for duration so that the death animation is displayed before removed --------
-------- First Floating Text --------
Floating Text - Create floating text that reads (String(TLR_DurationDisplay[tmp_integer])) at TLR_OrbPoint[tmp_integer] with Z offset 0.00, using font size 12.00, color (0.00%, 100.00%, 0.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.00 seconds
Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
-------- Add To Dummy Group --------
Set tmp_point = (Center of (Playable map area))
Unit - Create 1 Dummy for Neutral Passive at tmp_point facing Default building facing degrees
Unit - Set the custom value of (Last created unit) to tmp_integer
Unit Group - Add (Last created unit) to TLR_UGroup
Else - Actions
Else - Actions
-------- Grow --------
Set TLR_CurrentOrbSize[tmp_integer] = (TLR_CurrentOrbSize[tmp_integer] + 2.30)
Animation - Change TLR_Orb[tmp_integer]'s size to (TLR_CurrentOrbSize[tmp_integer]%, TLR_CurrentOrbSize[tmp_integer]%, TLR_CurrentOrbSize[tmp_integer]%) of its original size
Set TLR_OrbDuration[tmp_integer] = (TLR_OrbDuration[tmp_integer] + 0.03)
Code:
Time Lock Radius Check
Events
Time - Every 0.01 seconds of game time
Conditions
(Number of units in TLR_UGroup) Greater than 0
Actions
Unit Group - Pick every unit in TLR_UGroup and do (Actions)
Loop - Actions
Set tmp_integer = (Custom value of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Or - Any (Conditions) are true
Conditions
TLR_CurrentDuration[tmp_integer] Equal to 3.00
TLR_CurrentDuration[tmp_integer] Equal to 2.00
TLR_CurrentDuration[tmp_integer] Equal to 1.00
Then - Actions
Set TLR_DurationDisplay[tmp_integer] = ((Integer(TLR_CurrentDuration[tmp_integer])) + 1)
-------- The -1 is to fix a bug with the reals rounding up (unexplained) --------
-------- Floating Text --------
Floating Text - Create floating text that reads (String(TLR_DurationDisplay[tmp_integer])) at TLR_OrbPoint[tmp_integer] with Z offset 0.00, using font size 12.00, color (0.00%, 100.00%, 0.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.00 seconds
Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TLR_CurrentDuration[tmp_integer] Less than or equal to 0.00
Then - Actions
Unit Group - Pick every unit in TLR_Targets[tmp_integer] and do (Actions)
Loop - Actions
-------- Effects --------
Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
Animation - Change (Picked unit) turn speed to 0.50
Unit - Set (Picked unit) movement speed to (Default movement speed of (Picked unit))
Unit - Unpause (Picked unit)
Unit - Remove Time Locked buff from (Picked unit)
Unit - Remove Time Locked (Resist) buff from (Picked unit)
Unit Group - Remove (Picked unit) from TLR_UGroup
Unit - Remove (Picked unit) from the game
-------- Leaks --------
Custom script: call DestroyGroup (udg_TLR_Targets[udg_tmp_integer])
Custom script: call RemoveLocation (udg_TLR_OrbPoint[udg_tmp_integer])
Else - Actions
Set TLR_CurrentDuration[tmp_integer] = (TLR_CurrentDuration[tmp_integer] - 0.01)
Well, enjoy =]
Update!
-Used the conditions suggested by flare.
-fixed some coding on the Time Lock Single spell.
-changed the dummy model to none.mdl