• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Beast Attack v1.1b

Name: Beast Attack
Current Version: 1.1b
Language: GUI
User Friendly: Yes
Works With the Latest Patch: Yes

Author: -BerzekeR-

images


Beast Attack
Rexxar claps his axes together with his strength of the beast, creating a massive attack, dealing damage and knocking back enemy units standing in front of him.

Level 1 - Deals 2.5x strength damage in AoE 120 and knock backs units in max. distance of 150.

Level 2 - Deals 5x strength damage in AoE 160 and knock backs units in max. distance of 200.

Level 3 - Deals 7.5x strength damage in AoE 200 and knock backs units in max. distance of 250.



  • Beast Attack
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Beast Attack
    • Actions
      • -------- --------------------------------------------------------- --------
      • -------- Spell setup --------
      • -------- --------------------------------------------------------- --------
      • Set Beast_Attack_Caster = (Triggering unit)
      • Set Beast_Attack_Ability_Level = (Level of (Ability being cast) for Beast_Attack_Caster)
      • Set Beast_Attack_Location = (Position of Beast_Attack_Caster)
      • Set Beast_Attack_Direction = (Facing of Beast_Attack_Caster)
      • -------- ------------------------------------------------------------------------------------------------------------------ --------
      • -------- -==*////##############\\\\*==- --------
      • -------- --------------------------------------------------------- --------
      • -------- Yes / No, options --------
      • -------- ----- --------
      • Set Beast_Attack_Destroy_Trees = True
      • Set Beast_Attack_Knock_Back_on = True
      • Set Beast_Attack_Random_Distance = True
      • -------- ----- --------
      • -------- Special effect strings used in KB trigger --------
      • -------- ----- --------
      • Set Beast_Attack_KB_Special_Effect = Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
      • Set Beast_Attack_Destroy_Trees_SE = Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
      • -------- ----- --------
      • -------- How far away the damage group is --------
      • -------- ----- --------
      • Set Beast_Attack_Base_Offset = 60.00
      • Set Beast_Attack_Bonus_Offset = 20.00
      • -------- ----- --------
      • -------- How big the damage group is --------
      • -------- ----- --------
      • Set Beast_Attack_Base_Radius = 80.00
      • Set Beast_Attack_Bonus_Radius = 40.00
      • -------- ----- --------
      • -------- Damage type and multiplier --------
      • -------- ----- --------
      • Set Beast_Attack_Atribute = (Strength of Beast_Attack_Caster (Include bonuses))
      • Set Beast_Attack_Damage_Multiplier = 2.50
      • -------- ----- --------
      • -------- Knockback setings --------
      • -------- ----- --------
      • Set Beast_Attack_Destruct_Kill_AoE = 150.00
      • Set Beast_Attack_KB_Minim_Distance = 85.00
      • Set Beast_Attack_KB_Base_Distance = 100.00
      • Set Beast_Attack_KB_Bonus_Distance = 50.00
      • Set Beast_Attack_KB_Speed = 8.00
      • -------- --------------------------------------------------------- --------
      • -------- -==*\\\\##############////*==- --------
      • -------- ------------------------------------------------------------------------------------------------------------------ --------
      • -------- Final spell calculations --------
      • -------- --------------------------------------------------------- --------
      • Set Beast_Attack_Total_Radius = (Beast_Attack_Base_Radius + (Beast_Attack_Bonus_Radius x (Real(Beast_Attack_Ability_Level))))
      • Set Beast_Attack_Total_Offset = (Beast_Attack_Base_Offset + (Beast_Attack_Bonus_Offset x (Real(Beast_Attack_Ability_Level))))
      • Set Beast_Attack_Total_Damage = ((Real(Beast_Attack_Atribute)) x (Beast_Attack_Damage_Multiplier x (Real(Beast_Attack_Ability_Level))))
      • Set Beast_Attack_KB_Total_Distance = (Beast_Attack_KB_Base_Distance + (Beast_Attack_KB_Bonus_Distance x (Real(Beast_Attack_Ability_Level))))
      • -------- --------------------------------------------------------- --------
      • -------- Setting the damage area --------
      • -------- --------------------------------------------------------- --------
      • Set Beast_Attack_Damage_Location = (Beast_Attack_Location offset by Beast_Attack_Total_Offset towards Beast_Attack_Direction degrees)
      • Set Beast_Attack_Damage_Group = (Units within Beast_Attack_Total_Radius of Beast_Attack_Damage_Location matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Owner of (Matching unit)) is an enemy of (Owner of Beast_Attack_Caster)
      • -------- --------------------------------------------------------- --------
      • -------- Creating nice special effects --------
      • -------- --------------------------------------------------------- --------
      • Special Effect - Create a special effect attached to the hand, left of Beast_Attack_Caster using Abilities\Spells\Other\Incinerate\IncinerateBuff.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect attached to the hand, right of Beast_Attack_Caster using Abilities\Spells\Other\Incinerate\IncinerateBuff.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect attached to the hand, left of Beast_Attack_Caster using units\human\phoenix\phoenix.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect attached to the hand, right of Beast_Attack_Caster using units\human\phoenix\phoenix.mdl
      • Special Effect - Destroy (Last created special effect)
      • Unit - Create 1 Dummy for (Owner of Beast_Attack_Caster) at Beast_Attack_Damage_Location facing Beast_Attack_Direction degrees
      • Unit - Kill (Last created unit)
      • -------- --------------------------------------------------------- --------
      • -------- Creating a nice floating text --------
      • -------- --------------------------------------------------------- --------
      • Floating Text - Create floating text that reads ((String((Integer(Beast_Attack_Total_Damage)))) + !) at Beast_Attack_Location with Z offset 0.00, using font size 13.00, color (90.00%, 5.00%, 5.00%), and 0.00% transparency
      • Floating Text - Change (Last created floating text): Disable permanence
      • Floating Text - Set the velocity of (Last created floating text) to 40.00 towards 90.00 degrees
      • Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds
      • Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
      • -------- --------------------------------------------------------- --------
      • -------- Starting the execution --------
      • -------- --------------------------------------------------------- --------
      • Unit Group - Pick every unit in Beast_Attack_Damage_Group and do (Actions)
        • Loop - Actions
          • -------- --------------------------------------------------------- --------
          • -------- Damaging the units and creating special effects --------
          • -------- --------------------------------------------------------- --------
          • Unit - Cause Beast_Attack_Caster to damage (Picked unit), dealing Beast_Attack_Total_Damage damage of attack type Spells and damage type Unknown
          • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
          • Special Effect - Destroy (Last created special effect)
          • -------- --------------------------------------------------------- --------
          • -------- This runs if Knock back is on // True --------
          • -------- --------------------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Beast_Attack_Knock_Back_on Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in Beast_Attack_Damage_Group) Greater than or equal to 1
                • Then - Actions
                  • Trigger - Turn on Beast Attack Knock <gen>
                • Else - Actions
              • -------- --------------------------------------------------------- --------
              • -------- Adding units to the knockback group --------
              • -------- --------------------------------------------------------- --------
              • Set Beast_Attack_LocationII = (Position of (Picked unit))
              • Unit - Turn collision for (Picked unit) Off
              • Unit Group - Add (Picked unit) to Beast_Attack_KB_Group
              • -------- --------------------------------------------------------- --------
              • -------- This runs if random distance is on //True --------
              • -------- --------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Beast_Attack_Random_Distance Equal to True
                • Then - Actions
                  • Set Beast_Attack_KB_Total_Distance = (Random real number between Beast_Attack_KB_Minim_Distance and Beast_Attack_KB_Total_Distance)
                • Else - Actions
              • -------- --------------------------------------------------------- --------
              • -------- Saving values into hashtable --------
              • -------- --------------------------------------------------------- --------
              • Set Beast_Attack_KB_Angle = (Angle from Beast_Attack_Location to Beast_Attack_LocationII)
              • Hashtable - Save Beast_Attack_KB_Total_Distance as (Key distance) of (Key (Picked unit)) in Beast_Attack_Table
              • Hashtable - Save Beast_Attack_KB_Speed as (Key speed) of (Key (Picked unit)) in Beast_Attack_Table
              • Hashtable - Save Beast_Attack_KB_Angle as (Key angle) of (Key (Picked unit)) in Beast_Attack_Table
              • Custom script: call RemoveLocation(udg_Beast_Attack_LocationII)
            • Else - Actions
      • -------- --------------------------------------------------------- --------
      • -------- Clearing leaks --------
      • -------- --------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_Beast_Attack_Location)
      • Custom script: call RemoveLocation(udg_Beast_Attack_Damage_Location)
      • Custom script: call DestroyGroup(udg_Beast_Attack_Damage_Group)
  • Beast Attack Knock
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- ================================================================== --------
      • -------- LEAVE THIS TRIGGER AS IT IS --------
      • -------- ================================================================== --------
      • Unit Group - Pick every unit in Beast_Attack_KB_Group and do (Actions)
        • Loop - Actions
          • -------- --------------------------------------------------------- --------
          • -------- Loading values --------
          • -------- --------------------------------------------------------- --------
          • Set Beast_Attack_KB_Total_Distance = (Load (Key distance) of (Key (Picked unit)) from Beast_Attack_Table)
          • Set Beast_Attack_KB_Speed = (Load (Key speed) of (Key (Picked unit)) from Beast_Attack_Table)
          • Set Beast_Attack_KB_Angle = (Load (Key angle) of (Key (Picked unit)) from Beast_Attack_Table)
          • -------- --------------------------------------------------------- --------
          • -------- Checking the remaining distance --------
          • -------- --------------------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Beast_Attack_KB_Total_Distance Greater than 0.00
            • Then - Actions
              • -------- --------------------------------------------------------- --------
              • -------- Setting the knockback locations --------
              • -------- --------------------------------------------------------- --------
              • Set Beast_Attack_KB_LocI = (Position of (Picked unit))
              • Set Beast_Attack_KB_LocII = (Beast_Attack_KB_LocI offset by Beast_Attack_KB_Speed towards Beast_Attack_KB_Angle degrees)
              • Hashtable - Save (Beast_Attack_KB_Total_Distance - Beast_Attack_KB_Speed) as (Key distance) of (Key (Picked unit)) in Beast_Attack_Table
              • -------- --------------------------------------------------------- --------
              • -------- Removing a unit from unit group, if the pathing is off --------
              • -------- --------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Terrain pathing at Beast_Attack_KB_LocII of type Walkability is off) Equal to True
                • Then - Actions
                  • Unit - Turn collision for (Picked unit) On
                  • Unit Group - Remove (Picked unit) from Beast_Attack_KB_Group
                  • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in Beast_Attack_Table
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Number of units in Beast_Attack_KB_Group) Equal to 0
                    • Then - Actions
                      • Trigger - Turn off Beast Attack Knock <gen>
                    • Else - Actions
                • Else - Actions
                  • -------- --------------------------------------------------------- --------
                  • -------- Moving a unit --------
                  • -------- --------------------------------------------------------- --------
                  • Unit - Move (Picked unit) instantly to Beast_Attack_KB_LocII
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Random real number between 1.00 and 10.00) Less than or equal to 3.33
                • Then - Actions
                  • -------- --------------------------------------------------------- --------
                  • -------- Creating a nice special effect --------
                  • -------- --------------------------------------------------------- --------
                  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Beast_Attack_KB_Special_Effect
                  • Special Effect - Destroy (Last created special effect)
                • Else - Actions
              • -------- --------------------------------------------------------- --------
              • -------- If destroy tress is on //True this will destroy trees --------
              • -------- --------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Beast_Attack_Destroy_Trees Equal to True
                • Then - Actions
                  • Destructible - Pick every destructible within Beast_Attack_Destruct_Kill_AoE of Beast_Attack_KB_LocII and do (Actions)
                    • Loop - Actions
                      • Set Beast_Attack_KB_LocIII = (Position of (Picked destructible))
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked destructible) is alive) Equal to True
                        • Then - Actions
                          • Special Effect - Create a special effect at Beast_Attack_KB_LocIII using Beast_Attack_Destroy_Trees_SE
                          • Special Effect - Destroy (Last created special effect)
                        • Else - Actions
                      • Destructible - Kill (Picked destructible)
                      • Custom script: call RemoveLocation(udg_Beast_Attack_KB_LocIII)
                • Else - Actions
              • -------- --------------------------------------------------------- --------
              • -------- Clearing leaks --------
              • -------- --------------------------------------------------------- --------
              • Custom script: call RemoveLocation(udg_Beast_Attack_KB_LocI)
              • Custom script: call RemoveLocation(udg_Beast_Attack_KB_LocII)
            • Else - Actions
              • -------- --------------------------------------------------------- --------
              • -------- Ending execution, removing units, clearing hashtable --------
              • -------- --------------------------------------------------------- --------
              • Unit - Turn collision for (Picked unit) On
              • Unit Group - Remove (Picked unit) from Beast_Attack_KB_Group
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in Beast_Attack_Table
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in Beast_Attack_KB_Group) Equal to 0
                • Then - Actions
                  • Trigger - Turn off Beast Attack Knock <gen>
                • Else - Actions
Updates:
V1.0:
-Uploaded
V1.1:
-Removed pause unit actions
-A bit changed special effects
-Added another if/then/else that check if a destructible is a live and it creates special effect on it
V1.1b:
-deleted add expiration timer action since there is no point of using it :)


Another highly configurable spell! :D

Feel free to test, comment, rate, use it for your map.

Give credits if you use this spell on your map!


Keywords:
beast, attack, axe, clap, knock, back, push, damage, rexxar, wild, animal
Contents

Beast Attack (Map)

Reviews
17:24, 6th Nov 2009 The_Reborn_Devil: The triggering looks good and the are no leaks. The spell is nice and works properly. It should also be easy to modify. Status: Approved Rating: Recommended

Moderator

M

Moderator

17:24, 6th Nov 2009
The_Reborn_Devil:

The triggering looks good and the are no leaks.
The spell is nice and works properly.
It should also be easy to modify.

Status: Approved
Rating: Recommended
 
Level 12
Joined
Jul 27, 2008
Messages
1,181
I really do wander what is wrong with imports. Imports are made for a reason. I guess configurables are made for a reason.

Yeah that's true.
Why not making the spells "really" custom? Using SFX, icons...

Edit:

I've been playing with SFX a bit here is the result

You can link to the sfx you think are nice, but if someone want's to see the code, he shouldn't have to dl all that stuff.
 
Level 22
Joined
Dec 31, 2006
Messages
2,216
It's approved :D

And imports should only be used if it's necessary for the spell to work. F.ex. "dummy.mdx".
Custom skins or other custom models (heroes or units) aren't necessary, but I can accept custom icons and some custom effects if there are no other effects/icons that fit as well as the "dummy.mdx".
 
Level 22
Joined
Nov 14, 2008
Messages
3,256
you can always make an option if you want to pause them or not, also action making units collision turned off

also the point should check if it is inside playable map area so it wont fuck it self up ;)

@mortar does it really matter to use call setunitX/Y instead of move unit instantly? they are knocked back for goodness sake they shouldn't perform any actions! :)

good job berzerk but you might consider my thoughts ;)
 
another good one. a massive knockback spell, nice. I think its better that the pause is removed because it pauses everything on the unit and sometimes it creates something really nasty, try pausing a unit then cast the impale spell on it and you'll see what I'm trying to say, but maybe you can set the pause unit to a boolean to check whether the units will be paused or not for someone who might prefer the pause.
 
Top