Spellpack Hero: Warlock

Monsterous

In the Shadows, Lurking.
Reaction score
99
GUI: No Idea :D
MUI: No
Leakless: Hope so.


Name: Warlock
Description: The Warlock, a master of demonology and destruction, making him an extremely powerful spellcaster. Although low in health like most spellcasters, he has very good mana and has a powerful pet, depending on the Warlocks level.


Abilities:


Shadow Split: The Warlock sends a shadowbolt towards the targeted enemy, dealing damage to the unit and an AoE dealing damage divided by the amount of units in a 500 yard radius.
Level 1: Sends a shadowbolt towards the targeted enemy, dealing 150 damage to the unit and an AoE dealing 150 damage divided by the amount of units in a 500 yard radius.
Level 2: Sends a shadowbolt towards the targeted enemy, dealing 200 damage to the unit and an AoE dealing 250 damage divided by the amount of units in a 500 yard radius.
Level 3: Sends a shadowbolt towards the targeted enemy, dealing 250 damage to the unit and an AoE dealing 350 damage divided by the amount of units in a 500 yard radius.

shadowsplitjb2.jpg

Code:
AoE
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Shadow Split 
    Actions
        Set Shadow_Split_Point = (Position of (Target unit of ability being cast))
        Unit - Cause (Target unit of ability being cast) to damage circular area after 0.00 seconds of radius 500.00 at Shadow_Split_Point, dealing (((100.00 x (Real((Level of Shadow Split  for (Triggering unit))))) + 50.00) / (Real((Number of units in (Units in (Region centered at Shadow_Split_Point with size (500.00, 500.00))))))) damage of attack type Spells and damage type Normal
        Special Effect - Create a special effect at Shadow_Split_Point using Units\NightElf\Wisp\WispExplode.mdl
        Special Effect - Destroy (Last created special effect)
        Custom script:   call RemoveLocation (udg_Shadow_Split_Point)

Demonology [Passive]: The Warlock casts a permanent spell upon himself from his Demonology book, giving all his summoned pets more armour, damage and speed. Passive Ability. Increasing every level.
This is fused with the Summon Pet Trigger.

Perish: The Warlock casts a curse on his foe, dealing 50 damage per second, lasting a moderate amount of time on units but only a short amount of time on heroes. Also reduces attack speed, damage and movement speed due to the pain caused.
Level 1: The Warlock casts a curse on his foe, dealing 50 damage per second, lasting 10 seconds but only dealing half the damage towards a Hero. Also reduces attack speed, damage and movement speed due to the pain caused.
Level 2: The Warlock casts a curse on his foe, dealing 50 damage per second, lasting 12 seconds but only dealing half the damage towards a Hero. Also reduces attack speed, damage and movement speed due to the pain caused.
Level 3: The Warlock casts a curse on his foe, dealing 50 damage per second, lasting 14 seconds but only dealing half the damage towards a Hero. Also reduces attack speed, damage and movement speed due to the pain caused.

perishyv1.jpg

Code:
Perish
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Perish 
    Actions
        Set Perish_Target = (Target unit of ability being cast)
        For each (Integer A) from 1 to ((10 + (2 x (Level of Perish  for (Triggering unit)))) - 2), do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        ((Target unit of ability being cast) is A Hero) Equal to True
                    Then - Actions
                        Unit - Cause (Triggering unit) to damage Perish_Target, dealing 25.00 damage of attack type Spells and damage type Normal
                        Special Effect - Create a special effect attached to the chest of Perish_Target using Abilities\Spells\Undead\DeathandDecay\DeathandDecayDamage.mdl
                        Special Effect - Destroy (Last created special effect)
                        Wait 0.97 seconds
                    Else - Actions
                        Unit - Cause (Triggering unit) to damage Perish_Target, dealing 50.00 damage of attack type Chaos and damage type Normal
                        Special Effect - Create a special effect attached to the chest of Perish_Target using Abilities\Spells\Undead\DeathandDecay\DeathandDecayDamage.mdl
                        Special Effect - Destroy (Last created special effect)
                        Wait 0.97 seconds

Summon Pet: Summons a being from the Twisting Nether, depending on the Warlock's level.
Level 1/2: Giant Skeleton
Level 3/4: Fel Stalker
Level 5/6: Felguard
Level 7/8/9: Infernal
Level 10: Doom Guard

Code:
Summon Revised
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Summon Pet 
    Actions
        Set Summon_Pet_Point = (Position of (Triggering unit))
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Or - Any (Conditions) are true
                    Conditions
                        (Hero level of (Casting unit)) Equal to 1
                        (Hero level of (Casting unit)) Equal to 2
            Then - Actions
                Unit - Create 1 Giant Skeleton Warrior for Player 1 (Red) at Summon_Pet_Point facing Default building facing degrees
                Custom script:   call RemoveLocation (udg_Summon_Pet_Point)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Demonology  for (Triggering unit)) Greater than or equal to 1
                    Then - Actions
                        Unit - Add Deadly Strikes  to (Last created unit)
                        Unit - Set level of Deadly Strikes  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Encasement  to (Last created unit)
                        Unit - Set level of Encasement  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Fel Energy  to (Last created unit)
                        Unit - Set level of Fel Energy  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                    Else - Actions
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Or - Any (Conditions) are true
                    Conditions
                        (Hero level of (Casting unit)) Equal to 3
                        (Hero level of (Casting unit)) Equal to 4
            Then - Actions
                Unit - Create 1 Fel Stalker for Player 1 (Red) at Summon_Pet_Point facing Default building facing degrees
                Custom script:   call RemoveLocation (udg_Summon_Pet_Point)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Demonology  for (Triggering unit)) Greater than or equal to 1
                    Then - Actions
                        Unit - Add Deadly Strikes  to (Last created unit)
                        Unit - Set level of Deadly Strikes  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Encasement  to (Last created unit)
                        Unit - Set level of Encasement  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Fel Energy  to (Last created unit)
                        Unit - Set level of Fel Energy  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                    Else - Actions
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Or - Any (Conditions) are true
                    Conditions
                        (Hero level of (Casting unit)) Equal to 5
                        (Hero level of (Casting unit)) Equal to 6
            Then - Actions
                Unit - Create 1 Felguard for Player 1 (Red) at Summon_Pet_Point facing Default building facing degrees
                Custom script:   call RemoveLocation (udg_Summon_Pet_Point)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Demonology  for (Triggering unit)) Greater than or equal to 1
                    Then - Actions
                        Unit - Add Deadly Strikes  to (Last created unit)
                        Unit - Set level of Deadly Strikes  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Encasement  to (Last created unit)
                        Unit - Set level of Encasement  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Fel Energy  to (Last created unit)
                        Unit - Set level of Fel Energy  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                    Else - Actions
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Or - Any (Conditions) are true
                    Conditions
                        (Hero level of (Casting unit)) Equal to 7
                        (Hero level of (Casting unit)) Equal to 8
                        (Hero level of (Casting unit)) Equal to 9
            Then - Actions
                Unit - Create 1 Infernal for Player 1 (Red) at Summon_Pet_Point facing Default building facing degrees
                Custom script:   call RemoveLocation (udg_Summon_Pet_Point)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Demonology  for (Triggering unit)) Greater than or equal to 1
                    Then - Actions
                        Unit - Add Deadly Strikes  to (Last created unit)
                        Unit - Set level of Deadly Strikes  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Encasement  to (Last created unit)
                        Unit - Set level of Encasement  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Fel Energy  to (Last created unit)
                        Unit - Set level of Fel Energy  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                    Else - Actions
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Hero level of (Casting unit)) Equal to 10
            Then - Actions
                Unit - Create 1 Doom Guard for Player 1 (Red) at Summon_Pet_Point facing Default building facing degrees
                Custom script:   call RemoveLocation (udg_Summon_Pet_Point)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Level of Demonology  for (Triggering unit)) Greater than or equal to 1
                    Then - Actions
                        Unit - Add Deadly Strikes  to (Last created unit)
                        Unit - Set level of Deadly Strikes  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Encasement  to (Last created unit)
                        Unit - Set level of Encasement  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                        Unit - Add Fel Energy  to (Last created unit)
                        Unit - Set level of Fel Energy  for (Last created unit) to (Level of Demonology  for (Triggering unit))
                    Else - Actions
            Else - Actions

Ultimate: Demonic Attunement: Attunes the Warlock to the demons, succumbing him into extremely dark magic - transforming him into an extremely powerful Demon. Lasts 45 seconds.

demonicattunementvq2.jpg

Code:
Start Change
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Demonic Attunement 
    Actions
        Set Demon_Attune_Point = (Position of (Triggering unit))
        Set Demon_Attune_SE_Offset_Points[1] = (Demon_Attune_Point offset by (0.00, 180.00))
        Set Demon_Attune_SE_Offset_Points[2] = (Demon_Attune_Point offset by (90.00, 90.00))
        Set Demon_Attune_SE_Offset_Points[3] = (Demon_Attune_Point offset by (180.00, 0.00))
        Set Demon_Attune_SE_Offset_Points[4] = (Demon_Attune_Point offset by (-90.00, 90.00))
        Set Demon_Attune_SE_Offset_Points[5] = (Demon_Attune_Point offset by (-180.00, 0.00))
        Set Demon_Attune_SE_Offset_Points[6] = (Demon_Attune_Point offset by (-90.00, -90.00))
        Set Demon_Attune_SE_Offset_Points[7] = (Demon_Attune_Point offset by (0.00, -180.00))
        Set Demon_Attune_SE_Offset_Points[8] = (Demon_Attune_Point offset by (90.00, -90.00))
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at Demon_Attune_SE_Offset_Points[1] facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at Demon_Attune_SE_Offset_Points[2] facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at Demon_Attune_SE_Offset_Points[3] facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at Demon_Attune_SE_Offset_Points[4] facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at Demon_Attune_SE_Offset_Points[5] facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at Demon_Attune_SE_Offset_Points[6] facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at Demon_Attune_SE_Offset_Points[7] facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at Demon_Attune_SE_Offset_Points[8] facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Wait 1.00 seconds
        Unit Group - Pick every unit in Demon_Attune_Unit_Group and do (Actions)
            Loop - Actions
                Unit - Remove (Picked unit) from the game
        Special Effect - Create a special effect attached to the origin of (Triggering unit) using Abilities\Spells\Undead\ReplenishMana\ReplenishManaCaster.mdl
        Special Effect - Destroy (Last created special effect)
        Special Effect - Create a special effect attached to the origin of (Triggering unit) using Abilities\Spells\NightElf\BattleRoar\RoarCaster.mdl
        Special Effect - Destroy (Last created special effect)
        Custom script:   call DestroyGroup (udg_Demon_Attune_Unit_Group)
        Custom script:   call RemoveLocation (udg_Demon_Attune_Point)
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[1])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[2])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[3])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[4])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[5])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[6])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[7])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[8])


Pet Abilities:

Giant Skeletal Warrior [Non-Triggered]:
Shield Bash:
Bashs the enemy unit, dealing small damage and a short stun.

Fel Stalker [Non-Triggered]:
Mana Burn:
Strikes the enemy with a bolt of negative energy, draining 125 mana.

Fel Guard [Triggered]:
Fel Charge:
Sends the Felguard towards the targeted enemy unit, moving incredibly fast and dealing 200 damage to the unit, also dealing an additional 100 damage to nearby units around the Felguard.

Infernal [Triggered]:
Meteor Strike:
Sends 8 small meteorites nearby towards the Infernal, causing 50 damage to whomever is hit by a Meteor.

Doom Guard [Non-Triggered]:
Demon Grasp:
The Doom Guard stomps his hoof, dealing 100 damage to nearby units and stopping them from moving for 5 seconds. Does not work against Heroes.

Tell me what you think :D
 

Attachments

  • Warlock Spellpack.w3x
    29 KB · Views: 254

Kenoriga

Ultra Cool Member
Reaction score
34
I like the effects of the ultimate, and I reckon your triggers can be shortened further.

For e.g, Shadow Split, it can be (100 + (level of ability * 50)) giving you the same amount, instead of 150, 200, 250 resulting in one large chunk of actions.

The same for your pet trigger, instead of 1, 1, 1, do "Set blah to (level of Demonology of Triggering Unit)" etc. It can shorten way madly, and how come that ability has 10 levels lol.
 

juty

Zoom out problems look smaller
Reaction score
26
N-I-C-E I like it, good job man spells really do represent a warlock.
 

Monsterous

In the Shadows, Lurking.
Reaction score
99
To Kenoriga:
The ability only has one level, it detetcs the level of the hero to determine what pet to choose. Edit: Ah i see what you mean now - never occured to me. Ill fix that later, on a different computer :D And thanks for the ultimate comment :p

To Juty: Thanks :D
 

Kenoriga

Ultra Cool Member
Reaction score
34
Whoops missed the "depending on the Warlock's level". Haha. I shall start playing with angles one day... Your ultimate inspires me, no matter how simple it looks.
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
Nice one :D +repo
I just though it was the warlock from DotA :p LoL
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
Now you mentioned, I just tested the map :p
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
Code:
Then - Actions
                Unit - Cause (Target unit of ability being cast) to damage circular area after 0.00 seconds of radius 500.00 at Shadow_Split_Point, dealing (350.00 / (Real((Number of units in (Units in (Region centered at Shadow_Split_Point with size (500.00, 500.00))))))) damage of attack type Spells and damage type Normal
                [B]Special Effect - Create a special effect at Shadow_Split_Point using Units\NightElf\Wisp\WispExplode.mdl[/B]
                Custom script:   call RemoveLocation (udg_Shadow_Split_Point)
Is this..?
 

Monsterous

In the Shadows, Lurking.
Reaction score
99
Fixed that leak - thanks GaLs.

Also implemented a shorter trigger for Shadow Split (thanks to Kenoriga). + rep to both of you :D
 

waaaks!

Zinctified
Reaction score
256
for shadow split, it may damages ur units too...because ur using the area damage, not using unit groups

but still nice
 

0zaru

Learning vJASS ;)
Reaction score
60
You know that u are leaking a lots of location right ?
Code:
    Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at (Demon_Attune_Point offset by (0.00, 180.00)) facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at (Demon_Attune_Point offset by (90.00, 90.00)) facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at (Demon_Attune_Point offset by (180.00, 0.00)) facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at (Demon_Attune_Point offset by (-90.00, 90.00)) facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at (Demon_Attune_Point offset by (-180.00, 0.00)) facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at (Demon_Attune_Point offset by (-90.00, -90.00)) facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at (Demon_Attune_Point offset by (0.00, -180.00)) facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
        Unit - Create 1 Demonic Attunement Dummy for (Owner of (Triggering unit)) at (Demon_Attune_Point offset by (90.00, -90.00)) facing Default building facing degrees
        Unit Group - Add (Last created unit) to Demon_Attune_Unit_Group
Also you can simplify that with a some loops

The leaks are all those Offset Points
 

Monsterous

In the Shadows, Lurking.
Reaction score
99
is the Point and Offset an entirely different leak? If so how would i fix the offset one :D
 

0zaru

Learning vJASS ;)
Reaction score
60
yes it's another point inside a point :p set The offset to a point and use in that OffSetVariablePoint the VariablePoint that you setted for tha caster.

Code:
set YourPointOffSetVariableThatYouWantAndItisAVariablePoint=(Demon_Attune_Point offset by (0.00, 180.00))

Of course don't use that name :p Maybe you want also to make the variable an array
 

Darkchaoself

What is this i dont even
Reaction score
106
Code:
   Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[1])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[2])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[3])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[4])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[5])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[6])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[7])
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[8])

Could be
Code:
For each (Integer A) from 1 to 8, do (Actions)
    Loop - Actions
        Custom script:   call RemoveLocation (udg_Demon_Attune_SE_Offset_Points[bj_forLoopAIndex])
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top