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

Oil v1.1 [GUI]

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
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.
Keywords:
Oil, Fire, Flame, Stack, Stacking, Hero, Ability, Napalm
Contents

Just another Warcraft III map (Map)

Reviews
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...

Moderator

M

Moderator

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.

Useful
 

Kazeon

Hosted Project: EC
Level 33
Joined
Oct 12, 2011
Messages
3,449
Testing..
Results
- 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.
3/5 then
 
Level 16
Joined
Apr 4, 2011
Messages
995
Testing..
Results
- 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.
3/5 then

Ok let's go in order:

-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.
 

Kazeon

Hosted Project: EC
Level 33
Joined
Oct 12, 2011
Messages
3,449
Okay, so just use array for those variables. That's cooler.. :D
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.. :D Just suggestions.
 
Level 16
Joined
Apr 4, 2011
Messages
995
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.

And no it isn't a dota spell -_-
 
Top