Spell Forbidden Moves

RangerX

I am justice!
Reaction score
69
SS
spells_2079_screenshot_tnb.jpg

The triggers
Trigger:
  • Spell Initialization
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- The Dummy unit --------
      • Set Dummy = Dummy
      • -------- The Swarm Dummy unit --------
      • Set SwarmDummy = Swarm[dummy]
      • -------- The Spell <MUI> --------
      • Set S_mui = MUI
      • -------- The Spell <SoulStrike> --------
      • Set S_soul_Strike = Soulstrike
      • -------- The Spell <Dummy Souls> --------
      • Set S_DSouls = Dummy Souls
      • -------- The Spell <Forbidden Moves> --------
      • Set S_LS = Forbidden Moves
      • -------- The Spell <LightSpeed> --------
      • Set S_LSB = LightSpeed


Trigger:
  • Lightspeed cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to S_LS
    • Actions
      • Set TriggeringUnit = (Triggering unit)
      • Set Owner_of_TU = (Owner of TriggeringUnit)
      • Set TU_pos = (Position of TriggeringUnit)
      • -------- Add dummy buf to casting unit --------
      • Unit - Create 1 Dummy for Owner_of_TU at TU_pos facing Default building facing degrees
      • Set LastCreatedunit = (Last created unit)
      • Unit - Add a 3.00 second Generic expiration timer to LastCreatedunit
      • Unit - Add S_mui to (LastCreatedunit)
      • Unit - Set level of S_mui for (LastCreatedunit) to (Level of S_LS for TriggeringUnit)
      • Unit - Order LastCreatedunit to Human Priest - Inner Fire TriggeringUnit
      • Set LastCreatedunit = No unit
      • -------- Assign a new number each time to casting unit --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FMNumberid Less than or equal to 1000
        • Then - Actions
          • Unit - Add S_LSB to TriggeringUnit
          • Set FMTempPoint = (Center of (Playable map area))
          • Unit - Create 1 Dummy for Owner_of_TU at FMTempPoint facing Default building facing degrees
          • Set LastCreatedunit = (Last created unit)
          • Unit - Add a (10.00 + (5.00 x (Real((Level of S_LS for TriggeringUnit))))) second Generic expiration timer to LastCreatedunit
          • Set FMUnita[FMNumberid] = LastCreatedunit
          • Set FMUnitc[FMNumberid] = TriggeringUnit
          • Set FMNumberid = (FMNumberid + 1)
          • Custom script: call RemoveLocation (udg_FMTempPoint)
        • Else - Actions
          • Set FMNumberid = 1
      • Custom script: call RemoveLocation (udg_TU_pos)
      • Set TriggeringUnit = No unit
      • Set LastCreatedunit = No unit


Trigger:
  • Lightspeed buff
    • Events
      • Unit - A unit Is issued an order targeting a point
    • Conditions
      • (Issued order) Equal to (Order(smart))
      • ((Triggering unit) has buff Blink ) Equal to True
    • Actions
      • Set TriggeringUnit = (Triggering unit)
      • -------- Set point were the caster will be teleported --------
      • Set FMTemp_Point = (Target point of issued order)
      • -------- Order him to blink to Temp_Point --------
      • Unit - Set level of S_LSB for TriggeringUnit to (Level of S_LS for TriggeringUnit)
      • Unit - Order TriggeringUnit to Night Elf Warden - Blink FMTemp_Point
      • Custom script: call RemoveLocation (udg_FMTemp_Point)
      • Set TriggeringUnit = No unit


Trigger:
  • Lightspeed buff attack
    • Events
      • Unit - A unit Is issued an order targeting an object
    • Conditions
      • ((Target unit of issued order) belongs to an enemy of (Owner of (Triggering unit))) Equal to True
      • (Issued order) Equal to (Order(smart))
      • ((Triggering unit) has buff Blink ) Equal to True
    • Actions
      • Set TriggeringUnit = (Triggering unit)
      • Set Target_Uof_IO = (Target unit of issued order)
      • -------- Set point were the caster will be teleported --------
      • Set FMTemp_Point = (Position of Target_Uof_IO)
      • Set FMTempPoint = (FMTemp_Point offset by 300.00 towards (Facing of TriggeringUnit) degrees)
      • -------- Order him to blink to Temp_Point --------
      • Unit - Order TriggeringUnit to Move To FMTemp_Point
      • Unit - Set level of S_LSB for TriggeringUnit to (Level of S_LSB for TriggeringUnit)
      • Unit - Make TriggeringUnit face FMTempPoint over 0.01 seconds
      • Unit - Order TriggeringUnit to Night Elf Warden - Blink FMTemp_Point
      • Unit - Make TriggeringUnit face FMTempPoint over 0.01 seconds
      • -------- Check if the blinking unit is in range of target unit to deal dmg --------
      • Set Region = (Region centered at FMTemp_Point with size (300.00, 300.00))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Region contains TriggeringUnit) Equal to True
        • Then - Actions
          • Unit - Make TriggeringUnit face FMTempPoint over 0.01 seconds
          • Special Effect - Create a special effect attached to the origin of Target_Uof_IO using Objects\Spawnmodels\Undead\UCancelDeath\UCancelDeath.mdl
          • Unit - Cause TriggeringUnit to damage Target_Uof_IO, dealing (((Real((Level of S_LS for (Triggering unit)))) x 2.50) + 24.20) damage of attack type Chaos and damage type Normal
          • Unit - Cause TriggeringUnit to damage TriggeringUnit, dealing (((Real((Level of S_LS for (Triggering unit)))) x 1.50) + 1.10) damage of attack type Chaos and damage type Normal
          • Special Effect - Destroy (Last created special effect)
        • Else - Actions
      • Custom script: call RemoveRect(udg_Region)
      • Custom script: call RemoveLocation (udg_FMTemp_Point)
      • -------- Order him to Blink away from target --------
      • Unit - Make TriggeringUnit face FMTempPoint over 0.00 seconds
      • Unit - Make TriggeringUnit face FMTempPoint over 0.01 seconds
      • Unit - Set level of LightSpeed for TriggeringUnit to (Level of Forbidden Moves for TriggeringUnit)
      • Unit - Move TriggeringUnit instantly to FMTempPoint, facing (FMTempPoint offset by 50.00 towards (-180.00 + (Facing of TriggeringUnit)) degrees)
      • Custom script: call RemoveLocation (udg_FMTempPoint)
      • Set TriggeringUnit = No unit
      • Set Target_Uof_IO = No unit


Trigger:
  • Lowhp
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • (Random integer number between 1 and 100) Less than or equal to ((5 x (Level of S_LS for (Triggering unit))) + 5)
      • (Percentage life of (Triggering unit)) Less than or equal to ((Real((Level of S_LS for (Triggering unit)))) + 20.50)
      • ((Attacked unit) has buff Blink ) Equal to True
    • Actions
      • Set TriggeringUnit = (Triggering unit)
      • Set LastCreatedunit = (Last created unit)
      • Set Owner_of_TU = (Owner of TriggeringUnit)
      • Set TU_pos = (Position of TriggeringUnit)
      • Set Target_Uof_IO = (Attacked unit)
      • -------- This loop will spawn Flame strike type spel at random points --------
      • For each (Integer A) from 1 to (((Level of S_LS for (Triggering unit)) x 1) - 1), do (Actions)
        • Loop - Actions
          • Set FMInt[(Integer A)] = ((Integer A) + 1)
          • Set Region = (Region centered at TU_pos with size (600.00, 600.00))
          • Set FMTempPoint = (Random point in Region)
          • Unit - Create 1 Dummy for Owner_of_TU at TU_pos facing Default building facing degrees
          • Unit - Add a 3.00 second Generic expiration timer to LastCreatedunit
          • Unit - Add S_soul_Strike to LastCreatedunit
          • Unit - Set level of S_soul_Strike for LastCreatedunit to 1
          • Unit - Order LastCreatedunit to Human Blood Mage - Flame Strike FMTempPoint
          • Custom script: call RemoveLocation (udg_FMTempPoint)
          • Custom script: call RemoveRect(udg_Region)
      • -------- This loop will spawn spawn unit that cast Locut Swarm type spell --------
      • -------- Every unit will spawn 21 souls so be careful --------
      • For each (Integer A) from 1 to ((Level of S_LS for (Triggering unit)) - 2), do (Actions)
        • Loop - Actions
          • Set FMInt[(Integer A)] = ((Integer A) + 1)
          • Set Region = (Region centered at TU_pos with size (600.00, 600.00))
          • Set FMTempPoint = (Random point in Region)
          • Unit - Create 1 SwarmDummy for Owner_of_TU at TU_pos facing Default building facing degrees
          • Unit - Add a 15.00 second Generic expiration timer to LastCreatedunit
          • Unit - Add S_DSouls to LastCreatedunit
          • Unit - Set level of S_DSouls for LastCreatedunit to 1
          • Unit - Order LastCreatedunit to Undead Crypt Lord - Locust Swarm
          • Custom script: call RemoveLocation (udg_FMTempPoint)
          • Custom script: call RemoveRect(udg_Region)
      • -------- This will give some life to Casting unit ... change the "+0.50" to change the amount of hp that caster will recive --------
      • For each (Integer A) from 1 to ((15 x (Level of S_LS for (Triggering unit))) + 15), do (Actions)
        • Loop - Actions
          • Set FMInt[(Integer A)] = ((Integer A) + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Random integer number between 1 and 100) Less than or equal to 50
            • Then - Actions
              • Special Effect - Create a special effect attached to the hand,right of TriggeringUnit using Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
              • Special Effect - Destroy (Last created special effect)
              • Unit - Set life of Target_Uof_IO to ((Life of Target_Uof_IO) + 0.50)
            • Else - Actions
      • Custom script: call RemoveLocation (udg_TU_pos)
      • Set TriggeringUnit = No unit
      • Set LastCreatedunit = No unit
      • Set Target_Uof_IO = No unit


Trigger:
  • RepeatMUI
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
    • Actions
      • -------- This triger is to make the spell MUI .... --------
      • For each (Integer A) from 1 to 1000, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • And - All (Conditions) are true
                    • Conditions
                      • (FMUnitc[(Integer A)] has buff Mui ) Equal to True
                      • (FMUnita[(Integer A)] is alive) Equal to False
                  • (FMUnitc[(Integer A)] is dead) Equal to True
            • Then - Actions
              • Set TriggeringUnit = FMUnitc[(Integer A)]
              • Set Owner_of_TU = (Owner of FMUnitc[(Integer A)])
              • Set TU_pos = (Position of FMUnitc[(Integer A)])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Level of S_LS for TriggeringUnit) Less than or equal to 2
                • Then - Actions
                  • Set Region = (Region centered at TU_pos with size (600.00, 600.00))
                  • Set FMTempPoint = (Random point in Region)
                  • -------- Soulstrike --------
                  • Unit - Create 1 Dummy for Owner_of_TU at TU_pos facing Default building facing degrees
                  • Set LastCreatedunit = (Last created unit)
                  • Unit - Add a 3.00 second Generic expiration timer to LastCreatedunit
                  • Unit - Add S_soul_Strike to LastCreatedunit
                  • Unit - Set level of S_soul_Strike for LastCreatedunit to 1
                  • Unit - Order LastCreatedunit to Human Blood Mage - Flame Strike FMTempPoint
                  • Set LastCreatedunit = No unit
                  • Custom script: call RemoveLocation (udg_FMTempPoint)
                  • Custom script: call RemoveRect(udg_Region)
                • Else - Actions
                  • Set Region = (Region centered at TU_pos with size (600.00, 600.00))
                  • Set FMTempPoint = (Random point in Region)
                  • -------- Dummy Souls --------
                  • Unit - Create 1 SwarmDummy for Owner_of_TU at TU_pos facing Default building facing degrees
                  • Set LastCreatedunit = (Last created unit)
                  • Unit - Add a 15.00 second Generic expiration timer to LastCreatedunit
                  • Unit - Add S_DSouls to LastCreatedunit
                  • Unit - Set level of S_DSouls for LastCreatedunit to 1
                  • Unit - Order LastCreatedunit to Undead Crypt Lord - Locust Swarm
                  • Set LastCreatedunit = No unit
                  • Custom script: call RemoveLocation (udg_FMTempPoint)
                  • Custom script: call RemoveRect(udg_Region)
              • -------- LeakRemove --------
              • Unit - Remove S_LSB from TriggeringUnit
              • Set FMUnita[(Integer A)] = No unit
              • Set FMUnitc[(Integer A)] = No unit
              • Set TriggeringUnit = No unit
              • Set Owner_of_TU = (Owner of No unit)
              • Custom script: call RemoveLocation (udg_TU_pos)
            • Else - Actions

Details
-GUI
-MUI
-Check readme trigger for implementation
Tooltip
Code:
Ability Type: Instant/Buff/Finalbuff 
Target: Enemy/AoE/Point
Effect: Blink/Damage on target/AoE damage
Cool down: 40/45/50 seconds
  
Hero will receive for 15/20/25 seconds lighting speed, he can move so fast that only 
a green light will remain behind him, and if the hero target an enemy, he will use super
fast attacks, taking the enemy by surprise, to cause damage to enemy target.

The blink it will automatically cast when you want to move ant right-click somewhere .
If you right-click on a enemy unit you will blink to that target ant deal damage to the target but also to you. 
If your life is to low it will cast some cool soul strike at random point around you and 
the death souls that will do some chain damage to targets.

Update:
Added some trigger for easier implementation,and cleanup the useless things
The Spell now is leekless i don't think that are any more leeks ...
Last Update : All problems Solved
v2.2 final release . the last 2 mistakes solved
 

Attachments

  • [spell]v2.2-forbiden-skyrage.w3x
    51.7 KB · Views: 629

UndeadDragon

Super Moderator
Reaction score
447
@-90% MUI

How can it be 90% MUI? :p

It's either MUI or it isn't.
 

RangerX

I am justice!
Reaction score
69
i know but i what to make it 100%MUI but i don't have the required skills :| :)) ... the only thing that stays between me and MUI is the wait in Lightspeed cast
 

Romek

Super Moderator
Reaction score
963
Could you post each trigger in a separate tag? It looks neater.

Also, could you actually explain how something can possibly be 90% MUI.
What's the 10% that it isn't?
 

RangerX

I am justice!
Reaction score
69
[k the only problem is that all the trigger work well except the HpGain trigger that use the var "unit" if i don't find a solution to the problem i will delete that trigger] i think that that's the only MUI related problem[if 2 units use the spell in this state the second will get the hp from the hpGain trigger]
 

Dirac

22710180
Reaction score
147
A lot of improvements were made, bravo. You have a nice spell now :D.

-You need to "right click" the target so you can do a special attack. would be better if this was automatically done.
-Tooltip is too long, even some text was cut.
-The last forbidden move lags.

[+rep]
 

wraithseeker

Tired.
Reaction score
122
This sometimes lag when spammed , I pressed escape and then use spell all over and over again. Like Dirac said , that is sort of bad , why don't you make that when it clicks on a location too , it picks units within 100 ~ 200 radius of the location and then damage units too. I used the spell and it looks pretty cool , I think u used nerubian guard "locust swarm" for the arcane stuffs flying ahead right? They look the most cool and creative.

Nonetheles, good job but making this into vJass would rock more.
 

Dirac

22710180
Reaction score
147
I found some weird stuff in your coding...
1. Changing some units coloring to X and then return it to normal without a wait in the middle is useless
2. Your trigger to spam floating texts over the rifleman leaks and is done the wrong way... use the Rifleman XXX takes damage event.
3. Dealing circular damage also damages you and your allies, so remove it.
 

RangerX

I am justice!
Reaction score
69
Thanks
-The Esc button is only for testing ... that why it reset the cooldown of all the hero ability ...
-the thing is that if i use auto the attack function can be spammed .. now if you will right-click a unit .. for too many times will be blinked .. so you can't deal dmg to him ... and i dono Jass at all :| :(
-ya i used Locust Swarm from the undead and i added to flying unit the MoonGlaive to attack and added the same model for attacking at they are :) :p and Flame strike from Human
-the tool tip from this thread is a bit long only for everyone to understand .. without testing it .. what will do ...
-i will try to make it don'tlag anymore

I found some weird stuff in your coding...
1. Changing some units coloring to X and then return it to normal without a wait in the middle is useless
2. Your trigger to spam floating texts over the rifleman leaks and is done the wrong way... use the Rifleman XXX takes damage event.
3. Dealing circular damage also damages you and your allies, so remove it.
1.when i first make it .. it have wait time ... [i will try to see if i can use it with more units .. and with wait
2.that is only for test the spell if it give right amount of dmg .. [forgot to delete him along with that trigger ... ]
3.i forgot about that too :)


[edit]were i use the circular damage?
 

Dirac

22710180
Reaction score
147
Unit - Cause (Triggering unit) to damage circular area after 0.30 seconds of radius 250.00 at (Position of (Triggering unit)), dealing 25.00 damage of attack type Normal and damage type Normal

on the Attack Trigger
 

BlackRose

Forum User
Reaction score
239
Yes, maybe set the code in
Trigger:
  • tags? I really dislike code <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite3" alt=":(" title="Frown :(" loading="lazy" data-shortname=":(" />
    • The screenshots look awesome but!
    • <b>EDIT:</b> Just tested, TBH, I thought it was more fancier.... its only a few Illidan &lt;EVIL&gt; effects attached. At level 3 is only Flame Strike and Locust Swarm, I thought it was something else XD
 

RangerX

I am justice!
Reaction score
69
[DEL]the main spell was just the blink trigger :) the flame and swarm is just eye candies :) [/DEL]
 

DarkSonicele

New Member
Reaction score
20
Sooooooo. Much. Text. Why am I reading 1/10 of an essay just to get a spell description? It seems obsolete.

Though the spell looks nice and works pretty well.
 

RangerX

I am justice!
Reaction score
69
now i clean up the mess with the circular dmg and so on :) and now is easier to implement in your maps
 

Andrewgosu

The Silent Pandaren Helper
Reaction score
716
"Lightspeed cast" trigger:

Set the "Triggering unit" and "Last created unit" to variables before rest of the actions so you could use them and reduce function calls.

Set "Owner of (Triggering unit)" to a variable.


"Lightspeed buff" trigger:

Set "Triggering unit" to a variable.


"Lightspeed buff attack" trigger:

Set "Triggering unit" and "Target unit of issued order" to variables.

Set "Region centered at FMTemp_Point with size (250.00, 250.00)" to a variable before the if/then/else and use "RemoveRect()" custom script to avoid leaks.


"Lowhp" trigger:

Set "Triggering unit", "Last created unit" and "Attacked unit" to variables.

Set "Owner of (Triggering unit)" to a variable.

"Set FMTempPoint = (Random point in (Region centered at (Position of (Triggering unit)) with size (600.00, 600.00)))"

"Position of (Triggering unit)" leaks, use a point variable. So does "Random Point in ...".

"Region centered at ..." leaks because it creates a rect but never removes it. Set it to a variable and use "RemoveRect()" custom script.

set point = Position of (Triggering unit)
set rect = Region centered at (point)
set extraPoint = Random point in (rect)
...
Custom Script: call RemoveLocation(udg_point)
Custom Script: call RemoveLocation(udg_extraPoint)
Custom Script: call RemoveRect(udg_rect)

All three loops leak massively, fix them asap.


"RepeatMUI" trigger:

Set "Last created unit" to a variable.

The loop leaks regions in two cases, fix them like I showed earlier.

"Set FMTempPoint = (Random point in (Region centered at (Position of FMUnitc[(Integer A)]) with size (600.00, 600.00)))"


This spell leaks currently too much and I'm afraid I have to graveyard it until it gets the fixes.
 

RangerX

I am justice!
Reaction score
69
"Lightspeed cast" trigger:

Set the "Triggering unit" and "Last created unit" to variables before rest of the actions so you could use them and reduce function calls.

Set "Owner of (Triggering unit)" to a variable.


"Lightspeed buff" trigger:

Set "Triggering unit" to a variable.


"Lightspeed buff attack" trigger:

Set "Triggering unit" and "Target unit of issued order" to variables.

Set "Region centered at FMTemp_Point with size (250.00, 250.00)" to a variable before the if/then/else and use "RemoveRect()" custom script to avoid leaks.


"Lowhp" trigger:

Set "Triggering unit", "Last created unit" and "Attacked unit" to variables.

Set "Owner of (Triggering unit)" to a variable.

"Set FMTempPoint = (Random point in (Region centered at (Position of (Triggering unit)) with size (600.00, 600.00)))"

"Position of (Triggering unit)" leaks, use a point variable. So does "Random Point in ...".

"Region centered at ..." leaks because it creates a rect but never removes it. Set it to a variable and use "RemoveRect()" custom script.

set point = Position of (Triggering unit)
set rect = Region centered at (point)
set extraPoint = Random point in (rect)
...
Custom Script: call RemoveLocation(udg_point)
Custom Script: call RemoveLocation(udg_extraPoint)
Custom Script: call RemoveRect(udg_rect)

All three loops leak massively, fix them asap.


"RepeatMUI" trigger:

Set "Last created unit" to a variable.

The loop leaks regions in two cases, fix them like I showed earlier.

"Set FMTempPoint = (Random point in (Region centered at (Position of FMUnitc[(Integer A)]) with size (600.00, 600.00)))"


This spell leaks currently too much and I'm afraid I have to graveyard it until it gets the fixes.

[BUMP] now i fixed all the leaks [i think]
 

Andrewgosu

The Silent Pandaren Helper
Reaction score
716
In the last three triggers, there are still some actions where you use "Triggering unit" or "Last created unit" directly,
no matter you set the variable earlier.
 
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