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!
This is a pack containing my favourite works I have completed over my time being here on the hive, these were either fun to create for me, or ones I really loved the effect of, and I hope you will enjoy them as much as I have.
I have decided to include quite a few details on these spells, including the full trigger list, and tooltips for each of them.
FULL SPELL LIST
- Arcane Drain
- Beserk Plant
- Chaos Portal
- Energy Glyph
- Energy Matrix
- Explosive Toxic Gas
- Helios Collision
- Magnetised Energy Bombs
- Sentry Rocks
- Soul Tether
- Spirit Scorpions
- Volcanic Crush
- Weeds
- Wild Energy
TOOLTIPS
[c]Arcane Drain[c]Disperses draining fields randomly in the general direction of the target area, draining fields will absorb life and mana from the target and return the health and mana to the caster. The form the spell takes depends on its level.
Level 1 - Drains 25 health and 12 mana per second.
Level 2 - Drains 30 health and 15 mana per second.
Level 3 - Drains 35 health and 17 mana per second.[r]
[c]Beserk Plant[c]Learn: Throws a small plant at the target point. Being thrown causes the plant to be unfathomably enraged and it takes it anger out by attacking nearby enemies dealing damage every hit and knocking them back away from the plant.
Level 1: Throws a small plant at the target point. Being thrown causes the plant to be unfathomably enraged and it takes it anger out by attacking enemies within a 400 range dealing 45 damage every hit and knocking them back away from the plant.
Level 2: Throws a small plant at the target point. Being thrown causes the plant to be unfathomably enraged and it takes it anger out by attacking enemies within a 500 range dealing 70 damage every hit and knocking them back away from the plant.
Level 3: Throws a small plant at the target point. Being thrown causes the plant to be unfathomably enraged and it takes it anger out by attacking enemies within a 600 range dealing 85 damage every hit and knocking them back away from the plant. [r]
[c]Chaos Portal[c]Creates a portal at the target point which will trap nearby units within it's effect radius and push and pull them around the cage tearing them apart dealing damage and repelling units trying to enter the cage away from it.
Level 1 - 325 AOE, 15 Damage per hit 5 Pulses, Weak knockback
Level 2 - 425 AOE, 20 Damage per hit, 7 Pulses, Medium knockback
Level 3 - 525 AOE, 25 Damage per hit, 9 Pulses, Strong knockback[r]
[c]Energy Glyph[c]
Creates a Glyph on the floor which will drain the mana from all units (including allies) and then will release orbs of pure energy onto the surrounding area dealing damage (amount of orbs is based on how much mana was drained/level of ability. It can also drain the remaining energy found within dead corpses of units. All units in the area due to the draining effect have their speed reduced by 50%
Spell drains up to 400 mana (drain is spread evenly on all effected units)[r]
[c]Energy Matrix[c]Generates (2 + (1 * level of ability)) Energy Cores which spin around the caster absorbing (9 x level of ability) health per second from nearby units and converting the health into (1.35 x level of ability) mana per second, has up to (10 + (5 * level of ability)) targets. Lasts (3 + (2 * level of ability)) seconds and has a cooldown of 12 seconds.[r]
[c]Explosive Toxic Gas[c]Toxic Gas:
Spews Gas onto the target area and spreads out randomly from the target point which poisons Organic units and rusts Mechanicals, dealing damage every second, if the gas is ignited it will explode dealing extra damage and setting nearby units on fire.
Level 1 - 4 Directions, Short expansion, weak poison, weak explosion
Level 2 - 6 Directions, Medium expansion, medium poison, medium explosion
Level 3 - 8 Directions, Long expansion, Strong poison, Fatal explosion
Volanic Rock:
Throws a volcanic rock at the target area dealing damage and setting nearby units on fire dealing damage over a short time also ignites toxic gas
Level 1 - Weak damage, Small explosion, 1st degree burn
Level 2 - Medium damage, Medium explosion, 2nd Degree Burn
Level 3 - Heavy Damage, Large explosion, 3rd Degree Burn[r]
[c]Helios Collision[c]The power of Helios forms infront of the caster generating a micro-sun which will travel slowly toward the target point, The sun drags enemies into it, upon reaching its destination the sun explodes dealing damage and throwing the enemy units back
[c]Magnetised Energy Bombs[c]Learn: Creates Magnetised Energy Bombs which orbit the caster, which leave a trail of fire and pull nearby units into them damaging them until they explode, knocking back all enemies caught within them. Dealing an additional 75 damage if the units collide into a rock. Also deals further mana damage with a feedback effect.
Level 1: Creates 2 Magnetised Energy Bombs which orbit the caster, which leave a trail of fire and pull nearby units into them damaging them dealing 12 damage per second until they explode dealing 150 damage and knocking back all enemies caught within them. Dealing an additional 75 damage if the units collide into a rock. Also deals a further 75 mana damage, which has a feedback effect dealing an additional 75 damage.
Level 2: Creates 3 Magnetised Energy Bombs which orbit the caster, which leave a trail of fire and pull nearby units into them damaging them dealing 24 damage per second until they explode dealing 200 damage and knocking back all enemies caught within them. Dealing an additional 75 damage if the units collide into a rock. Also deals a further 100 mana damage, which has a feedback effect dealing an additional 125 damage.
Level 3: Creates 4 Magnetised Energy Bombs which orbit the caster, which leave a trail of fire and pull nearby units into them damaging them dealing 36 damage per second until they explode dealing 250 damage and knocking back all enemies caught within them. Dealing an additional 75 damage if the units collide into a rock. Also deals a further 150 mana damage, which has a feedback effect dealing an additional 225 damage.[r]
[c]Sentry Rocks[c]Learn:Creates pairs of rocks which orbit eachother and the caster, they will seek out enemies which come within a given radius of the rocks and fall on them dealing damage. Rocks last a few seconds
Level 1: Creates 4 pairs of rocks which orbit eachother and the caster, they will seek out enemies which come within a 300 radius of the rocks and fall on them dealing 200 damage each. Rocks last 7 seconds
Level 2: Creates 5 pairs of rocks which orbit eachother and the caster, they will seek out enemies which come within a 400 radius of the rocks and fall on them dealing 250 damage each. Rocks last 9 seconds
Level 3: Creates 6 pairs of rocks which orbit eachother and the caster, they will seek out enemies which come within a 400 radius of the rocks and fall on them dealing 300 damage each. Rocks last 11 seconds[r]
[c]Soul Tether[c]Summons a Soul Tether at the target point. The Soul Tether will take hold of enemy units' souls when they become weak, restoring their power and giving control to the caster, however as a penalty they must remain close to the Tether to sustain themselves, and will die without it. The Tether can sustain their lives for a short time.
Level 1 - 250 AOE, 15 second duration, sustains for 7.5 seconds
Level 2 - 300 AOE, 20 second duration, sustains for 10 seconds
Level 3 - 350 AOE, 25 second duration, sustains for 12.5 seconds [r]
[c]Spirit Scorpions[c]Throws a volley of spiritual Scorpion eggs randomly onto the target area, the scorpions then hatch and chase down nearby enemies and lay a curse upon them which will deal damage as well as freeze them temporarily.
Level 1 - 8 Eggs, 75 damage, 6 second stun, 1 hit, 250 search range
Level 2 - 10 Eggs, 100 damage, 8 second stun, 2 hits, 300 search range
Level 3 - 12 Eggs, 125 damage, 10 second stun, 3 hits, 350 search range[r]
[c]Volcanic Crush[c]Summons 5 Flaming rocks which mark a target for a volcanic energy bomb. The bomb will grow to a critical mass, and then fall onto the location of the target. Can target both enemy and friendly targets, though only damages enemies.
Level 1 - Deals 340 damage at full size.
Level 2 - Deals 380 damage at full size.
Level 3 - Deals 420 damage at full size.[r]
[c]Weeds[c]Learn: Creates seeds which will absorb enemy's hitpoints to grow bigger, upon reaching full size the plant will start attacking a specfic enemy dealing heavy damage to that particular targets.
Level 1: 4 Seeds, 7 Seconds duration, 120 drain damage per second, 300 AOE.
Level 2: 5 Seeds, 9 Seconds duration, 150 drain damage per second, 400 AOE.
Level 3: 6 Seeds, 11 Seconds duration, 180 drain damage per second, 500 AOE.
Level 1: Creates seeds which will absorb enemy's hitpoints to grow bigger, upon reaching full size the plant will start attacking a specfic enemy dealing heavy damage to that particular targets.
Level 1: 4 Seeds, 7 Seconds duration, 120 drain damage per second, 300 AOE.
Level 2: Creates seeds which will absorb enemy's hitpoints to grow bigger, upon reaching full size the plant will start attacking a specfic enemy dealing heavy damage to that particular targets.
Level 2: 5 Seeds, 9 Seconds duration, 150 drain damage per second, 400 AOE.
Level 3: Creates seeds which will absorb enemy's hitpoints to grow bigger, upon reaching full size the plant will start attacking a specfic enemy dealing heavy damage to that particular targets.
Level 3: 6 Seeds, 11 Seconds duration, 180 drain damage per second, 500 AOE. [r]
[c]Wild Energy[c]Passive spell, Gives a chance of 20 + (20 x level of ability)% to create an orb of energy which will home in on the nearest enemy dealing (0.5 x level of ability) x (max mana - current mana) in an area of 100 + (50 x level of ability) When a spell is casted. Mana cost of spell being casted when this spell is activated is not included.
TRIGGER LISTINGS
- Arcane Drain
Arcane Drain Configuration
Events
Map initialization
Conditions
Actions
-------- -------- --------
-------- Determines the Parts of the spell used --------
-------- Launch Projectile --------
Set AD_Conditions[0] = True
-------- Drain Health --------
Set AD_Conditions[1] = True
-------- Drain Health Projectile --------
Set AD_Conditions[2] = True
-------- Drain Mana --------
Set AD_Conditions[3] = True
-------- Drain Mana Projectile --------
Set AD_Conditions[4] = True
-------- ProjectileSpeed/Incoming Time --------
Set AD_Conditions[5] = False
-------- Cycle Themes --------
Set AD_Conditions[6] = False
-------- If cycle themes is set to False, this determines which Theme will be used --------
Set AD_DefaultTheme = 1
Set AD_SpellsThemeCount = 3
-------- Determines the targets available for the spell --------
-------- Target is alive --------
Set AD_Conditions[7] = True
-------- Target is Magic Immune --------
Set AD_Conditions[8] = False
-------- Target is Structure --------
Set AD_Conditions[9] = False
-------- Target is Ground unit --------
Set AD_Conditions[10] = True
-------- Target is Belongs to an enemy --------
Set AD_Conditions[11] = True
-------- Full Mana Drain --------
Set AD_Conditions[12] = True
-------- Other conditions --------
-------- Healing SFX --------
Set AD_Conditions[13] = True
-------- Mana SFX --------
Set AD_Conditions[14] = True
-------- Drain Mana SFX --------
Set AD_Conditions[15] = True
-------- Drain Health SFX --------
Set AD_Conditions[16] = True
-------- Randomise Theme --------
Set AD_Conditions[17] = True
-------- Controls amount of SFX --------
Set AD_SFXWaitTime = 15.00
-------- Controls the minimum spread out distance of the drain areas --------
Set AD_MinDistanceSpread = 90.00
Set AD_RecieveSFXLimiter = 3
-------- Determines the Projectile Movement --------
-------- Launch Projectile --------
Set AD_LaunchArcMultiplyerBase = 0.30
Set AD_LaunchArcMultiplyerPL = 0.00
Set AD_LaunchSpeedBase = 4.00
Set AD_LaunchSpeedPerLevel = 1.00
Set AD_LaunchIncomingTimeBase = 2.50
Set AD_LaunchIncomingTimePerLevel = -0.50
-------- Heal Projectile --------
Set AD_HealthArcMultiplyerBase = 0.45
Set AD_HealthArcMultiplyerPL = 0.00
Set AD_HealSpeedBase = 5.00
Set AD_HealSpeedPerLevel = 0.00
Set AD_HealthIncomingTimeBase = 2.00
Set AD_HealthIncomingTimePerLevel = -0.25
-------- Mana Projectile --------
Set AD_ManaArcMultiplyerBase = 0.50
Set AD_ManaArcMultiplyerPL = 0.00
Set AD_ManaSpeedBase = 5.00
Set AD_ManaSpeedPerLevel = 0.00
Set AD_ManaIncomingTimeBase = 2.00
Set AD_ManaIncomingTimePerLevel = -0.25
-------- Determines the area that the Drain Areas will scatter across --------
Set AD_AoeBase = 200.00
Set AD_AoePerLevel = 50.00
-------- Determines how much space each Drain Area covers --------
Set AD_DrainAreaAOEBase = 120.00
Set AD_DrainAreaAOEPerLevel = 0.00
-------- Determines the amount of Drain areas created --------
Set AD_DrainAreaCountBase = 4
Set AD_DrainAreaCountPerLevel = 2
-------- Determines how much Health damage a unit takes per second --------
Set AD_HealthDamagePerSecBase = 20.00
Set AD_HealthDamagePerSecPerLevel = 5.00
-------- Determines how much Mana damage a unit takes per second --------
Set AD_ManaDamagePerSecBase = 10.00
Set AD_ManaDamagePerSecPerLevel = 2.50
-------- Determines how long the drain area will last (seconds) --------
-------- When changing this, remember to modify the object data spell and increase the "follow through time" to these values +2 or 3 seconds (depending on method of movement) --------
-------- Otherwise the spell will end early --------
Set AD_DrainAreaDurationBase = 2.00
Set AD_DrainAreaDurationPerLevel = 3.00
-------- Determines the scaling of the SFX --------
-------- Determines the scaling of the Launch Projectiles --------
Set AD_EffectScalingLaunchBase = 100.00
Set AD_EffectScalingLaunchPL = 0.00
-------- Determines the scaling of the Drain Areas --------
Set AD_EffectScalingDrainAreaBase = 80.00
Set AD_EffectScalingDrainAreaPL = 0.00
-------- Determines the scaling of the Drained Health Projectiles --------
Set AD_EffectScalingHealthBase = 50.00
Set AD_EffectScalingHealthPL = 0.00
-------- Determines the scaling of the Drained Mana Projectiles --------
Set AD_EffectScalingManaBase = 50.00
Set AD_EffectScalingManaPL = 0.00
-------- Determines the unit model used as the Drain Area --------
Set AD_DrainAreaSFX[1] = Abilities\Spells\Other\Drain\ManaDrainTarget.mdl
Set AD_DrainAreaSFX[2] = Abilities\Spells\Orc\LiquidFire\Liquidfire.mdl
Set AD_DrainAreaSFX[3] = Abilities\Spells\NightElf\EntanglingRoots\EntanglingRootsTarget.mdl
-------- Determines the SFX used as the Launch Projectile --------
Set AD_LaunchSFX[1] = Abilities\Weapons\FrostWyrmMissile\FrostWyrmMissile.mdl
Set AD_LaunchSFX[2] = Abilities\Weapons\RedDragonBreath\RedDragonMissile.mdl
Set AD_LaunchSFX[3] = Abilities\Weapons\GreenDragonMissile\GreenDragonMissile.mdl
-------- Determines the SFX used as the Drained Health Projectile --------
Set AD_HealthDrainSFX[1] = Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
Set AD_HealthDrainSFX[2] = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl
Set AD_HealthDrainSFX[3] = Abilities\Weapons\IllidanMissile\IllidanMissile.mdl
-------- Determines the unit model used as the Drained Mana Projectile --------
Set AD_ManaDrainSFX[1] = Abilities\Weapons\FarseerMissile\FarseerMissile.mdl
Set AD_ManaDrainSFX[2] = Abilities\Weapons\LavaSpawnMissile\LavaSpawnMissile.mdl
Set AD_ManaDrainSFX[3] = Units\Human\HeroBloodElf\BloodElfBall.mdl
-------- Determines the unit model used as the Healing effect --------
Set AD_HealedLifeSFX[1] = Abilities\Spells\Items\ResourceItems\ResourceEffectTarget.mdl
Set AD_HealedLifeSFX[2] = Abilities\Spells\Orc\FeralSpirit\feralspirittarget.mdl
Set AD_HealedLifeSFX[3] = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
-------- Determines the unit model used as the Healing effect for mana --------
Set AD_HealedManaSFX[1] = Abilities\Spells\Undead\FrostArmor\FrostArmorDamage.mdl
Set AD_HealedManaSFX[2] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
Set AD_HealedManaSFX[3] = Abilities\Spells\Undead\Sleep\SleepSpecialArt.mdl
-------- Determines the unit model used as the Drained effect --------
Set AD_DrainedHealthSFX[1] = Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Set AD_DrainedHealthSFX[2] = Abilities\Spells\Other\Incinerate\IncinerateBuff.mdl
Set AD_DrainedHealthSFX[3] = Abilities\Spells\NightElf\Immolation\ImmolationDamage.mdl
-------- Determines the unit model used as the Drained effect for mana --------
Set AD_DrainedManaSFX[1] = Abilities\Spells\Items\SpellShieldAmulet\SpellShieldCaster.mdl
Set AD_DrainedManaSFX[2] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
Set AD_DrainedManaSFX[3] = Abilities\Spells\Undead\CarrionSwarm\CarrionSwarmDamage.mdl
-------- Determines the unit model used as the effect for ending the spell --------
Set AD_EndSFX[1] = Abilities\Spells\Human\DispelMagic\DispelMagicTarget.mdl
Set AD_EndSFX[2] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
Set AD_EndSFX[3] = Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
-------- Determines the unit model use when the effect is cancelled early --------
Set AD_CancelledSFX[1] = Abilities\Spells\Human\DispelMagic\DispelMagicTarget.mdl
Set AD_CancelledSFX[2] = Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
Set AD_CancelledSFX[3] = Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
-------- Determines the ability used as a dummy --------
Set AD_Spell = Arcane Drain
-------- Determines the order used to check that the spell is being cast (should match ability used) --------
Set AD_Order = channel
-------- Determines the Dummy used to attach all the effects to --------
Set AD_DummyType = Arcane Drain
-------- -------- --------
-------- Determines the Speed of the loop trigger --------
Set AD_TimerSpeed = 0.03
Trigger - Add to Arcane Drain Loop <gen> the event (Time - Every AD_TimerSpeed seconds of game time)
-------- -------- --------
Arcane Drain Activation
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to AD_Spell
Actions
Set AD_TempUnit2 = (Triggering unit)
Set AD_TempPlayer = (Owner of AD_TempUnit2)
Set AD_TempInteger2 = (Level of AD_Spell for AD_TempUnit2)
Set AD_TempReal = (Real(AD_TempInteger2))
Set AD_TempInteger = (AD_DrainAreaCountBase + (AD_DrainAreaCountPerLevel x (Integer(AD_TempReal))))
Set AD_TempPoint2 = (Target point of ability being cast)
-------- Identifies if you want the theme to change upon level up, randomly, or not at all --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[17] Equal to True
Then - Actions
Set AD_TempInteger2 = (Random integer number between 1 and AD_SpellsThemeCount)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[6] Equal to False
Then - Actions
Set AD_TempInteger2 = AD_DefaultTheme
Else - Actions
-------- Runs depending on if you want starting projectiles --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[0] Equal to True
Then - Actions
-------- Projectile Launch --------
Set AD_TempPoint = (Position of AD_TempUnit2)
For each (Integer AD_Index) from 1 to AD_TempInteger, do (Actions)
Loop - Actions
Set AD_MaxIndex = (AD_MaxIndex + 1)
Set AD_TempPoint3 = (AD_TempPoint2 offset by (Random real number between AD_MinDistanceSpread and (AD_AoeBase + (AD_AoePerLevel x AD_TempReal))) towards (Random angle) degrees)
Unit - Create 1 AD_DummyType for AD_TempPlayer at AD_TempPoint facing (Angle from AD_TempPoint to AD_TempPoint3) degrees
Set AD_TempUnit = (Last created unit)
Special Effect - Create a special effect attached to the origin of AD_TempUnit using AD_LaunchSFX[AD_TempInteger2]
Animation - Change AD_TempUnit's size to ((AD_EffectScalingLaunchBase + (AD_EffectScalingLaunchPL x AD_TempReal))%, 0.00%, 0.00%) of its original size
Set AD_OriginalCaster[AD_MaxIndex] = AD_TempUnit2
Set AD_SpecialEffect[AD_MaxIndex] = (Last created special effect)
Set AD_DrainAOE[AD_MaxIndex] = (AD_DrainAreaAOEBase + (AD_DrainAreaAOEPerLevel x AD_TempReal))
Set AD_HealthDrain[AD_MaxIndex] = (((AD_HealthDamagePerSecBase + (AD_HealthDamagePerSecPerLevel x AD_TempReal)) x AD_TimerSpeed) x AD_SFXWaitTime)
Set AD_ManaDrain[AD_MaxIndex] = (((AD_ManaDamagePerSecBase + (AD_ManaDamagePerSecPerLevel x AD_TempReal)) x AD_TimerSpeed) x AD_SFXWaitTime)
Set AD_Duration[AD_MaxIndex] = (AD_DrainAreaDurationBase + (AD_DrainAreaDurationPerLevel x AD_TempReal))
Set AD_AbilityLevel[AD_MaxIndex] = AD_TempReal
Set AD_CurrentDistance[AD_MaxIndex] = 0.00
Set AD_Theme[AD_MaxIndex] = AD_TempInteger2
Custom script: set udg_AD_CasterX[udg_AD_MaxIndex] = GetUnitX(udg_AD_TempUnit2)
Custom script: set udg_AD_CasterY[udg_AD_MaxIndex] = GetUnitY(udg_AD_TempUnit2)
Set AD_MaxDistance[AD_MaxIndex] = (Distance between AD_TempPoint and AD_TempPoint3)
Set AD_MaxHeight[AD_MaxIndex] = (AD_MaxDistance[AD_MaxIndex] x (AD_LaunchArcMultiplyerBase + (AD_LaunchArcMultiplyerPL x AD_TempReal)))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[5] Equal to True
Then - Actions
Set AD_LaunchSpeed[AD_MaxIndex] = (AD_LaunchSpeedBase + (AD_LaunchSpeedPerLevel x AD_TempReal))
Else - Actions
Set AD_LaunchSpeed[AD_MaxIndex] = ((AD_MaxDistance[AD_MaxIndex] x 0.03) / (AD_LaunchIncomingTimeBase + (AD_LaunchIncomingTimePerLevel x AD_TempReal)))
For each (Integer AD_Index) from 1 to AD_TempInteger, do (Actions)
Loop - Actions
Set AD_MaxIndex = (AD_MaxIndex + 1)
Set AD_TempPoint3 = (AD_TempPoint2 offset by (AD_AoeBase + (AD_AoePerLevel x AD_TempReal)) towards (Random angle) degrees)
Unit - Create 1 AD_DummyType for AD_TempPlayer at AD_TempPoint3 facing (Angle from AD_TempPoint2 to AD_TempPoint3) degrees
Set AD_TempUnit = (Last created unit)
Unit - Add a (AD_DrainAreaDurationBase + (AD_DrainAreaDurationPerLevel x AD_TempReal)) second Generic expiration timer to AD_TempUnit
Unit - Pause AD_TempUnit
Special Effect - Create a special effect attached to the origin of AD_TempUnit using AD_DrainAreaSFX[AD_TempInteger2]
Animation - Change AD_TempUnit's size to ((AD_EffectScalingDrainAreaBase + (AD_EffectScalingDrainAreaPL x AD_TempReal))%, 0.00%, 0.00%) of its original size
Set AD_OriginalCaster[AD_MaxIndex] = AD_TempUnit2
Set AD_SpecialEffect[AD_MaxIndex] = (Last created special effect)
Set AD_DrainAOE[AD_MaxIndex] = (AD_DrainAreaAOEBase + (AD_DrainAreaAOEPerLevel x AD_TempReal))
Set AD_AbilityLevel[AD_MaxIndex] = AD_TempReal
Set AD_HealthDrain[AD_MaxIndex] = (((AD_HealthDamagePerSecBase + (AD_HealthDamagePerSecPerLevel x AD_TempReal)) x AD_TimerSpeed) x AD_SFXWaitTime)
Set AD_ManaDrain[AD_MaxIndex] = (((AD_ManaDamagePerSecBase + (AD_ManaDamagePerSecPerLevel x AD_TempReal)) x AD_TimerSpeed) x AD_SFXWaitTime)
Set AD_CurrentDistance[AD_Index] = (AD_CurrentDistance[AD_Index] + AD_LaunchSpeed[AD_Index])
Animation - Change AD_TempUnit flying height to ((((4.00 x AD_MaxHeight[AD_Index]) / AD_MaxDistance[AD_Index]) x (AD_CurrentDistance[AD_Index] / AD_MaxDistance[AD_Index])) x (AD_MaxDistance[AD_Index] - AD_CurrentDistance[AD_Index])) at 0.00
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_CurrentDistance[AD_Index] Greater than or equal to AD_MaxDistance[AD_Index]
Then - Actions
Special Effect - Destroy AD_SpecialEffect[AD_Index]
Special Effect - Create a special effect attached to the origin of AD_TempUnit using AD_DrainAreaSFX[AD_Theme[AD_Index]]
Set AD_SpecialEffect[AD_Index] = (Last created special effect)
Animation - Change AD_TempUnit's size to ((AD_EffectScalingDrainAreaBase + (AD_EffectScalingDrainAreaPL x AD_TempReal))%, 0.00%, 0.00%) of its original size
Unit - Add a AD_Duration[AD_Index] second Generic expiration timer to AD_TempUnit
Set AD_StageID[AD_Index] = 2
Else - Actions
Else - Actions
-------- Draining control --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_StageID[AD_Index] Equal to 2
Then - Actions
Set AD_TempPoint = (Position of AD_TempUnit)
Set AD_TempGroup = (Units within AD_DrainAOE[AD_Index] of AD_TempPoint)
Unit Group - Pick every unit in AD_TempGroup and do (Actions)
Loop - Actions
Set AD_TempUnit2 = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(AD_TempUnit2 is alive) Equal to AD_Conditions[7]
(AD_TempUnit2 is Magic Immune) Equal to AD_Conditions[8]
(AD_TempUnit2 is A structure) Equal to AD_Conditions[9]
(AD_TempUnit2 is A ground unit) Equal to AD_Conditions[10]
(AD_TempUnit2 belongs to an enemy of (Owner of AD_OriginalCaster[AD_Index])) Equal to AD_Conditions[11]
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[1] Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_SFXCurrentWaitTimeHpHeal[AD_Index] Greater than or equal to AD_SFXWaitTime
Then - Actions
Set AD_TempReal = (Life of AD_TempUnit2)
Unit - Cause AD_OriginalCaster[AD_Index] to damage AD_TempUnit2, dealing AD_HealthDrain[AD_Index] damage of attack type Spells and damage type Normal
Set AD_TempReal2 = (Life of AD_TempUnit2)
Set AD_CarriedHealth[AD_Index] = (AD_TempReal - AD_TempReal2)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[16] Equal to True
Then - Actions
Special Effect - Create a special effect attached to the chest of AD_TempUnit2 using AD_DrainedHealthSFX[AD_Theme[AD_Index]]
Special Effect - Destroy (Last created special effect)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[2] Equal to True
Then - Actions
-------- Health Segment creation --------
Set AD_MaxIndex = (AD_MaxIndex + 1)
Set AD_TempPoint2 = (Position of AD_OriginalCaster[AD_Index])
Unit - Create 1 AD_DummyType for AD_TempPlayer at AD_TempPoint facing (Angle from AD_TempPoint to AD_TempPoint2) degrees
Set AD_TempUnit = (Last created unit)
Set AD_TempReal = AD_AbilityLevel[AD_Index]
Special Effect - Create a special effect attached to the origin of AD_TempUnit using AD_HealthDrainSFX[AD_Theme[AD_Index]]
Animation - Change AD_TempUnit's size to ((AD_EffectScalingHealthBase + (AD_EffectScalingHealthPL x AD_TempReal))%, 0.00%, 0.00%) of its original size
Set AD_OriginalCaster[AD_MaxIndex] = AD_OriginalCaster[AD_Index]
Set AD_SpecialEffect[AD_MaxIndex] = (Last created special effect)
Set AD_CarriedHealth[AD_MaxIndex] = AD_CarriedHealth[AD_Index]
Set AD_CarriedMana[AD_MaxIndex] = 0.00
Set AD_CurrentDistance[AD_MaxIndex] = 0.00
Set AD_Theme[AD_MaxIndex] = AD_TempInteger2
Set AD_MaxDistance[AD_MaxIndex] = (Distance between AD_TempPoint and AD_TempPoint2)
Set AD_MaxHeight[AD_MaxIndex] = (AD_MaxDistance[AD_MaxIndex] x (AD_HealthArcMultiplyerBase + (AD_HealthArcMultiplyerPL x AD_TempReal)))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[5] Equal to True
Then - Actions
Set AD_HealthSpeed[AD_MaxIndex] = (AD_HealSpeedBase + (AD_HealSpeedPerLevel x AD_TempReal))
Else - Actions
Set AD_HealthSpeed[AD_MaxIndex] = ((AD_MaxDistance[AD_MaxIndex] x AD_TimerSpeed) / (AD_HealthIncomingTimeBase + (AD_HealthIncomingTimePerLevel x AD_TempReal)))
Set AD_SFXLimiter = (Random integer number between 1 and AD_RecieveSFXLimiter)
Unit - Set life of AD_OriginalCaster[AD_Index] to ((Life of AD_OriginalCaster[AD_Index]) + AD_CarriedHealth[AD_Index])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[13] Equal to True
AD_SFXLimiter Equal to 1
Then - Actions
Special Effect - Create a special effect attached to the origin of AD_OriginalCaster[AD_Index] using AD_HealedLifeSFX[AD_Theme[AD_Index]]
Special Effect - Destroy (Last created special effect)
Else - Actions
Set AD_SFXCurrentWaitTimeHpHeal[AD_Index] = 0.00
Else - Actions
Set AD_SFXCurrentWaitTimeHpHeal[AD_Index] = (AD_SFXCurrentWaitTimeHpHeal[AD_Index] + 1.00)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[3] Equal to True
(Mana of AD_TempUnit2) Greater than 0.00
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_SFXCurrentWaitTimeManaHeal[AD_Index] Greater than or equal to AD_SFXWaitTime
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[12] Equal to False
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Mana of AD_TempUnit2) Greater than or equal to AD_ManaDrain[AD_Index]
Then - Actions
Unit - Set mana of AD_TempUnit2 to ((Mana of AD_TempUnit2) - AD_ManaDrain[AD_Index])
Set AD_CarriedMana[AD_Index] = AD_ManaDrain[AD_Index]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[15] Equal to True
Then - Actions
Special Effect - Create a special effect attached to the chest of AD_TempUnit2 using AD_DrainedManaSFX[AD_Theme[AD_Index]]
Special Effect - Destroy (Last created special effect)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[4] Equal to True
Then - Actions
-------- Mana segment creation --------
Set AD_MaxIndex = (AD_MaxIndex + 1)
Set AD_TempPoint2 = (Position of AD_OriginalCaster[AD_Index])
Unit - Create 1 AD_DummyType for AD_TempPlayer at AD_TempPoint facing (Angle from AD_TempPoint to AD_TempPoint2) degrees
Set AD_TempUnit = (Last created unit)
Set AD_TempReal = AD_AbilityLevel[AD_Index]
Special Effect - Create a special effect attached to the origin of AD_TempUnit using AD_ManaDrainSFX[AD_Theme[AD_Index]]
Animation - Change AD_TempUnit's size to ((AD_EffectScalingManaBase + (AD_EffectScalingManaPL x AD_TempReal))%, 0.00%, 0.00%) of its original size
Set AD_OriginalCaster[AD_MaxIndex] = AD_OriginalCaster[AD_Index]
Set AD_SpecialEffect[AD_MaxIndex] = (Last created special effect)
Set AD_CarriedHealth[AD_MaxIndex] = 0.00
Set AD_CarriedMana[AD_MaxIndex] = AD_CarriedMana[AD_Index]
Set AD_CurrentDistance[AD_MaxIndex] = 0.00
Set AD_Theme[AD_MaxIndex] = AD_TempInteger2
Set AD_MaxDistance[AD_MaxIndex] = (Distance between AD_TempPoint and AD_TempPoint2)
Set AD_MaxHeight[AD_MaxIndex] = (AD_MaxDistance[AD_MaxIndex] x (AD_ManaArcMultiplyerBase + (AD_ManaArcMultiplyerPL x AD_TempReal)))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[5] Equal to True
Then - Actions
Set AD_ManaSpeed[AD_MaxIndex] = (AD_ManaSpeedBase + (AD_ManaSpeedPerLevel x AD_TempReal))
Else - Actions
Set AD_ManaSpeed[AD_MaxIndex] = ((AD_MaxDistance[AD_MaxIndex] x AD_TimerSpeed) / (AD_ManaIncomingTimeBase + (AD_ManaIncomingTimePerLevel x AD_TempReal)))
Set AD_SFXLimiter = (Random integer number between 1 and AD_RecieveSFXLimiter)
Unit - Set mana of AD_OriginalCaster[AD_Index] to ((Mana of AD_OriginalCaster[AD_Index]) + AD_CarriedMana[AD_Index])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[14] Equal to True
AD_SFXLimiter Equal to 1
Then - Actions
Special Effect - Create a special effect attached to the chest of AD_OriginalCaster[AD_Index] using AD_HealedManaSFX[AD_Theme[AD_Index]]
Special Effect - Destroy (Last created special effect)
Else - Actions
Else - Actions
Set AD_CarriedMana[AD_Index] = 0.00
Else - Actions
Set AD_TempReal = (Mana of AD_TempUnit2)
Unit - Set mana of AD_TempUnit2 to ((Mana of AD_TempUnit2) - AD_ManaDrain[AD_Index])
Set AD_TempReal2 = (Mana of AD_TempUnit2)
Set AD_CarriedMana[AD_Index] = (AD_TempReal - AD_TempReal2)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[15] Equal to True
Then - Actions
Special Effect - Create a special effect attached to the chest of AD_TempUnit2 using AD_DrainedManaSFX[AD_Theme[AD_Index]]
Special Effect - Destroy (Last created special effect)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[4] Equal to True
Then - Actions
-------- Mana segment creation --------
Set AD_MaxIndex = (AD_MaxIndex + 1)
Set AD_TempPoint2 = (Position of AD_OriginalCaster[AD_Index])
Unit - Create 1 AD_DummyType for AD_TempPlayer at AD_TempPoint facing (Angle from AD_TempPoint to AD_TempPoint2) degrees
Set AD_TempUnit = (Last created unit)
Set AD_TempReal = AD_AbilityLevel[AD_Index]
Special Effect - Create a special effect attached to the origin of AD_TempUnit using AD_ManaDrainSFX[AD_Theme[AD_Index]]
Animation - Change AD_TempUnit's size to ((AD_EffectScalingManaBase + (AD_EffectScalingManaPL x AD_TempReal))%, 0.00%, 0.00%) of its original size
Set AD_OriginalCaster[AD_MaxIndex] = AD_OriginalCaster[AD_Index]
Set AD_SpecialEffect[AD_MaxIndex] = (Last created special effect)
Set AD_CarriedHealth[AD_MaxIndex] = 0.00
Set AD_CarriedMana[AD_MaxIndex] = AD_CarriedMana[AD_Index]
Set AD_CurrentDistance[AD_MaxIndex] = 0.00
Set AD_Theme[AD_MaxIndex] = AD_TempInteger2
Set AD_MaxDistance[AD_MaxIndex] = (Distance between AD_TempPoint and AD_TempPoint2)
Set AD_MaxHeight[AD_MaxIndex] = (AD_MaxDistance[AD_MaxIndex] x (AD_ManaArcMultiplyerBase + (AD_ManaArcMultiplyerPL x AD_TempReal)))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[5] Equal to True
Then - Actions
Set AD_ManaSpeed[AD_MaxIndex] = (AD_ManaSpeedBase + (AD_ManaSpeedPerLevel x AD_TempReal))
Else - Actions
Set AD_ManaSpeed[AD_MaxIndex] = ((AD_MaxDistance[AD_MaxIndex] x AD_TimerSpeed) / (AD_ManaIncomingTimeBase + (AD_ManaIncomingTimePerLevel x AD_TempReal)))
Set AD_CurrentDistance[AD_Index] = (AD_CurrentDistance[AD_Index] + AD_HealthSpeed[AD_Index])
Animation - Change AD_TempUnit flying height to ((((4.00 x AD_MaxHeight[AD_Index]) / AD_MaxDistance[AD_Index]) x (AD_CurrentDistance[AD_Index] / AD_MaxDistance[AD_Index])) x (AD_MaxDistance[AD_Index] - AD_CurrentDistance[AD_Index])) at 0.00
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between AD_TempPoint2 and AD_TempPoint3) Less than or equal to 50.00
Then - Actions
Special Effect - Destroy AD_SpecialEffect[AD_Index]
Set AD_SFXLimiter = (Random integer number between 1 and AD_RecieveSFXLimiter)
Unit - Set life of AD_OriginalCaster[AD_Index] to ((Life of AD_OriginalCaster[AD_Index]) + AD_CarriedHealth[AD_Index])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[13] Equal to True
AD_SFXLimiter Equal to 1
Then - Actions
Special Effect - Create a special effect attached to the origin of AD_OriginalCaster[AD_Index] using AD_HealedLifeSFX[AD_Theme[AD_Index]]
Special Effect - Destroy (Last created special effect)
Set AD_CurrentDistance[AD_Index] = (AD_CurrentDistance[AD_Index] + AD_ManaSpeed[AD_Index])
Animation - Change AD_TempUnit flying height to ((((4.00 x AD_MaxHeight[AD_Index]) / AD_MaxDistance[AD_Index]) x (AD_CurrentDistance[AD_Index] / AD_MaxDistance[AD_Index])) x (AD_MaxDistance[AD_Index] - AD_CurrentDistance[AD_Index])) at 0.00
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between AD_TempPoint2 and AD_TempPoint3) Less than or equal to 50.00
Then - Actions
Special Effect - Destroy AD_SpecialEffect[AD_Index]
Unit - Set mana of AD_OriginalCaster[AD_Index] to ((Mana of AD_OriginalCaster[AD_Index]) + AD_CarriedMana[AD_Index])
Set AD_SFXLimiter = (Random integer number between 1 and AD_RecieveSFXLimiter)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
AD_Conditions[14] Equal to True
AD_SFXLimiter Equal to 1
Then - Actions
Special Effect - Create a special effect attached to the chest of AD_OriginalCaster[AD_Index] using AD_HealedManaSFX[AD_Theme[AD_Index]]
Special Effect - Destroy (Last created special effect)
Set BP_RealCache[1] = (Load 7 of BP_UHandle from BP_Hash)
Set BP_RealCache[2] = (Load 8 of BP_UHandle from BP_Hash)
Set BP_RealCache[3] = ((Load 9 of BP_UHandle from BP_Hash) + BP_BranchSpeed)
Hashtable - Save BP_RealCache[3] as 9 of BP_UHandle in BP_Hash
Set BP_RealCache[4] = (((4.00 x BP_RealCache[2]) / BP_RealCache[1]) x ((BP_RealCache[3] / BP_RealCache[1]) x (BP_RealCache[1] - BP_RealCache[3])))
Animation - Change BP_U flying height to BP_RealCache[4] at 0.00
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BP_RealCache[4] Less than 0.00
Then - Actions
Set BP_TempPoint = (Position of BP_U)
Set BP_TempGroup = (Units within BP_BranchAoe of BP_TempPoint)
Unit Group - Pick every unit in BP_TempGroup and do (Actions)
Loop - Actions
Set BP_TempU = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(BP_TempU is Magic Immune) Equal to False
(BP_TempU is A structure) Equal to False
(BP_TempU is alive) Equal to True
(BP_TempU belongs to an enemy of (Owner of BP_U)) Equal to True
(BP_TempU is A ground unit) Equal to True
(BP_TempU is in BP_Plants) Equal to False
Then - Actions
Custom script: set udg_BP_UHandleC = GetHandleId(udg_BP_TempU)
Unit - Cause (Load 1 of BP_UHandle in BP_Hash) to damage BP_TempU, dealing (Load 3 of BP_UHandle from BP_Hash) damage of attack type Spells and damage type Normal
Special Effect - Create a special effect at BP_TempPoint using BP_BranchHitSFX
Special Effect - Destroy (Last created special effect)
Set BP_TempU2 = (Load 2 of BP_UHandle in BP_Hash)
Custom script: set udg_BP_TempX = GetUnitX(udg_BP_TempU2)
Custom script: set udg_BP_TempY = GetUnitY(udg_BP_TempU2)
Hashtable - Save BP_TempX as 17 of BP_UHandleC in BP_Hash
Hashtable - Save BP_TempY as 18 of BP_UHandleC in BP_Hash
Hashtable - Save (Load 5 of BP_UHandle from BP_Hash) as 16 of BP_UHandleC in BP_Hash
Hashtable - Save (CP_TempInteger + 1) as 9 of CP_UHandle in CP_Hash
-------- Check Pulse delay timer --------
Set CP_TempInteger = (Load 10 of CP_UHandle from CP_Hash)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
CP_TempInteger Equal to (CP_CageProjectileFireRate x 10)
Then - Actions
-------- Resetting delay timer --------
Hashtable - Save 0 as 10 of CP_UHandle in CP_Hash
-------- Checking pulse count --------
Set CP_TempInteger = (Load 11 of CP_UHandle from CP_Hash)
Set CP_TempPoint = (Position of CP_U)
-------- Creating pulse --------
Unit - Create 1 CP_Portal for (Owner of CP_U) at CP_TempPoint facing Default building facing degrees
-------- Scaling pulse --------
Set CP_RealCache[1] = ((Load 4 of CP_UHandle from CP_Hash) / 3.00)
Animation - Change (Last created unit)'s size to (CP_RealCache[1]%, CP_RealCache[1]%, CP_RealCache[1]%) of its original size
Special Effect - Create a special effect attached to the overhead of (Last created unit) using CP_PulseModel
-------- Removing pulse --------
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
-------- Pulse effects setup --------
Set CP_TempGroup = (Units within (Load 4 of CP_UHandle from CP_Hash) of CP_TempPoint)
Custom script: set udg_CP_TempX = GetUnitX(udg_CP_U)
Custom script: set udg_CP_TempY = GetUnitY(udg_CP_U)
-------- Pulse effects --------
Unit Group - Pick every unit in CP_TempGroup and do (Actions)
Loop - Actions
-------- Finding target units --------
Set CP_TempU = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(CP_TempU is Magic Immune) Equal to False
(CP_TempU is A structure) Equal to False
(CP_TempU is alive) Equal to True
(CP_TempU belongs to an enemy of (Owner of CP_U)) Equal to True
(CP_TempU is A ground unit) Equal to True
Then - Actions
-------- Getting co-ordinates and setup --------
Custom script: set udg_CP_TempX2 = GetUnitX(udg_CP_TempU)
Custom script: set udg_CP_TempY2 = GetUnitY(udg_CP_TempU)
Custom script: set udg_CP_UHandleC = GetHandleId(udg_CP_TempU)
-------- Damage --------
Unit - Cause (Load 1 of CP_UHandle in CP_Hash) to damage CP_TempU, dealing (Load 5 of CP_UHandle from CP_Hash) damage of attack type Spells and damage type Normal
-------- Knockback setup --------
-------- Knockback strength --------
Hashtable - Save (Load 6 of CP_UHandle from CP_Hash) as 13 of CP_UHandleC in CP_Hash
-------- Knockback Angle setup --------
Hashtable - Save CP_TempX as 14 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempY as 15 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempX2 as 16 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempY2 as 17 of CP_UHandleC in CP_Hash
Set CP_RealCache[1] = (Load 7 of CP_UHandle from CP_Hash)
Set CP_RealCache[2] = (Load 8 of CP_UHandle from CP_Hash)
Set CP_RealCache[3] = ((Load 9 of CP_UHandle from CP_Hash) + CP_CageSpeed)
Hashtable - Save CP_RealCache[3] as 9 of CP_UHandle in CP_Hash
Set CP_RealCache[4] = (((4.00 x CP_RealCache[2]) / CP_RealCache[1]) x ((CP_RealCache[3] / CP_RealCache[1]) x (CP_RealCache[1] - CP_RealCache[3])))
Animation - Change CP_U flying height to CP_RealCache[4] at 0.00
-------- Checking height --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
CP_RealCache[4] Less than 0.00
Then - Actions
-------- Damage and target setup --------
Set CP_TempU2 = (Load 10 of CP_UHandle in CP_Hash)
Custom script: set udg_CP_UHandleC2 = GetHandleId(udg_CP_TempU2)
Custom script: set udg_CP_TempX2 = GetUnitX(udg_CP_TempU2)
Custom script: set udg_CP_TempY2 = GetUnitY(udg_CP_TempU2)
Set CP_TempPoint2 = (Position of CP_TempU2)
Set CP_TempPoint = (Position of CP_U)
Set CP_TempGroup = (Units within CP_CageSegmentAoe of CP_TempPoint)
-------- Damage and knockback --------
Unit Group - Pick every unit in CP_TempGroup and do (Actions)
Loop - Actions
-------- Finding targets --------
Set CP_TempU = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(CP_TempU is Magic Immune) Equal to False
(CP_TempU is A structure) Equal to False
(CP_TempU is alive) Equal to True
(CP_TempU belongs to an enemy of (Owner of CP_U)) Equal to True
(CP_TempU is A ground unit) Equal to True
Then - Actions
-------- setup --------
Custom script: set udg_CP_UHandleC = GetHandleId(udg_CP_TempU)
-------- Damage --------
Unit - Cause (Load 1 of CP_UHandle in CP_Hash) to damage CP_TempU, dealing (Load 5 of CP_UHandle from CP_Hash) damage of attack type Spells and damage type Normal
-------- Knockback setup --------
-------- Knockback strength --------
Hashtable - Save (Load 6 of CP_UHandle from CP_Hash) as 13 of CP_UHandleC in CP_Hash
-------- Knockback Angle setup --------
Set CP_TempPoint3 = (Position of CP_TempU)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between CP_TempPoint2 and CP_TempPoint3) Greater than or equal to ((Load 4 of CP_UHandleC2 from CP_Hash) + (CP_CageSegmentAoe / 2.00))
Then - Actions
Hashtable - Save CP_TempX2 as 14 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempY2 as 15 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempY as 17 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempX as 16 of CP_UHandleC in CP_Hash
Else - Actions
Hashtable - Save CP_TempX as 14 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempY as 15 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempX2 as 16 of CP_UHandleC in CP_Hash
Hashtable - Save CP_TempY2 as 17 of CP_UHandleC in CP_Hash
-------- Determines how long the Glyph will extract mana for (assuming it doesn't hit the limit) before activating or being destroyed --------
-------- Time is in seconds --------
Set EG_GlyphDurationBase = 10.00
Set EG_GlyphDurationPerLevel = 0.00
-------- Determines the max amount of Mana the Glyph will absorb before activating --------
-------- The absorbing will be spread evenly among the target units --------
Set EG_GlyphManaStealMax = 400.00
-------- Determines the rate of mana draining --------
-------- divide by 0.03 to get how much mana this is per second --------
Set EG_EnergyDrainBase = 0.75
Set EG_EnergyDrainPerLevel = 0.00
-------- Determines the strength of the slowing effect of the Glyph by dividing the standard speed by this number --------
-------- Standard is 2 (meaning / 2, meaning 50% speed reduction) --------
-------- Shouldn't really be anything higher than 2 --------
Set EG_EnergySlowDivider = 2.00
-------- Determines the damage each Orb will deal --------
-------- level one Orbs deal 15 damage (base 10 + per level 5) --------
Set EG_OrbDamageBase = 10.00
Set EG_OrbDamagePerLevel = 5.00
-------- Determines the AOE of the Orbs for them to damage --------
-------- 90 = melee range --------
Set EG_OrbAoeBase = 90.00
Set EG_OrbAoePerLevel = 0.00
-------- This is the AOE of the spell --------
-------- Should be 100x the scaling settings --------
Set EG_OrbRangeAOEBase = 200.00
Set EG_OrbRangeAOEPerLevel = 100.00
-------- This is how fast the Orbs will travel when moving --------
-------- / 0.03 to find how far this is per second --------
Set EG_OrbSpeed = 5.00
-------- This determines the arc the Orbs create while moving based on how high they will go in relivence to distance --------
-------- 1 = every unit it moves across it goes up as high as it goes far --------
-------- 1.1 = it goes up higher than it goes far --------
-------- 0.9 = it goes up lower than it goes far --------
Set EG_OrbHeightMultiplyer = 1.10
-------- ---------- --------
-------- This will set the difference between each draining level --------
-------- the minimum required to activate is 2x this number --------
Set EG_EnergyPerDrainingLevel = 100
-------- Number of Orbs created --------
Set EG_GlyphOrbsBase = 40
Set EG_GlyphOrbsPerLevel = 20
-------- Draining level: every 100 mana after 200 adds this many Orbs --------
Set EG_GlyphOrbsPerDrainedLevel = 30
-------- Example: Fully "Charged" level 1: (((400-100)/100) * PerDrainedLevel) + (Base + (PerLevel * AbilityLevel) = Number of orbs --------
-------- ---------------------------------------------------- (((400-100)/100) * 30) + (40 + (20 * 1) = Number of orbs --------
-------- ---------------------------------------------------- (90) + (60) = Number of orbs --------
-------- ---------------------------------------------------- 150 = Number of orbs --------
-------- Unit used as the Glyph --------
Set EG_Unit_Glyph = Energy Glyph
-------- Unit used as the Orb --------
Set EG_Unit_Orb = Energy Orb
-------- Unit used as the summoning SFX --------
Set EG_Unit_SFX = Energy Glyph SFX
-------- Model used for the draining SFX --------
Set EG_Unit_SFX2 = Abilities\Spells\Items\AIil\AIilTarget.mdl
-------- Spell used to activate the ability --------
Set EG_Spell = Energy Glyph
Energy Glyph Activation
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to EG_Unit_Glyph
Actions
Set EG_UHandle = (Key (Triggering unit))
Set EG_u = (Triggering unit)
Set EG_TempPoint = (Position of EG_u)
Set EG_TempRealStore = (Load 8 of EG_UHandle from EG_EnergyGlyphHash)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of EG_UHandle from EG_EnergyGlyphHash) Equal to 1
(Mana of (Triggering unit)) Greater than or equal to (2.00 x (Real(EG_EnergyPerDrainingLevel)))
Then - Actions
Unit - Create 1 Energy Glyph for (Owner of EG_u) at EG_TempPoint facing Default building facing degrees
Set EG_UHandleC = (Key (Last created unit))
Set EG_Tempu = (Last created unit)
Animation - Change EG_Tempu's size to (EG_TempRealStore%, EG_TempRealStore%, EG_TempRealStore%) of its original size
-------- Glyph Stage Indicator --------
Hashtable - Save 2 as 1 of EG_UHandleC in EG_EnergyGlyphHash
-------- Glyph Creator Indicator --------
Hashtable - Save Handle Of(Load 3 of EG_UHandle in EG_EnergyGlyphHash) as 3 of EG_UHandleC in EG_EnergyGlyphHash
-------- Orb Damage --------
Hashtable - Save (Load 4 of EG_UHandle from EG_EnergyGlyphHash) as 4 of EG_UHandleC in EG_EnergyGlyphHash
-------- Orb AOE --------
Hashtable - Save (Load 5 of EG_UHandle from EG_EnergyGlyphHash) as 5 of EG_UHandleC in EG_EnergyGlyphHash
-------- Orb Count --------
Hashtable - Save ((((Integer((Mana of EG_u))) - EG_EnergyPerDrainingLevel) / EG_EnergyPerDrainingLevel) x (EG_GlyphOrbsPerDrainedLevel + (Load 6 of EG_UHandle from EG_EnergyGlyphHash))) as 6 of EG_UHandleC in EG_EnergyGlyphHash
-------- Orb AOE Range --------
Hashtable - Save (Load 7 of EG_UHandle from EG_EnergyGlyphHash) as 7 of EG_UHandleC in EG_EnergyGlyphHash
-------- Scaling --------
Hashtable - Save (Load 8 of EG_UHandle from EG_EnergyGlyphHash) as 8 of EG_UHandleC in EG_EnergyGlyphHash
Unit Group - Add (Last created unit) to EG_EnergyGlyphs
Hashtable - Clear all child hashtables of child EG_UHandle in EG_EnergyGlyphHash
Else - Actions
-------- Death sfx --------
Hashtable - Clear all child hashtables of child EG_UHandle in EG_EnergyGlyphHash
Unit - Create 1 EG_Unit_SFX for (Owner of EG_u) at EG_TempPoint facing Default building facing degrees
Set EG_Tempu = (Last created unit)
Animation - Change EG_Tempu's size to (EG_TempRealStore%, EG_TempRealStore%, EG_TempRealStore%) of its original size
Unit - Add a 3.00 second Generic expiration timer to EG_Tempu
If ((Number of units in EG_EnergyGlyphs) Equal to 0) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
Set EG_TempPoint = (Target point of ability being cast)
-------- Glyph --------
Unit - Create 1 Energy Glyph for (Owner of EG_u) at EG_TempPoint facing Default building facing degrees
Set EG_Tempu = (Last created unit)
Set EG_UHandleC = (Key (Last created unit))
Hashtable - Save (100.00 x (EG_GlyphScalingBase + (EG_GlyphScalingPerLevel x (Real((Level of Energy Glyph for EG_u)))))) as 8 of EG_UHandleC in EG_EnergyGlyphHash
Set EG_TempRealStore = (Load 8 of EG_UHandleC from EG_EnergyGlyphHash)
Animation - Change EG_Tempu's size to (EG_TempRealStore%, EG_TempRealStore%, EG_TempRealStore%) of its original size
Unit - Add a (EG_GlyphDurationBase + (EG_GlyphDurationPerLevel x (Real((Level of Energy Glyph for EG_u))))) second Generic expiration timer to EG_Tempu
Unit Group - Add EG_Tempu to EG_EnergyGlyphs
-------- ---------- --------
-------- Creation SFX --------
Unit - Create 1 Energy Glyph SFX for (Owner of EG_u) at EG_TempPoint facing Default building facing degrees
Set EG_Tempu = (Last created unit)
Animation - Change EG_Tempu's size to (EG_TempRealStore%, EG_TempRealStore%, EG_TempRealStore%) of its original size
Unit - Add a 3.00 second Generic expiration timer to EG_Tempu
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 1 of EG_UHandle from EG_EnergyGlyphHash) Equal to 2
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 6 of EG_UHandle from EG_EnergyGlyphHash) Greater than 0
Then - Actions
Hashtable - Save ((Load 6 of EG_UHandle from EG_EnergyGlyphHash) - 1) as 6 of EG_UHandle in EG_EnergyGlyphHash
Set EG_TempPoint = (Position of EG_u)
Set EG_TempPoint2 = (EG_TempPoint offset by (Random real number between 50.00 and (Load 7 of EG_UHandle from EG_EnergyGlyphHash)) towards (Random angle) degrees)
Unit - Create 1 EG_Unit_Orb for (Owner of EG_u) at EG_TempPoint facing (Angle from EG_TempPoint to EG_TempPoint2) degrees
Set EG_UHandleC = (Key (Last created unit))
Hashtable - Save (Distance between EG_TempPoint and EG_TempPoint2) as 9 of EG_UHandleC in EG_EnergyGlyphHash
Hashtable - Save ((Load 9 of EG_UHandleC from EG_EnergyGlyphHash) x EG_OrbHeightMultiplyer) as 10 of EG_UHandleC in EG_EnergyGlyphHash
Hashtable - Save ((Load 11 of EG_UHandle from EG_EnergyGlyphHash) + EG_OrbSpeed) as 11 of EG_UHandle in EG_EnergyGlyphHash
Hashtable - Save (((4.00 x (Load 10 of EG_UHandle from EG_EnergyGlyphHash)) / (Load 9 of EG_UHandle from EG_EnergyGlyphHash)) x (((Load 11 of EG_UHandle from EG_EnergyGlyphHash) / (Load 9 of EG_UHandle from EG_EnergyGlyphHash)) x ((Load 9 of EG_UHandle from EG_EnergyGlyphHash as 12 of EG_UHandle in EG_EnergyGlyphHash
Animation - Change EG_u flying height to (Load 12 of EG_UHandle from EG_EnergyGlyphHash) at 0.00
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 12 of EG_UHandle from EG_EnergyGlyphHash) Less than 0.00
Then - Actions
Set EG_TempPoint = (Position of EG_u)
Set EG_TempGroup = (Units within (Load 5 of EG_UHandle from EG_EnergyGlyphHash) of EG_TempPoint)
Unit Group - Pick every unit in EG_TempGroup and do (Actions)
Loop - Actions
Set EG_Tempu = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(EG_Tempu is A ground unit) Equal to True
(EG_Tempu is alive) Equal to True
(EG_Tempu is Magic Immune) Equal to False
(EG_Tempu belongs to an enemy of (Owner of EG_u)) Equal to True
Then - Actions
Unit - Cause (Load 3 of EG_UHandle in EG_EnergyGlyphHash) to damage EG_Tempu, dealing (Load 4 of EG_UHandle from EG_EnergyGlyphHash) damage of attack type Spells and damage type Normal
-------- Determines the area which the Energy Cores will drain from --------
Set EM_CoreAoeBase = 200.00
Set EM_CoreAoePerLevel = 50.00
-------- Determines how far out from the hero the Cores will be --------
Set EM_CoreDistanceBase = 300.00
Set EM_CoreDistancePerLevel = 0.00
-------- Determines how long the Cores will last for --------
Set EM_DurationBase = 2.00
Set EM_DurationPerLevel = 3.00
-------- Detmines the flying height of the cores --------
Set EM_FlyHeight = 200.00
-------- Determines how much health will be drained from a unit being effected by the spell --------
Set EM_HealthDrainBase = 0.00
Set EM_HealthDrainPerLevel = 0.15
-------- The higher section of the lightning (up to the core) should be 75 above the fly height of the cores (if standard model is being used) --------
Set EM_LightningHighHeight = 275.00
-------- Flying height of the low points (the targets and the caster) --------
Set EM_LightningLowHeightCaster = 75.00
Set EM_LightningLowHeightTarget = 75.00
-------- Determines the conversion rate of health into mana --------
Set EM_ManaConversionBase = 0.00
Set EM_ManaConversionPerLevel = 0.15
-------- Determines the number of cores created --------
Set EM_SidesBase = 2
Set EM_SidesPerLevel = 1
-------- Determines the max amount of targets for the spell --------
Set EM_MaxTargetsBase = 10
Set EM_MaxTargetsPerLevel = 5
-------- Determines how fast the Cores will revolve --------
Set EM_SpinSpeed = 5.00
-------- Unit used to create the Matrix --------
Set EM_CoreUnit = Energy Core
-------- Spell used to activate the triggers and create the matrix --------
Set EM_Spell = Energy Matrix
-------- SFX used on creation/death of the matrix --------
Set EM_SFX = Abilities\Spells\Items\AIre\AIreTarget.mdl
-------- Lightning effect used to link the caster and the matrix --------
-------- Standard is DRAM = Drain mana --------
Set EM_Lightning = DRAM
-------- Lightning effect used to link the targets and the matrix --------
-------- Standard is DRAL = Drain life --------
Set EM_Lightning2 = DRAL
-------- Go into the object editor and press Ctrl + D for raw data on things such as chain lightning over lightning effects to find the Code for it --------
-------- Pressing CTRL + D again will reset the data to the normal view --------
-------- -------- --------
Energy Matrix Activation
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to EM_Spell
Actions
Set EM_U = (Triggering unit)
Set EM_TempPoint = (Position of EM_U)
Set EM_TempRealStore = (Real((Level of EM_Spell for EM_U)))
For each (Integer EM_I) from 1 to (EM_SidesBase + (EM_SidesPerLevel x (Level of EM_Spell for EM_U))), do (Actions)
Loop - Actions
Set EM_Angle = (EM_Angle + (360.00 / ((Real(EM_SidesBase)) + ((Real(EM_SidesPerLevel)) x EM_TempRealStore))))
Set EM_TempRealStore2 = (EM_CoreDistanceBase + (EM_CoreDistancePerLevel x EM_TempRealStore))
Set EM_TempPoint2 = (EM_TempPoint offset by EM_TempRealStore2 towards EM_Angle degrees)
Unit - Create 1 EM_CoreUnit for (Owner of EM_U) at EM_TempPoint2 facing Default building facing degrees
Unit - Cause (Load 1 of EM_UHandle in EM_Hash) to damage EM_TempU, dealing (Load 3 of EM_UHandle from EM_Hash) damage of attack type Spells and damage type Normal
Unit - Set mana of (Load 1 of EM_UHandle in EM_Hash) to ((Mana of (Load 1 of EM_UHandle in EM_Hash)) + ((Load 3 of EM_UHandle from EM_Hash) x (Load 4 of EM_UHandle from EM_Hash)))
Set ETG_RealCache[1] = (Load 11 of ETG_UHandle from ETG_Hash)
Set ETG_RealCache[2] = (Load 13 of ETG_UHandle from ETG_Hash)
Set ETG_RealCache[3] = ((Load 12 of ETG_UHandle from ETG_Hash) + ETG_GasSpeed)
Hashtable - Save ETG_RealCache[3] as 12 of ETG_UHandle in ETG_Hash
Set ETG_RealCache[4] = (((4.00 x ETG_RealCache[2]) / ETG_RealCache[1]) x ((ETG_RealCache[3] / ETG_RealCache[1]) x (ETG_RealCache[1] - ETG_RealCache[3])))
Animation - Change ETG_U flying height to ETG_RealCache[4] at 0.00
-------- ------ --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ETG_RealCache[4] Less than 0.00
Then - Actions
-------- Landing --------
Set ETG_TempPoint = (Position of ETG_U)
Special Effect - Create a special effect at ETG_TempPoint using ETG_ExplosionModel
Special Effect - Destroy (Last created special effect)
-------- Explosion Setup --------
Set ETG_RealCache[5] = (Load 6 of ETG_UHandle from ETG_Hash)
Set ETG_TempGroup = (Units within ETG_RealCache[5] of ETG_TempPoint)
Set ETG_TempU2 = (Load 1 of ETG_UHandle in ETG_Hash)
Set ETG_RealCache[0] = (Load 7 of ETG_UHandle from ETG_Hash)
Set ETG_RealCache[1] = (Load 8 of ETG_UHandle from ETG_Hash)
-------- Targets --------
Unit Group - Pick every unit in ETG_TempGroup and do (Actions)
Loop - Actions
-------- Finding Targets --------
Set ETG_TempU = (Picked unit)
Custom script: set udg_ETG_UHandleC = GetHandleId(udg_ETG_TempU)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(ETG_TempU is Magic Immune) Equal to False
(ETG_TempU is A structure) Equal to False
(ETG_TempU is alive) Equal to True
(ETG_TempU belongs to an enemy of (Owner of ETG_U)) Equal to True
(ETG_TempU is A ground unit) Equal to True
(Load 8 of ETG_UHandleC from ETG_Hash) Less than or equal to 0.00
Then - Actions
-------- Burn setup --------
Special Effect - Destroy (Load 10 of ETG_UHandleC in ETG_Hash)
Hashtable - Save Handle OfETG_TempU2 as 1 of ETG_UHandleC in ETG_Hash
Hashtable - Save ETG_RealCache[0] as 7 of ETG_UHandleC in ETG_Hash
Hashtable - Save ETG_RealCache[1] as 8 of ETG_UHandleC in ETG_Hash
Hashtable - Save 3 as 2 of ETG_UHandleC in ETG_Hash
-------- Damage --------
Unit - Cause ETG_TempU2 to damage ETG_TempU, dealing (Load 9 of ETG_UHandle from ETG_Hash) damage of attack type Spells and damage type Normal
-------- Burn --------
Special Effect - Create a special effect attached to the chest of ETG_TempU using ETG_FireModel
Hashtable - Save Handle Of(Last created special effect) as 10 of ETG_UHandleC in ETG_Hash
Unit - Add ETG_BuffAbilityBurn to ETG_TempU
Unit Group - Add ETG_TempU to ETG_Group
Else - Actions
-------- Ignited Gas --------
Unit Group - Pick every unit in ETG_Explodeables and do (Actions)
Loop - Actions
Set ETG_TempU = (Picked unit)
Set ETG_TempPoint2 = (Position of ETG_TempU)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between ETG_TempPoint and ETG_TempPoint2) Less than or equal to ETG_RealCache[5]
Then - Actions
-------- Get Ignition Setup --------
Custom script: set udg_ETG_UHandleC = GetHandleId(udg_ETG_TempU)
Unit - Add a 0.10 second Generic expiration timer to ETG_TempU
Hashtable - Save True as 11 of ETG_UHandleC in ETG_Hash
Set HC_CurrentSunDistance[HC_Index] = (HC_CurrentSunDistance[HC_Index] + HC_SunSpeed)
-------- Explosion Control --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HC_CurrentSunDistance[HC_Index] Greater than or equal to HC_Distance[HC_Index]
Then - Actions
Set HC_TempGroup = (Units within HC_ExplosionAOE of HC_TempPoint)
-------- Effected Units --------
Unit Group - Pick every unit in HC_TempGroup and do (Actions)
Loop - Actions
Set HC_TempUnit = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(HC_TempUnit is A ground unit) Equal to HC_ConditionConfig[0]
(HC_TempUnit is A structure) Equal to HC_ConditionConfig[1]
(HC_TempUnit is Magic Immune) Equal to HC_ConditionConfig[2]
(HC_TempUnit belongs to an enemy of HC_OwningPlayer[HC_Index]) Equal to HC_ConditionConfig[3]
(HC_TempUnit is alive) Equal to HC_ConditionConfig[4]
(HC_TempUnit is paused) Equal to False
Then - Actions
Set HC_TempPoint2 = (Position of HC_TempUnit)
Unit - Cause HC_OriginalCaster[HC_Index] to damage HC_TempUnit, dealing HC_ExplosionDamage[HC_Index] damage of attack type Spells and damage type Normal
Set HC_MaxIndex = (HC_MaxIndex + 1)
Special Effect - Create a special effect attached to the origin of HC_TempUnit using HC_BurnSFX
Set HC_SpecialEffect[HC_MaxIndex] = (Last created special effect)
Set HC_CurrentAngle[HC_MaxIndex] = (Angle from HC_TempPoint to HC_TempPoint2)
Set HC_CurrentBlastDistance[HC_MaxIndex] = 0.00
Set HC_BlastDistance[HC_MaxIndex] = (HC_BlastDistanceBase / ((Distance between HC_TempPoint and HC_TempPoint2) x HC_BlastDistanceMultiplyer))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HC_BlastDistance[HC_MaxIndex] Greater than HC_BlastCap
Then - Actions
Set HC_BlastDistance[HC_MaxIndex] = HC_BlastCap
Else - Actions
Set HC_MaxHeight[HC_MaxIndex] = (HC_BlastDistance[HC_MaxIndex] x HC_HeightMultiplyer)
Set HC_CurrentHeight[HC_MaxIndex] = (Current flying height of HC_TempUnit)
Set HC_StageID[HC_MaxIndex] = 4
Set HC_UnitIndex[HC_MaxIndex] = HC_TempUnit
-------- --------
Set HC_Aoe[HC_MaxIndex] = 0.00
Set HC_OriginalCaster[HC_MaxIndex] = HC_TempUnit
Set HC_OwningPlayer[HC_MaxIndex] = (Owner of HC_TempUnit)
Set HC_CurrentBlastDistance[HC_Index] = (HC_CurrentBlastDistance[HC_Index] + HC_BlastSpeed)
Set HC_CurrentHeight[HC_Index] = (((4.00 x HC_MaxHeight[HC_Index]) / HC_BlastDistance[HC_Index]) x ((HC_CurrentBlastDistance[HC_Index] / HC_BlastDistance[HC_Index]) x (HC_BlastDistance[HC_Index] - HC_CurrentBlastDistance[HC_Index])))
Animation - Change HC_UnitIndex[HC_Index] flying height to HC_CurrentHeight[HC_Index] at 0.00
-------- Unit Release --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HC_CurrentHeight[HC_Index] Less than 0.00
Then - Actions
Special Effect - Destroy HC_SpecialEffect[HC_Index]
Unit - Unpause HC_UnitIndex[HC_Index]
Set HC_StageID[HC_Index] = HC_StageID[HC_MaxIndex]
Set HC_Aoe[HC_Index] = HC_Aoe[HC_MaxIndex]
Set HC_OriginalCaster[HC_Index] = HC_OriginalCaster[HC_MaxIndex]
Set HC_OwningPlayer[HC_Index] = HC_OwningPlayer[HC_MaxIndex]
Set HC_BlastDistance[HC_Index] = HC_BlastDistance[HC_MaxIndex]
Set HC_CurrentAngle[HC_Index] = HC_CurrentAngle[HC_MaxIndex]
Set HC_CurrentBlastDistance[HC_Index] = HC_CurrentBlastDistance[HC_MaxIndex]
Set HC_SpecialEffect[HC_Index] = HC_SpecialEffect[HC_MaxIndex]
Set HC_CurrentHeight[HC_Index] = HC_CurrentHeight[HC_MaxIndex]
Set HC_MaxHeight[HC_Index] = HC_MaxHeight[HC_MaxIndex]
Set HC_CurrentSunDistance[HC_Index] = HC_CurrentSunDistance[HC_MaxIndex]
Set HC_Core[HC_Index] = HC_Core[HC_MaxIndex]
Set HC_UnitIndex[HC_Index] = HC_UnitIndex[HC_MaxIndex]
Set HC_ExplosionDamage[HC_Index] = HC_ExplosionDamage[HC_MaxIndex]
Set HC_MagnetismStrength[HC_Index] = HC_MagnetismStrength[HC_MaxIndex]
Set HC_MaxIndex = (HC_MaxIndex - 1)
Set HC_Index = (HC_Index - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
HC_MaxIndex Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
Else - Actions
Helios Collision Dummy Removal
Events
Unit - A unit Dies
Conditions
Actions
Set HC_TempUnit = (Triggering unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Unit-type of HC_TempUnit) Equal to HC_DummyType
Then - Actions
Unit - Remove HC_TempUnit from the game
Else - Actions
- Magnetised Energy Bombs
MEB Configuration
Events
Map initialization
Conditions
Actions
-------- Do not touch --------
Hashtable - Create a hashtable
Set MEB_Hash = (Last created hashtable)
-------- ------- --------
-------- Determines the damage the explosion when the Bombs explode --------
Set MEB_DamageBase = 100.00
Set MEB_DamagePerLevel = 50.00
-------- Determines the area of where the damage will be dealt --------
Set MEB_ExplosionAOEBase = 150.00
Set MEB_ExplosionAOPerLevel = 50.00
-------- Determines how fast the Orbs will leave the centre --------
Set MEB_DistanceIncrease = 4.00
-------- Determines how long each Bomb will last for before exploding --------
Set MEB_DurationBase = 2.00
Set MEB_DurationPerLevel = 0.50
-------- Determines the height of the lightning effects --------
Set MEB_LightningHeight = 75.00
-------- Determines the rate of the Knockback decreasing to 0 --------
Set MEB_KnockbackDetriment = 1.00
-------- Determines the strength behind the knockback/how far it will push --------
Set MEB_KnockbackStrengthBase = 25.00
Set MEB_KnockbackStrengthPerLevel = 10.00
-------- Determines the area effected by the magnetism of each Bomb --------
Set MEB_MagneticAOEBase = 100.00
Set MEB_MagneticAOEPerLevel = 25.00
-------- Determines the strength of the Magnetism --------
Set MEB_MagneticStrengthBase = 25.00
Set MEB_MagneticStrengthPerLevel = 5.00
-------- Determines the damage done to the mana of units --------
Set MEB_ManaDamageBase = 50.00
Set MEB_ManaDamagePerLevel = 25.00
-------- Determines the feedback ratio from mana to health damage --------
Set MEB_ManaToHealthDamageBase = 0.75
Set MEB_ManaToHealthDamagePerLevel = 0.25
-------- Determines the speed of revolution --------
Set MEB_Speed = 4.00
-------- Determines how far out the Bombs start from the caster --------
Set MEB_StartDistance = 150.00
-------- Determines how many Bombs are made --------
Set MEB_SidesBase = 1
Set MEB_SidesPerLevel = 1
-------- Determines the bonus damage for hitting against rocks --------
Set MEB_RockSmash = 75.00
-------- Determines how much damage the burning fire does --------
Set MEB_BurnDamageBase = 0.25
Set MEB_BurnDamagePerLevel = 0.10
-------- Determines the AOE of the burning fire --------
Set MEB_BurnAoe = 50.00
-------- Determines how far back the burning tail goes --------
Set MEB_TailDurationBase = 0.05
Set MEB_TailDurationPerLevel = 0.00
-------- Determines what unit will be used as the bomb --------
Set MEB_Bomb = Energy Magnet
-------- Determines what unit will be used as the tail --------
Set MEB_Tail = Energy Tail
-------- Determines what unit will be used as the spell --------
Set MEB_Spell = Magnetised Energy Bombs
-------- Determines what Lightning effect will be used for the magnetism --------
Set MEB_Lightning = CLPB
-------- Determines what Special effects will be used at different points of the spell --------
-------- Creation of the Bombs --------
Set MEB_SFXSpawn = Abilities\Spells\Items\AIre\AIreTarget.mdl
-------- Explosion --------
Set MEB_SFXDeath = Objects\Spawnmodels\NightElf\NEDeathSmall\NEDeathSmall.mdl
-------- Effect created on knockback --------
Set MEB_SFXKnockback = Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
-------- Destroy Trees when knockbacked/dragged through them? --------
Set MEB_TreeKill = True
-------- Area of trees destroyed --------
Set MEB_TreeDestroyArea = 100.00
-------- ------- --------
-------- Do not touch --------
-------- Tree Checking Set up --------
Set MEB_TempPoint = (Center of (Playable map area))
Unit - Create 1 Peasant for Neutral Passive at MEB_TempPoint facing Default building facing degrees
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 16 of MEB_UHandle from MEB_Hash) Less than or equal to 0.00
Then - Actions
Unit Group - Remove MEB_U from MEB_Bombs
Hashtable - Save 0 as 12 of MEB_UHandle in MEB_Hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(MEB_Bombs is empty) Equal to True
Then - Actions
Trigger - Turn off (This trigger)
Trigger - Turn off MEB Death <gen>
Else - Actions
Else - Actions
-------- ------ --------
Else - Actions
-------- Fire Trail damage --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 12 of MEB_UHandle from MEB_Hash) Equal to 4
Then - Actions
-------- Burn Damage --------
Set MEB_TempPoint = (Position of MEB_U)
Set MEB_TempGroup = (Units within MEB_BurnAoe of MEB_TempPoint)
Unit Group - Pick every unit in MEB_TempGroup and do (Actions)
Loop - Actions
Set MEB_TempU = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(MEB_TempU is Magic Immune) Equal to False
(MEB_TempU is A structure) Equal to False
(MEB_TempU is alive) Equal to True
(MEB_TempU belongs to an enemy of (Owner of (Load 1 of MEB_UHandle in MEB_Hash))) Equal to True
(MEB_TempU is A ground unit) Equal to True
Then - Actions
Unit - Cause (Load 1 of MEB_UHandle in MEB_Hash) to damage MEB_TempU, dealing (Load 17 of MEB_UHandle from MEB_Hash) damage of attack type Spells and damage type Normal
(Unit-type of (Triggering unit)) Equal to MEB_Bomb
Actions
-------- Death Setup --------
Set MEB_U = (Triggering unit)
Custom script: set udg_MEB_UHandle = GetHandleId(udg_MEB_U)
Set MEB_TempPoint = (Position of MEB_U)
Special Effect - Create a special effect at MEB_TempPoint using MEB_SFXDeath
Special Effect - Destroy (Last created special effect)
-------- ------ --------
-------- Explosion --------
Set MEB_TempGroup = (Units in (Playable map area) matching ((Load 14 of (Key (Matching unit)) in MEB_Hash) Equal to MEB_U))
Unit Group - Pick every unit in MEB_TempGroup and do (Actions)
Loop - Actions
-------- Check Set up --------
Set MEB_TempU = (Picked unit)
Custom script: set udg_MEB_UHandleC = GetHandleId(udg_MEB_TempU)
Set MEB_TempPoint2 = (Position of MEB_TempU)
Lightning - Destroy (Load 13 of MEB_UHandleC in MEB_Hash)
-------- ------ --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between MEB_TempPoint and MEB_TempPoint2) Greater than (Load 15 of MEB_UHandle from MEB_Hash)
Then - Actions
-------- Unit outside of range cleanup --------
Hashtable - Save 0 as 12 of MEB_UHandleC in MEB_Hash
Unit Group - Remove MEB_TempU from MEB_Bombs
Hashtable - Clear all child hashtables of child MEB_UHandleC in MEB_Hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in MEB_Bombs) Equal to 0
Then - Actions
Trigger - Turn off MEB Loop <gen>
Else - Actions
-------- ------ --------
Else - Actions
-------- Explosion Damage effect --------
Unit - Cause (Load 1 of MEB_UHandle in MEB_Hash) to damage MEB_TempU, dealing (Load 3 of MEB_UHandle from MEB_Hash) damage of attack type Spells and damage type Normal
Set MEB_TempReal = (Mana of MEB_TempU)
Unit - Set mana of MEB_TempU to ((Mana of MEB_TempU) - (Load 6 of MEB_UHandle from MEB_Hash))
Unit - Cause (Load 1 of MEB_UHandle in MEB_Hash) to damage MEB_TempU, dealing ((MEB_TempReal - (Mana of MEB_TempU)) x (Load 7 of MEB_UHandle from MEB_Hash)) damage of attack type Spells and damage type Normal
-------- ------ --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(MEB_TempU is alive) Equal to True
Then - Actions
-------- Knockback Setup --------
Hashtable - Save Handle OfMEB_TempPoint as 15 of MEB_UHandleC in MEB_Hash
Hashtable - Save 3 as 12 of MEB_UHandleC in MEB_Hash
Hashtable - Save (Load 4 of MEB_UHandle from MEB_Hash) as 16 of MEB_UHandleC in MEB_Hash
-------- ------ --------
Else - Actions
-------- Dead unit clean up --------
Hashtable - Clear all child hashtables of child MEB_UHandleC in MEB_Hash
If ((Number of units in (Units in (Playable map area) matching ((Unit-type of (Matching unit)) Equal to MEB_Bomb))) Equal to 0) then do (Trigger - Turn off (This trigger)) else do (Do nothing)
Hashtable - Clear all child hashtables of child MEB_UHandle in MEB_Hash
Unit Group - Remove MEB_U from MEB_Bombs
-------- ------ --------
- Sentry Rocks
Sentry Rocks Configuration
Events
Map initialization
Conditions
Actions
-------- Do not touch --------
Hashtable - Create a hashtable
Set SR_Hash = (Last created hashtable)
-------- ----- --------
-------- Determines how fast the Rocks will get to their target --------
Set SR_MoveSpeedBase = 4.00
Set SR_MoveSpeedPerLevel = 1.00
-------- Determines how much damage the rocks will deal to their target --------
Set SR_RockDamageBase = 150.00
Set SR_RockDamagePerLevel = 50.00
-------- Determines the search radius of the Rocks --------
Set SR_RockSearchAoeBase = 200.00
Set SR_RockSearchAoePerLevel = 100.00
-------- Determines how many pairs of rocks will be created --------
Set SR_RocksBase = 3.00
Set SR_RocksPerLevel = 1.00
-------- Determines how long the rocks will last for --------
Set SR_DurationBase = 5.00
Set SR_DurationPerLevel = 2.00
-------- Constants --------
-------- Determines how fast the Rocks will fall --------
Set SR_RockFallSpeed = 20.00
-------- Determines how far from the caster the rocks will be created --------
Set SR_RockDistance = 200.00
-------- Determines the distance between the two revolving rocks in a pair --------
Set SR_RockSeperationDistance = 50.00
-------- Determines how fast the Cores spin around the caster --------
Set SR_RockSpinSpeed = 2.00
-------- Determines how fast the Rocks spin around their Core --------
Set SR_RockSpinSpeed2 = 5.00
-------- Determines how many rocks are in a pair --------
Set SR_RockPairCount = 2.00
-------- Determines how high the rocks are floating --------
Set SR_RockHeight = 300.00
-------- Determines how long the Summon Sfx will survive for --------
Set SR_SummonSFXDuration = 1.00
-------- Determines the spell that will be used --------
Set SR_Spell = Sentry Rocks
-------- Determines the unit that will be used as a rock --------
Set SR_Rock = Rock
-------- Determines the unit that will be used as a Core --------
Set SR_RockCore = RockCore
-------- Determines the unit that will be used as the summoning SFX --------
Set SR_SummonSFX = Rock Summon SFX
-------- Determines the explosion SFX --------
Set SR_CollisionSFX = Objects\Spawnmodels\NightElf\NEDeathSmall\NEDeathSmall.mdl
-------- Determines which lightning effect will be used to link the Rocks and their Core --------
Set SR_RockLinkLightning = CLPB
-------- ----- --------
Sentry Rocks Activation
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to SR_Spell
Actions
Set SR_U = (Triggering unit)
Set SR_TempPoint = (Position of SR_U)
Set SR_TempReal = (Real((Level of SR_Spell for SR_U)))
Set SR_Angle = 0.00
For each (Integer SR_I) from 1 to ((Integer(SR_RocksBase)) + ((Integer(SR_RocksPerLevel)) x (Level of SR_Spell for SR_U))), do (Actions)
Loop - Actions
Set SR_Angle = (SR_Angle + (360.00 / (SR_RocksBase + (SR_RocksPerLevel x SR_TempReal))))
Set SR_TempPoint2 = (SR_TempPoint offset by SR_RockDistance towards SR_Angle degrees)
Set SR_Angle2 = 0.00
Unit - Create 1 SR_RockCore for (Owner of SR_U) at SR_TempPoint2 facing Default building facing degrees
Set SR_TempU = (Last created unit)
Unit - Add a (SR_DurationBase + (SR_DurationPerLevel x SR_TempReal)) second Generic expiration timer to SR_TempU
Animation - Change SR_TempU flying height to SR_RockHeight at 0.00
For each (Integer SR_I2) from 1 to (Integer(SR_RockPairCount)), do (Actions)
Loop - Actions
Set SR_Angle2 = (SR_Angle2 + (360.00 / SR_RockPairCount))
Set SR_TempPoint3 = (SR_TempPoint2 offset by SR_RockSeperationDistance towards SR_Angle2 degrees)
Unit - Create 1 SR_Rock for Neutral Passive at SR_TempPoint3 facing Default building facing degrees
Set SR_TempU2 = (Last created unit)
Custom script: set udg_SR_UHandle = GetHandleId(udg_SR_TempU2)
Animation - Change SR_TempU2 flying height to SR_RockHeight at 0.00
Hashtable - Save Handle OfSR_U as 1 of SR_UHandle in SR_Hash
Hashtable - Save 4 as 2 of SR_UHandle in SR_Hash
Hashtable - Save Handle OfSR_TempU as 3 of SR_UHandle in SR_Hash
Hashtable - Save SR_Angle2 as 6 of SR_UHandle in SR_Hash
Hashtable - Save SR_RockSeperationDistance as 7 of SR_UHandle in SR_Hash
Hashtable - Save SR_RockHeight as 8 of SR_UHandle in SR_Hash
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 2 of SR_UHandle from SR_Hash) Equal to 3
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load 8 of SR_UHandle from SR_Hash) Less than or equal to 10.00
Then - Actions
Set SR_TempPoint = (Position of SR_U)
Unit - Cause (Load 1 of SR_UHandle in SR_Hash) to damage (Load 9 of SR_UHandle in SR_Hash), dealing (Load 3 of SR_UHandle from SR_Hash) damage of attack type Spells and damage type Normal
Special Effect - Create a special effect at SR_TempPoint using SR_CollisionSFX
Special Effect - Destroy (Last created special effect)
Unit Group - Remove (Load 9 of SR_UHandle in SR_Hash) from SR_Rocks
Special Effect - Destroy ST_SpecialEffect[ST_SecondaryIndex]
Set ST_OriginalCaster[ST_SecondaryIndex] = ST_OriginalCaster[ST_MaxIndex]
Set ST_CurrentLightningEffect[ST_SecondaryIndex] = ST_CurrentLightningEffect[ST_MaxIndex]
Set ST_SpecialEffect[ST_SecondaryIndex] = ST_SpecialEffect[ST_MaxIndex]
Set ST_UndeadDuration[ST_SecondaryIndex] = ST_UndeadDuration[ST_MaxIndex]
Set ST_Core[ST_SecondaryIndex] = ST_Core[ST_MaxIndex]
Set ST_Aoe[ST_SecondaryIndex] = ST_Aoe[ST_MaxIndex]
Set ST_UnitIndex[ST_SecondaryIndex] = ST_UnitIndex[ST_MaxIndex]
Set ST_StageID[ST_SecondaryIndex] = ST_StageID[ST_MaxIndex]
Set ST_MaxIndex = (ST_MaxIndex - 1)
Set ST_SecondaryIndex = (ST_SecondaryIndex - 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ST_MaxIndex Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
ST_StageID[ST_Index] Equal to 2
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(ST_UnitIndex[ST_Index] is alive) Equal to True
Then - Actions
Set ST_TempPoint = (Position of ST_UnitIndex[ST_Index])
Set ST_TempPoint2 = (Position of ST_Core[ST_Index])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Distance between ST_TempPoint and ST_TempPoint2) Greater than ST_Aoe[ST_Index]
Then - Actions
Unit - Cause ST_OriginalCaster[ST_Index] to damage ST_UnitIndex[ST_Index], dealing (ST_HealthPenaltyPerSecond x 0.03) damage of attack type Spells and damage type Normal
Else - Actions
Custom script: set udg_ST_TempX = GetUnitX(udg_ST_UnitIndex[udg_ST_Index])
Custom script: set udg_ST_TempY = GetUnitY(udg_ST_UnitIndex[udg_ST_Index])
Custom script: set udg_ST_TempX2 = GetUnitX(udg_ST_Core[udg_ST_Index])
Custom script: set udg_ST_TempY2 = GetUnitY(udg_ST_Core[udg_ST_Index])
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
Animation - Change VC_TempUnit's size to ((VC_EffectScalingSpinRocksBase + (VC_EffectScalingSpinRocksPL x VC_TempReal))%, 0.00%, 0.00%) of its original size
Special Effect - Create a special effect attached to the origin of VC_TempUnit using VC_SummonSFX[VC_TempInteger2]
Special Effect - Destroy (Last created special effect)
Special Effect - Create a special effect attached to the origin of VC_TempUnit using VC_SpinningRocksSFX[VC_TempInteger2]
Set VC_SpecialEffect[VC_MaxIndex] = (Last created special effect)
Set VC_OriginalCaster[VC_MaxIndex] = VC_TempUnit2
Set VC_ZHeight[VC_MaxIndex] = (VC_ZHeightSubRocksBase + (VC_ZHeightSubRocksPerLevel x VC_TempReal))
Animation - Change VC_TempUnit flying height to VC_ZHeight[VC_MaxIndex] at 0.00
Set VC_VolRock[VC_MaxIndex] = False
Set VC_Target[VC_MaxIndex] = VC_TempUnit3
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
VC_Conditions[11] Equal to True
Then - Actions
Set VC_FallSpeed[VC_MaxIndex] = ((VC_VolRockFallSpeedBase + (VC_VolRockFallSpeedPerLevel x VC_TempReal)) x VC_TimerSpeed)
Else - Actions
Set VC_RockSpinSpeed[VC_MaxIndex] = ((VC_ZHeight[VC_MaxIndex] x VC_TimerSpeed) / (VC_VolRockFallIncomingTimeBase + (VC_VolRockFallIncomingTimePL x VC_TempReal)))
Set VC_GrowthSpeed[VC_MaxIndex] = ((VC_EffectScalingVolSpeedBase + (VC_EffectScalingVolSpeedPL x VC_TempReal)) x VC_TimerSpeed)
Set VC_MaxSize[VC_MaxIndex] = (VC_EffectScalingVolRockMaxBase + (VC_EffectScalingVolRockMaxPL x VC_TempReal))
Set VC_ExpirationTimer[VC_MaxIndex] = 0.00
Set VC_ZHeight[VC_MaxIndex] = (VC_ZHeightVolRockBase + (VC_ZHeightVolRockPerLevel x VC_TempReal))
Set VC_CurrentSize[VC_MaxIndex] = 0.00
Set VC_Theme[VC_MaxIndex] = VC_TempInteger2
Custom script: set udg_VC_CasterX[udg_VC_MaxIndex] = GetUnitX(udg_VC_TempUnit2)
Custom script: set udg_VC_CasterY[udg_VC_MaxIndex] = GetUnitY(udg_VC_TempUnit2)
Unit - Create 1 VC_DummyType for VC_TempPlayer at VC_TempPoint2 facing (VC_CurrentAngle[VC_MaxIndex] + VC_Rotation[VC_MaxIndex]) degrees
Set VC_TempUnit = (Last created unit)
Animation - Change VC_TempUnit's size to ((VC_EffectScalingVolRockBase + (VC_EffectScalingVolRockPL x VC_TempReal))%, 0.00%, 0.00%) of its original size
Special Effect - Create a special effect attached to the origin of VC_TempUnit using VC_CrushingRockSFX[VC_TempInteger2]
Set VC_SpecialEffect[VC_MaxIndex] = (Last created special effect)
Set VC_OriginalCaster[VC_MaxIndex] = VC_TempUnit2
Set VC_ZHeight[VC_MaxIndex] = (VC_ZHeightVolRockBase + (VC_ZHeightVolRockPerLevel x VC_TempReal))
Animation - Change VC_TempUnit flying height to VC_ZHeight[VC_MaxIndex] at 0.00
Set VC_VolRock[VC_MaxIndex] = True
Set VC_Target[VC_MaxIndex] = VC_TempUnit3
Set VC_CurrentAngle[VC_MaxIndex] = 0.00
Set VC_GrowthSpeed[VC_MaxIndex] = ((VC_EffectScalingVolSpeedBase + (VC_EffectScalingVolSpeedPL x VC_TempReal)) x VC_TimerSpeed)
Set VC_AOE[VC_MaxIndex] = (VC_AoeBase + (VC_AoePerLevel x VC_TempReal))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
VC_Conditions[11] Equal to True
Then - Actions
Set VC_FallSpeed[VC_MaxIndex] = ((VC_VolRockFallSpeedBase + (VC_VolRockFallSpeedPerLevel x VC_TempReal)) x VC_TimerSpeed)
Else - Actions
Set VC_FallSpeed[VC_MaxIndex] = ((VC_ZHeight[VC_MaxIndex] x VC_TimerSpeed) / (VC_VolRockFallIncomingTimeBase + (VC_VolRockFallIncomingTimePL x VC_TempReal)))
Set VC_HealthDamage[VC_MaxIndex] = (VC_HealthDamageBase + (VC_HealthDamagePerLevel x VC_TempReal))
Set VC_ManaDamage[VC_MaxIndex] = (VC_ManaDamageBase + (VC_ManaDamagePerLevel x VC_TempReal))
Set VC_ExplosionScale[VC_MaxIndex] = (VC_EffectScalingExplosionBase + (VC_EffectScalingExplosionPL x VC_TempReal))
Set VC_ExpirationTimer[VC_MaxIndex] = 0.00
Set VC_RockDistance[VC_MaxIndex] = 0.00
Set VC_MaxSize[VC_MaxIndex] = (VC_EffectScalingVolRockMaxBase + (VC_EffectScalingVolRockMaxPL x VC_TempReal))
Set VC_CurrentSize[VC_MaxIndex] = 0.00
Set VC_Theme[VC_MaxIndex] = VC_TempInteger2
Custom script: set udg_VC_CasterX[udg_VC_MaxIndex] = GetUnitX(udg_VC_TempUnit2)
Custom script: set udg_VC_CasterY[udg_VC_MaxIndex] = GetUnitY(udg_VC_TempUnit2)
Unit - Cause (Load 1 of WD_UHandle in WD_Hash) to damage WD_TempU, dealing (Load 4 of WD_UHandle from WD_Hash) damage of attack type Spells and damage type Normal
-------- Loading Current Growth --------
Set WD_RealCache[5] = ((Load 7 of WD_UHandle from WD_Hash) + (Load 5 of WD_UHandle from WD_Hash))
-------- Saving Current Growth --------
Hashtable - Save WD_RealCache[5] as 7 of WD_UHandle in WD_Hash
Animation - Change WD_U's size to (WD_RealCache[5]%, WD_RealCache[5]%, WD_RealCache[5]%) of its original size
Hashtable - Save ((Load 9 of WD_UHandle from WD_Hash) + 1) as 9 of WD_UHandle in WD_Hash
Else - Actions
- Wild Energy
Wild Energy Configuration
Events
Map initialization
Conditions
Actions
-------- Do not touch --------
Hashtable - Create a hashtable
Set WE_WildEnergyHash = (Last created hashtable)
-------- ---------- --------
-------- Sets the AOE of the damage of the Energy Sphere --------
Set WE_EnergyAOEBase = 100.00
Set WE_EnergyAOEPerLevel = 50.00
-------- Sets how close the Sphere must be to detonate --------
Set WE_EnergyDetonationRange = 50.00
-------- Sets the chance of the spell activating (%) --------
Set WE_EnergyChanceBase = 20
Set WE_EnergyChancePerLevel = 20
-------- Sets the search range for finding a target (if none is found the Sphere is not created) --------
Set WE_EnergyMaxSearchRangeBase = 400.00
Set WE_EnergyMaxSearchRangePerLevl = 100.00
-------- Sets the speed of how fast the search is made (change depending on your computer speed) --------
Set WE_EnergySearchGrowthSpeed = 10.00
-------- Sets the damage of the Sphere based on this x the missing mana (out of max) for the unit using it --------
Set WE_EnergyMultiplyerBase = 0.00
Set WE_EnergyMultiplyerPerLevel = 0.50
-------- Sets the speed the Sphere moves --------
Set WE_EnergySpeed = 6.00
-------- Sets how long the Sphere will follow for --------
Set WE_EnergyTime = 15.00
-------- Sets how high the lightning effect will be --------
Set WE_EnergyHeight = 75.00
-------- Sets the number of spheres created when it's activated --------
Set WE_EnergyCountMax = 1
-------- ---------- --------
Wild Energy Activation
Events
Unit - A unit Starts the effect of an ability
Conditions
(Level of Wild Energy for (Triggering unit)) Greater than or equal to 1
Actions
Set WE_u = (Triggering unit)
Set WE_EnergyChanceRandomiser = (Random integer number between 1 and 100)
Set TempIntStore = (Level of Wild Energy for WE_u)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
WE_EnergyChanceRandomiser Less than or equal to (WE_EnergyChanceBase + (WE_EnergyChancePerLevel x TempIntStore))
(Mana of WE_u) Not equal to (Max mana of WE_u)
Then - Actions
Set WE_TempPoint = (Position of WE_u)
Set WE_EnergyCurrentSearchRange = 0.00
Set WE_EnergyCount = WE_EnergyCountMax
For each (Integer WE_i) from 1 to (((Integer(WE_EnergyMaxSearchRangeBase)) + ((Integer(WE_EnergyMaxSearchRangePerLevl)) x TempIntStore)) / (Integer(WE_EnergySearchGrowthSpeed))), do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
WE_EnergyCount Not equal to 0
Then - Actions
Set WE_EnergyCurrentSearchRange = (WE_EnergyCurrentSearchRange + WE_EnergySearchGrowthSpeed)
Set WE_TempGroup = (Units within WE_EnergyCurrentSearchRange of WE_TempPoint)
Unit Group - Pick every unit in WE_TempGroup and do (Actions)
Loop - Actions
Set WE_TempU = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(WE_TempU is A ground unit) Equal to True
(WE_TempU is alive) Equal to True
(WE_TempU is Magic Immune) Equal to False
(WE_TempU is A structure) Equal to False
(WE_TempU belongs to an enemy of (Owner of WE_u)) Equal to True
Then - Actions
Set WE_TempRealStore = (Real((Level of Wild Energy for WE_u)))
Set WE_EnergyCount = (WE_EnergyCount - 1)
Trigger - Turn on Wild Energy Loop <gen>
Unit - Create 1 Energy Sphere for (Owner of WE_u) at WE_TempPoint facing Default building facing degrees
Set WE_TempU = (Last created unit)
Unit - Add a WE_EnergyTime second Generic expiration timer to WE_TempU
Unit - Change color of WE_TempU to (Color of Neutral Hostile)
Unit Group - Add WE_TempU to WE_WildEnergyGroup
Special Effect - Create a special effect at WE_TempPoint using Abilities\Spells\Items\TomeOfRetraining\TomeOfRetrainingCaster.mdl
Special Effect - Destroy (Last created special effect)
Custom script: set udg_WE_UHandle = GetHandleId(udg_WE_TempU)
Set WE_TempU = (Picked unit)
Hashtable - Save Handle OfWE_TempU as 1 of WE_UHandle in WE_WildEnergyHash
Hashtable - Save (((Max mana of WE_u) - (Mana of WE_u)) x (WE_EnergyMultiplyerBase + (WE_EnergyMultiplyerPerLevel x WE_TempRealStore))) as 2 of WE_UHandle in (Last created hashtable)
Hashtable - Save (WE_EnergyAOEBase + (WE_EnergyAOEPerLevel x WE_TempRealStore)) as 3 of WE_UHandle in (Last created hashtable)
Hashtable - Save Handle OfWE_u as 4 of WE_UHandle in WE_WildEnergyHash
Set WE_TempGroup = (Units within WE_EnergyDetonationRange of WE_TempPoint matching ((((Matching unit) is A ground unit) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) belongs to an enemy of (Owner of WE_u)) Equal to True) and ((((M
Unit Group - Pick every unit in WE_TempGroup and do (Actions)
Loop - Actions
Set WE_TempU = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(WE_TempU is Magic Immune) Equal to False
((Unit-type of WE_TempU) is A structure) Equal to False
(WE_TempU is A ground unit) Equal to True
(WE_TempU is alive) Equal to True
(WE_TempU belongs to an enemy of (Owner of WE_u)) Equal to True
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Load 1 of WE_UHandle in WE_WildEnergyHash) is dead) Equal to True
Then - Actions
Unit - Kill WE_u
Else - Actions
Wild Energy Sphere death
Events
Unit - A unit Dies
Conditions
(Unit-type of (Triggering unit)) Equal to Energy Sphere
Actions
Set WE_u = (Triggering unit)
Set WE_UHandle = (Key (Triggering unit))
Set WE_TempPoint = (Position of WE_u)
Unit - Kill WE_u
Unit Group - Remove WE_u from WE_WildEnergyGroup
Lightning - Destroy (Load 5 of WE_UHandle in WE_WildEnergyHash)
Special Effect - Create a special effect at WE_TempPoint using Objects\Spawnmodels\NightElf\NEDeathMedium\NEDeath.mdl
Special Effect - Destroy (Last created special effect)
Set WE_TempGroup = (Units within (Load 3 of WE_UHandle from WE_WildEnergyHash) of WE_TempPoint)
Unit Group - Pick every unit in WE_TempGroup and do (Actions)
Loop - Actions
Set WE_TempU = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(WE_TempU is Magic Immune) Equal to False
((Unit-type of WE_TempU) is A structure) Equal to False
(WE_TempU is A ground unit) Equal to True
(WE_TempU is alive) Equal to True
(WE_TempU belongs to an enemy of (Owner of WE_u)) Equal to True
Then - Actions
Unit - Cause (Load 4 of WE_UHandle in WE_WildEnergyHash) to damage (Picked unit), dealing (Load 2 of WE_UHandle from WE_WildEnergyHash) damage of attack type Spells and damage type Normal
If ((Number of units in WE_WildEnergyGroup) Equal to 0) then do (Trigger - Turn off Wild Energy Loop <gen>) else do (Do nothing)
Give credits to Tank-Commander if you use any of these spells in your map, the models in some of these maps belong to their respective owners and you should credit them as well (to view which credits go to that particular resource, each map contains its own import instructions.
CONSUMER WARNING: If you do not have a fast computer, then you may need to modify the configurations extensively to avoid Framerate drop, due to the amount of SFX in these spells, additionally, balancing them together to work in a singular map make take quite a bit of effort.
the assumption of this being a modding site and this being a downloadable spell pack would implicate that you can use these in your maps, just remember to give credits
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.