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,202
The Echo slam shall be cast instantly without casting time. Base it on fan of knives instead.
 
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.
 
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?
 
emjlr3's did it based on fan of knifes.
The map is quite old, need some time to find it.
 
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 )
 
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.
 
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 The Helper:
    News portal has been retired. Main page of site goes to Headline News forum now
  • The Helper The Helper:
    I am working on getting access to the old news portal under a different URL for those that would rather use that for news before we get a different news view.
  • Ghan Ghan:
    Easily done
    +1
  • The Helper The Helper:
    https://www.thehelper.net/pages/news/ is a link to the old news portal - i will integrate it into the interface somewhere when i figure it out
  • Ghan Ghan:
    Need to try something
  • Ghan Ghan:
    Hopefully this won't cause problems.
  • Ghan Ghan:
    Hmm
  • Ghan Ghan:
    I have converted the Headline News forum to an Article type forum. It will now show the top 20 threads with more detail of each thread.
  • Ghan Ghan:
    See how we like that.
  • The Helper The Helper:
    I do not see a way to go past the 1st page of posts on the forum though
  • The Helper The Helper:
    It is OK though for the main page to open up on the forum in the view it was before. As long as the portal has its own URL so it can be viewed that way I do want to try it as a regular forum view for a while
  • Ghan Ghan:
    Yeah I'm not sure what the deal is with the pagination.
  • Ghan Ghan:
    It SHOULD be there so I think it might just be an artifact of having an older style.
  • Ghan Ghan:
    I switched it to a "Standard" article forum. This will show the thread list like normal, but the threads themselves will have the first post set up above the rest of the "comments"
  • The Helper The Helper:
    I don't really get that article forum but I think it is because I have never really seen it used on a multi post thread
  • Ghan Ghan:
    RpNation makes more use of it right now as an example: https://www.rpnation.com/news/
  • The Helper The Helper:
  • The Helper The Helper:
    What do you think Tom?
  • tom_mai78101 tom_mai78101:
    I will have to get used to this.
  • tom_mai78101 tom_mai78101:
    The latest news feed looks good
  • The Helper The Helper:
    I would like to see it again like Ghan had it the first time with pagination though - without the pagination that view will not work but with pagination it just might...
  • The Helper The Helper:
    This drink recipe I have had more than a few times back in the day! Mind Eraser https://www.thehelper.net/threads/cocktail-mind-eraser.194720/

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top