• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Spell Workshop - Looking for GUIers

Status
Not open for further replies.
Level 17
Joined
Feb 11, 2011
Messages
1,860
Hello guys,

I am looking to "recruit" people to complete GUI requests at my workshop. This is because there are currently lots of requests but not enough people to do them all. A link to the workshop can be found in my signature.

You must be able to make GUI spells that conform to this:

  • Leakless,
  • MUI &
  • Configurable (i.e. can easily change damage, AoE etc).
If you would like to help out, please let me know. I may ask for a sample of your triggering.

Thanks,

Mr_Bean
 
I'll see to it.

I'm going to work and submit it tomorrow :)

EDIT :

I attach a spell, not too advanced tho, but MUI and Leakless + Configurable regardless.
also, I still feel the spell is too simple but very busy here >.> this spell is made in around 10 minutes.
 

Attachments

  • Frostmoure Strike.w3x
    19 KB · Views: 71
Last edited:
Level 17
Joined
Feb 11, 2011
Messages
1,860
i'll submit it tomorrow..
in my time it's 12.03 AM GMT +7, i can get error triggering if i do it now..
and you'll probably reject me xD kidding of course

Haha, okay thanks :D

I want to join, if you want an example, tell me to do something (GUI or custom script)

Edit; i'm mostly free in the day GMT +3 and i am a perfectionist so do not think i would let go a non-perfect spell (Look-Icon-Bugs)

Do you have a spell or something that you could show me? Like from your map?
 
Level 16
Joined
Jul 31, 2012
Messages
2,217
EDIT: One hero will do it, check the hero in the DArk Agility tavern, with a shadow golem icon; here are the spells:
On a damage detection system for physical damage
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Max mana of target) Greater than 0.00
      • (Level of Malixus for Hero[(Player number of (Owner of source))]) Greater than 0
    • Then - Actions
      • Set temp_Unit = Hero[(Player number of (Owner of source))]
      • Set y = (1.00 + (2.00 x (Real((Level of Malixus for temp_Unit)))))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Mana of target) Less than y
        • Then - Actions
          • Unit - Set mana of temp_Unit to ((Mana of temp_Unit) + (Mana of target))
          • Unit - Set mana of target to 0.00
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of Shadow Veins for temp_Unit) Greater than 0
            • Then - Actions
              • Set temp_location = (Position of target)
              • Unit - Create 1 Shadow Veins for (Owner of source) at temp_location facing Default building facing degrees
              • Set temp_Unit_Group = (Units within 225.00 of temp_location matching ((((Matching unit) is dead) Equal to False) and (((Matching unit) belongs to an ally of (Owner of (Last created unit))) Equal to False)))
              • Set y = ((0.05 + (0.15 x (Real((Level of Shadow Veins for source))))) x amount)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in temp_Unit_Group) Equal to 1
                • Then - Actions
                  • Set y = (2.00 x y)
                  • Unit - Cause (Last created unit) to damage target, dealing y damage of attack type Spells and damage type Normal
                  • Set y = (amount + y)
                  • Floating Text - Create floating text that reads (|cff530080 + ((String((Integer(y)))) + !!!)) at temp_location with Z offset 175.00, using font size 11.50, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
                  • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
                  • Floating Text - Change (Last created floating text): Disable permanence
                  • Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
                  • Floating Text - Change the fading age of (Last created floating text) to 2.00 seconds
                • Else - Actions
                  • Unit Group - Pick every unit in temp_Unit_Group and do (Actions)
                    • Loop - Actions
                      • Unit - Cause (Last created unit) to damage (Picked unit), dealing y damage of attack type Spells and damage type Normal
              • Unit - Kill (Last created unit)
              • Custom script: call DestroyGroup(udg_temp_Unit_Group)
              • Custom script: call RemoveLocation(udg_temp_location)
            • Else - Actions
        • Else - Actions
          • Unit - Set mana of temp_Unit to ((Mana of temp_Unit) + y)
          • Unit - Set mana of target to ((Mana of target) - y)
          • Set amount = (y + amount)
          • Special Effect - Create a special effect attached to the origin of target using Abilities\Spells\Undead\OrbOfDeath\AnnihilationMissile.mdl
          • Special Effect - Destroy (Last created special effect)
    • Else - Actions
also on a damage detection
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Level of Shadow Veins for source) Greater than 0
      • (Random percentage) Less than or equal to 30.00
    • Then - Actions
      • Set temp_location = (Position of target)
      • Unit - Create 1 Shadow Veins for (Owner of source) at temp_location facing Default building facing degrees
      • Set temp_Unit_Group = (Units within 225.00 of temp_location matching ((((Matching unit) is dead) Equal to False) and (((Matching unit) belongs to an ally of (Owner of (Last created unit))) Equal to False)))
      • Set y = ((0.05 + (0.15 x (Real((Level of Shadow Veins for source))))) x amount)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in temp_Unit_Group) Equal to 1
        • Then - Actions
          • Set y = (2.00 x y)
          • Unit - Cause (Last created unit) to damage target, dealing y damage of attack type Spells and damage type Normal
          • Set y = (amount + y)
          • Floating Text - Create floating text that reads (|cff530080 + ((String((Integer(y)))) + !!!)) at temp_location with Z offset 175.00, using font size 11.50, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
          • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
          • Floating Text - Change (Last created floating text): Disable permanence
          • Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
          • Floating Text - Change the fading age of (Last created floating text) to 2.00 seconds
        • Else - Actions
          • Unit Group - Pick every unit in temp_Unit_Group and do (Actions)
            • Loop - Actions
              • Unit - Cause (Last created unit) to damage (Picked unit), dealing y damage of attack type Spells and damage type Normal
      • Unit - Kill (Last created unit)
      • Custom script: call DestroyGroup(udg_temp_Unit_Group)
      • Custom script: call RemoveLocation(udg_temp_location)
    • Else - Actions
Many Triggers:
  • Priscama Learn
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Priscama
    • Actions
      • Unit - Add Release (Priscama) to (Learning Hero)
  • Priscama
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Priscama
    • Actions
      • Unit Group - Add (Target unit of ability being cast) to Priscama_Group
      • Hashtable - Save 12.00 as 0 of (Key (Target unit of ability being cast)) in Priscama_HA
      • Hashtable - Save (Level of (Ability being cast) for (Triggering unit)) as 4 of (Key (Target unit of ability being cast)) in Priscama_HA
      • Hashtable - Save Handle Of(Triggering unit) as 5 of (Key (Target unit of ability being cast)) in Priscama_HA
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (1 is stored as a Handle of (Key (Target unit of ability being cast)) in Priscama_HA) Equal to False
        • Then - Actions
          • Special Effect - Create a special effect attached to the hand left of (Target unit of ability being cast) using Abilities\Spells\Other\BlackArrow\BlackArrowMissile.mdl
          • Hashtable - Save Handle Of(Last created special effect) as 1 of (Key (Target unit of ability being cast)) in Priscama_HA
          • Special Effect - Create a special effect attached to the hand right of (Target unit of ability being cast) using Abilities\Spells\Other\BlackArrow\BlackArrowMissile.mdl
          • Hashtable - Save Handle Of(Last created special effect) as 2 of (Key (Target unit of ability being cast)) in Priscama_HA
        • Else - Actions
          • Set temp_Effect = (Load 1 of (Key (Target unit of ability being cast)) in Priscama_HA)
          • Special Effect - Destroy temp_Effect
          • Set temp_Effect = (Load 2 of (Key (Target unit of ability being cast)) in Priscama_HA)
          • Special Effect - Destroy temp_Effect
          • Special Effect - Create a special effect attached to the hand left of (Target unit of ability being cast) using Abilities\Spells\Other\BlackArrow\BlackArrowMissile.mdl
          • Hashtable - Save Handle Of(Last created special effect) as 1 of (Key (Target unit of ability being cast)) in Priscama_HA
          • Special Effect - Create a special effect attached to the hand right of (Target unit of ability being cast) using Abilities\Spells\Other\BlackArrow\BlackArrowMissile.mdl
          • Hashtable - Save Handle Of(Last created special effect) as 2 of (Key (Target unit of ability being cast)) in Priscama_HA
      • Trigger - Turn on Priscama Loop <gen>
  • Priscama Loop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Priscama_Group and do (Actions)
        • Loop - Actions
          • Set y = (Load 0 of (Key (Picked unit)) from Priscama_HA)
          • Set y = (y - 0.05)
          • Hashtable - Save y as 0 of (Key (Picked unit)) in Priscama_HA
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • y Less than or equal to 0.00
            • Then - Actions
              • Set temp_Unit = (Picked unit)
              • Trigger - Run Priscama End <gen> (checking conditions)
              • Unit Group - Remove (Picked unit) from Priscama_Group
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Priscama_Group is empty) Equal to True
            • Then - Actions
              • Trigger - Turn off (This trigger)
            • Else - Actions
JASS:
function Trig_Priscama_End_Actions takes nothing returns nothing
    local unit temp_Unit
    local handle temp_handle
    local effect temp_effect
    set temp_Unit = udg_temp_Unit
    set temp_handle = temp_Unit
    call PauseUnitBJ( true, temp_Unit )
    call AddSpecialEffectTargetUnitBJ( "origin", temp_Unit, "war3mapImported\\Dark Execution.mdx" )
    set temp_effect = GetLastCreatedEffectBJ()
    set udg_temp_Effect = LoadEffectHandleBJ(1, GetHandleIdBJ(temp_handle), udg_Priscama_HA)
    call DestroyEffect(udg_temp_Effect)
    set udg_temp_Effect = LoadEffectHandleBJ(1, GetHandleIdBJ(temp_handle), udg_Priscama_HA)
    call DestroyEffect(udg_temp_Effect)
    call TriggerSleepAction( 1.20 )
    set udg_y = LoadRealBJ(3, GetHandleIdBJ(temp_handle), udg_Priscama_HA)
    call SaveRealBJ( 0.00, 3, GetHandleIdBJ(temp_handle), udg_Priscama_HA )
    set udg_temp_Unit = LoadUnitHandleBJ(5, GetHandleIdBJ(temp_handle), udg_Priscama_HA)
    set udg_x = LoadIntegerBJ(4, GetHandleIdBJ(temp_handle), udg_Priscama_HA)
    set udg_y = ( ( ( 0.05 * I2R(udg_x) ) + 0.10 ) * udg_y )
    call DisplayTextToForce( GetPlayersAll(), R2S(udg_y) )
    call UnitDamageTargetBJ( udg_temp_Unit, temp_Unit, udg_y, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC )
    call TriggerSleepAction( 2.30 )
    call PauseUnitBJ( false, temp_Unit )
    call DestroyEffect(temp_effect)
endfunction

//===========================================================================
function InitTrig_Priscama_End takes nothing returns nothing
    set gg_trg_Priscama_End = CreateTrigger(  )
    call TriggerAddAction( gg_trg_Priscama_End, function Trig_Priscama_End_Actions )
endfunction
  • Priscama Custom End
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Release (Priscama)
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Priscama_Group is empty) Equal to True
        • Then - Actions
          • Custom script: if udg_ErrorSound == null then
          • Custom script: set udg_ErrorSound = CreateSoundFromLabel( "InterfaceError",false,false,false,10,10)
          • Custom script: endif
          • Set ErrorMessage = Did not find any affected Unit
          • Set ErrorPlayer = (Triggering player)
          • Custom script: if GetLocalPlayer() == udg_ErrorPlayer then
          • Custom script: call ClearTextMessages()
          • Custom script: call DisplayTimedTextToPlayer( udg_ErrorPlayer, 0.52, 0.96, 2.00, "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n|cffffcc00"+udg_ErrorMessage+"|r" )
          • Custom script: call StartSound(udg_ErrorSound)
          • Custom script: endif
          • Unit - Order (Triggering unit) to Stop
        • Else - Actions
          • Unit Group - Pick every unit in Priscama_Group and do (Actions)
            • Loop - Actions
              • Hashtable - Save 0.05 as 0 of (Key (Picked unit)) in Priscama_HA
  • Shadow Release
    • Events
      • Unit - A unit Finishes casting an ability
    • Conditions
      • (Ability being cast) Equal to Shadow Release
    • Actions
      • Animation - Play (Triggering unit)'s spell animation
      • Set temp_location = (Position of (Triggering unit))
      • For each (Integer x) from 1 to 20, do (Actions)
        • Loop - Actions
          • Set temp_location1 = (temp_location offset by 25.00 towards (18.00 x (Real(x))) degrees)
          • Unit - Create 1 Shadow Release for (Owner of (Triggering unit)) at temp_location facing Default building facing degrees
          • Unit - Set level of Shadow Release 1 (Neutral Hostile) for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
          • Unit - Order (Last created unit) to Undead Crypt Lord - Impale temp_location1
          • Unit - Add a 1.60 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_temp_location1)
      • Custom script: call RemoveLocation(udg_temp_location)
  • Shadow Release Scepter
    • Events
      • Unit - A unit Finishes casting an ability
    • Conditions
      • (Ability being cast) Equal to Shadow Release (Upgraded)
    • Actions
      • Animation - Play (Triggering unit)'s spell animation
      • Set temp_location = (Position of (Triggering unit))
      • For each (Integer x) from 1 to 20, do (Actions)
        • Loop - Actions
          • Set temp_location1 = (temp_location offset by 25.00 towards (18.00 x (Real(x))) degrees)
          • Unit - Create 1 Shadow Release S for (Owner of (Triggering unit)) at temp_location facing Default building facing degrees
          • Unit - Set level of Shadow Release 1 (upgrade) for (Last created unit) to (Level of (Ability being cast) for (Triggering unit))
          • Unit - Order (Last created unit) to Undead Crypt Lord - Impale temp_location1
          • Unit - Add a 1.60 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_temp_location1)
      • Custom script: call RemoveLocation(udg_temp_location)
+ damage detection for slow:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Unit-type of source) Equal to Shadow Release
    • Then - Actions
      • Set temp_location = (Position of target)
      • Unit - Create 1 A Dummy for (Owner of source) at temp_location facing Default building facing degrees
      • Unit - Add Shadow Release S to (Last created unit)
      • Unit - Set level of Shadow Release S for (Last created unit) to (Level of Shadow Release 1 (Neutral Hostile) for source)
      • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
      • Unit - Order (Last created unit) to Human Sorceress - Slow target
      • Custom script: call RemoveLocation(udg_temp_location)
    • Else - Actions
 

Attachments

  • DotCa 1.03 RLC BETA.w3x
    7.5 MB · Views: 34
Last edited:
Level 13
Joined
Jan 30, 2012
Messages
1,298
here it is.. maybe not as good as the others but i want to help and practice my GUI coding
Thanks :grin:

here is the TRIGGER

  • Elemental Wave Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set Ability = Elemental Wave
      • Set AoE[1] = 200.00
      • Set AoE[2] = 200.00
      • Set AoE[3] = 200.00
      • Set Damage[1] = 100.00
      • Set Damage[2] = 150.00
      • Set Damage[3] = 200.00
      • Set Range[1] = 1000.00
      • Set Range[2] = 1000.00
      • Set Range[3] = 1000.00
      • Set SFX[1] = Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
      • Set SFX[2] = Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
      • Set DestroyTree = True
  • Elemental Wave Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Elemental Wave
    • Actions
      • Set Max_Index = (Max_Index + 1)
      • Set Caster[Max_Index] = (Triggering unit)
      • Set Point[1] = (Position of Caster[Max_Index])
      • Set Point[2] = (Target point of ability being cast)
      • Set Angle[Max_Index] = (Angle from Point[1] to Point[2])
      • Set Point[3] = (Point[1] offset by 150.00 towards Angle[Max_Index] degrees)
      • Set Point[4] = (Point[1] offset by Range[Max_Index] towards Angle[Max_Index] degrees)
      • Unit - Create 1 Water Elemental for (Owner of Caster[Max_Index]) at Point[3] facing Angle[Max_Index] degrees
      • Set Dummy[Max_Index] = (Last created unit)
      • Animation - Change Dummy[Max_Index]'s animation speed to 50.00% of its original speed
      • Animation - Play Dummy[Max_Index]'s attack animation
      • Custom script: call RemoveLocation(udg_Point[3])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Max_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Elemental Wave Loop <gen>
        • Else - Actions
  • Elemental Wave Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer Current_Index) from 1 to Max_Index, do (Actions)
        • Loop - Actions
          • Set Point[1] = (Position of Dummy[Current_Index])
          • Set Point[2] = (Point[1] offset by 35.00 towards Angle[Current_Index] degrees)
          • Unit - Move Dummy[Current_Index] instantly to Point[2]
          • Special Effect - Create a special effect at Point[1] using SFX[1]
          • Special Effect - Destroy (Last created special effect)
          • Set DamageGroup = (Units within AoE[(Level of Ability for Caster[Current_Index])] of Point[1] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of Caster[Current_Index])) Equal to True) and ((((Matching unit) is A structu
          • Unit Group - Pick every unit in DamageGroup and do (Actions)
            • Loop - Actions
              • Unit - Cause Caster[Current_Index] to damage (Picked unit), dealing Damage[(Level of Ability for Caster[Current_Index])] damage of attack type Spells and damage type Normal
              • Special Effect - Create a special effect attached to the chest of (Picked unit) using SFX[2]
              • Special Effect - Destroy (Last created special effect)
              • Unit Group - Add (Picked unit) to UndamageGroup
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • DestroyTree Equal to True
            • Then - Actions
              • Destructible - Pick every destructible within AoE[(Level of Ability for Caster[Current_Index])] of Point[1] and do (Actions)
                • Loop - Actions
                  • Destructible - Kill (Picked destructible)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between Point[1] and Point[4]) Less than or equal to 100.00
            • Then - Actions
              • Custom script: call RemoveLocation(udg_Point[4])
              • Unit Group - Remove all units of UndamageGroup from UndamageGroup
              • Set DamageGroup = (Units within 350.00 of Point[1] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of Caster[Current_Index])) Equal to True) and ((((Matching unit) is A structure) Not equal to True) and (((Matching unit
              • Unit Group - Pick every unit in DamageGroup and do (Actions)
                • Loop - Actions
                  • Unit - Cause Caster[Current_Index] to damage (Picked unit), dealing 50.00 damage of attack type Spells and damage type Normal
                  • Special Effect - Create a special effect attached to the chest of (Picked unit) using SFX[2]
                  • Special Effect - Destroy (Last created special effect)
              • Custom script: call DestroyGroup(udg_DamageGroup)
              • Unit - Kill Dummy[Current_Index]
              • Set Dummy[Current_Index] = Dummy[Max_Index]
              • Set Dummy[Max_Index] = No unit
              • Set Caster[Current_Index] = Caster[Max_Index]
              • Set Caster[Max_Index] = No unit
              • Set Angle[Current_Index] = Angle[Max_Index]
              • Set Angle[Max_Index] = 0.00
              • Set Current_Index = (Current_Index - 1)
              • Set Max_Index = (Max_Index - 1)
            • Else - Actions
          • Custom script: call DestroyGroup(udg_DamageGroup)
          • Custom script: call RemoveLocation(udg_Point[1])
          • Custom script: call RemoveLocation(udg_Point[2])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Max_Index Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
 

Attachments

  • Elemental Wave.w3x
    25 KB · Views: 52
Level 16
Joined
Jul 31, 2012
Messages
2,217
here it is.. maybe not as good as the others but i want to help and practice my GUI coding
Thanks :grin:

here is the TRIGGER

  • Elemental Wave Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set Ability = Elemental Wave
      • Set AoE[1] = 200.00
      • Set AoE[2] = 200.00
      • Set AoE[3] = 200.00
      • Set Damage[1] = 100.00
      • Set Damage[2] = 150.00
      • Set Damage[3] = 200.00
      • Set Range[1] = 1000.00
      • Set Range[2] = 1000.00
      • Set Range[3] = 1000.00
      • Set SFX[1] = Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
      • Set SFX[2] = Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
      • Set DestroyTree = True
  • Elemental Wave Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Elemental Wave
    • Actions
      • Set Max_Index = (Max_Index + 1)
      • Set Caster[Max_Index] = (Triggering unit)
      • Set Point[1] = (Position of Caster[Max_Index])
      • Set Point[2] = (Target point of ability being cast)
      • Set Angle[Max_Index] = (Angle from Point[1] to Point[2])
      • Set Point[3] = (Point[1] offset by 150.00 towards Angle[Max_Index] degrees)
      • Set Point[4] = (Point[1] offset by Range[Max_Index] towards Angle[Max_Index] degrees)
      • Unit - Create 1 Water Elemental for (Owner of Caster[Max_Index]) at Point[3] facing Angle[Max_Index] degrees
      • Set Dummy[Max_Index] = (Last created unit)
      • Animation - Change Dummy[Max_Index]'s animation speed to 50.00% of its original speed
      • Animation - Play Dummy[Max_Index]'s attack animation
      • Custom script: call RemoveLocation(udg_Point[3])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Max_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Elemental Wave Loop <gen>
        • Else - Actions
  • Elemental Wave Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer Current_Index) from 1 to Max_Index, do (Actions)
        • Loop - Actions
          • Set Point[1] = (Position of Dummy[Current_Index])
          • Set Point[2] = (Point[1] offset by 35.00 towards Angle[Current_Index] degrees)
          • Unit - Move Dummy[Current_Index] instantly to Point[2]
          • Special Effect - Create a special effect at Point[1] using SFX[1]
          • Special Effect - Destroy (Last created special effect)
          • Set DamageGroup = (Units within AoE[(Level of Ability for Caster[Current_Index])] of Point[1] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of Caster[Current_Index])) Equal to True) and ((((Matching unit) is A structu
          • Unit Group - Pick every unit in DamageGroup and do (Actions)
            • Loop - Actions
              • Unit - Cause Caster[Current_Index] to damage (Picked unit), dealing Damage[(Level of Ability for Caster[Current_Index])] damage of attack type Spells and damage type Normal
              • Special Effect - Create a special effect attached to the chest of (Picked unit) using SFX[2]
              • Special Effect - Destroy (Last created special effect)
              • Unit Group - Add (Picked unit) to UndamageGroup
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • DestroyTree Equal to True
            • Then - Actions
              • Destructible - Pick every destructible within AoE[(Level of Ability for Caster[Current_Index])] of Point[1] and do (Actions)
                • Loop - Actions
                  • Destructible - Kill (Picked destructible)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between Point[1] and Point[4]) Less than or equal to 100.00
            • Then - Actions
              • Custom script: call RemoveLocation(udg_Point[4])
              • Unit Group - Remove all units of UndamageGroup from UndamageGroup
              • Set DamageGroup = (Units within 350.00 of Point[1] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of Caster[Current_Index])) Equal to True) and ((((Matching unit) is A structure) Not equal to True) and (((Matching unit
              • Unit Group - Pick every unit in DamageGroup and do (Actions)
                • Loop - Actions
                  • Unit - Cause Caster[Current_Index] to damage (Picked unit), dealing 50.00 damage of attack type Spells and damage type Normal
                  • Special Effect - Create a special effect attached to the chest of (Picked unit) using SFX[2]
                  • Special Effect - Destroy (Last created special effect)
              • Custom script: call DestroyGroup(udg_DamageGroup)
              • Unit - Kill Dummy[Current_Index]
              • Set Dummy[Current_Index] = Dummy[Max_Index]
              • Set Dummy[Max_Index] = No unit
              • Set Caster[Current_Index] = Caster[Max_Index]
              • Set Caster[Max_Index] = No unit
              • Set Angle[Current_Index] = Angle[Max_Index]
              • Set Angle[Max_Index] = 0.00
              • Set Current_Index = (Current_Index - 1)
              • Set Max_Index = (Max_Index - 1)
            • Else - Actions
          • Custom script: call DestroyGroup(udg_DamageGroup)
          • Custom script: call RemoveLocation(udg_Point[1])
          • Custom script: call RemoveLocation(udg_Point[2])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Max_Index Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions

Flawless, welcome aboard [that's what mr bean told me]
 
Level 17
Joined
Feb 11, 2011
Messages
1,860
here it is.. maybe not as good as the others but i want to help and practice my GUI coding
Thanks :grin:

here is the TRIGGER

  • Elemental Wave Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set Ability = Elemental Wave
      • Set AoE[1] = 200.00
      • Set AoE[2] = 200.00
      • Set AoE[3] = 200.00
      • Set Damage[1] = 100.00
      • Set Damage[2] = 150.00
      • Set Damage[3] = 200.00
      • Set Range[1] = 1000.00
      • Set Range[2] = 1000.00
      • Set Range[3] = 1000.00
      • Set SFX[1] = Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
      • Set SFX[2] = Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
      • Set DestroyTree = True
  • Elemental Wave Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Elemental Wave
    • Actions
      • Set Max_Index = (Max_Index + 1)
      • Set Caster[Max_Index] = (Triggering unit)
      • Set Point[1] = (Position of Caster[Max_Index])
      • Set Point[2] = (Target point of ability being cast)
      • Set Angle[Max_Index] = (Angle from Point[1] to Point[2])
      • Set Point[3] = (Point[1] offset by 150.00 towards Angle[Max_Index] degrees)
      • Set Point[4] = (Point[1] offset by Range[Max_Index] towards Angle[Max_Index] degrees)
      • Unit - Create 1 Water Elemental for (Owner of Caster[Max_Index]) at Point[3] facing Angle[Max_Index] degrees
      • Set Dummy[Max_Index] = (Last created unit)
      • Animation - Change Dummy[Max_Index]'s animation speed to 50.00% of its original speed
      • Animation - Play Dummy[Max_Index]'s attack animation
      • Custom script: call RemoveLocation(udg_Point[3])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Max_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on Elemental Wave Loop <gen>
        • Else - Actions
  • Elemental Wave Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer Current_Index) from 1 to Max_Index, do (Actions)
        • Loop - Actions
          • Set Point[1] = (Position of Dummy[Current_Index])
          • Set Point[2] = (Point[1] offset by 35.00 towards Angle[Current_Index] degrees)
          • Unit - Move Dummy[Current_Index] instantly to Point[2]
          • Special Effect - Create a special effect at Point[1] using SFX[1]
          • Special Effect - Destroy (Last created special effect)
          • Set DamageGroup = (Units within AoE[(Level of Ability for Caster[Current_Index])] of Point[1] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of Caster[Current_Index])) Equal to True) and ((((Matching unit) is A structu
          • Unit Group - Pick every unit in DamageGroup and do (Actions)
            • Loop - Actions
              • Unit - Cause Caster[Current_Index] to damage (Picked unit), dealing Damage[(Level of Ability for Caster[Current_Index])] damage of attack type Spells and damage type Normal
              • Special Effect - Create a special effect attached to the chest of (Picked unit) using SFX[2]
              • Special Effect - Destroy (Last created special effect)
              • Unit Group - Add (Picked unit) to UndamageGroup
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • DestroyTree Equal to True
            • Then - Actions
              • Destructible - Pick every destructible within AoE[(Level of Ability for Caster[Current_Index])] of Point[1] and do (Actions)
                • Loop - Actions
                  • Destructible - Kill (Picked destructible)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between Point[1] and Point[4]) Less than or equal to 100.00
            • Then - Actions
              • Custom script: call RemoveLocation(udg_Point[4])
              • Unit Group - Remove all units of UndamageGroup from UndamageGroup
              • Set DamageGroup = (Units within 350.00 of Point[1] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) belongs to an enemy of (Owner of Caster[Current_Index])) Equal to True) and ((((Matching unit) is A structure) Not equal to True) and (((Matching unit
              • Unit Group - Pick every unit in DamageGroup and do (Actions)
                • Loop - Actions
                  • Unit - Cause Caster[Current_Index] to damage (Picked unit), dealing 50.00 damage of attack type Spells and damage type Normal
                  • Special Effect - Create a special effect attached to the chest of (Picked unit) using SFX[2]
                  • Special Effect - Destroy (Last created special effect)
              • Custom script: call DestroyGroup(udg_DamageGroup)
              • Unit - Kill Dummy[Current_Index]
              • Set Dummy[Current_Index] = Dummy[Max_Index]
              • Set Dummy[Max_Index] = No unit
              • Set Caster[Current_Index] = Caster[Max_Index]
              • Set Caster[Max_Index] = No unit
              • Set Angle[Current_Index] = Angle[Max_Index]
              • Set Angle[Max_Index] = 0.00
              • Set Current_Index = (Current_Index - 1)
              • Set Max_Index = (Max_Index - 1)
            • Else - Actions
          • Custom script: call DestroyGroup(udg_DamageGroup)
          • Custom script: call RemoveLocation(udg_Point[1])
          • Custom script: call RemoveLocation(udg_Point[2])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Max_Index Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions

I must say, that ability is pretty cool!
Welcome to the team! :thumbs_up:
 
Level 16
Joined
Jul 31, 2012
Messages
2,217
If mods see multiple double posts from you, following things could occure:
You will recive a warning message
You may recive negative rep
You may be banned if repetingly double posting (spaming - even cuz of slow internet)
You may be disbled some features (maybe)

Total: Punishments
 
Status
Not open for further replies.
Top