• 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!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Earthbomb v 1.2

  • Like
Reactions: maddeem
Summons a bomb under the surface at the target point that has a 2 seconds delay. Upon explosion it deals damage and knock nearby enemy units up in the air depending on how close they were. Upon landing the enemy units take damage again.

Level 1: Damage (full): 20 Maximum knockback range: 500 AoE: 300
Level 2: Damage (full): 40 Maximum knockback range: 550 AoE: 325
Level 3: Damage (full): 60 Maximum knockback range: 600 AoE: 350
Level 4: Damage (full): 80 Maximum knockback range: 650 AoE: 375
Level 5: Damage (full): 100 Maximum knockback range: 700 AoE: 400
v1.2-minor fixes
v1.1-added AoE configurable, effect setup and importing instructions

  • Spell Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- First copy the dummy units then the buffs and abilities. After that copy the triggers and make sure it automatically generate new variables. --------
      • Set MarkerEffect = Abilities\Spells\Orc\AncestralSpirit\AncestralSpiritCaster.mdl
      • Set KnockbackEffect = Abilities\Spells\Orc\Devour\DevourEffectArt.mdl
      • Set ExplosionEffect = Abilities\Weapons\SteamTank\SteamTankImpact.mdl
      • Set LandingEffect = Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
  • [/HIDDEN]
  • Earthbomb
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Earthbomb
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • EHas[ELastRecycled] Equal to True
        • Then - Actions
          • Set EMax = (EMax + 1)
          • Set EIndex = EMax
        • Else - Actions
          • Set EIndex = ELastRecycled
          • Set ELastRecycled = ERecycledList[ELastRecycled]
      • Set ECaster[EIndex] = (Triggering unit)
      • Set ETimer[EIndex] = 2.00
      • Set ETargetPoint[EIndex] = (Target point of ability being cast)
      • Set EHas[EIndex] = True
      • Set ECount = (ECount + 1)
      • Set EKnock[EIndex] = False
      • Set EKnockDist[EIndex] = (450.00 + (50.00 x (Real((Level of Earthbomb for ECaster[EIndex])))))
      • Set EDamage[EInteger] = (10.00 x (Real((Level of Earthbomb for ECaster[EIndex]))))
      • Set EEffectDelayer[EIndex] = 0
      • Set EAoE[EIndex] = (275.00 + (25.00 x (Real((Level of Earthbomb for ECaster[EIndex])))))
      • Special Effect - Create a special effect at ETargetPoint[EIndex] using MarkerEffect
      • Set EMarker[EIndex] = (Last created special effect)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Earthbomb Loop <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Earthbomb Loop <gen>
        • Else - Actions
  • [/HIDDEN]
  • Earthbomb Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer EInteger) from 0 to EMax, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • EHas[EInteger] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ETimer[EInteger] Greater than 0.00
                • Then - Actions
                  • Set ETimer[EInteger] = (ETimer[EInteger] - 0.03)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • ETimer[EInteger] Greater than 0.00
                    • Then - Actions
                    • Else - Actions
                      • Set EGroup[EInteger] = (Units within EAoE[EInteger] of ETargetPoint[EInteger] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enem
                      • Unit Group - Pick every unit in EGroup[EInteger] and do (Actions)
                        • Loop - Actions
                          • Unit - Cause ECaster[EInteger] to damage (Picked unit), dealing EDamage[EInteger] damage of attack type Chaos and damage type Normal
                          • Unit - Turn collision for (Picked unit) Off
                      • Special Effect - Create a special effect at ETargetPoint[EInteger] using ExplosionEffect
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Destroy EMarker[EInteger]
                • Else - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • EKnock[EInteger] Equal to False
                    • Then - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (EGroup[EInteger] is empty) Equal to False
                        • Then - Actions
                          • Set EEffectDelayer[EInteger] = (EEffectDelayer[EInteger] + 1)
                          • Unit Group - Pick every unit in EGroup[EInteger] and do (Actions)
                            • Loop - Actions
                              • Set TempLoc = (Position of (Picked unit))
                              • Set TempReal = (EKnockDist[EInteger] - (Distance between TempLoc and ETargetPoint[EInteger]))
                              • Set TempReal2 = ((Current flying height of (Picked unit)) / 10.00)
                              • Set TempReal3 = (TempReal + (20.00 x TempReal2))
                              • Set TempReal4 = (TempReal / 20.00)
                              • Set TempLoc2 = (TempLoc offset by 20.00 towards (Angle from ETargetPoint[EInteger] to TempLoc) degrees)
                              • Custom script: if UnitAddAbility(GetEnumUnit(),'Amrf') then
                              • Custom script: call UnitRemoveAbility(GetEnumUnit(),'Amrf')
                              • Custom script: endif
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • TempReal2 Greater than or equal to TempReal4
                                • Then - Actions
                                  • Animation - Change (Picked unit) flying height to ((Current flying height of (Picked unit)) - 10.00) at 0.00
                                • Else - Actions
                                  • Animation - Change (Picked unit) flying height to ((Current flying height of (Picked unit)) + 10.00) at 0.00
                              • Unit - Move (Picked unit) instantly to TempLoc2
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (EEffectDelayer[EInteger] mod 2) Equal to 0
                                • Then - Actions
                                  • Special Effect - Create a special effect attached to the origin of (Picked unit) using KnockbackEffect
                                  • Special Effect - Destroy (Last created special effect)
                                • Else - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Or - Any (Conditions) are true
                                    • Conditions
                                      • (Distance between ETargetPoint[EInteger] and TempLoc2) Greater than or equal to EKnockDist[EInteger]
                                      • (Terrain pathing at TempLoc2 of type Walkability is off) Equal to True
                                      • (Current flying height of (Picked unit)) Equal to 0.00
                                • Then - Actions
                                  • Animation - Change (Picked unit) flying height to 0.00 at 0.00
                                  • Unit Group - Remove (Picked unit) from EGroup[EInteger]
                                  • Special Effect - Create a special effect at TempLoc2 using LandingEffect
                                  • Special Effect - Destroy (Last created special effect)
                                  • Unit - Cause ECaster[EInteger] to damage (Picked unit), dealing EDamage[EInteger] damage of attack type Chaos and damage type Normal
                                  • Unit - Turn collision for (Picked unit) On
                                • Else - Actions
                              • Custom script: call RemoveLocation (udg_TempLoc)
                              • Custom script: call RemoveLocation (udg_TempLoc2)
                        • Else - Actions
                          • Set EKnock[EInteger] = True
                    • Else - Actions
                      • Custom script: call DestroyGroup (udg_EGroup[udg_EInteger])
                      • Custom script: call RemoveLocation (udg_ETargetPoint[udg_EInteger])
                      • Set ECount = (ECount - 1)
                      • Set EHas[EInteger] = False
                      • Set ERecycledList[EInteger] = ELastRecycled
                      • Set ELastRecycled = EInteger
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ECount Equal to 0
                        • Then - Actions
                          • Trigger - Turn off (This trigger)
                          • For each (Integer A) from 0 to EInteger, do (Set ERecycledList[(Integer A)] = 0)
                          • Set EMax = 0
                          • Set ELastRecycled = 0
                        • Else - Actions
            • Else - Actions
  • [/HIDDEN]
Keywords:
earthbomb, explosion, knockback, fly, BOOOOOM, *le boom, damage, disable, cool, effect,
Contents

Just another Warcraft III map (Map)

Reviews
Reviewed by Maker, Earthbomb v 1.2, 30th Dec 2011 Approved. The initial effect with the sound it makes are well chosen. However I think the War Stomp effect could be changed to something else. You could experiment with offsetting the initial...

Moderator

M

Moderator

Reviewed by Maker, Earthbomb v 1.2, 30th Dec 2011

Approved.

The initial effect with the sound it makes are well chosen. However I think the War Stomp effect could be changed to something else.

You could experiment with offsetting the initial effect a bit, give it some height since now it get clipped with terrain on uneven ground.

Improvement suggestions:
  • Use a variable for Real(level of abil)
  • Use dynamic indexing where expired instances are removed/overwritten


Reviewed by Maker, Earthbomb v 1.1, 29th Dec 2011

Required changes
  • Separate disable fog/black mask from the effect paths. The trigger where you set the paths should be in the spell folder
  • Indexing doesn't recycle max index, also you could remove instances when they end. You could use Hanky's dynamic indexing
  • Use the method Pharaoh_ suggested for adding/removin Crow Form

Optional changes:
  • Use a variable for Real(level of abil)


14:59, 22nd Dec 2011
Pharaoh_:
  • Set ETargetPoint[EIndex] = (Target point of ability being cast)
I'd suggest using
  • Custom script: set udg_ETargetX[udg_EIndex] = GetSpellTargetX()
  • Custom script: set udg_ETargetY[udg_EIndex] = GetSpellTargetY()
to prevent the delayed memory restoration.

  • Set TempInt = (Player number of (Triggering player))
Is this actually used in the first trigger?

  • ETimer[EInteger] Greater than 0.00
You perform this check twice.

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • ETimer[EInteger] Greater than 0.00
    • Then - Actions
    • Else - Actions
      • Set EGroup[EInteger] = (Units within 300.00 of ETargetPoint[EInteger] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Ow
      • Unit Group - Pick every unit in EGroup[EInteger] and do (Actions)
        • Loop - Actions
          • Unit - Cause ECaster[EInteger] to damage (Picked unit), dealing EDamage[EInteger] damage of attack type Chaos and damage type Normal
          • Unit - Turn collision for (Picked unit) Off
      • Special Effect - Create a special effect at ETargetPoint[EInteger] using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Destroy EMarker[EInteger]
->
  • Set EGroup[EInteger] = (Units within 300.00 of ETargetPoint[EInteger] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Ow
    • Unit Group - Pick every unit in EGroup[EInteger] and do (Actions)
      • Loop - Actions
        • Unit - Cause ECaster[EInteger] to damage (Picked unit), dealing EDamage[EInteger] damage of attack type Chaos and damage type Normal
        • Unit - Turn collision for (Picked unit) Off
    • Special Effect - Create a special effect at ETargetPoint[EInteger] using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
    • Special Effect - Destroy (Last created special effect)
    • Special Effect - Destroy EMarker[EInteger]
I suggest you used this (http://www.hiveworkshop.com/forums/trigger-gui-editor-tutorials-279/how-give-unit-ability-fly-201936/) tutorial for flying height modification.

  • Special Effect - Create a special effect at TempLoc2 using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
  • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Orc\Devour\DevourEffectArt.mdl
  • Special Effect - Create a special effect at ETargetPoint[EInteger] using Abilities\Weapons\SteamTank\SteamTankImpact.mdl
  • Special Effect - Create a special effect at ETargetPoint[EIndex] using Abilities\Spells\Orc\AncestralSpirit\AncestralSpiritCaster.mdl
Make the effects' path configurable.

  • Set EGroup[EInteger] = (Units within 300.00 of ETargetPoint[EInteger] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Ow
Make Area of Effect configurable as well.
 
Level 7
Joined
Sep 2, 2011
Messages
349
Hello there. I would like to rate this spell of yours. The spell is simple but it is really nice. I like it. There are still errors with your codes.

Rating: 4/5
The spell is simple and cool
The knockback effects is great
The effects could be better
 
Hello there. I would like to rate this spell of yours. The spell is simple but it is really nice. I like it. There are still errors with your codes.

Rating: 4/5
The spell is simple and cool
The knockback effects is great
The effects could be better

I love how people say a rating and don't actually rate it. :sarcasm:
That's just rude.

On topic: This is a weird way of indexing lol, I would suggest using a system. Oh and...
  • For each (Integer A) from 0 to EInteger, do (Set ERecycledList[(Integer A)] = 0)
    • Set EMax = 0
    • Set ELastRecycled = 0
Couldn't you just null these at the start of each cast?
Meh, doesn't really matter though.
 
Level 16
Joined
Jun 24, 2009
Messages
1,409
I love how people say a rating and don't actually rate it. :sarcasm:
That's just rude.

On topic: This is a weird way of indexing lol, I would suggest using a system. Oh and...
  • For each (Integer A) from 0 to EInteger, do (Set ERecycledList[(Integer A)] = 0)
    • Set EMax = 0
    • Set ELastRecycled = 0
Couldn't you just null these at the start of each cast?
Meh, doesn't really matter though.

Well.... actually it's a system made by me ~.~
Erm. Nope? If you null them at the start it would completely ruin the whole trigger.
edit:
or I can do it if i make another if but that would be less optimal.
 
Erm... I don´t really understand what do you mean. What person? I´m the only one who use this system and I´m the author of the system.

Gosh I was tired when I posted that. Please disregard it :p
Scrn.png
Does this or does this not look like a nazi symbol... Lol
Just a tip, to make the spell a bit more realistic, you should change the unit's fly height dependent upon terrain height.
Anyway nice and simple spell. Deserves 5/5.
 
Level 16
Joined
Jun 24, 2009
Messages
1,409
Gosh I was tired when I posted that. Please disregard it :p
View attachment 109599
Does this or does this not look like a nazi symbol... Lol
Just a tip, to make the spell a bit more realistic, you should change the unit's fly height dependent upon terrain height.
Anyway nice and simple spell. Deserves 5/5.

Nope!Chuck Testa. It´s a basic war3 effect. Also, originally that sign meant peace or what. Also it´s a japanise letter.
Well I´ll try to make it and thanks.
 
Level 6
Joined
Jun 18, 2011
Messages
168
@Kam
That's not always a bad thing >.<
but, yes, having it configurable to check for pathability would be nice.
I say let them fall off cliffs and into the ocean and even land on higher ground if they get launched high enough. Good luck with triggering that, though.
 
Top