Fruit Forest - Overlord Slam

This bundle is marked as awaiting update. A staff member has requested changes to it before it can be approved.
This is template for Zephyr Contest #15 - Model Based.
The model to be used is Garrosh

The caster jumps to the chosen point, deals damage to surrounding enemy units and gets healing for each damaged unit. The longer jump is the more damage will done. The final damage will showed in the floating text to be visible only for the owner of the caster. Caused units get knockback effect. "Knockbacked" unit gains additional damage if it collides with obstacles based on damage done before the knockback.

Also the jumping effect is followed by creating some copies of the caster which are repeating animation of the caster.
There are 3 triggers in the map + support folder triggers.
Support folder "TEST FOLDER" contains the "INIT" trigger and "HOW TO IMPORT" trigger.
These both triggers are used only for the test map.
The main folder named "OVERLORD SLAM" contains 3 main triggers.
"OVERLORD SLAM CONFIGURATION" - the trigger where You can set the ability parameters.
"OVERLORD SLAM USE" - the trigger which of the ability using.
"OVERLORD SLAM PERIODIC" - the trigger supports loop actions.
All parameters can be set in the "OVERLORD SLAM CONFIGURATION":
ANIMATION INDEX - Set the animation number to be played by the hero. Animation "Attack Slam" is 9.
DAMAGE/DUMMY CONFIGURATION - Set the dummy unit to be spawned for the hero, damage type and attack type for the ability.
RANGE MUST BE EQUAL LIKE IN THE OBJECT EDITOR - Set the max ability range. It must equals to the ability cast range to be set in the object editor.
  • Area of effect while finishing the ability - AoE hit area while finishing the jumping.
  • Basic damage - damage done without accumulating while the jumping.
  • Increasing damage while jumping - accumulating rate of the final damage done.
  • Percentage of the main damage while enemy collides with obstacles - works if the knockback is allowed. The "knockbacked unit" deals additional percent of the damage done if it collides with obstacles like alive destructibles with occlusion height, buildings, cliffs etc.
  • Jumping speed - how fast the jumping will finished.
  • Healing for each damaged unit, pts. - gets healing if hits enemy units.
  • Finish jumping if the distance between current hero point and target point of ability being cast is lesser than - the minimal range between the position of the caster and the ability being cast point stops jumping.
  • The height of jumping - regulates the jumping height.
  • Visual creating copies on the line of jumping - sets the visual effect. It regulates how many copies appeared on the way.
  • Hero reveals the copy if while the jumping the distance between the caster and the copy is lesser than... - the copies are hidden, but the hero reveal it if the distance between the caster and a copy is lesser than certain value.
  • Knockback duration (set 0 to disable the knockback) - knockback duration (0 = no knockback)
  • Speed rate of the knockback effect - regulates the speed rate of the knockback effect.
The ability doesn't belong to one unit. You can create more Garroshes with the ability and it still works.
  • HOW TO IMPORT
    • Events
    • Conditions
    • Actions
      • -------- 1. IMPORT DUMMY UNIT AND THE CUSTOM ABILITY. --------
      • -------- OPTIONAL: IMPORT GARROSH MODEL --------
      • -------- 2. COPY ALL TRIGGERS FROM THE "OVERLORD SLAM" FOLDER. --------
      • -------- 3. SET RIGHT PARAMETERS IN THE "OVER SLAM CONFIGURATION". --------
      • -------- 4. BE SURE DUMMY UNIT IS SET RIGHT. --------
full

full

full
  • OVER SLAM CONFIGURATION
    • Events
      • Time - Elapsed game time is 0.01 seconds
    • Conditions
    • Actions
      • -------- CREATE EMPTY GROUPS --------
      • Hashtable - Create a hashtable
      • Set OVSLAM_HASH = (Last created hashtable)
      • Custom script: set udg_OVSLAM_GROUP = CreateGroup()
      • Unit Group - Remove all units from OVSLAM_GROUP
      • Custom script: set udg_OVSLAM_GROUPKNOCK = CreateGroup()
      • Unit Group - Remove all units from OVSLAM_GROUPKNOCK
      • -------- ANIMATION INDEX OF THE "ATTACK SLAM" ANIMATION FOR GARROSH IS... --------
      • Set ANIMATION_INDEX = 9
      • -------- DAMAGE/DUMMY CONFIGURATION --------
      • Set OVSLAM_HEROCOPY_TYPE = Dummy Unit (Dummy)
      • Set OVSLAM_ATTACKTYPE = Spells
      • Set OVSLAM_DAMAGETYPE = Enhanced
      • -------- RANGE MUST BE EQUAL LIKE IN THE OBJECT EDITOR --------
      • Set OVSLAM_MAXRANGE[1] = 800.00
      • Set OVSLAM_MAXRANGE[2] = 900.00
      • Set OVSLAM_MAXRANGE[3] = 1000.00
      • -------- CONFIGURATION --------
      • -------- YOU CAN ADD MORE ARRAY FOR A FEW ABILITY LEVELS --------
      • -------- Area of Effect while finishing the ability, pts --------
      • Set OVSLAM_AOE[1] = 300.00
      • Set OVSLAM_AOE[2] = 320.00
      • Set OVSLAM_AOE[3] = 350.00
      • -------- Basic damage, pts --------
      • Set OVSLAM_BASEDAMAGE[1] = 50.00
      • Set OVSLAM_BASEDAMAGE[2] = 70.00
      • Set OVSLAM_BASEDAMAGE[3] = 90.00
      • -------- Increasing damage while jumping, pts/sec --------
      • Set OVSLAM_DAMAGE_RATE[1] = 250.00
      • Set OVSLAM_DAMAGE_RATE[2] = 280.00
      • Set OVSLAM_DAMAGE_RATE[3] = 320.00
      • -------- Percentage of the main damage while enemy collides with obstacles, % --------
      • Set OVSLAM_DAMAGE_ADD[1] = 35.00
      • Set OVSLAM_DAMAGE_ADD[2] = 45.00
      • Set OVSLAM_DAMAGE_ADD[3] = 60.00
      • -------- Jumping speed, pts/sec --------
      • Set OVSLAM_SPEED[1] = 600.00
      • Set OVSLAM_SPEED[2] = 600.00
      • Set OVSLAM_SPEED[3] = 600.00
      • -------- Healing for each damaged unit, pts --------
      • Set OVSLAM_HEAL[1] = 50.00
      • Set OVSLAM_HEAL[2] = 70.00
      • Set OVSLAM_HEAL[3] = 100.00
      • -------- Finish jumping if the distance between current hero point and target point of ability being cast is lesser than... , pts. --------
      • Set OVSLAM_MINFINISHDISTANCE[1] = 20.00
      • Set OVSLAM_MINFINISHDISTANCE[2] = 20.00
      • Set OVSLAM_MINFINISHDISTANCE[3] = 20.00
      • -------- The height of jumping, pts --------
      • Set OVSLAM_HEIGHT[1] = 600.00
      • Set OVSLAM_HEIGHT[2] = 600.00
      • Set OVSLAM_HEIGHT[3] = 600.00
      • -------- Visual creating copies on the line of jumping, % of MAX RANGE --------
      • Set OVSLAM_FREQUIENCY[1] = 5.00
      • Set OVSLAM_FREQUIENCY[2] = 4.00
      • Set OVSLAM_FREQUIENCY[3] = 3.00
      • -------- Hero reveals the copy if while the jumping the distance between the caster and the copy is lesser than... , pts --------
      • Set OVSLAM_ILLUSIONREVEALDISTANCE[1] = 15.00
      • Set OVSLAM_ILLUSIONREVEALDISTANCE[2] = 15.00
      • Set OVSLAM_ILLUSIONREVEALDISTANCE[3] = 15.00
      • -------- Knockback duration (set 0 to disable the knockback), sec --------
      • Set OVSLAM_KNOCK_DURATION[1] = 0.20
      • Set OVSLAM_KNOCK_DURATION[2] = 0.30
      • Set OVSLAM_KNOCK_DURATION[3] = 0.40
      • -------- Speed rate of the knockback effect, pts/sec --------
      • Set OVSLAM_KNOCK_SPEEDRATE[1] = 500.00
      • Set OVSLAM_KNOCK_SPEEDRATE[2] = 500.00
      • Set OVSLAM_KNOCK_SPEEDRATE[3] = 500.00
  • OVER SLAM USE
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ability being cast) Equal to Overlord Slam
        • Then - Actions
          • Set OVSLAM_UNIT[0] = (Triggering unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (OVSLAM_UNIT[0] is in OVSLAM_GROUP) Not equal to True
            • Then - Actions
              • Custom script: set udg_OVSLAM_INTEGER = GetHandleIdBJ( udg_OVSLAM_UNIT[0])
              • Set OVSLAM_POINT[0] = (Position of OVSLAM_UNIT[0])
              • Set OVSLAM_POINT[1] = (Target point of ability being cast)
              • Set OVSLAM_ABILEVEL = (Level of (Ability being cast) for OVSLAM_UNIT[0])
              • Hashtable - Save (Angle from OVSLAM_POINT[0] to OVSLAM_POINT[1]) as 1 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save (Distance between OVSLAM_POINT[0] and OVSLAM_POINT[1]) as 7 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save 0.00 as 8 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save 1.00 as 2 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save (X of OVSLAM_POINT[1]) as 3 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save (Y of OVSLAM_POINT[1]) as 4 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_SPEED[OVSLAM_ABILEVEL] as 0 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_MINFINISHDISTANCE[OVSLAM_ABILEVEL] as 5 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_MAXRANGE[OVSLAM_ABILEVEL] as 12 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save (100.00 / (1.00 x ((Load 7 of OVSLAM_INTEGER from OVSLAM_HASH) / (Load 12 of OVSLAM_INTEGER from OVSLAM_HASH)))) as 6 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_HEIGHT[OVSLAM_ABILEVEL] as 9 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_FREQUIENCY[OVSLAM_ABILEVEL] as 10 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_ILLUSIONREVEALDISTANCE[OVSLAM_ABILEVEL] as 14 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_AOE[OVSLAM_ABILEVEL] as 15 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_BASEDAMAGE[OVSLAM_ABILEVEL] as 16 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_HEAL[OVSLAM_ABILEVEL] as 17 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_KNOCK_DURATION[OVSLAM_ABILEVEL] as 18 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_KNOCK_SPEEDRATE[OVSLAM_ABILEVEL] as 19 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_DAMAGE_ADD[OVSLAM_ABILEVEL] as 22 of OVSLAM_INTEGER in OVSLAM_HASH
              • Hashtable - Save OVSLAM_DAMAGE_RATE[OVSLAM_ABILEVEL] as 23 of OVSLAM_INTEGER in OVSLAM_HASH
              • Custom script: set udg_OVSLAM_GROUPTEMP = CreateGroup()
              • Unit Group - Remove all units from OVSLAM_GROUPTEMP
              • Custom script: call RemoveLocation( udg_OVSLAM_POINT[1] )
              • Custom script: call RemoveLocation( udg_OVSLAM_POINT[0] )
              • Set OVSLAM_POINT[0] = (Position of OVSLAM_UNIT[0])
              • For each (Integer OVSLAM_LOOP) from 1 to (Integer(((100.00 x ((Load 7 of OVSLAM_INTEGER from OVSLAM_HASH) / (Load 12 of OVSLAM_INTEGER from OVSLAM_HASH))) / (Load 10 of OVSLAM_INTEGER from OVSLAM_HASH)))), do (Actions)
                • Loop - Actions
                  • Set OVSLAM_POINT[OVSLAM_LOOP] = (OVSLAM_POINT[0] offset by ((0.10 x (Real(OVSLAM_LOOP))) x (Load 12 of OVSLAM_INTEGER from OVSLAM_HASH)) towards (Load 1 of OVSLAM_INTEGER from OVSLAM_HASH) degrees)
                  • Unit - Create 1 OVSLAM_HEROCOPY_TYPE for (Owner of OVSLAM_UNIT[0]) at OVSLAM_POINT[OVSLAM_LOOP] facing (Load 1 of OVSLAM_INTEGER from OVSLAM_HASH) degrees
                  • Unit Group - Add (Last created unit) to OVSLAM_GROUPTEMP
                  • Unit - Change color of (Last created unit) to Black
                  • Unit - Add a (0.50 + ((Load 7 of OVSLAM_INTEGER from OVSLAM_HASH) / (Load 0 of OVSLAM_INTEGER from OVSLAM_HASH))) second Force Of Nature expiration timer to (Last created unit)
                  • Unit - Make (Last created unit) Explode on death
                  • Custom script: call SetUnitAnimationByIndex( GetLastCreatedUnit(), udg_ANIMATION_INDEX )
                  • Animation - Change (Last created unit)'s animation speed to (Load 6 of OVSLAM_INTEGER from OVSLAM_HASH)% of its original speed
                  • Animation - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
                  • Animation - Change (Last created unit) flying height to 4000.00 at 0.00
                  • Custom script: call RemoveLocation( udg_OVSLAM_POINT[udg_OVSLAM_LOOP] )
              • Hashtable - Save Handle OfOVSLAM_GROUPTEMP as 13 of OVSLAM_INTEGER in OVSLAM_HASH
              • Custom script: call RemoveLocation( udg_OVSLAM_POINT[0] )
              • Unit Group - Add OVSLAM_UNIT[0] to OVSLAM_GROUP
            • Else - Actions
        • Else - Actions
  • OVER SLAM PERIODIC
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in OVSLAM_GROUP) Greater than 0
        • Then - Actions
          • -------- This is the period. It must be equal to event periodic timer. --------
          • Set OVSLAM_REAL[0] = 0.02
          • Unit Group - Pick every unit in OVSLAM_GROUP and do (Actions)
            • Loop - Actions
              • Set OVSLAM_UNIT[0] = (Picked unit)
              • Unit - Turn collision for OVSLAM_UNIT[0] Off
              • Custom script: set udg_OVSLAM_INTEGER = GetHandleIdBJ( udg_OVSLAM_UNIT[0])
              • -------- 16 as OVSLAM_INTEGER is accumulated damage. It always being increased while the caster is in the jump. 23 as OVSLAM_INT is bonus damage --------
              • Hashtable - Save ((Load 16 of OVSLAM_INTEGER from OVSLAM_HASH) + ((Load 23 of OVSLAM_INTEGER from OVSLAM_HASH) x OVSLAM_REAL[0])) as 16 of OVSLAM_INTEGER in OVSLAM_HASH
              • -------- \\ --------
              • -------- 2 as OVSLAM_INTEGER doesn't allow to repeat animation --------
              • -------- \\ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 2 of OVSLAM_INTEGER from OVSLAM_HASH) Greater than 0.00
                • Then - Actions
                  • Hashtable - Save 0.00 as 2 of OVSLAM_INTEGER in OVSLAM_HASH
                  • Custom script: call SetUnitAnimationByIndex( udg_OVSLAM_UNIT[0], udg_ANIMATION_INDEX )
                  • Animation - Change OVSLAM_UNIT[0]'s animation speed to (Load 6 of OVSLAM_INTEGER from OVSLAM_HASH)% of its original speed
                • Else - Actions
              • -------- \\ --------
              • -------- 0 as OVSLAM_INTEGER is speed of jumping. 1 as OVSLAM_INTEGER is angle between the position of caster and target point of aiblity being cast --------
              • -------- \\ --------
              • Set OVSLAM_POINT[0] = (Position of OVSLAM_UNIT[0])
              • Set OVSLAM_POINT[1] = (OVSLAM_POINT[0] offset by ((Load 0 of OVSLAM_INTEGER from OVSLAM_HASH) x OVSLAM_REAL[0]) towards (Load 1 of OVSLAM_INTEGER from OVSLAM_HASH) degrees)
              • -------- 8 as OVSLAM_INTEGER is passed distance. It helps to check the required height. --------
              • Hashtable - Save ((Load 8 of OVSLAM_INTEGER from OVSLAM_HASH) + ((Load 0 of OVSLAM_INTEGER from OVSLAM_HASH) x OVSLAM_REAL[0])) as 8 of OVSLAM_INTEGER in OVSLAM_HASH
              • Unit - Move OVSLAM_UNIT[0] instantly to OVSLAM_POINT[1], facing (Load 1 of OVSLAM_INTEGER from OVSLAM_HASH) degrees
              • -------- \\ --------
              • -------- This group detects visual copies. They must be revealed after the distance between the caster in the copy lesser than certain value. --------
              • -------- It also helps to freeze revealed copy. --------
              • -------- \\ --------
              • Set OVSLAM_GROUPTEMP = (Load 13 of OVSLAM_INTEGER in OVSLAM_HASH)
              • Unit Group - Pick every unit in OVSLAM_GROUPTEMP and do (Actions)
                • Loop - Actions
                  • Set OVSLAM_UNIT[1] = (Picked unit)
                  • Set OVSLAM_POINT[3] = (Position of OVSLAM_UNIT[1])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between OVSLAM_POINT[3] and OVSLAM_POINT[1]) Less than or equal to (Load 14 of OVSLAM_INTEGER from OVSLAM_HASH)
                    • Then - Actions
                      • Custom script: call DestroyEffectBJ( AddSpecialEffectTarget("Abilities\\Spells\\NightElf\\BattleRoar\\RoarCaster.mdl", udg_OVSLAM_UNIT[1], "chest") )
                      • Animation - Change OVSLAM_UNIT[1]'s animation speed to 0.00% of its original speed
                      • Animation - Change OVSLAM_UNIT[1]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 40.00% transparency
                      • Animation - Change OVSLAM_UNIT[1] flying height to (Current flying height of OVSLAM_UNIT[0]) at 0.00
                    • Else - Actions
                  • Set OVSLAM_UNIT[1] = No unit
                  • Custom script: call RemoveLocation( udg_OVSLAM_POINT[3] )
              • -------- \\ --------
              • -------- This point has X,Y coordinates of target point of ability being cast. It helps to detect when the caster must stop. --------
              • -------- \\ --------
              • Set OVSLAM_POINT[2] = (Point((Load 3 of OVSLAM_INTEGER from OVSLAM_HASH), (Load 4 of OVSLAM_INTEGER from OVSLAM_HASH)))
              • -------- \\ --------
              • -------- This action regulates the height of the caster while jumping. 7 as OVSLAM_INTEGER is distance between the caster and target point of ability being cast --------
              • -------- \\ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 8 of OVSLAM_INTEGER from OVSLAM_HASH) Greater than or equal to (0.50 x (Load 7 of OVSLAM_INTEGER from OVSLAM_HASH))
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Level of Storm Crow Form for OVSLAM_UNIT[0]) Equal to 0
                    • Then - Actions
                      • Unit - Add Storm Crow Form to OVSLAM_UNIT[0]
                      • Unit - Remove Storm Crow Form from OVSLAM_UNIT[0]
                    • Else - Actions
                  • Animation - Change OVSLAM_UNIT[0] flying height to ((1.00 - ((1.00 x (Load 8 of OVSLAM_INTEGER from (Last created hashtable))) / (1.00 x (Load 7 of OVSLAM_INTEGER from OVSLAM_HASH)))) x ((Load 9 of OVSLAM_INTEGER from OVSLAM_HASH) / 1.00)) at 0.00
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Level of Storm Crow Form for OVSLAM_UNIT[0]) Equal to 0
                    • Then - Actions
                      • Unit - Add Storm Crow Form to OVSLAM_UNIT[0]
                      • Unit - Remove Storm Crow Form from OVSLAM_UNIT[0]
                    • Else - Actions
                  • Animation - Change OVSLAM_UNIT[0] flying height to (((Load 8 of OVSLAM_INTEGER from OVSLAM_HASH) / (1.00 x (Load 7 of OVSLAM_INTEGER from OVSLAM_HASH))) x ((Load 9 of OVSLAM_INTEGER from OVSLAM_HASH) / 1.00)) at 0.00
              • -------- \\ --------
              • -------- This action detects conditions to stop jumping and removing from the group --------
              • -------- \\ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • (OVSLAM_UNIT[0] is alive) Not equal to True
                      • (OVSLAM_UNIT[0] is hidden) Equal to True
                      • (Distance between OVSLAM_POINT[1] and OVSLAM_POINT[2]) Less than or equal to (Load 5 of OVSLAM_INTEGER from OVSLAM_HASH)
                • Then - Actions
                  • Animation - Change OVSLAM_UNIT[0] flying height to (Default flying height of OVSLAM_UNIT[0]) at 0.00
                  • Unit - Turn collision for OVSLAM_UNIT[0] On
                  • Animation - Change OVSLAM_UNIT[0]'s animation speed to 100.00% of its original speed
                  • Animation - Reset OVSLAM_UNIT[0]'s animation
                  • Unit Group - Remove OVSLAM_UNIT[0] from OVSLAM_GROUP
                  • Set OVSLAM_GROUPTEMP = (Load 13 of OVSLAM_INTEGER in OVSLAM_HASH)
                  • Custom script: call DestroyGroup( udg_OVSLAM_GROUPTEMP )
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (OVSLAM_UNIT[0] is alive) Equal to True
                      • (OVSLAM_UNIT[0] is hidden) Not equal to True
                    • Then - Actions
                      • -------- \\ --------
                      • -------- This action deals damage sto surrounding enemies dealing 16 as OVSLAM_INTEGER damage to all enemies in 15 as OVSLAM_INTEGER AoE --------
                      • -------- Each damaged unit heals the caster by 17 as OVSLAM_INTEGER --------
                      • -------- \\ --------
                      • Set OVSLAM_PLAYERFORCE = (All players matching ((Matching player) Equal to (Owner of OVSLAM_UNIT[0])))
                      • Floating Text - Create floating text that reads ((String((Integer((Load 16 of OVSLAM_INTEGER from OVSLAM_HASH))))) + !) at OVSLAM_POINT[1] with Z offset 10.00, using font size 15.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
                      • Floating Text - Change (Last created floating text): Disable permanence
                      • Floating Text - Show (Last created floating text) for OVSLAM_PLAYERFORCE
                      • Floating Text - Set the velocity of (Last created floating text) to 0.00 towards 0.00 degrees
                      • Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
                      • Custom script: call DestroyForce( udg_OVSLAM_PLAYERFORCE )
                      • Set OVSLAM_POINT[3] = (Position of OVSLAM_UNIT[0])
                      • Custom script: call DestroyEffectBJ( AddSpecialEffectLoc("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl", udg_OVSLAM_POINT[3]) )
                      • Set OVSLAM_GROUPTEMP = (Units within (Load 15 of OVSLAM_INTEGER from OVSLAM_HASH) of OVSLAM_POINT[3] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Magic Immune) Not equal to True) and (((Level of Invulnerable (Neutral) for (Matching unit)) Equal to
                      • Unit Group - Pick every unit in OVSLAM_GROUPTEMP and do (Actions)
                        • Loop - Actions
                          • Set OVSLAM_UNIT[1] = (Picked unit)
                          • Set OVSLAM_POINT[4] = (Position of OVSLAM_UNIT[1])
                          • Set OVSLAM_REAL[1] = (Life of OVSLAM_UNIT[1])
                          • Unit - Cause OVSLAM_UNIT[0] to damage OVSLAM_UNIT[1], dealing (Load 16 of OVSLAM_INTEGER from OVSLAM_HASH) damage of attack type OVSLAM_ATTACKTYPE and damage type OVSLAM_DAMAGETYPE
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Or - Any (Conditions) are true
                                • Conditions
                                  • And - All (Conditions) are true
                                    • Conditions
                                      • (OVSLAM_UNIT[1] is alive) Equal to True
                                      • (Life of OVSLAM_UNIT[1]) Not equal to OVSLAM_REAL[1]
                                  • And - All (Conditions) are true
                                    • Conditions
                                      • (OVSLAM_UNIT[1] is alive) Not equal to True
                            • Then - Actions
                              • Unit - Set life of OVSLAM_UNIT[0] to ((Life of OVSLAM_UNIT[0]) + (Load 17 of OVSLAM_INTEGER from OVSLAM_HASH))
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Or - Any (Conditions) are true
                                    • Conditions
                                      • (OVSLAM_UNIT[1] is alive) Not equal to True
                                      • (Default movement speed of OVSLAM_UNIT[1]) Equal to 0.00
                                      • (OVSLAM_UNIT[1] is Snared) Equal to True
                                • Then - Actions
                                  • Do nothing
                                • Else - Actions
                                  • -------- \\ --------
                                  • -------- This section enables knockback effect --------
                                  • -------- It stores 16 as OVSLAM_INT damage done to deal addtional 18 as OVSLAM_INTEGER % of damage done while enemy collides with the obstacles. --------
                                  • -------- It stores 16 as OVSLAM_INT damage done to deal addtional 22 as OVSLAM_INTEGER % of damage done while enemy collides with the obstacles. --------
                                  • -------- 18 is Duration of Knockback 19 is distance --------
                                  • -------- 20 is angle betweeen the caster and victim --------
                                  • -------- \\ --------
                                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load 18 of OVSLAM_INTEGER from OVSLAM_HASH) Greater than 0.00
                                      • (Load 19 of OVSLAM_INTEGER from OVSLAM_HASH) Greater than 0.00
                                    • Then - Actions
                                      • Custom script: set udg_OVSLAM_INTEGER2 = GetHandleIdBJ( udg_OVSLAM_UNIT[1])
                                      • Unit Group - Add OVSLAM_UNIT[1] to OVSLAM_GROUPKNOCK
                                      • Hashtable - Save (Load 16 of OVSLAM_INTEGER from OVSLAM_HASH) as 16 of OVSLAM_INTEGER2 in OVSLAM_HASH
                                      • Hashtable - Save (Load 18 of OVSLAM_INTEGER from OVSLAM_HASH) as 18 of OVSLAM_INTEGER2 in OVSLAM_HASH
                                      • Hashtable - Save (Load 19 of OVSLAM_INTEGER from OVSLAM_HASH) as 19 of OVSLAM_INTEGER2 in OVSLAM_HASH
                                      • Hashtable - Save (Angle from OVSLAM_POINT[3] to OVSLAM_POINT[4]) as 20 of OVSLAM_INTEGER2 in OVSLAM_HASH
                                      • Hashtable - Save (Load 22 of OVSLAM_INTEGER from OVSLAM_HASH) as 22 of OVSLAM_INTEGER2 in OVSLAM_HASH
                                      • Hashtable - Save Handle OfOVSLAM_UNIT[0] as 21 of OVSLAM_INTEGER2 in OVSLAM_HASH
                                    • Else - Actions
                            • Else - Actions
                          • Custom script: call RemoveLocation( udg_OVSLAM_POINT[4] )
                          • Set OVSLAM_UNIT[1] = No unit
                      • Custom script: call RemoveLocation( udg_OVSLAM_POINT[3] )
                      • Custom script: call DestroyGroup( udg_OVSLAM_GROUPTEMP )
                    • Else - Actions
                  • Hashtable - Clear all child hashtables of child OVSLAM_INTEGER in OVSLAM_HASH
                • Else - Actions
              • Custom script: call RemoveLocation( udg_OVSLAM_POINT[1] )
              • Custom script: call RemoveLocation( udg_OVSLAM_POINT[2] )
              • Custom script: call RemoveLocation( udg_OVSLAM_POINT[0] )
              • Set OVSLAM_UNIT[0] = No unit
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in OVSLAM_GROUPKNOCK) Greater than 0
        • Then - Actions
          • Set OVSLAM_REAL[0] = 0.02
          • Unit Group - Pick every unit in OVSLAM_GROUPKNOCK and do (Actions)
            • Loop - Actions
              • -------- \\ --------
              • -------- The knockback group moves the unit according to stored 18,19 and 20 as OVSLAM_INT --------
              • -------- \\ --------
              • Set OVSLAM_UNIT[0] = (Picked unit)
              • Unit - Turn collision for OVSLAM_UNIT[0] Off
              • Custom script: set udg_OVSLAM_INTEGER = GetHandleIdBJ( udg_OVSLAM_UNIT[0])
              • Set OVSLAM_REAL[1] = (Load 18 of OVSLAM_INTEGER from OVSLAM_HASH)
              • Set OVSLAM_REAL[1] = (OVSLAM_REAL[1] - OVSLAM_REAL[0])
              • Hashtable - Save OVSLAM_REAL[1] as 18 of OVSLAM_INTEGER in OVSLAM_HASH
              • Set OVSLAM_POINT[0] = (Position of OVSLAM_UNIT[0])
              • Set OVSLAM_POINT[1] = (OVSLAM_POINT[0] offset by ((Load 19 of OVSLAM_INTEGER from OVSLAM_HASH) x OVSLAM_REAL[0]) towards (Load 20 of OVSLAM_INTEGER from OVSLAM_HASH) degrees)
              • Custom script: call DestroyEffectBJ( AddSpecialEffectLoc("Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl", udg_OVSLAM_POINT[0]) )
              • Unit - Move OVSLAM_UNIT[0] instantly to OVSLAM_POINT[1]
              • -------- \\ --------
              • -------- OVSLAM_TEXT detects alive destructible with positive occlusion height value. --------
              • -------- \\ --------
              • Set OVSLAM_TEXT = <Empty String>
              • -------- \\ --------
              • -------- OVSLAM_REAL[2] is paramater to detect buildings and destructibles on the way --------
              • -------- \\ --------
              • Set OVSLAM_REAL[2] = (9.00 x ((Load 19 of OVSLAM_INTEGER from OVSLAM_HASH) x OVSLAM_REAL[0]))
              • Set OVSLAM_AREA = (Region centered at OVSLAM_POINT[1] with size (OVSLAM_REAL[2], OVSLAM_REAL[2]))
              • Destructible - Pick every destructible in OVSLAM_AREA and do (Actions)
                • Loop - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Current life of (Picked destructible)) Greater than 0.00
                      • (Occlusion height of (Picked destructible)) Greater than 0.00
                    • Then - Actions
                      • Set OVSLAM_TEXT = (Name of (Picked destructible))
                      • Animation - Play (Picked destructible)'s stand hit animation
                    • Else - Actions
              • Custom script: call RemoveRect( udg_OVSLAM_AREA )
              • -------- \\ --------
              • -------- This group detects building on the way --------
              • -------- \\ --------
              • Set OVSLAM_GROUPTEMP = (Units within (2.00 x OVSLAM_REAL[2]) of OVSLAM_POINT[1] matching ((((Matching unit) is alive) Equal to True) and (((Matching unit) is A structure) Equal to True)))
              • -------- \\ --------
              • -------- The obstacles deal damage according to stored 16 and 22 values --------
              • -------- \\ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • OVSLAM_TEXT Not equal to <Empty String>
                      • (Terrain cliff level at OVSLAM_POINT[0]) Not equal to (Terrain cliff level at OVSLAM_POINT[1])
                      • (Terrain pathing at OVSLAM_POINT[0] of type Walkability is off) Equal to True
                      • (Number of units in OVSLAM_GROUPTEMP) Greater than 0
                • Then - Actions
                  • Unit - Cause (Load 21 of OVSLAM_INTEGER in OVSLAM_HASH) to damage OVSLAM_UNIT[0], dealing ((Load 16 of OVSLAM_INTEGER from OVSLAM_HASH) x ((Load 22 of OVSLAM_INTEGER from OVSLAM_HASH) / 100.00)) damage of attack type OVSLAM_ATTACKTYPE and damage type OVSLAM_DAMAGETYPE
                  • Custom script: call DestroyEffectBJ( AddSpecialEffectTarget("Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl", udg_OVSLAM_UNIT[0], "chest") )
                • Else - Actions
              • -------- \\ --------
              • -------- These conditions determine when the unit must be removed from the knockback process --------
              • -------- \\ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Or - Any (Conditions) are true
                    • Conditions
                      • OVSLAM_TEXT Not equal to <Empty String>
                      • (Terrain cliff level at OVSLAM_POINT[0]) Not equal to (Terrain cliff level at OVSLAM_POINT[1])
                      • (Terrain pathing at OVSLAM_POINT[0] of type Walkability is off) Equal to True
                      • (Number of units in OVSLAM_GROUPTEMP) Greater than 0
                      • (Load 18 of OVSLAM_INTEGER from OVSLAM_HASH) Less than or equal to 0.00
                      • (OVSLAM_UNIT[0] is alive) Not equal to True
                      • (OVSLAM_UNIT[0] is hidden) Equal to True
                • Then - Actions
                  • Unit - Turn collision for OVSLAM_UNIT[0] On
                  • Unit Group - Remove OVSLAM_UNIT[0] from OVSLAM_GROUPKNOCK
                  • Set OVSLAM_POINT[2] = (Position of OVSLAM_UNIT[0])
                  • Unit - Move OVSLAM_UNIT[0] instantly to OVSLAM_POINT[2]
                  • Hashtable - Clear all child hashtables of child OVSLAM_INTEGER in OVSLAM_HASH
                  • Custom script: call RemoveLocation( udg_OVSLAM_POINT[2] )
                • Else - Actions
              • Custom script: call DestroyGroup( udg_OVSLAM_GROUPTEMP )
              • Custom script: call RemoveLocation( udg_OVSLAM_POINT[1] )
              • Custom script: call RemoveLocation( udg_OVSLAM_POINT[0] )
        • Else - Actions
Garrosh model by Tauer
Special for Zephyr Contest Zephyr Contest #15 - Model Based
Contents

Overlord Slam (Map)

Reviews
KILLCIDE
Needs Fixed Loops should only be on when they have to The way you are adding / removing Crow Form is unsafe Clean up the repeating function calls Suggestions Fix any of the remaining suggestions made by IcemanBo in his judge review Status Awaiting...
Level 10
Joined
Aug 21, 2010
Messages
318
This section is slowly dying.
I wonder sometimes, what's the point to put something here.You lose half your life waiting for the moderator.
In the past this section was extremely lively, now, definitely dead section.

Edit:
By the way, a good spell.
 
Last edited:

KILLCIDE

Spell Moderator
Level 36
Joined
Jul 22, 2015
Messages
3,488
You lose half your life waiting for the moderator.
You don't have much of a life to begin with if you sit here constantly refreshing the page hoping to get a response from the moderator. Also, there are reasons why we moderators don't comment on newly submitted resources:
  • Spells / Systems can change dramatically from the time they are first submitted. It would be a waste of time reviewing it immediately, only to have it changed to the point where I have to review it again
  • I want the community to have a chance to give input on a resource instead of a moderator always doing it
  • The moderators have a life outside of Hive as well, generally a very busy one
 
Level 10
Joined
Aug 21, 2010
Messages
318
You don't have much of a life to begin with if you sit here constantly refreshing the page hoping to get a response from the moderator. Also, there are reasons why we moderators don't comment on newly submitted resources:
  • Spells / Systems can change dramatically from the time they are first submitted. It would be a waste of time reviewing it immediately, only to have it changed to the point where I have to review it again
  • I want the community to have a chance to give input on a resource instead of a moderator always doing it
  • The moderators have a life outside of Hive as well, generally a very busy one
w/e
 
Top