• 🏆 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!

Beserk Plant V1.10

  • Like
Reactions: xIceShotx
Always wanted to do a plant-orientated spell so here's one

Beserk Plant:

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.



- Heavily Configurable
- 2 effects on enemies
| - Knockback
| - Damage
- Eye Candy
- A PLANT



  • Beserk Plant Configuration
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Do not touch --------
      • Hashtable - Create a hashtable
      • Set BP_Hash = (Last created hashtable)
      • -------- ------ --------
      • -------- Determines the Minimum casting range of the spell --------
      • Set BP_MinRange = 200.00
      • -------- Determines the strength of the knockback --------
      • Set BP_KnockbackStrengthBase = 20.00
      • Set BP_KnockbackStrengthPerLevel = 5.00
      • -------- Determines how fast the knockback will deteriorate --------
      • Set BP_KnockbackDetriment = 1.00
      • -------- Determines the AOE of the Plant --------
      • Set BP_AoeBase = 300.00
      • Set BP_AoePerLevel = 100.00
      • -------- Determines the Damage of the branches --------
      • Set BP_DamageBase = 30.00
      • Set BP_DamagePerLevel = 15.00
      • -------- Determines the duration of the plant --------
      • Set BP_DurationBase = 3.00
      • Set BP_DurationPerLevel = 2.00
      • -------- Determines the Arc shape of the plant and its branches --------
      • Set BP_HeightMultiplyer = 1.00
      • -------- Determines the Speed of the branches --------
      • Set BP_BranchSpeed = 15.00
      • -------- Determines the Speed of the Plants moving through the air --------
      • Set BP_PlantSpeed = 7.50
      • -------- Determines the Damage AOE of the branches --------
      • Set BP_BranchAoe = 90.00
      • -------- Determines the unit used as the plant --------
      • Set BP_Plant = Plant
      • -------- Determines the unit used as the branch --------
      • Set BP_BranchCore = BranchCore
      • -------- Determines the spell used by the triggers --------
      • Set BP_Spell = Beserk Plant
      • -------- Determines the SFX created on knockback --------
      • Set BP_KnockbackSFX = Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
      • -------- Determines the impact SFX of the branches hitting a target --------
      • Set BP_BranchHitSFX = Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
      • -------- Determines whether or not the spell will destroy trees --------
      • Set BP_TreeKill = True
      • -------- Determines the area of trees that will be destroyed when a unit comes within range of it during knockback --------
      • Set BP_TreeDestroyArea = 100.00
      • -------- ------- --------
      • -------- Do not touch --------
      • -------- Tree Checking Set up --------
      • Set BP_TempPoint = (Center of (Playable map area))
      • Unit - Create 1 Peasant for Neutral Passive at BP_TempPoint facing Default building facing degrees
      • Set BP_TreeChecker = (Last created unit)
      • Unit - Hide BP_TreeChecker
      • Unit - Make BP_TreeChecker Invulnerable
      • Custom script: call RemoveLocation (udg_BP_TempPoint)
      • -------- ------ --------
  • Beserk Plant Activation
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to BP_Spell
    • Actions
      • -------- Creating Plant --------
      • Set BP_U = (Triggering unit)
      • Set BP_TempPoint = (Position of BP_U)
      • Set BP_TempPoint2 = (Target point of ability being cast)
      • Set BP_TempReal = (Real((Level of BP_Spell for BP_U)))
      • Set BP_Angle = (Angle from BP_TempPoint to BP_TempPoint2)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Distance between BP_TempPoint and BP_TempPoint2) Less than BP_MinRange
        • Then - Actions
          • Custom script: call RemoveLocation (udg_BP_TempPoint2)
          • Set BP_TempPoint2 = (BP_TempPoint offset by BP_MinRange towards BP_Angle degrees)
        • Else - Actions
      • Unit - Create 1 BP_Plant for (Owner of BP_U) at BP_TempPoint facing BP_Angle degrees
      • -------- ------ --------
      • -------- Passing Parameters --------
      • Set BP_TempU = (Last created unit)
      • Custom script: set udg_BP_UHandle = GetHandleId(udg_BP_TempU)
      • -------- Casting Unit ID --------
      • Hashtable - Save Handle OfBP_U as 1 of BP_UHandle in BP_Hash
      • -------- Searching AOE for the plant --------
      • Hashtable - Save (BP_AoeBase + (BP_AoePerLevel x BP_TempReal)) as 2 of BP_UHandle in BP_Hash
      • -------- Branch Damage --------
      • Hashtable - Save (BP_DamageBase + (BP_DamagePerLevel x BP_TempReal)) as 3 of BP_UHandle in BP_Hash
      • -------- Plant Duration --------
      • Hashtable - Save (BP_DurationBase + (BP_DurationPerLevel x BP_TempReal)) as 4 of BP_UHandle in BP_Hash
      • -------- Branch Knockback power --------
      • Hashtable - Save (BP_KnockbackStrengthBase + (BP_KnockbackStrengthPerLevel x BP_TempReal)) as 5 of BP_UHandle in BP_Hash
      • -------- ID in unit group --------
      • Hashtable - Save 1 as 6 of BP_UHandle in BP_Hash
      • -------- Max distance (parabola) --------
      • Hashtable - Save (Distance between BP_TempPoint and BP_TempPoint2) as 7 of BP_UHandle in BP_Hash
      • -------- Max height (parabola) --------
      • Hashtable - Save ((Distance between BP_TempPoint and BP_TempPoint2) x BP_HeightMultiplyer) as 8 of BP_UHandle in BP_Hash
      • -------- ------ --------
      • Unit Group - Add BP_TempU to BP_Plants
      • Custom script: call RemoveLocation (udg_BP_TempPoint2)
      • Custom script: call RemoveLocation (udg_BP_TempPoint)
      • Trigger - Turn on Beserk Plant Loop <gen>
  • Beserk Plant Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in BP_Plants and do (Actions)
        • Loop - Actions
          • Set BP_U = (Picked unit)
          • Custom script: set udg_BP_UHandle = GetHandleId(udg_BP_U)
          • -------- Stage 1 --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Load 6 of BP_UHandle from BP_Hash) Equal to 1
            • Then - Actions
              • -------- Movement --------
              • Custom script: set udg_BP_TempX = GetUnitX(udg_BP_U)
              • Custom script: set udg_BP_TempY = GetUnitY(udg_BP_U)
              • Set BP_Angle = (Facing of BP_U)
              • Custom script: call SetUnitX(udg_BP_U, udg_BP_TempX + udg_BP_PlantSpeed * Cos(udg_BP_Angle * bj_DEGTORAD))
              • Custom script: call SetUnitY(udg_BP_U, udg_BP_TempY + udg_BP_PlantSpeed * Sin(udg_BP_Angle * bj_DEGTORAD))
              • -------- ------ --------
              • -------- Fly Height --------
              • 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_PlantSpeed)
              • 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
                  • -------- Stage 2 Setup --------
                  • Hashtable - Save 2 as 6 of BP_UHandle in BP_Hash
                  • Unit - Add a (Load 4 of BP_UHandle from BP_Hash) second Generic expiration timer to BP_U
                  • -------- ------ --------
                • Else - Actions
            • Else - Actions
          • -------- Stage 2 --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Load 6 of BP_UHandle from BP_Hash) Equal to 2
            • Then - Actions
              • Set BP_TempPoint = (Position of BP_U)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 20 of BP_UHandle from BP_Hash) Equal to 3
                • Then - Actions
                  • -------- Plant creation timer reset --------
                  • Hashtable - Save 0 as 20 of BP_UHandle in BP_Hash
                  • -------- ------ --------
                  • -------- Finding Targets --------
                  • Set BP_TempGroup = (Units within (Load 2 of BP_UHandle from BP_Hash) 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
                          • -------- Creating Branch --------
                          • Set BP_TempPoint2 = (Position of BP_TempU)
                          • Set BP_Angle = (Angle from BP_TempPoint to BP_TempPoint2)
                          • Unit - Create 1 BP_BranchCore for (Owner of BP_U) at BP_TempPoint facing BP_Angle degrees
                          • -------- ------ --------
                          • -------- Passing Parameters --------
                          • Set BP_TempU = (Last created unit)
                          • Custom script: set udg_BP_UHandleC = GetHandleId(udg_BP_TempU)
                          • Unit Group - Add BP_TempU to BP_Plants
                          • -------- Casting Unit ID --------
                          • Hashtable - Save Handle Of(Load 1 of BP_UHandle in BP_Hash) as 1 of BP_UHandleC in BP_Hash
                          • -------- ID in unit group --------
                          • Hashtable - Save 3 as 6 of BP_UHandleC in BP_Hash
                          • -------- Relevent Plant ID --------
                          • Hashtable - Save Handle OfBP_U as 2 of BP_UHandleC in BP_Hash
                          • -------- Branch Damage --------
                          • Hashtable - Save (Load 3 of BP_UHandle from BP_Hash) as 3 of BP_UHandleC in BP_Hash
                          • -------- Branch Knockback power --------
                          • Hashtable - Save (Load 5 of BP_UHandle from BP_Hash) as 5 of BP_UHandleC in BP_Hash
                          • -------- Max distance (parabola) --------
                          • Hashtable - Save (Distance between BP_TempPoint and BP_TempPoint2) as 7 of BP_UHandleC in BP_Hash
                          • -------- Max height (parabola) --------
                          • Hashtable - Save ((Distance between BP_TempPoint and BP_TempPoint2) x BP_HeightMultiplyer) as 8 of BP_UHandleC in BP_Hash
                          • -------- ------ --------
                          • Custom script: call RemoveLocation (udg_BP_TempPoint2)
                        • Else - Actions
                  • -------- ------ --------
                  • Custom script: call DestroyGroup (udg_BP_TempGroup)
                • Else - Actions
                  • -------- Plant creation timer increase --------
                  • Hashtable - Save ((Load 20 of BP_UHandle from BP_Hash) + 1) as 20 of BP_UHandle in BP_Hash
                  • -------- ------ --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (BP_U is dead) Equal to True
                • Then - Actions
                  • Unit Group - Remove BP_U from BP_Plants
                  • Hashtable - Clear all child hashtables of child BP_UHandle in BP_Hash
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (BP_Plants is empty) Equal to True
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
              • Custom script: call RemoveLocation (udg_BP_TempPoint)
            • Else - Actions
          • -------- Branches --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Load 6 of BP_UHandle from BP_Hash) Equal to 3
            • Then - Actions
              • Custom script: set udg_BP_TempX = GetUnitX(udg_BP_U)
              • Custom script: set udg_BP_TempY = GetUnitY(udg_BP_U)
              • Set BP_Angle = (Facing of BP_U)
              • Custom script: call SetUnitX(udg_BP_U, udg_BP_TempX + udg_BP_BranchSpeed * Cos(udg_BP_Angle * bj_DEGTORAD))
              • Custom script: call SetUnitY(udg_BP_U, udg_BP_TempY + udg_BP_BranchSpeed * Sin(udg_BP_Angle * bj_DEGTORAD))
              • 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
                          • Unit Group - Add BP_TempU to BP_Plants
                          • Hashtable - Save 4 as 6 of BP_UHandleC in BP_Hash
                        • Else - Actions
                  • Custom script: call DestroyGroup (udg_BP_TempGroup)
                  • Custom script: call RemoveLocation (udg_BP_TempPoint)
                  • Custom script: set udg_BP_UHandleC = GetHandleId(udg_BP_TempU)
                  • Unit Group - Remove BP_U from BP_Plants
                  • Hashtable - Clear all child hashtables of child BP_UHandle in BP_Hash
                  • Unit - Kill BP_U
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (BP_Plants is empty) Equal to True
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
            • Else - Actions
          • -------- Knockback --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Load 6 of BP_UHandle from BP_Hash) Equal to 4
            • Then - Actions
              • -------- Movement --------
              • Set BP_TempPoint = (Point((Load 17 of BP_UHandle from BP_Hash), (Load 18 of BP_UHandle from BP_Hash)))
              • Set BP_TempPoint2 = (Position of BP_U)
              • -------- ------ --------
              • -------- Knockback effects --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 20 of BP_UHandle from BP_Hash) Equal to 3
                • Then - Actions
                  • Special Effect - Create a special effect at BP_TempPoint2 using BP_KnockbackSFX
                  • Special Effect - Destroy (Last created special effect)
                  • Hashtable - Save 0 as 20 of BP_UHandle in BP_Hash
                • Else - Actions
                  • Hashtable - Save ((Load 20 of BP_UHandle from BP_Hash) + 1) as 20 of BP_UHandle in BP_Hash
              • -------- ------ --------
              • -------- Movement --------
              • Set BP_TempReal = ((Load 16 of BP_UHandle from BP_Hash) - BP_KnockbackDetriment)
              • Hashtable - Save BP_TempReal as 16 of BP_UHandle in BP_Hash
              • Set BP_Angle = (Angle from BP_TempPoint to BP_TempPoint2)
              • Custom script: call RemoveLocation(udg_BP_TempPoint)
              • Set BP_TempPoint = (BP_TempPoint2 offset by BP_TempReal towards BP_Angle degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Playable map area) contains BP_TempPoint) Equal to True
                  • (Terrain pathing at BP_TempPoint of type Walkability is off) Equal to False
                • Then - Actions
                  • Custom script: set udg_BP_TempX = GetUnitX(udg_BP_U)
                  • Custom script: set udg_BP_TempY = GetUnitY(udg_BP_U)
                  • Custom script: call SetUnitX(udg_BP_U, udg_BP_TempX + udg_BP_TempReal * Cos(udg_BP_Angle * bj_DEGTORAD))
                  • Custom script: call SetUnitY(udg_BP_U, udg_BP_TempY + udg_BP_TempReal * Sin(udg_BP_Angle * bj_DEGTORAD))
                  • -------- Tree Destruction --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • BP_TreeKill Equal to True
                    • Then - Actions
                      • Destructible - Pick every destructible within BP_TreeDestroyArea of BP_TempPoint and do (Actions)
                        • Loop - Actions
                          • Unit - Order BP_TreeChecker to Harvest (Picked destructible)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Current order of BP_TreeChecker) Equal to (Order(harvest))
                            • Then - Actions
                              • Destructible - Kill (Picked destructible)
                            • Else - Actions
                          • Unit - Order BP_TreeChecker to Stop
                    • Else - Actions
                  • -------- ------ --------
                • Else - Actions
              • -------- ------ --------
              • Custom script: call RemoveLocation(udg_BP_TempPoint2)
              • Custom script: call RemoveLocation(udg_BP_TempPoint)
              • -------- End of Knockback --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Load 16 of BP_UHandle from BP_Hash) Less than or equal to 0.00
                • Then - Actions
                  • Unit Group - Remove BP_U from BP_Plants
                  • Hashtable - Clear all child hashtables of child BP_UHandle in BP_Hash
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (BP_Plants is empty) Equal to True
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
              • -------- ------ --------
            • Else - Actions
          • -------- ------ --------



-=V1.00=-
- Initial Upload
- Expect errors (Norm.)
-=V1.05=-
- Added additional Caching to make the script a tinily bit more efficient
- Fixed the map description to match the spell
-=V1.10=-
- Changed BP_RealCache[4] as asked
- Removed BP_TempPoint leak
- Added Desc to hashtable saves


This spell is the final spell of the Self-Set challenge of one spell a day (Day 7)

Give credits if you use this spell

Enjoy

Keywords:
Plant, Angry, Mad, Beserk, Branch, Vines, Roots, Knockback, Organic, Nature, Throw, Hurl, Annoyed, Effects, Eye candy.
Contents

Beserk Plant (Map)

Reviews
Reviewed by Maker, Beserk Plant V1.10, 3rd Jan 2012 Nice looking spell. You did well with this. Don't check for each stage during every loop, use if/then/else Learn tooltip should list the stats per each level 14:31, 22nd Dec 2011...

Moderator

M

Moderator

Reviewed by Maker, Beserk Plant V1.10, 3rd Jan 2012

Nice looking spell. You did well with this.

  • Don't check for each stage during every loop, use if/then/else
  • Learn tooltip should list the stats per each level


14:31, 22nd Dec 2011
Pharaoh_:

  • Hashtable - Save (Distance between BP_TempPoint and BP_TempPoint2) as 7 of BP_UHandle in BP_Hash
Since you have an if/then/else that checks for the minimum range, you could move this on the else statement and save "BP_MinRange" in the "Then" branch, but it's okay as it is.

I'd like some documentation before every hashtable saving call, to let users know what each one does.

I'd rather you used boolean, instead of an integer for the "stages", for readability. Again, nothing serious.

  • Set BP_RealCache[4] = (Load 10 of BP_UHandle from BP_Hash)
Use this variable for the calculation purposes of the parabola and use it to refer to, when saving.

  • 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
              • Unit Group - Add BP_TempU to BP_Plants
              • Hashtable - Save 4 as 6 of BP_UHandleC in BP_Hash
            • Else - Actions
      • Custom script: call DestroyGroup (udg_BP_TempGroup)
      • Custom script: set udg_BP_UHandleC = GetHandleId(udg_BP_TempU)
      • Unit Group - Remove BP_U from BP_Plants
      • Hashtable - Clear all child hashtables of child BP_UHandle in BP_Hash
      • Unit - Kill BP_U
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (BP_Plants is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
    • Else - Actions
You forgot to remove the TempPoint.

The spells looks nice.
 
Level 6
Joined
May 9, 2011
Messages
228
wow another Tank-commanders spells damn you so good in making awesome spell effects
btw
how did you make the player enemy cast a spells?
 
Level 7
Joined
Sep 2, 2011
Messages
350
Hello there. I would like to rate this spell of yours. I like the spell. The effects were quite okay. The knockback is weird. I first thought that those projectiles might slow the enemies down or anything but knockback. It just doesn't make sense.

Rating: 3.5/5
Nice use of effects
The spell is nice
Coding seems well
I don't get the knockback
Still has room for improvement
 
Level 8
Joined
Nov 20, 2011
Messages
202
This spell is realy nice but I think u shoud reduce the Knockback effects a bit because if used on to much untis by same time it laggs a bit. Still awesome spell!
Idea 4/5
Effects 5/5
Triggering 5/5
The spell is very easy to import and due to the good config. Trigger it is easy to change anything!
All in all 5/5 :D
 
Top