Spell Arcane Rush

Zurtrogx

Active Member
Reaction score
24
Arcane Rush

The Hero stores all the damage from each successful attack on an enemy unit. After a certain amount of attacks, the Hero releases all damage stored, dealing a percentage of this damage to the target, causing it to get knockbacked, and also stunning it.

Level 1 - After 50 attacks, the Hero will deal 5% of all damaged stored, knocking the target back 100 and stunning for 2 seconds.

Level 2 - After 40 attacks, the Hero will deal 25% of all damaged stored, knocking the target back 150 and stunning for 3 seconds.

Level 3 - After 30 attacks, the Hero will deal 45% of all damaged stored, knocking the target back 200 and stunning for 4 seconds.

Level 4 - After 20 attacks, the Hero will deal 65% of all damaged stored, knocking the target back 250 and stunning for 5 seconds.

  • May have difficulty implementing this spell
  • GUI
  • Doesn't lag (at least not on my computer)
  • Easily customisable (special effects, attacks require, percentage damage, etc)
  • MUI
  • Leakless
(May need someone else to confirm the last two)

I made this spell as by request from Avaleirra (here).
However, mine wasn't accepted, so I thought I'd place it here so my effort wasn't completely wasted.

Screenshot:
258aqkk.jpg


Triggers:
(Get ready for a headache!)
Trigger:
  • Arcane Rush init setup
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set ArcaneRushRef_attacks_required[1] = 50
      • Set ArcaneRushRef_attacks_required[2] = 40
      • Set ArcaneRushRef_attacks_required[3] = 30
      • Set ArcaneRushRef_attacks_required[4] = 20
      • Set ArcaneRushRef_percent_damage[1] = 0.05
      • Set ArcaneRushRef_percent_damage[2] = 0.25
      • Set ArcaneRushRef_percent_damage[3] = 0.45
      • Set ArcaneRushRef_percent_damage[4] = 0.65
      • Set ArcaneRushKRef_total_distance[1] = 100.00
      • Set ArcaneRushKRef_total_distance[2] = 150.00
      • Set ArcaneRushKRef_total_distance[3] = 200.00
      • Set ArcaneRushKRef_total_distance[4] = 250.00
      • Set ArcaneRushK_speed = 5.00
      • Set ArcaneRush_effect_path_hero = Abilities\Weapons\ProcMissile\ProcMissile.mdl
      • Set ArcaneRush_effect_path_target = Abilities\Spells\Orc\Shockwave\ShockwaveMissile.mdl
      • Custom script: call DestroyTrigger( GetTriggeringTrigger() )


Trigger:
  • Arcane Rush setup
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Arcane Rush
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Triggering unit) is in ArcaneRush_active_group) Equal to False
        • Then - Actions
          • Unit Group - Add (Triggering unit) to ArcaneRush_active_group
          • For each (Integer ArcaneRush_setup_loop_integer) from 1 to (Number of units in ArcaneRush_active_group), do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ArcaneRush_caster[ArcaneRush_setup_loop_integer] Equal to No unit
                • Then - Actions
                  • Set ArcaneRush_caster[ArcaneRush_setup_loop_integer] = (Triggering unit)
                  • Set ArcaneRush_attacks_required[ArcaneRush_setup_loop_integer] = ArcaneRushRef_attacks_required[(Level of Arcane Rush for (Triggering unit))]
                  • Set ArcaneRush_percent_damage[ArcaneRush_setup_loop_integer] = ArcaneRushRef_percent_damage[(Level of Arcane Rush for (Triggering unit))]
                • Else - Actions
        • Else - Actions
          • For each (Integer ArcaneRush_setup_loop_integer) from 1 to (Number of units in ArcaneRush_active_group), do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ArcaneRush_caster[ArcaneRush_setup_loop_integer] Equal to (Triggering unit)
                • Then - Actions
                  • Set ArcaneRush_attacks_required[ArcaneRush_setup_loop_integer] = ArcaneRushRef_attacks_required[(Level of Arcane Rush for (Triggering unit))]
                  • Set ArcaneRush_percent_damage[ArcaneRush_setup_loop_integer] = ArcaneRushRef_percent_damage[(Level of Arcane Rush for (Triggering unit))]
                • Else - Actions


Trigger:
  • Arcane Rush damage detection setup I
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set ArcaneRush_dam_det_group = (Units in (Playable map area))
      • Unit Group - Pick every unit in ArcaneRush_dam_det_group and do (Actions)
        • Loop - Actions
          • Trigger - Add to Arcane Rush damage detection <gen> the event (Unit - (Picked unit) Takes damage)
      • Custom script: call DestroyTrigger( GetTriggeringTrigger() )


Trigger:
  • Arcane Rush damage detection setup II
    • Events
      • Unit - A unit enters (Playable map area)
    • Conditions
      • ((Triggering unit) is in ArcaneRush_dam_det_group) Equal to False
    • Actions
      • Unit Group - Add (Triggering unit) to ArcaneRush_dam_det_group
      • Trigger - Add to Arcane Rush damage detection <gen> the event (Unit - (Triggering unit) Takes damage)


Trigger:
  • Arcane Rush damage detection
    • Events
    • Conditions
      • (Number of units in ArcaneRush_active_group) Greater than 0
      • ((Triggering unit) is in ArcaneRush_dam_det_group) Equal to True
      • ((Damage source) is in ArcaneRush_active_group) Equal to True
      • ((Triggering unit) belongs to an enemy of (Owner of (Damage source))) Equal to True
      • Or - Any (Conditions) are true
        • Conditions
          • ((Triggering unit) has buff Arcane Rush (Non-stacking)) Equal to True
          • ((Triggering unit) has buff Arcane Rush (Stacking)) Equal to True
    • Actions
      • Unit - Remove Arcane Rush (Non-stacking) buff from (Triggering unit)
      • Unit - Remove Arcane Rush (Stacking) buff from (Triggering unit)
      • For each (Integer ArcaneRush_damdet_loop_integer) from 1 to (Number of units in ArcaneRush_active_group), do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Damage source) Equal to ArcaneRush_caster[ArcaneRush_damdet_loop_integer]
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ArcaneRush_attacks_launched[ArcaneRush_damdet_loop_integer] Greater than or equal to ArcaneRush_attacks_required[ArcaneRush_damdet_loop_integer]
                • Then - Actions
                  • Unit Group - Remove (Triggering unit) from ArcaneRush_dam_det_group
                  • Set ArcaneRush_damage_dealt = (ArcaneRush_stored_damage[ArcaneRush_damdet_loop_integer] x ArcaneRush_percent_damage[ArcaneRush_damdet_loop_integer])
                  • Unit - Cause ArcaneRush_caster[ArcaneRush_damdet_loop_integer] to damage (Triggering unit), dealing ArcaneRush_damage_dealt damage of attack type Chaos and damage type Universal
                  • Special Effect - Destroy ArcaneRush_special_effect[ArcaneRush_damdet_loop_integer]
                  • Set ArcaneRush_stored_damage[ArcaneRush_damdet_loop_integer] = 0.00
                  • Set ArcaneRush_attacks_launched[ArcaneRush_damdet_loop_integer] = 0
                  • Unit Group - Add (Triggering unit) to ArcaneRush_dam_det_group
                  • Set ArcaneRush_temp_point = (Position of ArcaneRush_caster[ArcaneRush_damdet_loop_integer])
                  • Unit - Create 1 dummy for (Owner of ArcaneRush_caster[ArcaneRush_damdet_loop_integer]) at ArcaneRush_temp_point facing 0.00 degrees
                  • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
                  • Unit - Add Arcane Rush (stun) to (Last created unit)
                  • Unit - Set level of Arcane Rush (stun) for (Last created unit) to (Level of Arcane Rush for ArcaneRush_caster[ArcaneRush_damdet_loop_integer])
                  • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt (Triggering unit)
                  • Custom script: call RemoveLocation (udg_ArcaneRush_temp_point)
                  • For each (Integer ArcaneRushK_setup_loop_integer) from 1 to 250, do (Actions)
                    • Loop - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ArcaneRushK_affected_unit[ArcaneRushK_setup_loop_integer] Equal to No unit
                        • Then - Actions
                          • Special Effect - Create a special effect attached to the chest of (Triggering unit) using ArcaneRush_effect_path_target
                          • Set ArcaneRush_blast_effect[ArcaneRushK_setup_loop_integer] = (Last created special effect)
                          • Set ArcaneRushK_affected_unit[ArcaneRushK_setup_loop_integer] = (Triggering unit)
                          • Set ArcaneRushK_caster_point = (Position of ArcaneRush_caster[ArcaneRush_damdet_loop_integer])
                          • Set ArcaneRushK_target_point = (Position of (Triggering unit))
                          • Set ArcaneRushK_angle[ArcaneRushK_setup_loop_integer] = (Angle from ArcaneRushK_caster_point to ArcaneRushK_target_point)
                          • Set ArcaneRushK_distance_required[ArcaneRushK_setup_loop_integer] = ArcaneRushKRef_total_distance[(Level of Arcane Rush for ArcaneRush_caster[ArcaneRush_damdet_loop_integer])]
                          • Set ArcaneRushK_final_point[ArcaneRushK_setup_loop_integer] = (ArcaneRushK_target_point offset by ArcaneRushK_distance_required[ArcaneRushK_setup_loop_integer] towards ArcaneRushK_angle[ArcaneRushK_setup_loop_integer] degrees)
                          • Floating Text - Create floating text that reads (|cffff0303 + (+ + ((String((Integer(ArcaneRush_damage_dealt)))) + |r))) at ArcaneRushK_target_point with Z offset 50.00, using font size 10.00, color (100.00%, 100.00%, 100.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 50.00 towards 90.00 degrees
                          • Floating Text - Change the lifespan of (Last created floating text) to 1.50 seconds
                          • Custom script: call RemoveLocation (udg_ArcaneRushK_caster_point)
                          • Custom script: call RemoveLocation (udg_ArcaneRushK_target_point)
                          • Set ArcaneRushK_setup_loop_integer = 251
                          • Unit Group - Add (Triggering unit) to ArcaneRushK_kockback_group
                        • Else - Actions
                • Else - Actions
              • Set ArcaneRush_stored_damage[ArcaneRush_damdet_loop_integer] = (ArcaneRush_stored_damage[ArcaneRush_damdet_loop_integer] + (Damage taken))
              • Set ArcaneRush_attacks_launched[ArcaneRush_damdet_loop_integer] = (ArcaneRush_attacks_launched[ArcaneRush_damdet_loop_integer] + 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ArcaneRush_attacks_launched[ArcaneRush_damdet_loop_integer] Greater than or equal to ArcaneRush_attacks_required[ArcaneRush_damdet_loop_integer]
                • Then - Actions
                  • Special Effect - Create a special effect attached to the overhead of ArcaneRush_caster[ArcaneRush_damdet_loop_integer] using ArcaneRush_effect_path_hero
                  • Set ArcaneRush_special_effect[ArcaneRush_damdet_loop_integer] = (Last created special effect)
                • Else - Actions
            • Else - Actions


Trigger:
  • Arcane Rush knockback
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
      • (Number of units in ArcaneRushK_kockback_group) Greater than 0
    • Actions
      • For each (Integer ArcaneRushK_loop_integer) from 1 to 250, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ArcaneRushK_affected_unit[ArcaneRushK_loop_integer] Not equal to No unit
            • Then - Actions
              • Set ArcaneRushK_current_point = (Position of ArcaneRushK_affected_unit[ArcaneRushK_loop_integer])
              • Set ArcaneRushK_distance_travelled[ArcaneRushK_loop_integer] = (ArcaneRushK_distance_travelled[ArcaneRushK_loop_integer] + ArcaneRushK_speed)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ArcaneRushK_distance_travelled[ArcaneRushK_loop_integer] Greater than or equal to ArcaneRushK_distance_required[ArcaneRushK_loop_integer]
                • Then - Actions
                  • Set ArcaneRushK_offset_point = ArcaneRushK_final_point[ArcaneRushK_loop_integer]
                  • Unit Group - Remove ArcaneRushK_affected_unit[ArcaneRushK_loop_integer] from ArcaneRushK_kockback_group
                  • Set ArcaneRushK_affected_unit[ArcaneRushK_loop_integer] = No unit
                  • Set ArcaneRushK_distance_travelled[ArcaneRushK_loop_integer] = 0.00
                  • Special Effect - Destroy ArcaneRush_blast_effect[ArcaneRushK_loop_integer]
                  • Custom script: call RemoveLocation (udg_ArcaneRushK_final_point[udg_ArcaneRushK_loop_integer])
                • Else - Actions
                  • Set ArcaneRushK_offset_point = (ArcaneRushK_current_point offset by ArcaneRushK_speed towards ArcaneRushK_angle[ArcaneRushK_loop_integer] degrees)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (ArcaneRushK_affected_unit[ArcaneRushK_loop_integer] is alive) Equal to False
                    • Then - Actions
                      • Unit Group - Remove ArcaneRushK_affected_unit[ArcaneRushK_loop_integer] from ArcaneRushK_kockback_group
                      • Set ArcaneRushK_affected_unit[ArcaneRushK_loop_integer] = No unit
                      • Set ArcaneRushK_distance_travelled[ArcaneRushK_loop_integer] = 0.00
                      • Special Effect - Destroy ArcaneRush_blast_effect[ArcaneRushK_loop_integer]
                      • Custom script: call RemoveLocation (udg_ArcaneRushK_final_point[udg_ArcaneRushK_loop_integer])
                    • Else - Actions
              • Unit - Move ArcaneRushK_affected_unit[ArcaneRushK_loop_integer] instantly to ArcaneRushK_offset_point, facing (ArcaneRushK_angle[ArcaneRushK_loop_integer] + 180.00) degrees
              • Custom script: call RemoveLocation (udg_ArcaneRushK_current_point)
              • Custom script: call RemoveLocation (udg_ArcaneRushK_offset_point)
            • Else - Actions

How to transfer:
  1. Copy the buffs
  2. Copy the spells
  3. Change information in the spell if necessary (e.g. such as links like <A001,Rng1>)
  4. Create/copy a dummy unit (preferably with the code h000)
  5. Copy all variables that start with ArcaneRush
  6. Copy the triggers (I would suggest using the 'merge data' function that NewGen has)


Try it out and give me some feedback.
 

Attachments

  • Arcane Rush - by Zurtrogx.w3x
    53.5 KB · Views: 268
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top