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

Searing Blades v 1.3

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: Philipe
Sends an enchanted wave to a location. When it reaches it's maximum distance or hits an enemy unit, spiked tendrils drills out from the ground in an area dealing high damage and stunning enemies.
Level 1: 100 damage, 2(1) second stun, 200 Area of Effect.
Level 2: 200 damage, 3(2) second stun, 250 Area of Effect.
Level 2: 300 damage, 4(3) second stun, 300 Area of Effect.

  • Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Visibility - Disable fog of war
      • Visibility - Disable black mask
      • Set SBMax = 2
      • -------- Configurables on each level --------
      • -------- Level 1 --------
      • Set Distance[1] = 1250.00
      • -------- Level 2 --------
      • Set Distance[2] = 1500.00
      • -------- Level 3 --------
      • Set Distance[3] = 1750.00
  • Searing Blades
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Searing Blades
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SBHas[SBLastRecycled] Equal to True
        • Then - Actions
          • Set SBMax = (SBMax + 1)
          • Set SBLastRecycled = SBMax
          • Set SBIndex = SBLastRecycled
          • Set SBLastRecycled = SBRecycledList[SBLastRecycled]
        • Else - Actions
          • Set SBIndex = SBLastRecycled
          • Set SBLastRecycled = SBRecycledList[SBLastRecycled]
      • Set SBCaster[SBIndex] = (Triggering unit)
      • Set SBCasterPoint[SBIndex] = (Position of SBCaster[SBIndex])
      • Set SBTargetPoint[SBIndex] = (Target point of ability being cast)
      • Set SBDistance[SBIndex] = 0.00
      • Set SBLevel[SBIndex] = (Level of Searing Blades for SBCaster[SBIndex])
      • Set SBMaxDistance[SBIndex] = Distance[SBLevel[SBIndex]]
      • Set SBAngle[SBIndex] = (Angle from SBCasterPoint[SBIndex] to SBTargetPoint[SBIndex])
      • Unit - Create 1 Wave for (Triggering player) at SBCasterPoint[SBIndex] facing SBTargetPoint[SBIndex]
      • Set SBDummy[SBIndex] = (Last created unit)
      • Set SBHas[SBIndex] = True
      • Set SBCount = (SBCount + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Searing Blades Loop <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Searing Blades Loop <gen>
        • Else - Actions
  • Searing Blades Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer SBInteger) from 0 to SBMax, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SBHas[SBInteger] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SBDistance[SBInteger] Less than SBMaxDistance[SBInteger]
                • Then - Actions
                  • Set SBDistance[SBInteger] = (SBDistance[SBInteger] + 40.00)
                  • Set SBTempPoint = (SBCasterPoint[SBInteger] offset by SBDistance[SBInteger] towards SBAngle[SBInteger] degrees)
                  • Unit - Move SBDummy[SBInteger] instantly to SBTempPoint
                  • Set SBTempGroup = (Units within 100.00 of SBTempPoint matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of SBCa
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (SBTempGroup is empty) Equal to True
                    • Then - Actions
                    • Else - Actions
                      • Custom script: call RemoveLocation (udg_SBCasterPoint[udg_SBInteger])
                      • Custom script: call RemoveLocation (udg_SBTargetPoint[udg_SBInteger])
                      • Set SBTempPoint = (Position of SBDummy[SBInteger])
                      • For each (Integer A) from 1 to 12, do (Actions)
                        • Loop - Actions
                          • Set SBTempPoint2 = (SBTempPoint offset by 500.00 towards (30.00 x (Real((Integer A)))) degrees)
                          • Unit - Create 1 Dummy for (Owner of SBCaster[SBInteger]) at SBTempPoint facing Default building facing degrees
                          • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                          • Unit - Add Blades to (Last created unit)
                          • Unit - Set level of Blades for (Last created unit) to SBLevel[SBInteger]
                          • Unit - Order (Last created unit) to Undead Crypt Lord - Impale SBTempPoint2
                          • Custom script: call RemoveLocation (udg_SBTempPoint2)
                      • Custom script: call RemoveLocation (udg_SBTempPoint)
                      • Unit - Kill SBDummy[SBInteger]
                      • Set SBHas[SBInteger] = False
                      • Set SBCount = (SBCount - 1)
                      • Set SBRecycledList[SBInteger] = SBLastRecycled
                      • Set SBLastRecycled = SBInteger
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • SBCount Equal to 0
                        • Then - Actions
                          • Trigger - Turn off (This trigger)
                        • Else - Actions
                  • Custom script: call RemoveLocation (udg_SBTempPoint)
                  • Custom script: call DestroyGroup (udg_SBTempGroup)
                • Else - Actions
                  • Custom script: call RemoveLocation (udg_SBCasterPoint[udg_SBInteger])
                  • Custom script: call RemoveLocation (udg_SBTargetPoint[udg_SBInteger])
                  • Set SBTempPoint = (Position of SBDummy[SBInteger])
                  • For each (Integer A) from 1 to 12, do (Actions)
                    • Loop - Actions
                      • Set SBTempPoint2 = (SBTempPoint offset by 500.00 towards (30.00 x (Real((Integer A)))) degrees)
                      • Unit - Create 1 Dummy for (Owner of SBCaster[SBInteger]) at SBTempPoint facing Default building facing degrees
                      • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                      • Unit - Add Blades to (Last created unit)
                      • Unit - Set level of Blades for (Last created unit) to SBLevel[SBInteger]
                      • Unit - Order (Last created unit) to Undead Crypt Lord - Impale SBTempPoint2
                      • Custom script: call RemoveLocation (udg_SBTempPoint2)
                  • Custom script: call RemoveLocation (udg_SBTempPoint)
                  • Unit - Kill SBDummy[SBInteger]
                  • Set SBHas[SBInteger] = False
                  • Set SBCount = (SBCount - 1)
                  • Set SBRecycledList[SBInteger] = SBLastRecycled
                  • Set SBLastRecycled = SBInteger
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • SBCount Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
            • Else - Actions
v 1.2 -> v 1.3
indexing rewritten
v 1.1 -> v 1.2
Perform trigger inserted in the loop
v 1.0 -> v 1.1
Rewritten all triggers


Keywords:
wave, strike, blade, kill, stun, target, ground, tendril, MUI, spell,
Contents

Just another Warcraft III map (Map)

Reviews
12th Dec 2015 IcemanBo: For long time as NeedsFix. Rejected. 11 July 2011 Bribe: Indexing on this one still needs to be fixed to prevent overflows.

Moderator

M

Moderator

12th Dec 2015
IcemanBo: For long time as NeedsFix. Rejected.

11 July 2011
Bribe:

Indexing on this one still needs to be fixed to prevent
overflows.
 
Level 5
Joined
Oct 24, 2007
Messages
90
Nice spell!

The coding is neat and leakless, and the spell is MUI. The only thing I saw is that you do not remove the SBTempPoint location, although it isn't an issue, because you recycle it with each use... even better, I guess :)

Good job with this spell, Marsal5000. I vote for approval :thumbs_up:
 
Nice spell!

The coding is neat and leakless, and the spell is MUI. The only thing I saw is that you do not remove the SBTempPoint location, although it isn't an issue, because you recycle it with each use... even better, I guess :)

Good job with this spell, Marsal5000. I vote for approval :thumbs_up:

He Destroys the SBTempPoint, maybe you overlooked...

anyway, nice idea and triggering. :goblin_good_job:
 
Level 16
Joined
Jun 24, 2009
Messages
1,409
I don't think so ~.~ There is an MMORTS called Dreamlords in it there is a skill called Searing Blades that damages target squad with spikes that looks like the impale in war3. I though it's too easy to make a spell with it so I made it better a little. The wave is only for the players to see where it is going.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
It's MUI and leakless. The coding seems good in general. The tooltip follows the Blizzard standard. So I must say it's quite nice, though not that original.

However this
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • SBCount Equal to 0
    • Then - Actions
      • Trigger - Turn off (This trigger)
    • Else - Actions
should be after this:
Set SBCount = (SBCount - 1)

Now you're doing that check 50 times per second when you should only do it once per spell cast.

The dummies have food cost and they give vision.
 
Level 22
Joined
Nov 14, 2008
Messages
3,256
Owner of X -> Triggering Player

Dying Unit -> Triggering Unit

(Angle from SBCasterPoint[SBInteger] to SBTargetPoint[SBInteger]) Should be saved into a variable.

Why do you even have the Searing Blade Perform trigger? Move those actions into the loop when you kill the unit.
 
Top