Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
THE ARCANE SILENCER SPELLPACKVersion 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
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)
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)
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)
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)
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...
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
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.
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...
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.
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.
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)
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.