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.
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:
Triggers:
(Get ready for a headache!)
How to transfer:
Try it out and give me some feedback.
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
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:
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() )
- Events
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
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - 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
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- For each (Integer ArcaneRush_setup_loop_integer) from 1 to (Number of units in ArcaneRush_active_group), do (Actions)
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Events
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)
- Loop - Actions
- Custom script: call DestroyTrigger( GetTriggeringTrigger() )
- Events
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)
- Events
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
- Conditions
- 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
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- Else - Actions
- If - Conditions
- 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
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - 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
- If - Conditions
- If - Conditions
- 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
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- For each (Integer ArcaneRushK_loop_integer) from 1 to 250, do (Actions)
- Events
How to transfer:
- Copy the buffs
- Copy the spells
- Change information in the spell if necessary (e.g. such as links like <A001,Rng1>)
- Create/copy a dummy unit (preferably with the code h000)
- Copy all variables that start with ArcaneRush
- Copy the triggers (I would suggest using the 'merge data' function that NewGen has)
Try it out and give me some feedback.