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

The Arcane Silencer Spellpack v1.1

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
THE ARCANE SILENCER SPELLPACK Version 1.0, By BetaGod

My first public spell(pack) ever. Epic moment, i know. Try not to insult me that much about Global Silence please.. i am still a noob

SILENCE BOLT
396534_10150591827929143_629724142_9146634_800570244_n.jpg
Throws a magical bolt to a target unit. When the bolt hits its target, it will damage it by a basic ammount, followed by a few seconds of stun. If the target unit is silenced while the bolt is beign shoot, the bolt will make bonus damage based on the intelligence of the hero, and will have a chance to burn the target's mana points.

Level 1 - 100 bolt basic damage, 1.5 seconds of stun. Grants 1xInt bonus damage and a 15% chance to burn up to 200 mana points.

Level 2
- 200 bolt basic damage, 2 seconds of stun. Grants 2xInt bonus damage and a 30% chance to burn up to 400 mana points.

Level 3
- 300 bolt basic damage, 2.5 seconds of stun. Grants 3xInt bonus damage and a 45% chance to burn up to 600 mana points.
  • SilenceBolt Trigger Events Unit - A unit Starts the effect of an ability Conditions (Ability being cast) Equal to Silence Bolt ((Target unit of ability being cast) has buff Silence) Equal to True Actions -------- ------------------------------------------------------------------ -------- -------- Basi variables -------- -------- ------------------------------------------------------------------ -------- Set SBcaster = (Triggering unit) Set SBtarget = (Target unit of ability being cast) Set SBtargetposition = (Position of SBtarget) Set SBowner = (Owner of SBcaster) Set SBlevel = (Level of Silence Bolt for SBcaster) -------- ------------------------------------------------------------------ -------- -------- Setting the bonus damage -------- -------- ------------------------------------------------------------------ -------- Set SBdamage = ((Intelligence of SBcaster (Include bonuses)) x SBlevel) -------- ------------------------------------------------------------------ -------- -------- Here we set the chance to mana burn the target -------- -------- ------------------------------------------------------------------ -------- Set SBburnchance = (15.00 x (Real(SBlevel))) -------- ------------------------------------------------------------------ -------- -------- Create some effect, apply damage and show it via floating text -------- -------- ------------------------------------------------------------------ -------- Special Effect - Create a special effect attached to the origin of SBtarget using Abilities\Spells\Items\AIil\AIilTarget.mdl Unit - Cause SBcaster to damage SBtarget, dealing (Real(SBdamage)) damage of attack type Spells and damage type Normal Special Effect - Destroy (Last created special effect) Floating Text - Create floating text that reads (String(SBdamage)) above SBtarget with Z offset 0.00, using font size 10.00, color (50.00%, 40.00%, 100.00%), and 0.00% transparency Set SBtext = (Last created floating text) Floating Text - Set the velocity of SBtext to 100.00 towards 90.00 degrees Floating Text - Change SBtext: Disable permanence Floating Text - Change the lifespan of SBtext to 5.00 seconds Floating Text - Change the fading age of SBtext to 0.65 seconds -------- ------------------------------------------------------------------ -------- -------- Now we proceed to check if target is goint to get mana burned -------- -------- ------------------------------------------------------------------ -------- If (All Conditions are True) then do (Then Actions) else do (Else Actions) If - Conditions (Random real number between 0.00 and 100.00) Less than or equal to SBburnchance Then - Actions Unit - Create 1 Dummy for SBowner at SBtargetposition facing Default building facing degrees Set SBdummy = (Last created unit) Unit - Add a 1.50 second Generic expiration timer to SBdummy Unit - Add Mana Burn Dummy to SBdummy Unit - Set level of Mana Burn Dummy for SBdummy to SBlevel Unit - Order SBdummy to Night Elf Demon Hunter - Mana Burn SBtarget Else - Actions -------- ------------------------------------------------------------------ -------- -------- Clearing leaks -------- -------- ------------------------------------------------------------------ -------- Custom script: call RemoveLocation (udg_SBtargetposition)
ARCANE BLAST
421178_10150591828244143_629724142_9146635_1843913802_n.jpg
The hero silences 8 spots around him in a 350 AoE. Right after that, he spawns 8 bolts of arcane energy that will travel to the silenced points hurting enemies in their path. Only units with mana can be silenced by this spell.

Level 1
- 4 seconds silence and 100 bolt damage.

Level 2
- 8 seconds silence and 200 bolt damage.

Level 3 - 12 seconds silence and 300 bolt damage.
  • ArcaneBlast Trigger Events Unit - A unit Starts the effect of an ability Conditions (Ability being cast) Equal to Arcane Blast Actions -------- ------------------------------------------------------------------ -------- -------- Basi variables -------- -------- ------------------------------------------------------------------ -------- Set ABcaster = (Triggering unit) Set ABowner = (Owner of ABcaster) Set ABlevel = (Level of Arcane Blast for ABcaster) Set ABpoint = (Position of (Triggering unit)) For each (Integer A) from 1 to 8, do (Actions) Loop - Actions -------- ------------------------------------------------------------------ -------- -------- Setting the target location of the bolts and creating them -------- -------- ------------------------------------------------------------------ -------- Set ABtargetpoint = (ABpoint offset by 500.00 towards ((Real((Integer A))) x 45.00) degrees) Unit - Create 1 Dummy for ABowner at ABpoint facing ABtargetpoint Set ABdummy = (Last created unit) Unit - Add Arcane Blast Dummy to ABdummy Unit - Set level of Arcane Blast Dummy for ABdummy to ABlevel Unit - Add AoE Silence Dummy to ABdummy Unit - Set level of AoE Silence Dummy for ABdummy to ABlevel -------- ------------------------------------------------------------------ -------- -------- Order the dummy to cast the bolt damage effect and the silence effect -------- -------- ------------------------------------------------------------------ -------- Unit - Order ABdummy to Undead Dreadlord - Carrion Swarm ABtargetpoint Unit - Order ABdummy to Neutral Dark Ranger - Silence ABtargetpoint Unit - Add a 8.00 second Generic expiration timer to ABdummy -------- ------------------------------------------------------------------ -------- -------- Clearing leaks -------- -------- ------------------------------------------------------------------ -------- Custom script: call RemoveLocation (udg_ABtargetpoint) Custom script: call RemoveLocation (udg_ABpoint)
SHOCK AURA
430310_10150591828839143_629724142_9146640_301046000_n.jpg
Decreases enemy units movement speed and has a chance to shock them with an unstable charge if they attack the hero, dealing damage based on the hero intelligence and silencing them for a while.

Level 1
- 20% movement speed penalty, has 10% chances to shock enemy units dealing 2xInt damage and silence for 5 seconds.

Level 2
- 30% movement speed penalty, has 20% chances to shock enemy units dealing 4xInt damage and silence for 10 seconds.

Level 3
- 40% movement speed penalty, has 30% chances to shock enemy units dealing 6xInt damage and silence for 15 seconds.
  • ShockAura Trigger Events Unit - A unit Is attacked Conditions Actions If (All Conditions are True) then do (Then Actions) else do (Else Actions) If - Conditions ((Attacking unit) has buff Shock Aura ) Equal to True (Level of Shock Aura for (Triggering unit)) Greater than 0 Then - Actions -------- ------------------------------------------------------------------ -------- -------- Basi variables -------- -------- ------------------------------------------------------------------ -------- Set SAcaster = (Triggering unit) Set SAlevel = (Level of Shock Aura for SAcaster) Set SAplayer = (Owner of SAcaster) Set SAtarget = (Attacking unit) Set SAtargetlocation = (Position of SAtarget) -------- ------------------------------------------------------------------ -------- -------- Here we set the shock damage -------- -------- ------------------------------------------------------------------ -------- Set SAdamage = ((Intelligence of SAcaster (Include bonuses)) x 2) -------- ------------------------------------------------------------------ -------- -------- Here we set the shock proc chances -------- -------- ------------------------------------------------------------------ -------- Set SAshockchance = ((Real(SAlevel)) x 10.00) -------- ------------------------------------------------------------------ -------- -------- And over here are the actions that triggers if the chance procs -------- -------- ------------------------------------------------------------------ -------- If (All Conditions are True) then do (Then Actions) else do (Else Actions) If - Conditions (Random real number between 0.00 and 100.00) Less than or equal to SAshockchance Then - Actions -------- ------------------------------------------------------------------ -------- -------- Special effect and floating text display -------- -------- ------------------------------------------------------------------ -------- Special Effect - Create a special effect attached to the origin of SAtarget using Abilities\Weapons\Bolt\BoltImpact.mdl Unit - Cause SAcaster to damage SAtarget, dealing (Real(SAdamage)) damage of attack type Spells and damage type Normal Special Effect - Destroy (Last created special effect) Floating Text - Create floating text that reads (String(SAdamage)) above SAtarget with Z offset 0.00, using font size 10.00, color (50.00%, 40.00%, 100.00%), and 0.00% transparency Set SAtext = (Last created floating text) Floating Text - Set the velocity of SAtext to 100.00 towards 90.00 degrees Floating Text - Change SAtext: Disable permanence Floating Text - Change the lifespan of SAtext to 5.00 seconds Floating Text - Change the fading age of SAtext to 0.65 seconds -------- ------------------------------------------------------------------ -------- -------- Order the dummy unit to silence the target -------- -------- ------------------------------------------------------------------ -------- Unit - Create 1 Dummy for SAplayer at SAtargetlocation facing Default building facing degrees Set SAtarget = (Last created unit) Unit - Add a 1.50 second Generic expiration timer to SAdummy Unit - Add Slence Dummy to SAdummy Unit - Set level of Slence Dummy for SAdummy to SAlevel Unit - Order SAdummy to Neutral Fire Lord - Soul Burn SAtarget Else - Actions Else - Actions -------- ------------------------------------------------------------------ -------- -------- Clearing leaks -------- -------- ------------------------------------------------------------------ -------- Custom script: call RemoveLocation (udg_SAtargetlocation)
GLOBAL SILENCE
418187_10150591828519143_629724142_9146637_1730798773_n.jpg

Level 1
- Silences every enemy unit on the map for 10 seconds.
  • GlobalSilence Trigger Events Unit - A unit Starts the effect of an ability Conditions (Ability being cast) Equal to Global Silence Actions -------- ------------------------------------------------------------------ -------- -------- Basic Settings -------- -------- ------------------------------------------------------------------ -------- Set GScaster = (Triggering unit) Set GSplayer = (Owner of GScaster) Set GStargetlocation = (Position of GScaster) Unit - Create 1 Dummy for GSplayer at GStargetlocation facing Default building facing degrees Unit - Add a 1.50 second Generic expiration timer to GSdummy Set GSdummy = (Last created unit) Unit - Add Global Silence Dummy to GSdummy Unit - Order GSdummy to Neutral Dark Ranger - Silence GStargetlocation -------- ------------------------------------------------------------------ -------- -------- Clearing leaks -------- -------- ------------------------------------------------------------------ -------- Custom script: call RemoveLocation (udg_GStargetlocation)

Enjoy and remember to credit me. Suggestion are highly appreciated!

v1.1 Changelog: -Global Silence should work properly now -Updated Silence Bolt spell description -Optimized triggers

v1.0 Changelog:
-Public release

Keywords:
Arcane, magic, aura, silence, simple
Contents

The Arcane Silencer Spellpack v1.0 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. Moderator: Pharaoh_ Date: 00:55, 11th March 2012 Great presentation, but the spells leak, you make no use of variables and as a spellpack it lacks basic efficiency in coding. They...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

160036-albums4747-picture55861.png

Moderator: Pharaoh_
Date: 00:55, 11th March 2012

Review
Great presentation, but the spells leak, you make no use of variables and as a spellpack it lacks basic efficiency in coding. They are too simple to create.

Unacceptable
Useful Links:
 
You are leaking lots of locations [Position of blahblah]...

btw, since I cannot test it out yet, why does the arcane bolt spell need the unit to have the silence buff? I'm asking because it wasn't said in the spell description that it can only hit silenced units...

as for GLOBAL SILENCE, why not just make a very huge silence spell and make some dummies cast it? using soul burn can cause annoying things when someone who uses this uses a damage detection system... also, using a very big silence spell can reduce the number of dummies you need to create per cast... if the AOE has a limit, then you can compute the needed number of dummies based on the map's size and position them accordingly...
 
Ok, Here's a full review:

SilenceBolt Trigger:
  • You need to use variables to store things like (Last created unit), (Target unit of ability being cast), etc.. Basically, anything that you repeat. It's more efficient to store them in variables rather than to re-call the same functions again and again and again.
  • The presentation is pretty neat. :)
  • You have 1 leak: (Position of (Target unit of ability being cast)). To clear this leak, you need to store it in a variable, use that variable, and call RemoveLocation(udg_LOCATION_VARIABLE_NAME) in Custom script.
  • (Last created floating text), (Level of ability ...) and (Triggering unit) could be cached in variables as well.

ArcaneBlast:
  • In the beginning of this trigger, you should cache the triggering unit, the level of the ability and the triggering player.
  • Inside the loop, you should cache the last created unit.
  • You have 0 leaks.

ShockAura:
  • ((Unit-type of (Attacked unit)) Equal to |cff995500Spelltester|r) -> You should change this condition to check if the level of the ability for the attacked unit is greater than 0.
  • Instead of using Conditions, you could use an If/then/else block. It's more efficient.
  • You should cache the Attacking unit, the attacked unit, the level of the ability, etc...
  • Inside the loop, you should cache the last created floating text and the last created unit.
  • (Position of (Attacking unit)) -> This leaks. You should store it in a point variable and remove it after you're through with it.

GlobalSilence:
  • The structure of this trigger is all wrong. You're silencing a unit X number of times where X is the number of units on the map. So if I have 50 units, each unit is going to be silenced 50 times. That's 2500 unit orders to 50 dummies. That's going to cause a lot of lag, and most of those orders might not even run. Warcraft III handles orders really badly; almost as badly as it handles unit pathing.
  • (Position of (Picked unit)) leaks. It should be cached and removed afterwards.
  • (Owner of (Triggering unit)) should be cached outside of the loop.
  • You should use only one dummy for this spell. To achieve that, set the casting time of the silence spell to 0, the manacost to 0, the cooldown to 0, the casting animation time of the dummy to 0, the cast-backswing to 0, etc... This way, you'd have to create one dummy unit, give him the ability, set the level, and do this:
    • Custom script: set bj_wantDestroyGroup = true
    • Unit Group - Pick every unit in (Units in (Playable map area) matching (((Matching unit) belongs to an enemy of OwnerTriggerUnit) Equal to True)) and do (Actions)
      • Loop - Actions
        • Unit - Order TempDummy to Neutral Fire Lord - Soul Burn (Picked unit)
    Where TempDummy is a unit variable you set to (Last created unit) after creating the dummy and OwnerTriggerUnit is set to (Triggering player).

Notes
- I would recommend reading this to learn more about leaks.
- I would also recommend making these spells more complex. Right now, they're extremely simple. That's not a bad thing though. If you fix all the problems I mentioned above, this will get a 4/5 from me. I love simple spells and systems. ;)
 
Last edited:
Level 11
Joined
May 13, 2010
Messages
167
Well thank you all for you comments! :)

@Magtheridon96 Awesome!, i will solve everything you described in a few weeks (i have no internet at home at the moment!)

I will highly recommend not to download my spellpack yet, since it is in betav1.0 and there are a low of things to fix

EDIT: Spell updated. Try testing now guys! Remember it is simple yet usefull! I am still a noob :D
 
Last edited:
Ok, Here's a full review:
GlobalSilence:
  • You should use only one dummy for this spell. To achieve that, set the casting time of the silence spell to 0, the manacost to 0, the cooldown to 0, the casting animation time of the dummy to 0, the cast-backswing to 0, etc... This way, you'd have to create one dummy unit, give him the ability, set the level, and do this:
    • Custom script: set bj_wantDestroyGroup = true
    • Unit Group - Pick every unit in (Units in (Playable map area) matching (((Matching unit) belongs to an enemy of OwnerTriggerUnit) Equal to True)) and do (Actions)
      • Loop - Actions
        • Unit - Order TempDummy to Neutral Fire Lord - Soul Burn (Picked unit)
    Where TempDummy is a unit variable you set to (Last created unit) after creating the dummy and OwnerTriggerUnit is set to (Triggering player).

Actually, that will not work, as the dummy would need sight to his target to do this. The solution mentioned before, using one dummy and the original Silence Ability with infinite AoE, should work best and requires less performance power. (Although the Spell will then still not work on magic immune units as Ultimates usually do, but that can't be corrected with GUI)

And you should mention that the Shock Aura should be used together with a Damage Detection System of choice, as "Unit is Attacked" triggers when the unit begins the Attack Animation, not when someone is actually hit. If someone order his unit to stop during the Animation, and then it attacks again, the effect will trigger anew, which is in this case of course not desirable, but if the Effect would be a life-leech, then it would mean that one can refill his life to full by spamming stop orders.
 
Then do this:

  • Custom script: set bj_wantDestroyGroup = true
  • Unit Group - Pick every unit in (Units in (Playable map area) matching (((Matching unit) belongs to an enemy of OwnerTriggerUnit) Equal to True)) and do (Actions)
    • Loop - Actions
      • Set TempUnit = (Picked unit)
      • Custom script: call SetUnitX(udg_TempDummy, GetUnitX(udg_TempUnit))
      • Custom script: call SetUnitY(udg_TempDummy, GetUnitY(udg_TempUnit))
      • -------- Or, do whatever the hell you want. Soul Burn might fire 0-damage events and shit. --------
      • Unit - Order TempDummy to Neutral Fire Lord - Soul Burn TempUnit
edit
I keep forgetting to mention how "A unit is attacked" is exploitable.
Use this: http://www.hiveworkshop.com/forums/spells-569/gui-damage-engine-201016/
It's an incredible Damage Engine that handles Damage blocking, healing, modifying and type-differentiation and detection.
 
Top