Spellpack Earthshaker Spellpack

Ayanami

칼리
Reaction score
288
Introduction
Well, I was bored and decided to make Earthshaker's spells from DoTA.

Requirements
- Friendly-GUI Damage Detection by Weep

The spells:
  • Fissure [Active]
  • Enchant Totem [Active]
  • Aftershock [Passive]
  • Echo Slam [Active]


Details
- The spells are GUI like I stated above.
- They are leakless (hope so) and lagless (at least for me).
- It is MUI, meaning can be cast many times at the same instance.
- Easy to import.
- It's an Earthshaker from DoTA! :D


Spells

Fissure

Description:
Slams the ground with the Raigor's mighty totem, causing the ground to crack open front of him, damaging opponents and leaving an impassable crevasse for a period of time.

Level 1 - Deals 125 damage and stun lasts for 1.00 second.
Level 2 - Deals 175 damage and stun lasts for 1.25 seconds.
Level 3 - Deals 225 damage and stun lasts for 1.50 seconds.
Level 4 - Deals 275 damage and stun lasts for 1.75 seconds.

Cooldown - 15 seconds

Screenshot:

fissure.jpg

Code:
Trigger:
  • Fissure
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to FiAbilityMain
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FiCustomValue Less than 100
        • Then - Actions
          • Set FiCustomValue = (FiCustomValue + 1)
        • Else - Actions
          • Set FiCustomValue = 1
      • Set FiRealDuration[FiCustomValue] = 8.00
      • Set TempPoint = (Position of (Triggering unit))
      • Set FiTargetPoint = (Target point of ability being cast)
      • Set FiRealDistance = 0.00
      • Set TempReal = (Angle from TempPoint to FiTargetPoint)
      • For each (Integer A) from 1 to 19, do (Actions)
        • Loop - Actions
          • Set FiRealDistance = (FiRealDistance + 64.00)
          • Set TempOffset = (TempPoint offset by FiRealDistance towards TempReal degrees)
          • Special Effect - Create a special effect at TempOffset using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
          • Special Effect - Destroy (Last created special effect)
          • Special Effect - Create a special effect at TempOffset using Abilities\Spells\Other\Volcano\VolcanoDeath.mdl
          • Special Effect - Destroy (Last created special effect)
          • Destructible - Create a FissureDestructible at TempOffset facing (Random angle) with scale 0.50 and variation (Integer(TempReal))
          • Set FiDestructible[((FiCustomValue x 20) + (Integer A))] = (Last created destructible)
          • Custom script: call RemoveLocation(udg_TempOffset)
      • Unit - Create 1 HiddenDummy for (Owner of (Triggering unit)) at TempPoint facing Default building facing degrees
      • Unit - Set the custom value of (Last created unit) to FiCustomValue
      • Unit Group - Add (Last created unit) to FiDummyGroup
      • Custom script: call RemoveLocation(udg_FiTargetPoint)
      • Custom script: call RemoveLocation(udg_TempPoint)


Trigger:
  • Fissure Periodic
    • Events
      • Unit - A unit Dies
    • Conditions
      • ((Triggering unit) is in FiDummyGroup) Equal to True
    • Actions
      • Set TempInt = (Custom value of (Triggering unit))
      • For each (Integer A) from 1 to 19, do (Actions)
        • Loop - Actions
          • Destructible - Remove FiDestructible[((TempInt x 20) + (Integer A))]
      • Unit - Remove (Picked unit) from the game


Enchant Totem

Description:
Empowers the totem resting on Raigor's back, causing it to deal extra damage on the next attack. Lasts for 14 seconds or 1 attack.

Level 1 - Increases Damage by 50%.
Level 2 - Increases Damage by 100%.
Level 3 - Increases Damage by 150%.
Level 4 - Increases Damage by 200%.

Cooldown - 7 seconds

Screenshot:
enchanttotem.jpg

Code:
Trigger:
  • Enchant Totem
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to EnAbilityMain
    • Actions
      • Unit - Add EnAbilitySpellBook to (Triggering unit)
      • Unit Group - Add (Triggering unit) to EnUnitGroup


Trigger:
  • Enchant Totem Damage
    • Events
      • Game - GDD_Event becomes Equal to 0.00
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (GDD_DamagedUnit has buff Enchant Totem (Non-stacking)) Equal to True
          • (GDD_DamagedUnit has buff Enchant Totem (Stacking)) Equal to True
    • Actions
      • Unit - Remove EnAbilitySpellBook from GDD_DamageSource
      • Unit - Remove Enchant Totem buff from GDD_DamageSource
      • Unit - Remove Enchant Totem (Non-stacking) buff from GDD_DamagedUnit
      • Unit - Remove Enchant Totem (Stacking) buff from GDD_DamagedUnit
      • Unit Group - Remove (Picked unit) from EnUnitGroup


Trigger:
  • Enchant Totem Periodic
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in EnUnitGroup and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) has buff Enchant Totem ) Equal to False
            • Then - Actions
              • Unit - Remove EnAbilitySpellBook from (Picked unit)
              • Unit Group - Remove (Picked unit) from EnUnitGroup
            • Else - Actions


Aftershock

Description:
The power of Raigor casting a spell causes the earth to shake below him, dealing additional damage and stunning.

Level 1 - Deals 25 damage and 0.3 seconds stun.
Level 2 - Deals 45 damage and 0.7 seconds stun.
Level 3 - Deals 75 damage and 1.2 seconds stun
Level 4 - Deals 225 damage and 1.5 seconds stun

Passive

Code:
Trigger:
  • Aftershock
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Ability being cast) Equal to FiAbilityMain
          • (Ability being cast) Equal to EnAbilityMain
          • (Ability being cast) Equal to ESAbilityMain
      • (Level of AfAbilityMain for (Triggering unit)) Greater than 0
    • Actions
      • Set TempPoint = (Position of (Triggering unit))
      • Special Effect - Create a special effect at TempPoint using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
      • Special Effect - Destroy (Last created special effect)
      • Unit - Create 1 CasterDummy for (Owner of (Triggering unit)) at TempPoint facing Default building facing degrees
      • Unit - Add AfAbilityStun to (Last created unit)
      • Unit - Set level of AfAbilityStun for (Last created unit) to (Level of AfAbilityMain for (Triggering unit))
      • Unit - Order (Last created unit) to Orc Tauren Chieftain - War Stomp
      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation(udg_TempPoint)

Echo Slam

Description:
Raigor sends shockwaves shooting through the ground, dealing damage ricocheting to nearby targets for additional damage.

Level 1 - 200 Initial Damage and 35 Echo Damage.
Level 2 - 275 Initial Damage and 45 Echo Damage.
Level 3 - 350 Initial Damage and 65 Echo Damage.

Cooldown - Cooldown: 150/130/110 seconds

Screenshot:
echoslam.jpg

Code:
Trigger:
  • Echo Slam
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to ESAbilityMain
    • Actions
      • Set TempPoint = (Position of (Triggering unit))
      • Set TempUnitGroup = (Units within 500.00 of TempPoint 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 (Triggering unit))) Equal to True))))
      • Set ESUnitGroup = (Units within 500.00 of TempPoint matching ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is A flying unit) Equal to False)))
      • Unit Group - Pick every unit in ESUnitGroup and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked unit) is alive) Equal to True
            • Then - Actions
              • Set TempOffset = (Position of (Picked unit))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is in TempUnitGroup) Equal to True
                • Then - Actions
                  • Unit Group - Remove (Picked unit) from TempUnitGroup
                  • Unit Group - Pick every unit in TempUnitGroup and do (Actions)
                    • Loop - Actions
                      • Unit - Create 1 CasterDummy for (Owner of (Triggering unit)) at TempOffset facing Default building facing degrees
                      • Unit - Add ESAbilityDamageAlive to (Last created unit)
                      • Unit - Set level of ESAbilityDamageAlive for (Last created unit) to (Level of AfAbilityMain for (Triggering unit))
                      • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                      • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
                  • Unit Group - Add (Picked unit) to TempUnitGroup
                • Else - Actions
                  • Unit Group - Pick every unit in TempUnitGroup and do (Actions)
                    • Loop - Actions
                      • Unit - Create 1 CasterDummy for (Owner of (Triggering unit)) at TempOffset facing Default building facing degrees
                      • Unit - Add ESAbilityDamageAlive to (Last created unit)
                      • Unit - Set level of ESAbilityDamageAlive for (Last created unit) to (Level of AfAbilityMain for (Triggering unit))
                      • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                      • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_TempOffset)
            • Else - Actions
              • Set TempOffset = (Position of (Picked unit))
              • Unit Group - Pick every unit in TempUnitGroup and do (Actions)
                • Loop - Actions
                  • Unit - Create 1 CasterDummy for (Owner of (Triggering unit)) at TempOffset facing Default building facing degrees
                  • Unit - Add ESAbilityDamageDead to (Last created unit)
                  • Unit - Set level of ESAbilityDamageDead for (Last created unit) to (Level of AfAbilityMain for (Triggering unit))
                  • Unit - Order (Last created unit) to Neutral - Firebolt (Picked unit)
                  • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
              • Custom script: call RemoveLocation(udg_TempOffset)
      • Unit Group - Pick every unit in TempUnitGroup and do (Actions)
        • Loop - Actions
          • Unit - Cause (Triggering unit) to damage (Picked unit), dealing (125.00 + (75.00 x (Real((Level of ESAbilityMain for (Triggering unit)))))) damage of attack type Spells and damage type Magic
      • Custom script: call DestroyGroup(udg_ESUnitGroup)
      • Custom script: call DestroyGroup(udg_TempUnitGroup)
      • Custom script: call RemoveLocation(udg_TempPoint)


Credits
Code:
[COLOR="Red"]GUI-Friendly Damage Detection[/COLOR] - Weep @ [URL="www.thehelper.net"]TheHelper[/URL]


Changelogs
Code:
Version 1.0
- Initial relase
Version 1.1
- Changed the base spell of Echo Slam from Channel to Fan of Knives
Version 1.2
- Fixed the issue where Aftershock occurs even though it is not learned.
- Removed unecessary conditions in the triggers: "Fissure Periodic" and "Enchant Totem Perodic"
- "Fissure Periodic" no longer uses periodic trigger. Instead uses a death detection event.
- Enchant Totem now correctly removes the Buff Placer ability when duration of the spell is over.

Any comments, flame or any kind of encouragement will be appreciated. Just give me a feedback :p
 

Attachments

  • Earthshaker Spellpack v1.2.w3x
    55.9 KB · Views: 1,191

Angel_Island

Much long, many time, wow
Reaction score
56
The Echo slam shall be cast instantly without casting time. Base it on fan of knives instead.
 

avalya

New Member
Reaction score
37
I believe the Echo Slam's echoes are Fan of Knives as well, so your base spell is Fan of Knives, dealing X damage to targets within 500 AOE, then pick the targets and create dummies at their location that uses Fan of Knives that deals the minor damage in an AOE of 300 or whatever it is.
 

Ayanami

칼리
Reaction score
288
I believe the Echo Slam's echoes are Fan of Knives as well, so your base spell is Fan of Knives, dealing X damage to targets within 500 AOE, then pick the targets and create dummies at their location that uses Fan of Knives that deals the minor damage in an AOE of 300 or whatever it is.

Are you sure the echo damage is Fan of Knives? Then how would the echo have shock waves homing the enemies?
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
emjlr3's did it based on fan of knifes.
The map is quite old, need some time to find it.
 

Viikuna

No Marlo no game.
Reaction score
265
Yep, its all fan of knives all the way.

You should probably try if you can do all those fan of knives with one dummy, btw. It should reduce some lagg, sicne you dont have to create one dummy for each unit hit by the spell.

( Even if DotA created new dummies alla time, it doesnt mean that you have to do it as badly )
 

Ayanami

칼리
Reaction score
288
Well, I tried fan of knives but seems that the shock waves don't appear. Fixed Aftershock from occurring even though it wasn't learned.
 

Weep

Godspeed to the sound of the pounding
Reaction score
400
Nice to see someone else using my GDD. :)

It would make it easier to import if you left the "GDD Variable Creator" trigger in place...

Trigger:
  • Fissure Periodic
    • [...]
      • For each (Integer A) from 1 to 19, do (Actions)
        • Loop - Actions
          • Destructible - Remove FiDestructible[((TempInt x 20) + (Integer A))]
      • Unit - Remove (Picked unit) from the game
It would be good to remove the unit from the group before removing it from the game, so you don't build up lag from "shadow references" in the group. Also, you don't really need the trigger's condition, because the loop already won't run if there are no units in it.

Since you're already using a dummy unit as a reference placeholder, you don't even need that periodic trigger - give the dummy unit an expiration timer when it's created, and have the removal trigger's event be unit death, with condition that the triggering unit is in FiDummyGroup, and the actions only need to be the part within the unit group loop.

Enchant Totem Periodic
Again, you don't really need the condition. Also, the spell book with the buff placer should be removed by this trigger, when the buff is gone.

Trigger:
  • Aftershock
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Ability being cast) Equal to FiAbilityMain
          • (Ability being cast) Equal to EnAbilityMain
          • (Ability being cast) Equal to ESAbilityMain
    • Actions
The conditions ought to include "(Level of AfAbilityMain for (Triggering unit)) Greater than 0" - as it is, Aftershock will trigger even when the hero has not put any points in the ability.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top