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

Earth's Fury v1.00

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Earth's Fury

Bribes the earth into assaulting the Warden's aims. Creates a ward that channels earth energy towards the Warden, damaging any enemies caught within the connection. Enemies can be damaged once every 2 seconds.

Level 1 - 20 damage, 15 cooldown time, 5 seconds duration time.
Level 2 - 40 damage, 15 cooldown time, 10 seconds duration time.
Level 3 - 60 damage, 15 cooldown time, 15 seconds duration time.

If you use this spell, make sure you credit me, please.
Implementation info can be found within the map.

Have fun :)

  • Earths Fury 1
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Earth's Fury
    • Actions
      • Set EF_Points[1] = (Position of (Triggering unit))
      • Set EF_Points[2] = (Target point of ability being cast)
      • Unit - Create 1 Dummy (Earth's Fury) for (Owner of (Triggering unit)) at EF_Points[2] facing Default building facing degrees
      • -------- Expiration Timer (Change value 7.00) [Affects the dummy's longetivity & the Terrain deformation] --------
      • Hashtable - Save (5.00 x (Real((Level of Earth's Fury for (Triggering unit))))) as (Key expiration) of (Key (Last created unit)) in EF_Hash
      • Unit - Add a (Load (Key expiration) of (Key (Last created unit)) from EF_Hash) second Generic expiration timer to (Last created unit)
      • Environment - Create a (Load (Key expiration) of (Key (Last created unit)) from EF_Hash) second Temporary crater deformation at EF_Points[2] with radius 50.00 and depth -280.00
      • Unit Group - Add (Last created unit) to EF_Group
      • -------- Attach the Triggering unit on Dummy --------
      • Hashtable - Save Handle Of(Triggering unit) as (Key caster) of (Key (Last created unit)) in EF_Hash
      • -------- Damage Dealt --------
      • Hashtable - Save (20.00 x (Real((Level of Earth's Fury for (Triggering unit))))) as (Key damage) of (Key (Last created unit)) in EF_Hash
      • -------- Lightning Creation --------
      • Lightning - Create a Spirit Link lightning effect from source EF_Points[1] to target EF_Points[2]
      • Hashtable - Save Handle Of(Last created lightning effect) as (Key lightning) of (Key (Last created unit)) in EF_Hash
      • -------- Leak Removal --------
      • Custom script: call RemoveLocation (udg_EF_Points[1])
      • Custom script: call RemoveLocation (udg_EF_Points[2])
      • -------- Fire Earth's Fury 2 up --------
      • Trigger - Turn on Earths Fury 2 <gen>
  • Earths Fury 2
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (EF_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in EF_Group and do (Actions)
            • Loop - Actions
              • Set EF_Points[3] = (Position of (Picked unit))
              • Set EF_Points[4] = (Position of (Load (Key caster) of (Key (Picked unit)) in EF_Hash))
              • Lightning - Move (Load (Key lightning) of (Key (Picked unit)) in EF_Hash) to source EF_Points[3] and target EF_Points[4]
              • Unit - Make (Picked unit) face (Load (Key caster) of (Key (Picked unit)) in EF_Hash) over 0.00 seconds
              • -------- I save the Picked unit, because we will need it later on --------
              • -------- Warning! The Picked Unit is stored in a Handle-type variable, to maintain the MUI-enhancement! --------
              • Set Unit = (Picked unit)
              • Hashtable - Save Handle Of(Picked unit) as (Key dummies) of (Key Unit) in EF_Hash
              • -------- --------
              • For each (Integer EF_Integer) from 1 to ((Integer((Distance between EF_Points[3] and EF_Points[4]))) / 20), do (Actions)
                • Loop - Actions
                  • Set EF_MultiplePoints[EF_Integer] = (EF_Points[3] offset by ((Real(EF_Integer)) x 20.00) towards (Angle from EF_Points[3] to EF_Points[4]) degrees)
                  • -------- This will detect whether there are units within the angle between the ward dummy and the hero or not. --------
                  • Set EF_DetectUnits = (Units within 128.00 of EF_MultiplePoints[EF_Integer] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of (Picked unit))) Equal to True))))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Number of units in EF_DetectUnits) Not equal to 0
                    • Then - Actions
                      • Unit Group - Pick every unit in EF_DetectUnits and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • ((Picked unit) is in (Load (Key tempgroup) of (Key Unit) in EF_Hash)) Equal to False
                            • Then - Actions
                              • Trigger - Turn off (This trigger)
                              • Hashtable - Save Handle OfEF_DamageUnits as (Key tempgroup) of (Key Unit) in EF_Hash
                              • Unit Group - Add (Picked unit) to (Load (Key tempgroup) of (Key Unit) in EF_Hash)
                              • Hashtable - Save Handle OfEF_DamageTimer as ((Key timerhandle) x (Number of units in (Load (Key tempgroup) of (Key Unit) in EF_Hash))) of (Key (Picked unit)) in EF_Hash
                              • Countdown Timer - Start (Load ((Key timerhandle) x (Number of units in (Load (Key tempgroup) of (Key Unit) in EF_Hash))) of (Key (Picked unit)) in EF_Hash) as a One-shot timer that will expire in 2.50 seconds
                              • Hashtable - Save (Number of units in (Load (Key tempgroup) of (Key Unit) in EF_Hash)) as (Key howmany) of (Key (Last started timer)) in EF_Hash
                              • Set EF_Times = (Load (Key howmany) of (Key (Last started timer)) from EF_Hash)
                              • Hashtable - Save Handle Of(Picked unit) as ((Key unithandle) x EF_Times) of (Key (Last started timer)) in EF_Hash
                              • Hashtable - Save Handle OfEF_DamageUnits as (Key tempgroup) of (Key (Last started timer)) in EF_Hash
                              • Floating Text - Create floating text that reads (String((Load (Key damage) of (Key Unit) from EF_Hash))) above (Picked unit) with Z offset 0.00, using font size 11.00, color (100.00%, 100.00%, 40.00%), and 0.00% transparency
                              • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
                              • Floating Text - Change (Last created floating text): Disable permanence
                              • Floating Text - Change the lifespan of (Last created floating text) to 4.00 seconds
                              • Floating Text - Change the fading age of (Last created floating text) to 2.50 seconds
                              • Unit - Cause (Load (Key dummies) of (Key Unit) in EF_Hash) to damage (Picked unit), dealing (Load (Key damage) of (Key Unit) from EF_Hash) damage of attack type Normal and damage type Normal
                              • Special Effect - Create a special effect attached to the chest of (Picked unit) using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
                              • Special Effect - Destroy (Last created special effect)
                              • Trigger - Turn on (This trigger)
                            • Else - Actions
                    • Else - Actions
                  • Custom script: call RemoveLocation (udg_EF_MultiplePoints[bj_forLoopAIndex])
                  • Custom script: call DestroyGroup (udg_EF_DetectUnits)
              • Custom script: call RemoveLocation (udg_EF_Points[3])
              • Custom script: call RemoveLocation (udg_EF_Points[4])
  • Earths Fury 3
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Dummy (Earth's Fury)
    • Actions
      • Unit Group - Remove (Triggering unit) from EF_Group
      • Lightning - Destroy (Load (Key lightning) of (Key (Triggering unit)) in EF_Hash)
      • Hashtable - Clear all child hashtables of child (Key (Load (Key caster) of (Key (Triggering unit)) in EF_Hash)) in EF_Hash
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in EF_Hash
      • Unit - Remove (Triggering unit) from the game
  • Earths Fury 4
    • Events
      • Time - EF_DamageTimer expires
    • Conditions
    • Actions
      • For each (Integer B) from 1 to (Load (Key howmany) of (Key (Expiring timer)) from EF_Hash), do (Actions)
        • Loop - Actions
          • Unit Group - Remove (Load ((Key unithandle) x (Integer B)) of (Key (Expiring timer)) in EF_Hash) from (Load (Key tempgroup) of (Key (Expiring timer)) in EF_Hash)
          • Hashtable - Clear all child hashtables of child (Key (Load ((Key unithandle) x (Integer B)) of (Key (Expiring timer)) in EF_Hash)) in EF_Hash
      • Hashtable - Clear all child hashtables of child (Key (Expiring timer)) in EF_Hash
Changelog:

- Removed the terrain deformation effect, due to request.
- Changed the model of the summoned ward.
- Tiny modifications on triggers for better functionality.
- Reduced the damage delay from 2.5 to 2.00 seconds.

Keywords:
Earth, Sand, Ward, Summon, Totem, Strike, Fury, Lightning, Nature, Magic
Contents

... (Map)

Reviews
7 November 2015 Bribe: Rejecting due to the status of this resource being "needs fix" for years. 12:17, 17th Jun 2010 Hanky: I found some leaks. Fix them please. After you have done this message me or one of the other spell moderators.

Moderator

M

Moderator

7 November 2015
Bribe: Rejecting due to the status of this resource being "needs fix" for years.

12:17, 17th Jun 2010
Hanky:
I found some leaks. Fix them please. After you have done this message me or one of the other spell moderators.
 
Level 25
Joined
Jun 5, 2008
Messages
2,572
They don't lag now, but they in fact are the things that cause the most pressure on the proccessor/graphic card.

EDIT:

The spell idea is totally strange, you can bribe earth? :p

Change it into something more fitting.

Also consider changing the ward model, atm it is ...bad :p
 
Last edited:
Level 37
Joined
Mar 6, 2006
Messages
9,240
You could set this conversion to variable so you don't have to do it twice:
  • (Real((Level of Earth's Fury for (Triggering unit))))
This line and the "load expiration" are weird since you only use the value in that trigger.
  • Hashtable - Save (5.00 x (Real((Level of Earth's Fury for (Triggering unit))))) as (Key expiration) of (Key (Last created unit)) in EF_Hash
You don't need to save/load it to/from hashtable. Just calculate the value and apply it.


I'd use indexes of [1] and [2] here, but it's not a big deal.
  • Set EF_Points[3] = (Position of (Picked unit))
  • Set EF_Points[4] = ...
Do this check in the "unit dies" trigger. That way it gets checked fewer times.
  • (EF_Group is empty) Equal to True
Do you ever destroy this group:
  • Hashtable - Save Handle OfEF_DamageUnits as (Key tempgroup) of (Key Unit) in EF_Hash
Why do you turn on/off the trigger inside Earth Fury 2 trigger?
 
Hello, thank you for the review :)

1) I guess it's no problem, since the spell is supposed to work with levels and I wouldn't want an exta variable for that (too many already).

2) I did it like that, so that users can easily change the value. Again, loads of variables would come up.

3) The unit dies trigger makes as many checks as the one you proposed. "EF_Group is empty" Boolean would be the same with the Unit-type comparison I make, since this exact unit-type (Dummy (Earth's Fury)) is used only for the spell.

4) I tried to destroy it in the final trigger, the "Time - Timer expires" one, and it creates problems (it doubles the damage & the floating texts). I set it in a variable, like this:
Set EF_UnitGroupLoad = ((Load Key(tempgroup) of (Key(Expiring Timer))) in EF_Hash)
Custom script: call DestroyGroup (udg_EF_UnitGroupLoad)
but it doesn't work properly, as I already said :/
Well, I don't think it's much of a problem here, since I clear every value attached to the timer afterwards.
 
Level 8
Joined
May 7, 2008
Messages
108
Hi, you're spell ( and sorry if I offence :s ) has a weird effect o_o. I can't evaluate the triggering because I don't like using handles. But it seems clear (no leaks). 3/5 for the general rate.

Oh, and convert the Real damages into Integer, because it looks like you deals 60000 damages (and it's a bit... huge.. =P ).
 
I don't really get the whole "weird" thing here. There are way more complex spells than this, what's weird? The hero summons at a target place a ward and between them, every unit gets damaged every 2.5 seconds. What's weird? :S
Plus, just because you don't like handles, you can't judge a spell like that. I'm sorry I tend to avoid the old-fashioned indexing systems which are a huge column of triggering.
 
Level 8
Joined
May 7, 2008
Messages
108
Ok, I offenced you :) sorry then. No, I'm just telling you the effect is strange oO. I did not explained why :

1°) Why is the dealing effect is dust ? (I know it's earth, but it would be using a lightning effect, no ?)

2°) (And that's my fault) I though it was using a knockback.

3°) For the second time, convert Real damages into Integer please.

4°) You should reduce the time delay for the damages, it would look more realistic (if you want it to be).

And please read correctly what I said : I rated your spell with the effect because I don't know how to rate it with the Handles, because I don't use them !
 
Ok, I changed the model of the ward, the tooltip, the damage displayed into integer and the damage delay from 2.5 -> 2.
Thank you for your feedback so far ;)

maybe you can make the deformations to be optional because they really cause so much lag for users that don't have the latest hardwares.
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
3) The unit dies trigger makes as many checks as the one you proposed. "EF_Group is empty" Boolean would be the same with the Unit-type comparison I make, since this exact unit-type (Dummy (Earth's Fury)) is used only for the spell.

Modify the triggers like this:

  • Earths Fury 2
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (EF_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Game - Display to (All players) the text: Check 1
          • Unit Group - Pick every unit in EF_Group and do (Actions)
            • Loop - Actions
              • Set EF_Points[3] = (Position of (Picked unit))
              • Set EF_Points[4] = (Position of (Load (Key caster) of (Key...
              • ...
  • Earths Fury 3
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to Dummy (Earth's Fury)
        • Then - Actions
          • Game - Display to (All players) the text: Check 2
          • Unit Group - Remove (Triggering unit) from EF_Group
          • Lightning - Destroy (Load (Key lightning) of (Key (Triggering unit)) in EF_Hash)
          • Hashtable - Clear all child hashtables of child (Key (Load (Key caster) of (Key (Triggering unit)) in EF_Hash)) in EF_Hash
          • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in EF_Hash
          • Unit - Remove (Triggering unit) from the game
        • Else - Actions
You should also turn on/off the "unit dies" trigger.
 
Ok, I removed the Terrain Deformation.
Maker, the first trigger you propose modifications to has nothing different with the original trigger. The second trigger I really can't tell what's the difference between this:
  • Earths Fury 3
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to Dummy (Earth's Fury)
        • Then - Actions
          • Unit Group - Remove (Triggering unit) from EF_Group
          • Lightning - Destroy (Load (Key lightning) of (Key (Triggering unit)) in EF_Hash)
          • Hashtable - Clear all child hashtables of child (Key (Load (Key caster) of (Key (Triggering unit)) in EF_Hash)) in EF_Hash
          • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in EF_Hash
          • Unit - Remove (Triggering unit) from the game
        • Else - Actions
and this:

  • Earths Fury 3
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Dummy (Earth's Fury)
    • Actions
      • Unit Group - Remove (Triggering unit) from EF_Group
      • Lightning - Destroy (Load (Key lightning) of (Key (Triggering unit)) in EF_Hash)
      • Hashtable - Clear all child hashtables of child (Key (Load (Key caster) of (Key (Triggering unit)) in EF_Hash)) in EF_Hash
      • Hashtable - Clear all child hashtables of child (Key (Triggering unit)) in EF_Hash
      • Unit - Remove (Triggering unit) from the game
      • Else - Actions
Anyway, I updated it & Turned - on & off the trigger with the "A unit dies event". :)
 
Last edited:
Top