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. The Lich King demands your service! We've reached the 19th edition of the Icon Contest. Come along and make some chilling servants for the one true king.
    Dismiss Notice
  5. The 4th SFX Contest has started. Be sure to participate and have a fun factor in it.
    Dismiss Notice
  6. The poll for the 21st Terraining Contest is LIVE. Be sure to check out the entries and vote for one.
    Dismiss Notice
  7. The results are out! Check them out.
    Dismiss Notice
  8. Don’t forget to sign up for the Hive Cup. There’s a 555 EUR prize pool. Sign up now!
    Dismiss Notice
  9. The Hive Workshop Cup contest results have been announced! See the maps that'll be featured in the Hive Workshop Cup tournament!
    Dismiss Notice
  10. 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.

Sweeping Beam - v0.1

Submitted by D4RK_G4ND4LF
This bundle is marked as approved. It works and satisfies the submission rules.
The caster channels two beams of energy which both sizzle his enemies by 50 + 25 damage per level.

Requested by supertoinkz

[​IMG]

Similar to the attack of the Starcraft II Colossi
Colossi
[​IMG]


Triggers
  • Ini
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set Sweep_DataCount = 14
      • Set zLoc = (Point(0.00, 0.00))
  • Sweep Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to S|cffffcc00w|reeping Beam
    • Actions
      • -------- Caster --------
      • Set u = (Triggering unit)
      • -------- Caster coords --------
      • Custom script: set udg_x2 = GetUnitX(udg_u)
      • Custom script: set udg_y2 = GetUnitY(udg_u)
      • -------- Two beams just look best but other numbers will work, too --------
      • Set i2 = 2
      • For each (Integer i) from 1 to i2, do (Actions)
        • Loop - Actions
          • -------- Radius of beam --------
          • Set r = 200.00
          • -------- Coords of target point --------
          • Custom script: set udg_x = GetSpellTargetX()
          • Custom script: set udg_y = GetSpellTargetY()
          • -------- Offset angle of beam --------
          • Set a = ((Atan2((y - y2), (x - x2))) + ((Real(((360 / i2) x i))) + 90.00))
          • -------- Calculating beam target point coords based on that --------
          • Set x = (x + (r x (Cos(a))))
          • Set y = (y + (r x (Sin(a))))
          • -------- Direction of beam --------
          • Set a = (a + 180.00)
          • -------- Create sweep lightning --------
          • Set Sweep_Max = (Sweep_Max + 1)
          • Lightning - Create a Finger of Death lightning effect from source zLoc to target zLoc
          • Set Sweep_Lightning[Sweep_Max] = (Last created lightning effect)
          • Custom script: if udg_Sweep_Group[udg_i] == null then
          • Custom script: set udg_Sweep_Group[udg_i] = CreateGroup()
          • Custom script: endif
          • -------- Caster again --------
          • Set Sweep_Caster[Sweep_Max] = u
          • -------- Start distance value (should be 0) --------
          • Set Sweep_Data[(Sweep_Max x Sweep_DataCount)] = 0.00
          • -------- Distance the beam will travel --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 1)] = (r x 2.00)
          • -------- Speed of beam (will move 8 every 1/0.03 sec) --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 2)] = 8.00
          • -------- X of target point --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 3)] = x
          • -------- Y of target point --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 4)] = y
          • -------- X component of speed --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 5)] = (Sweep_Data[((Sweep_Max x Sweep_DataCount) + 2)] x (Cos(a)))
          • -------- Y component of speed --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 6)] = (Sweep_Data[((Sweep_Max x Sweep_DataCount) + 2)] x (Sin(a)))
          • -------- Caster beam offset distance --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 7)] = 70.00
          • -------- Caster beam offset angle --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 8)] = (a - ((Atan2((y - y2), (x - x2))) + 90.00))
          • -------- Caster beam height offset --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 9)] = 130.00
          • -------- Aoe of beam --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 10)] = 150.00
          • -------- Damage of beam --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 11)] = 50.00
          • -------- Sfx start count --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 12)] = 0.00
          • -------- Sfx max count --------
          • Set Sweep_Data[((Sweep_Max x Sweep_DataCount) + 13)] = 3.00
      • Trigger - Turn on Sweep Loop <gen>
  • Sweep Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- Standard d4rk_g4nd4lf indexing --------
      • For each (Integer i) from 1 to Sweep_Max, do (Actions)
        • Loop - Actions
          • Set u = Sweep_Caster[i]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • u Not equal to No unit
              • (Life of u) Greater than 0.00
              • Sweep_Data[(i x Sweep_DataCount)] Less than Sweep_Data[((i x Sweep_DataCount) + 1)]
            • Then - Actions
              • -------- Count on distance --------
              • Set Sweep_Data[(i x Sweep_DataCount)] = (Sweep_Data[(i x Sweep_DataCount)] + Sweep_Data[((i x Sweep_DataCount) + 2)])
              • -------- Lightning coords caster --------
              • Custom script: set udg_x2 = GetUnitX(udg_u)
              • Custom script: set udg_y2 = GetUnitY(udg_u)
              • -------- Apply offset based on facing --------
              • Set a = ((Facing of u) + (Sweep_Data[((i x Sweep_DataCount) + 8)] - 90.00))
              • Set x2 = (x2 + (Sweep_Data[((i x Sweep_DataCount) + 7)] x (Cos(a))))
              • Set y2 = (y2 + (Sweep_Data[((i x Sweep_DataCount) + 7)] x (Sin(a))))
              • -------- Get terrain z-height --------
              • Custom script: call MoveLocation(udg_zLoc, udg_x2, udg_y2)
              • Custom script: set udg_r2 = GetLocationZ(udg_zLoc)
              • -------- Apply z offset --------
              • Set r2 = (r2 + Sweep_Data[((i x Sweep_DataCount) + 9)])
              • -------- Lightning coords target point --------
              • -------- Move lightning target coords --------
              • Set x = (Sweep_Data[((i x Sweep_DataCount) + 3)] + Sweep_Data[((i x Sweep_DataCount) + 5)])
              • Set y = (Sweep_Data[((i x Sweep_DataCount) + 4)] + Sweep_Data[((i x Sweep_DataCount) + 6)])
              • -------- Save new position --------
              • Set Sweep_Data[((i x Sweep_DataCount) + 3)] = x
              • Set Sweep_Data[((i x Sweep_DataCount) + 4)] = y
              • Custom script: call MoveLocation(udg_zLoc, udg_x, udg_y)
              • -------- Create special effect every x iterations --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Sweep_Data[((i x Sweep_DataCount) + 12)] Greater than or equal to Sweep_Data[((i x Sweep_DataCount) + 13)]
                • Then - Actions
                  • Set Sweep_Data[((i x Sweep_DataCount) + 12)] = 0.00
                  • Special Effect - Create a special effect at zLoc using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                • Else - Actions
                  • Set Sweep_Data[((i x Sweep_DataCount) + 12)] = (Sweep_Data[((i x Sweep_DataCount) + 12)] + 1.00)
              • Set r = Sweep_Data[((i x Sweep_DataCount) + 10)]
              • -------- Pick units in range --------
              • Custom script: call GroupEnumUnitsInRange(udg_g, udg_x, udg_y, udg_r, null)
              • Unit Group - Pick every unit in g and do (Actions)
                • Loop - Actions
                  • Set u2 = (Picked unit)
                  • -------- Check if picked unit is valid target --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Life of u2) Greater than 0.00
                      • (u2 is A structure) Equal to False
                      • (u2 is A flying unit) Equal to False
                      • (u2 is Mechanical) Equal to False
                      • (u2 is Magic Immune) Equal to False
                      • (u2 is in Sweep_Group[i]) Equal to False
                      • (u2 belongs to an enemy of (Owner of u)) Equal to True
                    • Then - Actions
                      • -------- Add to group so it won't get damaged twice --------
                      • Unit Group - Add u2 to Sweep_Group[i]
                      • -------- Damage --------
                      • Unit - Cause u to damage u2, dealing Sweep_Data[((i x Sweep_DataCount) + 11)] damage of attack type Spells and damage type Unknown
                    • Else - Actions
              • -------- Move lightning --------
              • Custom script: call MoveLightningEx(udg_Sweep_Lightning[udg_i], true, udg_x, udg_y, GetLocationZ(udg_zLoc), udg_x2, udg_y2, udg_r2)
            • Else - Actions
              • -------- Clean up and resort data --------
              • Set Sweep_Caster[i] = Sweep_Caster[Sweep_Max]
              • Lightning - Destroy Sweep_Lightning[i]
              • Set Sweep_Lightning[i] = Sweep_Lightning[Sweep_Max]
              • Unit Group - Remove all units from Sweep_Group[i]
              • Unit Group - Add all units of Sweep_Group[Sweep_Max] to Sweep_Group[i]
              • Unit Group - Remove all units from Sweep_Group[Sweep_Max]
              • For each (Integer i2) from 0 to (Sweep_DataCount - 1), do (Actions)
                • Loop - Actions
                  • Set Sweep_Data[((i x Sweep_DataCount) + i2)] = Sweep_Data[((Sweep_Max x Sweep_DataCount) + i2)]
              • Set Sweep_Max = (Sweep_Max - 1)
              • Set i = (i - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Sweep_Max Less than 1
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions


Keywords:
sweeping, beam, colossi, colossus, attack, starcraft, laser, lightning
Contents

Sweeping Beam (Map)

Reviews
Moderator
09:52, 23rd Oct 2010 The_Reborn_Devil: The triggering looks ok. Nice to see some SC2 stuff here ^^ Status: Approved Rating: Recommended
  1. 09:52, 23rd Oct 2010
    The_Reborn_Devil:

    The triggering looks ok. Nice to see some SC2 stuff here ^^


    Status: Approved
    Rating: Recommended
     
  2. Blueman127

    Blueman127

    Joined:
    Dec 3, 2008
    Messages:
    9
    Resources:
    0
    Resources:
    0
    I like it but

    I like the spell but! To me it seems like lvl 1 and lvl 4 do same damage. And i can't also not see where the damage is upgradet for each lvl.?
     
  3. Noobsmoke

    Noobsmoke

    Joined:
    Nov 20, 2007
    Messages:
    631
    Resources:
    1
    Spells:
    1
    Resources:
    1
    looks preety good. Ill test it later
     
  4. baassee

    baassee

    Joined:
    Nov 14, 2008
    Messages:
    3,220
    Resources:
    17
    Spells:
    14
    Tutorials:
    3
    Resources:
    17
    Some points.

    -(Life of u) Greater than 0.00 don't use, use boolean comparison IsUnitDead equals to false (IsUnitType(u, UNIT_TYPE_DEAD) as it's more accurate and also GetUnitState/GetWidgetLife is used with 0.405, not 0.

    -udg_g never gets destroyed and if you want to use this as a ENUM group, please clear it afterwards as it now stores units and more and more and more.

    -Special Effect - Create a special effect at zLoc using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl

    Should be stored in a string variable (as some ppl might not want a knockback effect)-

    Anyways this is good, just went threw the code, keep up the good work! :)
     
  5. D4RK_G4ND4LF

    D4RK_G4ND4LF

    Joined:
    Feb 4, 2009
    Messages:
    1,196
    Resources:
    20
    Models:
    3
    Spells:
    15
    Tutorials:
    2
    Resources:
    20
    acording to this source http://www.mappedia.de/wiki/Jass:IsUnitDeadBJ the GUI IsUnitDeadBJ is the same (and IsUnitAliveBJ calls not IsUnitDeadBJ wtf)
    and I am not healing any dead units anyway

    GroupEnumUnitsInRange automatically clears the group

    I won't add 3 lines of code and another variable just to make 1 string to be set somewhere else

    thanks :)
     
  6. baassee

    baassee

    Joined:
    Nov 14, 2008
    Messages:
    3,220
    Resources:
    17
    Spells:
    14
    Tutorials:
    3
    Resources:
    17
    Now that is awkward as it is true ! Weird BJs :p

    Oh didn't knew that :O
     
  7. Titania

    Titania

    Joined:
    Aug 21, 2010
    Messages:
    354
    Resources:
    3
    Models:
    3
    Resources:
    3
    Eye lazor O--- O--- *beep beep beep* +rep
     
  8. Maker

    Maker

    Joined:
    Mar 6, 2006
    Messages:
    9,190
    Resources:
    17
    Maps:
    2
    Spells:
    14
    Tutorials:
    1
    Resources:
    17
    I'd like to see some effect at the point where the laser hits the ground, now the laser just ends abruptly.

    You could create dummy units and attach effects to them and move the units wit the laser. Maybe Serpent ward missile effect could be good.
     
  9. Gekigengar

    Gekigengar

    Joined:
    Aug 20, 2009
    Messages:
    1,490
    Resources:
    2
    Maps:
    1
    Spells:
    1
    Resources:
    2
    The lightning is actually moving "To" the caster, instead of moving out of the caster. it looks weird only in that point.xD
     
  10. 88WaRCraFT3

    88WaRCraFT3

    Joined:
    Jun 9, 2009
    Messages:
    1,139
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Sweeettt :D Realy awesome :d +REP
     
  11. purged

    purged

    Joined:
    Aug 1, 2009
    Messages:
    32
    Resources:
    2
    Maps:
    2
    Resources:
    2
    Nice one! Looks very good :p
     
  12. Nightmare Moon

    Nightmare Moon

    Joined:
    Apr 16, 2010
    Messages:
    575
    Resources:
    9
    Icons:
    2
    Spells:
    7
    Resources:
    9
    I love this spell. Just for my map. Thanks a lot. +rep
     
  13. NoMoreChallenge

    NoMoreChallenge

    Joined:
    Nov 14, 2009
    Messages:
    192
    Resources:
    0
    Resources:
    0
    How to adjust the damage per level? I can only change the base damage.
     
  14. D4RK_G4ND4LF

    D4RK_G4ND4LF

    Joined:
    Feb 4, 2009
    Messages:
    1,196
    Resources:
    20
    Models:
    3
    Spells:
    15
    Tutorials:
    2
    Resources:
    20
    set damage = something + something_else * convert integer to real(level of ability being cast for triggering unit)
     
  15. Mainy

    Mainy

    Joined:
    Oct 19, 2008
    Messages:
    269
    Resources:
    3
    Models:
    1
    Icons:
    1
    Spells:
    1
    Resources:
    3
    If the caster walk after cast looks wierd
     
  16. Nightmare Moon

    Nightmare Moon

    Joined:
    Apr 16, 2010
    Messages:
    575
    Resources:
    9
    Icons:
    2
    Spells:
    7
    Resources:
    9
    I have a problem with this spell, when i cast it sometimes the lightning effects don't show.
    I can assure you that i didn't change ANYTHING!
    Anyone has this problem too??
     
  17. baassee

    baassee

    Joined:
    Nov 14, 2008
    Messages:
    3,220
    Resources:
    17
    Spells:
    14
    Tutorials:
    3
    Resources:
    17
    I re-tested it and the answer is no.
     
  18. NoMoreChallenge

    NoMoreChallenge

    Joined:
    Nov 14, 2009
    Messages:
    192
    Resources:
    0
    Resources:
    0
    same here

    When I cast it on original map it's ok, but after I imported it to my map it's not ok.
    Maybe I have to check the triggers again.
     
  19. baassee

    baassee

    Joined:
    Nov 14, 2008
    Messages:
    3,220
    Resources:
    17
    Spells:
    14
    Tutorials:
    3
    Resources:
    17
    Check that any other triggers don't use any variables of this. Check the ability condition (although it wont corrupt the lightning), check the documentation and follow it threw, make sure everything is alright.