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,199

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.
  • Ghan Ghan:
    Howdy
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top