• 🏆 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!

Shadowraze v1.0.3

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Shadowraze v1.0.3


Call up a shadowraze from the ground infront of caster 200/450/750 units away and dealing 75/150/225/300 damage to them.


By
ukn0wnD3str0y3r (Hive)
GnE.MaP-Cr3at0r (Garena)

*Sw_Ability - The ability of your shadowraze
*Sw_Range - The range of your shadowraze
*Sw_AoE - The Area effect of your shadowraze
*Sw_Damage - The Damage of your shadowraze
*Sw_AttackType - The Attack Type of your shadowraze
*Sw_DamageType - The Damage Type of your shadowraze
*Sw_EffectString - The Effect String of your shadowraze
*Sw_MassEffectString - The Mass Effect String of your shadowraze
*Sw_Level - The Level of your shadowraze
*Sw_Point - The point of your shadowraze



-Copy all the configurations and trigger to your map and also 3 of the shadowraze spells
-Make sure 'Automatically create unknown variables while pasting trigger data' is ticked to copy all the trigger in same times
-Enjoy and hope you like it ^^




[trigger=Shadowraze Configurations]
Shadowraze Configuration
Events
Map initialization
Conditions
Actions
-------- Configure the Ability --------
Set Sw_Ability[1] = Shadowraze [Q]
Set Sw_Ability[2] = Shadowraze [W]
Set Sw_Ability[3] = Shadowraze [E]
-------- Configure the Range --------
Set Sw_Range[1] = 200.00
Set Sw_Range[2] = 450.00
Set Sw_Range[3] = 750.00
-------- Configure the Area Effect --------
Set Sw_AoE[1] = 225.00
Set Sw_AoE[2] = 225.00
Set Sw_AoE[3] = 225.00
-------- Configure the Effect --------
Set Sw_EffectString[1] = Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
Set Sw_EffectString[2] = Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
Set Sw_EffectString[3] = Abilities\Spells\Undead\AnimateDead\AnimateDeadTarget.mdl
-------- Configure the Mass Effect --------
Set Sw_MassEffectString[1] = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
Set Sw_MassEffectString[2] = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
Set Sw_MassEffectString[3] = Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
-------- Configure the Damage --------
Set Sw_Damage[1] = 75.00
Set Sw_Damage[2] = 150.00
Set Sw_Damage[3] = 225.00
Set Sw_Damage[4] = 300.00
-------- Configure the Attack Type --------
Set Sw_AttackType[1] = Chaos
Set Sw_AttackType[2] = Chaos
Set Sw_AttackType[3] = Chaos
Set Sw_AttackType[4] = Chaos
-------- Configure the Damage Type --------
Set Sw_DamageType[1] = Death
Set Sw_DamageType[2] = Death
Set Sw_DamageType[3] = Death
Set Sw_DamageType[4] = Death
[/trigger]



[trigger=Shadowraze Learn]
Shadowraze Learn
Events
Unit - A unit Learns a skill
Conditions
(Learned Hero Skill) Equal to Shadowraze [Q]
Actions
-------- Configure the Level --------
Set Sw_Level = (Level of Shadowraze [Q] for (Learning Hero))
-------- Add two other spells --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Level of Shadowraze [W] for (Learning Hero)) Greater than 0
(Level of Shadowraze [E] for (Learning Hero)) Greater than 0
Then - Actions
Unit - Set level of Shadowraze [W] for (Learning Hero) to Sw_Level
Unit - Set level of Shadowraze [E] for (Learning Hero) to Sw_Level
Else - Actions
Unit - Add Shadowraze [W] to (Learning Hero)
Unit - Add Shadowraze [E] to (Learning Hero)
[/trigger]



[trigger=Shadowraze]
Shadowraze
Events
Unit - A unit Starts the effect of an ability
Conditions
Actions
-------- Set the Caster --------
-------- For each (Variables) 1 to (Number of your spell) and do action --------
For each (Integer Sw_X) from 1 to 3, do (Actions)
Loop - Actions
Set Sw_Caster[Sw_X] = (Triggering unit)
-------- Set if the casted ability equal to Ability(Variable) then do action --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Ability being cast) Equal to Sw_Ability[Sw_X]
Then - Actions
-------- Set the Point --------
Set Sw_Point[Sw_X] = ((Position of Sw_Caster[Sw_X]) offset by Sw_Range[Sw_X] towards (Facing of Sw_Caster[Sw_X]) degrees)
-------- Create Special effect --------
Special Effect - Create a special effect at Sw_Point[Sw_X] using Sw_EffectString[Sw_X]
-------- Destroy Effect --------
Special Effect - Destroy (Last created special effect)
-------- Damage units --------
-------- Destroy Group after used --------
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within Sw_AoE[Sw_X] of Sw_Point[Sw_X]) and do (Actions)
Loop - Actions
Set Sw_Target[Sw_X] = (Picked unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Sw_Target[Sw_X] is A structure) Equal to False
(Sw_Target[Sw_X] is alive) Equal to True
(Sw_Target[Sw_X] belongs to an enemy of (Owner of Sw_Caster[Sw_X])) Equal to True
Then - Actions
Unit - Cause Sw_Caster[Sw_X] to damage Sw_Target[Sw_X], dealing Sw_Damage[Sw_Level] damage of attack type Sw_AttackType[Sw_Level] and damage type Sw_DamageType[Sw_Level]
-------- Create Mass effect --------
Special Effect - Create a special effect at (Position of Sw_Target[Sw_X]) using Sw_MassEffectString[Sw_X]
Special Effect - Destroy (Last created special effect)
Else - Actions
-------- Destroy Location --------
Custom script: call RemoveLocation(udg_Sw_Point[udg_Sw_X])
Set Sw_Caster[Sw_X] = No unit
Set Sw_Target[Sw_X] = No unit
Else - Actions
[/trigger]





[+]Added Mass Effect suggested by Mythic
[+]Now the group is destroyed fix by BPower



[+]Added configurable attack and damage type
[+]Changed minor things of Shadowraze trigger
[-]Removed the variable for last created special effect




-Fixed minor things of Shadowraze
-Now Shadowraze Cast Trigger store Caster and Target



-Initial Release




-Gywgod133
-Mythic
-BPower


Give me credits if you used this Shadowraze ^^ Hope you will like it


Bonus Note

I know this is simple enough, but It will also teach some newbies

Keywords:
Shadowraze, Q, W, E, DotA, Nevermore, Shadow Fiend
Contents

Shadowraze v1.0.3 (Map)

Reviews
12th Dec 2015 IcemanBo: For long time as NeedsFix. Rejected. 15:37, 10th Jan 2015 IcemanBo: http://www.hiveworkshop.com/forums/spells-569/shadowraze-v1-0-3-a-260514/index3.html#post2638483
Level 9
Joined
Feb 15, 2013
Messages
372
Why do you destroy the effect after the group pick? I suggest to not store it at all and destroy it immediately.

Since it's a bit simple I once again suggest more functionalities. Like silencing shadowrazed people, or deleting their mana for some time. xD

I have an idea, why not add Damage over time @@
EDIT: but sorry, this is based on DotA's one ^^ but i will try making other spell base on dota and custom by myself maybe @@?
EDIT 2: why i cant destroy effect after group pick o.0?
 
Level 13
Joined
Jul 16, 2012
Messages
679
  • Unit - Add Shadowraze [W] to (Learning Hero)
  • Unit - Add Shadowraze [E] to (Learning Hero)
  • Unit - Set level of Shadowraze [W] for (Learning Hero) to Sw_Level
  • Unit - Set level of Shadowraze [E] for (Learning Hero) to Sw_Level
should be add CONDITION
and if the Learning Hero use twice or more
should be put in a variable

  • Unit Group - Pick every unit in (Units within Sw_AoE[Sw_X] of Sw_Point[Sw_X] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True)))) and do (Actions)
    • Loop - Actions
ITE please (I know you know that)
and also dont forget to save the picked unit in a variable
 
Level 9
Joined
Feb 15, 2013
Messages
372
  • Unit - Add Shadowraze [W] to (Learning Hero)
  • Unit - Add Shadowraze [E] to (Learning Hero)
  • Unit - Set level of Shadowraze [W] for (Learning Hero) to Sw_Level
  • Unit - Set level of Shadowraze [E] for (Learning Hero) to Sw_Level
should be add CONDITION
and if the Learning Hero use twice or more
should be put in a variable

  • Unit Group - Pick every unit in (Units within Sw_AoE[Sw_X] of Sw_Point[Sw_X] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True)))) and do (Actions)
    • Loop - Actions
ITE please (I know you know that)
and also dont forget to save the picked unit in a variable

Okay, i will change that

EDIT: is the learning trigger should be like this?
  • Shadowraze Learn
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Shadowraze [Q]
    • Actions
      • -------- Configure the Level --------
      • Set Sw_Level = (Level of Shadowraze [Q] for (Learning Hero))
      • -------- Add two other spells --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Shadowraze [W] for (Learning Hero)) Greater than 0
          • (Level of Shadowraze [E] for (Learning Hero)) Greater than 0
        • Then - Actions
          • Unit - Set level of Shadowraze [W] for (Learning Hero) to Sw_Level
          • Unit - Set level of Shadowraze [E] for (Learning Hero) to Sw_Level
        • Else - Actions
          • Unit - Add Shadowraze [W] to (Learning Hero)
          • Unit - Add Shadowraze [E] to (Learning Hero)
 
Level 19
Joined
Mar 18, 2012
Messages
1,716
A very known and simple spell concept. Actually the shadowfiend was one of my favorite characters in DotA.
There are a few things you should change in your loop trigger:

1. SW_Caster should be a non array variable. Move GetTriggeringUnit function
above the from 1 - 3 loop, the caster is always the same unit :)

2. SW_Point should be a non array variable.

3. You don't have to store the lastCreatedSpecialEffect into a variable,
simple do DestroyEffect(LastCreatedSpecialEffect).

4. You don't have to store picked unit. It is only used once.

5. Optionally you could add a damage type and attack type variable to the configuration trigger.
 
Level 13
Joined
Jul 16, 2012
Messages
679
  • Unit Group - Pick every unit in (Units within Sw_AoE[Sw_X] of Sw_Point[Sw_X]) and do (Actions)
    • Loop - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Picked unit) is A structure) Equal to False
          • ((Matching unit) is alive) Equal to True
          • ((Picked unit) belongs to an enemy of (Owner of Sw_Caster[Sw_X])) Equal to True
        • Then - Actions
          • Set Sw_Target[Sw_X] = (Picked unit)
          • Unit - Cause Sw_Caster[Sw_X] to damage Sw_Target[Sw_X], dealing Sw_Damage[Sw_Level] damage of attack type Spells and damage type Normal
        • Else - Actions
->>>
  • Unit Group - Pick every unit in (Units within Sw_AoE[Sw_X] of Sw_Point[Sw_X]) and do (Actions)
    • Loop - Actions
      • Set Sw_Target[Sw_X] = (Picked unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Sw_Target[Sw_X] is A structure) Equal to False
          • Sw_Target[Sw_X] is alive) Equal to True
          • Sw_Target[Sw_X] belongs to an enemy of (Owner of Sw_Caster[Sw_X])) Equal to True
        • Then - Actions
          • Unit - Cause Sw_Caster[Sw_X] to damage Sw_Target[Sw_X], dealing Sw_Damage[Sw_Level] damage of attack type Spells and damage type Normal
        • Else - Actions
 
Level 9
Joined
Feb 15, 2013
Messages
372
In the 3nd trigger
You created unit group to dmg the nearby enemies
So u forgot remove it

^_^

Huh? but i didn't set it in a variable, do it also needed to clear it?
using this ->> "set bj_wantDestroyGroup = true" ??

No, create a mass effect on units hit. Just a suggestion though.

I get it, i will add it soon ^^
 
Level 19
Joined
Mar 18, 2012
Messages
1,716
Huh? but i didn't set it in a variable, do it also needed to clear it?
using this ->> "set bj_wantDestroyGroup = true" ??
Yes. The function pick every unit .... creates a local group which has to be destroyed.

I set it on a variable because some people may like to change the range :) or AoE
That doesn't make any sense. This is a location variable and not a real variable,
there is nothing you could manipulate. Think about it :D
It's a normal location (point), so an array is completely unnecessary.

If the triggers in the description are up to date, then you didn't change anything of which I suggested.
Feel free to ask if you didn't understand my suggestions.
 
Top