1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. We have recently started the 16th edition of the Mini Mapping Contest. The theme is mini RPG. Do check it out and have fun.
    Dismiss Notice
  5. Choose your ride to damnation in the 5th Special Effect Contest Poll.
    Dismiss Notice
  6. The winners of the 13th Techtree Contest have been announced!
    Dismiss Notice
  7. The 13th Music Contest Poll is up! Vote for the best tracks in this symphony of frost and flame.
    Dismiss Notice
  8. Race against the odds and Reforge, Don't Refund. The 14th Techtree Contest has begun!
    Dismiss Notice
  9. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Cutting Edge v2.1

Submitted by Marsal
This bundle is marked as approved. It works and satisfies the submission rules.
Level 1: Saithis charges her crescent blade with magical powers then releases it creating a magical blade that drives forwards to the target point. Damages enemy units in it's wake by 100 and make them bleeding that damages them by 10 hit points per seconds.
Level 2: Saithis charges her crescent blade with magical powers then releases it creating a magical blade that drives forwards to the target point. Damages enemy units in it's wake by 150 and make them bleeding that damages them by 20 hit points per seconds.
Level 3: Saithis charges her crescent blade with magical powers then releases it creating a magical blade that drives forwards to the target point. Damages enemy units in it's wake by 200 and make them bleeding that damages them by 30 hit points per seconds.

Init
  • Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Visibility - Disable fog of war
      • Visibility - Disable black mask
      • -------- Configureables on each level --------
      • -------- Level 1 --------
      • Set Damage[1] = 100.00
      • Set Distance[1] = 800.00
      • -------- Level 2 --------
      • Set Damage[2] = 150.00
      • Set Distance[2] = 900.00
      • -------- Level 3 --------
      • Set Damage[3] = 200.00
      • Set Distance[3] = 1000.00

Cutting Edge
  • Cutting Edge
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Cutting Edge
    • Actions
      • -------- The statement below is true. --------
      • -------- The statement above is false. --------
      • -------- ----------------------------------------------------------------------------- --------
      • -------- Index recycling part. Do not touch it! --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CEHas[CELastRecycled] Equal to True
        • Then - Actions
          • Set CEMax = (CEMax + 1)
          • Set CEIndex = CEMax
        • Else - Actions
          • Set CEIndex = CELastRecycled
          • Set CELastRecycled = CERecycledList[CELastRecycled]
      • -------- ----------------------------------------------------------------------------- --------
      • -------- Creating the effects and setting the variables. --------
      • Set CECaster[CEIndex] = (Triggering unit)
      • Set CETargetPoint[CEIndex] = (Target point of ability being cast)
      • Set CECasterPoint[CEIndex] = (Position of CECaster[CEIndex])
      • Set CEMaxDistance[CEIndex] = Distance[(Level of Cutting Edge for CECaster[CEIndex])]
      • Set CEDistance[CEIndex] = 0.00
      • Set CEDamage[CEIndex] = Damage[(Level of Cutting Edge for CECaster[CEIndex])]
      • Set CEHas[CEIndex] = True
      • -------- ----------------------------------------------------------------------------- --------
      • -------- The blast effect. --------
      • Set CETempPoint = (CECasterPoint[CEIndex] offset by 75.00 towards ((Angle from CETargetPoint[CEIndex] to CECasterPoint[CEIndex]) + 45.00) degrees)
      • Unit - Create 1 Effect for (Owner of CECaster[CEIndex]) at CETempPoint facing ((Angle from CECasterPoint[CEIndex] to CETargetPoint[CEIndex]) + 180.00) degrees
      • Animation - Change (Last created unit)'s animation speed to 150.00% of its original speed
      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
      • -------- ----------------------------------------------------------------------------- --------
      • -------- The parts of the "blade". --------
      • Unit - Create 1 Edge1 for (Owner of CECaster[CEIndex]) at CECasterPoint[CEIndex] facing CETargetPoint[CEIndex]
      • Animation - Change (Last created unit)'s animation speed to 10.00% of its original speed
      • Unit Group - Add (Last created unit) to CEDummyGroup[CEIndex]
      • Unit - Create 1 Edge1R for (Owner of CECaster[CEIndex]) at CECasterPoint[CEIndex] facing CETargetPoint[CEIndex]
      • Animation - Change (Last created unit)'s animation speed to 10.00% of its original speed
      • Unit Group - Add (Last created unit) to CEDummyGroup[CEIndex]
      • Unit - Create 1 Edge2 for (Owner of CECaster[CEIndex]) at CECasterPoint[CEIndex] facing CETargetPoint[CEIndex]
      • Unit Group - Add (Last created unit) to CEDummyGroup[CEIndex]
      • Unit - Create 1 Edge2R for (Owner of CECaster[CEIndex]) at CECasterPoint[CEIndex] facing CETargetPoint[CEIndex]
      • Unit Group - Add (Last created unit) to CEDummyGroup[CEIndex]
      • Custom script: call RemoveLocation (udg_CETempPoint)
      • Set CECount = (CECount + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Cutting Edge Loop <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Cutting Edge Loop <gen>
        • Else - Actions

Cutting Edge Loop
  • Cutting Edge Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer CEInteger) from 0 to CEMax, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • CEHas[CEInteger] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • CEDistance[CEInteger] Less than CEMaxDistance[CEInteger]
                • Then - Actions
                  • Set CEDistance[CEInteger] = (CEDistance[CEInteger] + 30.00)
                  • Set CETempPoint = (CECasterPoint[CEInteger] offset by CEDistance[CEInteger] towards (Angle from CECasterPoint[CEInteger] to CETargetPoint[CEInteger]) degrees)
                  • Unit Group - Pick every unit in CEDummyGroup[CEInteger] and do (Unit - Move (Picked unit) instantly to CETempPoint)
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within 100.00 of CETempPoint matching ((((Matching unit) belongs to an enemy of (Owner of CECaster[CEInteger])) Equal to True) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) and do (Actions)
                    • Loop - Actions
                      • Unit Group - Add (Picked unit) to CEDebuffGroup[CEInteger]
                      • Special Effect - Create a special effect attached to the overhead of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Create 1 Dummy for (Owner of CECaster[CEInteger]) at CETempPoint facing Default building facing degrees
                      • Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
                      • Unit - Add Debuff to (Last created unit)
                      • Unit - Set level of Debuff for (Last created unit) to (Level of Cutting Edge for CECaster[CEInteger])
                      • Unit - Order (Last created unit) to Night Elf Warden - Shadow Strike (Picked unit)
                      • Unit - Cause CECaster[CEInteger] to damage (Picked unit), dealing CEDamage[CEInteger] damage of attack type Spells and damage type Normal
                  • Custom script: call RemoveLocation (udg_CETempPoint)
                • Else - Actions
                  • -------- ----------------------------------------------------------------------------- --------
                  • -------- Clearing leaks, removing dummies and turning off the spell. --------
                  • Unit Group - Pick every unit in CEDummyGroup[CEInteger] and do (Unit - Remove (Picked unit) from the game)
                  • Unit Group - Remove all units from CEDebuffGroup[CEInteger]
                  • Unit Group - Remove all units from CEDummyGroup[CEInteger]
                  • Custom script: call RemoveLocation (udg_CECasterPoint[udg_CEInteger])
                  • Custom script: call RemoveLocation (udg_CETargetPoint[udg_CEInteger])
                  • Set CECount = (CECount - 1)
                  • Set CEHas[CEInteger] = False
            • Else - Actions
              • Set CERecycledList[CEInteger] = CELastRecycled
              • Set CELastRecycled = CEInteger
              • -------- ----------------------------------------------------------------------------- --------
              • -------- Turn off when nobody uses the spell and reseting loop length. --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • CECount Equal to 0
                • Then - Actions
                  • Set CEMax = 0
                  • Set CERecycledList[CEInteger] = 0
                  • Set CELastRecycled = 0
                  • Trigger - Turn off (This trigger)
                • Else - Actions


Changelog
v2.0->v2.1
fixed system bug
v1.9->v2.0
added little documentation
added an extra recycling part
icreased the size of 2 of the group variables
removed group creating part
v1.8->v1.9
changes made
improved index system
v1.7->v1.8
added little documentation
easier configure for begginers
modified the code a bit
v1.6->v1.7
new index recycling system
now damage is triggered
v1.5->v1.6
fixed the bug that makes the spell non-MUI
v1.4->v1.5
fixed the bug that stops the ability if it got firstly casted
v1.3->v1.4
minor changes made
made it faster
reduced lagg
added extra effect
v1.2->v1.3
added extra dummies that made the spell looking better so:
Before and After
[​IMG]

v1.1->v1.2
fixed little things
v1.0->v1.1
fixed things
changed debuff
added extra condition to prevent multicasting the debuff


Keywords:
strike, slash, spell, target, dark, cut, kill, assassinate, magical, magic, blade,
Contents

Just another Warcraft III map (Map)

Reviews
Moderator
Bribe: I'm not sure why you initialize these two groups as you just overwrite them later (memory leaks): Custom script: set udg_CEDummyGroup[udg_CEIndex] = CreateGroup() Custom script: set udg_CEDebuffGroup[udg_CEIndex] = CreateGroup()...
  1. Bribe:

    I'm not sure why you initialize these two groups as you just overwrite them later (memory leaks):

    Custom script: set udg_CEDummyGroup[udg_CEIndex] = CreateGroup()
    Custom script: set udg_CEDebuffGroup[udg_CEIndex] = CreateGroup()

    The spell itself I found to be a bit underwhelming. This might have to do that a shadow-strike mixed with the crushing-wave effect you chose doesn't seem to fit. Stunning the units instead of critical striking them would have fit better.

    Maker, v2.0, 14.07.2011
    Approved, could be useful. A simple spell. You should add importing instructions.
     
  2. Laserdude

    Laserdude

    Joined:
    Jun 30, 2010
    Messages:
    246
    Resources:
    1
    Tutorials:
    1
    Resources:
    1
    I can't test this due to my WE problem...
    However, the triggering looks fine and leakless.
    You are using a maximum of 100 casts at the same time, it should not exceed that limit, I guess.
    The way you are applying the debuff is delayed, but that should not be a too big problem.
    4/5, due to the late applying of the debuff, and that I don't think that an armor decreasing debuff fits this spell... Since it is based off the Warden, why not use a Shadow Strike debuff?
    Vote for approval.
     
  3. GolemWarrior

    GolemWarrior

    Joined:
    May 15, 2010
    Messages:
    69
    Resources:
    0
    Resources:
    0
    I took a brief test on it and it seemed fine. Great job!
     
  4. Klingo

    Klingo

    Joined:
    Dec 19, 2009
    Messages:
    246
    Resources:
    5
    Spells:
    5
    Resources:
    5
    there's something disturbing me, the special effect still appear even if the enemy is spell immune.
     
  5. Patio_111

    Patio_111

    Joined:
    Oct 24, 2007
    Messages:
    87
    Resources:
    1
    Maps:
    1
    Resources:
    1
    Well done, Marsal2000. It's a pretty simple spell, in my opinion... However, the triggering is done efficiently, and the spell is leakless and MUI. It fits the Warden hero - especially with the bleed effects. Good work on the triggering part. Overall, I'll give it a 4/5 and vote for approval :thumbs_up:
     
  6. Marsal

    Marsal

    Joined:
    Jun 24, 2009
    Messages:
    1,345
    Resources:
    15
    Maps:
    1
    Spells:
    14
    Resources:
    15
    Ah thanks :grin:
    The maximum can be increased to the maximum array size you just need to modify the CEMax integer value at the init. Dunno but the shadow strike could be good ~.~
    How could I apply it without delay?
    Hmm I'll check this.
    edit: Ah just a little missclick, instead of magic immune i've chosen the etheral.
     
    Last edited: Dec 30, 2010
  7. Klingo

    Klingo

    Joined:
    Dec 19, 2009
    Messages:
    246
    Resources:
    5
    Spells:
    5
    Resources:
    5
    just put a comparison where the special effects are created that will check if the unit is spell imune or not
     
  8. Marsal

    Marsal

    Joined:
    Jun 24, 2009
    Messages:
    1,345
    Resources:
    15
    Maps:
    1
    Spells:
    14
    Resources:
    15
    i just missclicked at the boolean and chosen the "Etheral" instead of "Magic Immune"
    UPDATED
     
  9. Laserdude

    Laserdude

    Joined:
    Jun 30, 2010
    Messages:
    246
    Resources:
    1
    Tutorials:
    1
    Resources:
    1
    Well, as my Buff System so-called "spell" specifies, you can add items to the targeted units to instantly add buffs or debuffs.
    This is not commercial for my spell, since I am highly considering making it a tutorial.
     
  10. iAyanami

    iAyanami

    Joined:
    Dec 3, 2010
    Messages:
    143
    Resources:
    10
    Spells:
    8
    Tutorials:
    1
    JASS:
    1
    Resources:
    10
    This part. You can really just filter all the units when you set the unit group. Just to remove that massive If/Then/Else part. And it's better to filter the units when you set the group, rather looping through all the units in the group, then filtering them.

    As for your periodic timer of 0.02 seconds, I think that's quite an overkill. I think using 0.03 or 0.04 seconds wouldn't make much of a difference, especially for human eyes.

    And about this condition:

    • (CETempGroup2 is empty) Equal to True


    From what I know, this function is pretty inefficient. What it does is that it loops through the unit group to find the number of units in a unit group. Instead of doing this, I suggest you manually use an integer variable to count the number of units.

    Lastly, this is just an opinion, but wouldn't hashtables be more efficient in terms of MUI? Just an opinion though. Your method works just fine.

    Anyways, pretty nice spell :)
     
  11. Marsal

    Marsal

    Joined:
    Jun 24, 2009
    Messages:
    1,345
    Resources:
    15
    Maps:
    1
    Spells:
    14
    Resources:
    15
    i've made this spell in a hurry so the trigger isn't the best but it's leakless and MUI so the main function is okay
    at 0.05 it looks like you have looping mini lag


    hmm... okay
    I don't like hashtables, they are too complicated and slower than the indexing (as I know)
    edit: oookay updated it
     
  12. iAyanami

    iAyanami

    Joined:
    Dec 3, 2010
    Messages:
    143
    Resources:
    10
    Spells:
    8
    Tutorials:
    1
    JASS:
    1
    Resources:
    10
    True, hashtables may be slower. However, you won't need to needlessly loop 100 times per 0.02 seconds. Plus, Hashtables are basically 2D-Arrays, which is very efficient for storing lots of values. Though, you could imitate 2D-Arrays with global variables too.
     
  13. Marsal

    Marsal

    Joined:
    Jun 24, 2009
    Messages:
    1,345
    Resources:
    15
    Maps:
    1
    Spells:
    14
    Resources:
    15
    nah, indexing is better for me
     
  14. MortAr

    MortAr

    Joined:
    Feb 25, 2009
    Messages:
    1,768
    Resources:
    7
    Icons:
    6
    Packs:
    1
    Resources:
    7
    You wouldn't need to loop 100 times if you were using normal indexing system,
    which loops through all created instances, instead through each of them,
    which will also give the oppurtunity to use 8192 slots, instead of 100. Also, indexing allows you to use 2D arrays as well, you just need to know how.

    On spell:

    - Periodic should always be 0.03 to minimize lag from created/used objects

    • Set CECaster[CEIndex] = (Casting unit)

    (Triggering Unit) is faster and more reliable

    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
    • CECount Equal to 0
    • Then - Actions
    • Trigger - Turn off (This trigger)
    • Else - Actions

    Can be inside the loop to reduce length

    I also don't agree with the fact that you have a limit over the possible instances, but thats all your decision to make. You might also want to change the "bleeding" spell to something else, because most maps uses shadow-strike already it will only cause it to overrite the buff.

    3/5 Overall.
     
  15. Laserdude

    Laserdude

    Joined:
    Jun 30, 2010
    Messages:
    246
    Resources:
    1
    Tutorials:
    1
    Resources:
    1
    You don't nesseccarily need to make it 0.03, just make sure it is 0.03 or Slower.
    A limit is ok in my opinion, allthought I think that it should be around 300, this has a very small chance of being overridden and it is a fair ammount.
     
  16. Marsal

    Marsal

    Joined:
    Jun 24, 2009
    Messages:
    1,345
    Resources:
    15
    Maps:
    1
    Spells:
    14
    Resources:
    15
    I'm not a kind of a pro triggerer but, hey it works and leakless. You can change the ability whatever you want easily example: a cripple. The period and the maximum instances can be modified too... Easy to edit these things...
     
  17. ShiroiSenji

    ShiroiSenji

    Joined:
    Mar 19, 2008
    Messages:
    792
    Resources:
    0
    Resources:
    0
    New version has more eyecandy :] good
     
  18. Marsal

    Marsal

    Joined:
    Jun 24, 2009
    Messages:
    1,345
    Resources:
    15
    Maps:
    1
    Spells:
    14
    Resources:
    15
    c'mon could someone rewiev it for approval? ~.~
     
  19. baassee

    baassee

    Joined:
    Nov 14, 2008
    Messages:
    3,220
    Resources:
    17
    Spells:
    14
    Tutorials:
    3
    Resources:
    17
    Give them a break. THW got way too few spell moderators.