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!
Well, it's been a while since I've uploaded a spell to THW. Thought I'd share this from a project I've been working on with a friend.
Oil
Covers the units in target area with a sticky oil. Units can have up to 10 stacks of oil upon them. Any unit with a fire spell cast upon it will ignite, taking damage based upon levels and stacks. Lasts 8 seconds.
For use with fire spells of course.
To use this spell you must have another trigger specifically for it. Anytime you want a hardcoded spell from WCIII to ignite the oil, make the following trigger. Simply change the ability name to your ability.
Ignite Test
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Ignite
Actions
Set Target = (Target unit of ability being cast)
Custom script: set udg_Handle = GetHandleId(udg_Target)
Set Ignite = True
Hashtable - Save Ignite as 5 of Handle in Hashtable
Anytime you want to make a triggered effect ignite, just add all the lines under the Actions section. This trigger is included in the spell.
Hashtable
Events
Map initialization
Conditions
Actions
Hashtable - Create a hashtable
Set Oil_Hashtable = (Last created hashtable)
Oil
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Oil
Actions
-------- Don't edit this --------
Set Caster = (Triggering unit)
Set Point1 = (Target point of ability being cast)
Set Level = (Real((Level of Oil for Caster)))
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within 250.00 of Point1 matching ((((Matching unit) belongs to an ally of (Triggering player)) Equal to False) and ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is A flying unit) Equal to False) and (((Matching unit) is aliv and do (Actions)
Loop - Actions
Set Target = (Picked unit)
Custom script: set udg_Handle = GetHandleId(udg_Target)
Set Stacks = (Load 1 of Handle from Oil_Hashtable)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Stacks Equal to 0
Then - Actions
-------- Choose the Oil model. I chose the drunken haze --------
Special Effect - Create a special effect attached to the overhead of Target using Abilities\Spells\Other\StrongDrink\BrewmasterTarget.mdl
Set SFX = (Last created special effect)
Hashtable - Save Handle OfSFX as 4 of Handle in Oil_Hashtable
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Stacks Greater than or equal to 10
Then - Actions
Else - Actions
Set Stacks = (Stacks + 1)
Set Ignite = (Load 5 of Handle from Oil_Hashtable)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Ignite Equal to True
Then - Actions
Else - Actions
-------- Set the Timer value to equal the duration of the spell. --------
Set Timer = 8.00
Hashtable - Save Timer as 3 of Handle in Oil_Hashtable
-------- Set the 3 below to the amount of damage increased per leve --------
-------- The damage multiplies level x damage x stacks. I wouldn't put the damage value above 5 in most maps. --------
Set Fire_DPS = (((3.00 x Level) x (Real(Stacks))) / 25.00)
Floating Text - Create floating text that reads ((String(Stacks)) + !) above Target with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
Set FloatingText = (Last created floating text)
Floating Text - Set the velocity of FloatingText to 42.00 towards 90.00 degrees
-------- You can change the color of the floating text if you want. --------
Floating Text - Change the color of FloatingText to (60.00%, 40.00%, 100.00%) with 0.00% transparency
Floating Text - Change FloatingText: Disable permanence
Floating Text - Change the lifespan of FloatingText to 2.00 seconds
-------- Don't touch this --------
Hashtable - Save Stacks as 1 of Handle in Oil_Hashtable
Hashtable - Save Fire_DPS as 2 of Handle in Oil_Hashtable
Hashtable - Save Handle OfCaster as 6 of Handle in Oil_Hashtable
Unit Group - Add Target to Group1
Trigger - Turn on Oil Loop <gen>
Custom script: call RemoveLocation(udg_Point1)
Oil Loop
Events
Time - Every 0.04 seconds of game time
Conditions
Actions
-------- Dont touch anything in this trigger. --------
Unit Group - Pick every unit in Group1 and do (Actions)
Loop - Actions
Set Target = (Picked unit)
Custom script: set udg_Handle = GetHandleId(udg_Target)
Set Timer = (Load 3 of Handle from Oil_Hashtable)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Timer Greater than 0.00
Then - Actions
Hashtable - Save (Timer - 0.04) as 3 of Handle in Oil_Hashtable
Set Ignite = (Load 5 of Handle from Oil_Hashtable)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Ignite Equal to True
Then - Actions
-------- Model of fire. --------
Special Effect - Create a special effect attached to the chest of Target using Abilities\Spells\Human\FlameStrike\FlameStrikeEmbers.mdl
Special Effect - Destroy (Last created special effect)
Set Fire_DPS = (Load 2 of Handle from Oil_Hashtable)
Set Caster = (Load 6 of Handle in Oil_Hashtable)
Unit - Cause Caster to damage Target, dealing Fire_DPS damage of attack type Spells and damage type Fire
Else - Actions
Else - Actions
Set SFX = (Load 4 of Handle in Oil_Hashtable)
Special Effect - Destroy SFX
Hashtable - Clear all child hashtables of child Handle in Oil_Hashtable
Unit Group - Remove Target from Group1
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Number of units in Group1) Equal to 0
Then - Actions
Trigger - Turn off (This trigger)
Else - Actions
I'd appreciate credits when you use this spell (or a modification of it). Just cite it to Jazztastic at THW.
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
05:20, 12th Feb 2012
Pharaoh_:
a) Make the Special Effects' paths configurable.
b) This is not a stand-alone spell-system, it is dependent on Ignite, so, save the damage to the target in...
12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.
05:20, 12th Feb 2012
Pharaoh_:
a) Make the Special Effects' paths configurable.
b) This is not a stand-alone spell-system, it is dependent on Ignite, so, save the damage to the target in the Ignite Test trigger.
c) Use a buff, increasing the level per stack.
d) There are multiple if/then/else's, which you use their "Else" branch; reverse the condition and add the actions to the "Then" branch. Also, merge the Stacks checks, if they are equal to 0, then do stuff, else if Stacks Less than 10, then set Stacks = Stacks + 1. You may also want to use a red floating text, when charges go 10.
e) Check if the new caster is equal to the target's stored caster; if he is not, reset the stacks.
- What do the variable Group1 and Point1 mean? Just use Group and Point var name.. Not important actually.
- This spell just like dota's Hero "Eredar". But if Eredar uses this ability, He will not kill anything ever.
- Please, add description about the stacking damage increment.
- Also improve the oil animation. Maybe you can use drunkeng haze missile as your oil missile.
- And I can touch your looping trigger. I will change the periodic time to 0.03 s bcos it's better. Am I wrong?
I don't find another errors but please add some in-game screenshots because this is spell. And I am not the best to find leaks.
- What do the variable Group1 and Point1 mean? Just use Group and Point var name.. Not important actually.
- This spell just like dota's Hero "Eredar". But if Eredar uses this ability, He will not kill anything ever.
- Please, add description about the stacking damage increment.
- Also improve the oil animation. Maybe you can use drunkeng haze missile as your oil missile.
- And I can touch your looping trigger. I will change the periodic time to 0.03 s bcos it's better. Am I wrong?
I don't find another errors but please add some in-game screenshots because this is spell. And I am not the best to find leaks.
-The variable names Group1 and Point1 are used because sometimes I use more than 1 group or point. It is simply an organizational method
-Not really. Eredars skill moves in a line, and doesnt require a second ability to set off the fire
-As soon as I have to update for an actual trigger change I will.
-There is no better animation for in the game. The effect is instantly applied so a missile would be pointless.
-The reason people use a 0.03 over a 0.04 is for sliding or an actual animation. Changing to 0.03 without changing how the timer variable decreases and changing the division on the damage will cause the numbers to be different, increased damage per second and shorter duration. But using 0.04 in this spell makes no difference at all.
-The in-game screenshot is sufficient. It isn't like there are any overbearing visual effects, or it's an impressive animation. And it's good that you found no leaks
Thank you for the feedback. I hope I just cleared some things up.
Okay, so just use array for those variables. That's cooler..
And I suggest you to use another Hero bcos Blood Mage defaultly shots a green missile when he casts a point target spell and create your own missile. You also can change the basic ability to another AoE spell like Clouds or Reveal to show the AoE of your oil ability. That makes your ability become more realistic and of course become better.. Just suggestions.
Ill make sure to do that when I update later today. It's just I copied it directly from a hashtable being used for a bunch of stuff, so I didn't bother prefixing variables.
Tbh this spell works perfectly fine as it is, but there are standards here. I'm going to update it in a bit when I get some free time, but only A and D will get fixed.
a) Make the Special Effects' paths configurable.
b) This is not a stand-alone spell-system, it is dependent on Ignite, so, save the damage to the target in the Ignite Test trigger.
c) Use a buff, increasing the level per stack.
d) There are multiple if/then/else's, which you use their "Else" branch; reverse the condition and add the actions to the "Then" branch. Also, merge the Stacks checks, if they are equal to 0, then do stuff, else if Stacks Less than 10, then set Stacks = Stacks + 1. You may also want to use a red floating text, when charges go 10.
e) Check if the new caster is equal to the target's stored caster; if he is not, reset the stacks.
B doesn't make sense, I don't want the headache of making 50 levels of a buff, and if you dump oil on someone, it doesn't make other oil go away. So yeah that's where I stand. You can expect an update in a few days.
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.