1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still haven't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. Weave light to take you to your highest hopes - the 6th Special Effect Contest is here!
    Dismiss Notice
  5. Lead your forces to battle in the 15th Techtree Contest. The call is yours, commander!
    Dismiss Notice
  6. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

[LoL] Gragas Abilities Set v1.8 (Drunken Fighter Spells)

Submitted by xYours Trulyx
This bundle is marked as approved. It works and satisfies the submission rules.
I play Gragas most of the time and I think to myself, why not recreate this thicc boi's kit in Warcraft? So here it is. Of course, his abilities was a pain in the ass to make, and with my weird coding style, this will probably get rejected but fuck it.

(Passive) Happy Hour
[​IMG]
INNATE: Gragas heals 6% maximum health upon using an ability.

Triggers

P Happy Hour Create Dummy
  • P Happy Hour Dummy
    • Events
      • Game - UnitIndexEvent becomes Equal to 1.00
    • Conditions
      • (Unit-type of UDexUnits[UDex]) Equal to G_R_A_G_A_S
    • Actions
      • Set HappyHour_TriggeringUnit = UDexUnits[UDex]
      • Set AbilityIndexer = (Custom value of HappyHour_TriggeringUnit)
      • Set HappyHour_Point = (Position of HappyHour_TriggeringUnit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HappyHour_Bool[AbilityIndexer] Equal to False
        • Then - Actions
          • Set HappyHour_Bool[AbilityIndexer] = True
          • Unit - Create 1 HappyHour_TimerDummyType for (Owner of HappyHour_TriggeringUnit) at HappyHour_Point facing Default building facing degrees
          • Set HappyHour_CasterDummyTimer[AbilityIndexer] = (Last created unit)
        • Else - Actions
      • Custom script: call RemoveLocation(udg_HappyHour_Point)

P Happy Hour Detect
  • P Happy Hour Detect
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • And - All (Conditions) are true
        • Conditions
          • (Ability Cooldown Remaining of (Triggering unit) for ability HappyHour_Ability) Equal to 0.00
          • Or - Any (Conditions) are true
            • Conditions
              • (Ability being cast) Equal to BarrelRoll_Ability
              • (Ability being cast) Equal to DrunkenRage_Ability
              • (Ability being cast) Equal to BodySlam_Ability
              • (Ability being cast) Equal to ExplosiveCask_Ability
    • Actions
      • Set HappyHour_TriggeringUnit = (Triggering unit)
      • Set AbilityIndexer = (Custom value of HappyHour_TriggeringUnit)
      • Set HappyHour_HealAmount = ((Max life of HappyHour_TriggeringUnit) x 0.06)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Life of HappyHour_TriggeringUnit) Less than (Max life of HappyHour_TriggeringUnit)
          • And - All (Conditions) are true
            • Conditions
              • (HappyHour_CasterDummyTimer[AbilityIndexer] is alive) Equal to True
        • Then - Actions
          • Unit - Add Cargo Hold (Meat Wagon) to HappyHour_TriggeringUnit
        • Else - Actions

P Happy Hour Heal Cast
  • P Happy Hour Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to HappyHour_Ability
    • Actions
      • Set HappyHour_TriggeringUnit = (Triggering unit)
      • Set AbilityIndexer = (Custom value of HappyHour_TriggeringUnit)
      • Set HappyHour_HealAmount = ((Max life of HappyHour_TriggeringUnit) x 0.06)
      • Unit - Remove Cargo Hold (Meat Wagon) from HappyHour_TriggeringUnit
      • Unit - Kill HappyHour_CasterDummyTimer[AbilityIndexer]
      • Unit - Set life of HappyHour_TriggeringUnit to ((Life of HappyHour_TriggeringUnit) + HappyHour_HealAmount)
      • Special Effect - Create a special effect attached to the origin of HappyHour_TriggeringUnit using LifeBloom.mdx
      • Special Effect - Set Scale of (Last created special effect) to 3.00
      • Special Effect - Destroy (Last created special effect)
      • Floating Text - Create floating text that reads (+ + (String((Integer(HappyHour_HealAmount))))) above HappyHour_TriggeringUnit with Z offset 0.00, using font size 10.00, color (40.00%, 100.00%, 40.00%), and 0.00% transparency
      • Floating Text - Change (Last created floating text): Disable permanence
      • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
      • Floating Text - Change the lifespan of (Last created floating text) to 2.00 seconds
      • Floating Text - Change the fading age of (Last created floating text) to 1.00 seconds





(Q-Active) Barrel Roll

[​IMG] [​IMG]
ACTIVE:
Gragas rolls his cask to a location. When reactivated, or after 4 seconds, the cask will explode, dealing 80/120/160/200/240 (+70% Ability Power) magic damage to nearby enemies and slowing their movement speed by 40/45/50/55/60% for 2 seconds.

The damage and slow amount increase as the cask ferments, up to 150% after 4 seconds. Deals 70% damage to minions (non-Heroes).

Triggers

Q Barrel Roll Cast
  • Q Barrel Roll Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to BarrelRoll_Ability
    • Actions
      • -------- ======= Setting the Variables ======= --------
      • Set BarrelRoll_TriggeringUnit = (Triggering unit)
      • Set BarrelRoll_AbilityLevel = (Level of BarrelRoll_Ability for BarrelRoll_TriggeringUnit)
      • Set BarrelRoll_Points[1] = (Position of BarrelRoll_TriggeringUnit)
      • Set BarrelRoll_Points[2] = (Target point of ability being cast)
      • -------- ======= Creating dummy unit ======= --------
      • Unit - Create 1 BarrelRoll_DummyCasterType for (Owner of BarrelRoll_TriggeringUnit) at BarrelRoll_Points[1] facing BarrelRoll_Points[2]
      • Set AbilityIndexer = (Custom value of (Last created unit))
      • Set BarrelRoll_GetDummyCaster[AbilityIndexer] = BarrelRoll_TriggeringUnit
      • Set BarrelRoll_DummyTargetPoint[AbilityIndexer] = (Target point of ability being cast)
      • Unit - Add BarrelRoll_DummyAbility to (Last created unit)
      • Unit - Set level of BarrelRoll_DummyAbility for (Last created unit) to BarrelRoll_AbilityLevel
      • Unit - Order (Last created unit) to Neutral Tinker - Pocket Factory BarrelRoll_Points[2]
      • -------- ======= Set dummy's expiration timer and variables . When it dies, create cask dummy ======= --------
      • Set Math = ((Distance between BarrelRoll_Points[1] and BarrelRoll_Points[2]) / BarrelRoll_CaskSpeed)
      • Unit - Add a Math second Generic expiration timer to (Last created unit)
      • -------- ======= Remove leaks ======= --------
      • Custom script: call RemoveLocation(udg_BarrelRoll_Points[1])
      • Custom script: call RemoveLocation(udg_BarrelRoll_Points[2])

Q Barrel Roll Start Damage
  • Q Barrel Roll Start Damage
    • Events
      • Unit - A unit Dies
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Unit-type of (Dying unit)) Equal to BarrelRoll_DummyCasterType
          • (Unit-type of (Dying unit)) Equal to BarrelRoll_CaskDummy
    • Actions
      • Set BarrelRoll_TriggeringUnit = (Dying unit)
      • Set AbilityIndexer = (Custom value of BarrelRoll_TriggeringUnit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Dying unit)) Equal to BarrelRoll_DummyCasterType
        • Then - Actions
          • Set BarrelRoll_AbilityLevel = (Level of BarrelRoll_DummyAbility for BarrelRoll_TriggeringUnit)
          • Unit - Create 1 BarrelRoll_CaskDummy for (Owner of BarrelRoll_TriggeringUnit) at BarrelRoll_DummyTargetPoint[AbilityIndexer] facing Default building facing degrees
          • Set BarrelRoll_DamagePicked = (Last created unit)
          • Set BarrelRoll_CaskLevel[(Custom value of BarrelRoll_DamagePicked)] = BarrelRoll_AbilityLevel
          • Set BarrelRoll_GetCaskCaster[(Custom value of BarrelRoll_DamagePicked)] = BarrelRoll_GetDummyCaster[AbilityIndexer]
          • Unit Group - Add (Last created unit) to BarrelRoll_GlobalCaskGroup
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Q Barrel Roll Cosmetics <gen> is on) Equal to False
            • Then - Actions
              • Trigger - Turn on Q Barrel Roll Cosmetics <gen>
            • Else - Actions
          • Unit - For BarrelRoll_GetDummyCaster[AbilityIndexer], Ability BarrelRoll_Ability, Hide ability: True
          • Unit - Add BarrelRoll_ReactivateAbility to BarrelRoll_GetDummyCaster[AbilityIndexer]
          • Unit - Add a BarrelRoll_CaskDuration second Generic expiration timer to BarrelRoll_DamagePicked
          • Set AbilityIndexer2 = (Custom value of BarrelRoll_GetDummyCaster[AbilityIndexer])
          • Set BarrelRoll_GetCasterCask[AbilityIndexer2] = (Last created unit)
          • Unit - Create 1 BarrelRoll_RangeIndicatorType for (Owner of BarrelRoll_TriggeringUnit) at BarrelRoll_DummyTargetPoint[AbilityIndexer] facing Default building facing degrees
          • Set BarrelRoll_RangeIndicator[(Custom value of BarrelRoll_DamagePicked)] = (Last created unit)
        • Else - Actions
          • Set BarrelRoll_GetCaskAbilityLevel = BarrelRoll_CaskLevel[AbilityIndexer]
          • Set CalculateDamage = (BarrelRoll_BaseDamage[BarrelRoll_GetCaskAbilityLevel] + ((Real((Intelligence of BarrelRoll_GetCaskCaster[AbilityIndexer] (Include bonuses)))) x 0.70))
          • Set BarrelRoll_TotalDamage = (CalculateDamage + ((CalculateDamage x (Mana of BarrelRoll_TriggeringUnit)) x 0.01))
          • Set BarrelRoll_DamagePoint = (Position of BarrelRoll_TriggeringUnit)
          • Set BarrelRoll_DamageGroup = (Units within 260.00 of BarrelRoll_DamagePoint)
          • Unit Group - Pick every unit in BarrelRoll_DamageGroup and do (Actions)
            • Loop - Actions
              • Set BarrelRoll_DamagePicked = (Picked unit)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • And - All (Conditions) are true
                    • Conditions
                      • (BarrelRoll_DamagePicked is alive) Equal to True
                      • (BarrelRoll_DamagePicked is A structure) Equal to False
                      • (BarrelRoll_DamagePicked is A flying unit) Equal to False
                      • (BarrelRoll_DamagePicked is Magic Immune) Equal to False
                      • (BarrelRoll_DamagePicked belongs to an enemy of (Owner of BarrelRoll_TriggeringUnit)) Equal to True
                • Then - Actions
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (BarrelRoll_DamagePicked is A Hero) Equal to True
                    • Then - Actions
                      • Unit - Cause BarrelRoll_GetCaskCaster[AbilityIndexer] to damage BarrelRoll_DamagePicked, dealing BarrelRoll_TotalDamage damage of attack type Magic and damage type Normal
                    • Else - Actions
                      • Unit - Cause BarrelRoll_GetCaskCaster[AbilityIndexer] to damage BarrelRoll_DamagePicked, dealing (BarrelRoll_TotalDamage x 0.70) damage of attack type Magic and damage type Normal
                  • Unit - Create 1 Dummy Caster for (Owner of BarrelRoll_TriggeringUnit) at BarrelRoll_DamagePoint facing BarrelRoll_DamagePoint
                  • Unit - Add BarrelRoll_SlowAbility to (Last created unit)
                  • Unit - Set level of BarrelRoll_SlowAbility for (Last created unit) to BarrelRoll_GetCaskAbilityLevel
                  • Unit - Order (Last created unit) to Human Sorceress - Slow BarrelRoll_DamagePicked
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                • Else - Actions
          • Sound - Play BarrelRoll_BoomSound[1] at 90.00% volume, attached to BarrelRoll_TriggeringUnit
          • Sound - Play BarrelRoll_BoomSound[2] at 90.00% volume, attached to BarrelRoll_TriggeringUnit
          • Special Effect - Create a special effect at BarrelRoll_DamagePoint using BarrelRoll_BoomSFX
          • Special Effect - Set Scale of (Last created special effect) to 1.20
          • Special Effect - Destroy (Last created special effect)
          • Unit - Remove BarrelRoll_RangeIndicator[AbilityIndexer] from the game
          • Unit - For BarrelRoll_GetCaskCaster[AbilityIndexer], Ability Q - Barrel Roll , Hide ability: False
          • Unit - Remove BarrelRoll_ReactivateAbility from BarrelRoll_GetCaskCaster[AbilityIndexer]
          • Custom script: call RemoveLocation(udg_BarrelRoll_DamagePoint)
          • Custom script: call DestroyGroup(udg_BarrelRoll_DamageGroup)

Q Barrel Roll Recast
  • Q Barrel Roll Damage Recast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to BarrelRoll_ReactivateAbility
    • Actions
      • Set BarrelRoll_TriggeringUnit = (Triggering unit)
      • Set AbilityIndexer = (Custom value of BarrelRoll_TriggeringUnit)
      • Unit - Kill BarrelRoll_GetCasterCask[AbilityIndexer]

Q Barrel Roll Cosmetics
  • Q Barrel Roll Cosmetics
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in BarrelRoll_GlobalCaskGroup 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
              • Animation - Change (Picked unit)'s vertex coloring to (90.00%, (Life of (Picked unit))%, (Life of (Picked unit))%) with 0.00% transparency
              • Animation - Change (Picked unit)'s size to ((100.00 + (Mana of (Picked unit)))%, (100.00 + (Mana of (Picked unit)))%, (100.00 + (Mana of (Picked unit)))%) of its original size
            • Else - Actions
              • Unit Group - Remove (Picked unit) from BarrelRoll_GlobalCaskGroup
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in BarrelRoll_GlobalCaskGroup) Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions



Spell Preview

[​IMG]


(W-Active) Drunken Rage
[​IMG] [​IMG]
ACTIVE: Gragas guzzles down his brew, taking 10/12/14/16/18% (+1%) reduced damage for 2.5 seconds.After finishing his drink, his next basic attack deals magic damage to nearby enemies equal to 20/50/80/110/140 (+50% Ability Power) plus 7% of their max Health (max 300 vs monsters[Neutral Hostile]).

Triggers

W Drunken Rage Cast
  • W Drunken Rage Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to DrunkenRage_Ability
    • Actions
      • Set DrunkenRage_TriggeringUnit = (Triggering unit)
      • Set AbilityIndexer = (Custom value of DrunkenRage_TriggeringUnit)
      • Set DrunkenRage_Point = (Position of DrunkenRage_TriggeringUnit)
      • -------- ===== Disable Spellcasts and Attacks while drinking ===== --------
      • Unit - Interrupt DrunkenRage_TriggeringUnit's Attack
      • Unit - For DrunkenRage_TriggeringUnit, Ability DrunkenRage_Ability, Disable ability: True, Hide UI: False
      • Animation - Change DrunkenRage_TriggeringUnit's vertex coloring to (100.00%, 75.00%, 11.00%) with 0.00% transparency
      • Animation - Play DrunkenRage_TriggeringUnit's alternate animation
      • Animation - Add the alternate animation tag to DrunkenRage_TriggeringUnit
      • Sound - Play DrunkenRage_DrinkSound at 100.00% volume, attached to DrunkenRage_TriggeringUnit
      • Unit - Create 1 DrunkenRage_TimerDummyType for (Owner of DrunkenRage_TriggeringUnit) at DrunkenRage_Point facing DrunkenRage_Point
      • Set AbilityIndexer = (Custom value of (Last created unit))
      • Set DrunkenRage_GetTimerCaster[AbilityIndexer] = DrunkenRage_TriggeringUnit
      • Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Drunken Haze DrunkenRage_TriggeringUnit
      • Unit - Add a 1.25 second Generic expiration timer to (Last created unit)
      • Unit - For DrunkenRage_TriggeringUnit, Ability Passive - Happy Hour , Disable ability: False, Hide UI: False
      • Custom script: call RemoveLocation(udg_DrunkenRage_Point)

W Drunken Rage Buff
  • W Drunken Rage Buff
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to DrunkenRage_TimerDummyType
    • Actions
      • Set DrunkenRage_TriggeringUnit = (Dying unit)
      • Set AbilityIndexer = (Custom value of DrunkenRage_TriggeringUnit)
      • Set DrunkenRage_AbilityLevel = (Level of DrunkenRage_Ability for DrunkenRage_GetTimerCaster[AbilityIndexer])
      • Set DrunkenRage_Point = (Position of DrunkenRage_GetTimerCaster[AbilityIndexer])
      • Animation - Change DrunkenRage_GetTimerCaster[AbilityIndexer]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
      • Unit - Create 1 DrunkenRage_AAEmpDummyType for (Owner of DrunkenRage_TriggeringUnit) at DrunkenRage_Point facing DrunkenRage_Point
      • Set DrunkenRage_AAEmpGetDummy[(Custom value of DrunkenRage_GetTimerCaster[AbilityIndexer])] = (Last created unit)
      • Set DrunkenRage_AAEmpGetCaster[(Custom value of (Last created unit))] = DrunkenRage_GetTimerCaster[AbilityIndexer]
      • Unit - Order (Last created unit) to Orc Shaman - Bloodlust DrunkenRage_GetTimerCaster[AbilityIndexer]
      • Unit - Add a 5.00 second Generic expiration timer to (Last created unit)
      • Animation - Remove the alternate animation tag to DrunkenRage_GetTimerCaster[AbilityIndexer]
      • Custom script: call RemoveLocation(udg_DrunkenRage_Point)

W Drunken Rage Anim
  • W Drunken Rage Anim
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) has buff Drunken Rage ( AAEmpower )) Equal to True
    • Actions
      • Animation - Play (Attacking unit)'s attack slam animation

W Drunken Rage Damage
  • W Drunken Rage Damage
    • Events
      • Game - DamageModifierEvent becomes Equal to 1.00
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DamageEventTarget has buff Drunken Rage ( DmgReduction )) Equal to True
        • Then - Actions
          • Set DrunkenRage_TriggeringUnit = DamageEventTarget
          • Set DrunkenRage_AbilityLevel = (Level of DrunkenRage_Ability for DrunkenRage_TriggeringUnit)
          • Set CalculateDamage = (DrunkenRage_BaseDmgRdc[DrunkenRage_AbilityLevel] + ((Real((Intelligence of DrunkenRage_TriggeringUnit (Include bonuses)))) x DrunkenRage_APScale[2]))
          • Set Math = (DamageEventAmount - (DamageEventAmount x CalculateDamage))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Math Greater than 5.00
            • Then - Actions
              • Set DamageEventAmount = Math
            • Else - Actions
              • Set DamageEventAmount = 5.00
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • And - All (Conditions) are true
                • Conditions
                  • (DamageEventSource has buff Drunken Rage ( AAEmpower )) Equal to True
                  • (DamageEventTarget has buff Basic Attack ) Equal to True
            • Then - Actions
              • Set DrunkenRage_TriggeringUnit = DamageEventSource
              • Set AbilityIndexer = (Custom value of DrunkenRage_TriggeringUnit)
              • Set DrunkenRage_AbilityLevel = (Level of DrunkenRage_Ability for DrunkenRage_TriggeringUnit)
              • Set CalculateDamage = (DrunkenRage_BaseDamage[DrunkenRage_AbilityLevel] + ((Real((Intelligence of DrunkenRage_TriggeringUnit (Include bonuses)))) x DrunkenRage_APScale[1]))
              • Set DrunkenRage_Point = (Position of DamageEventTarget)
              • Set DrunkenRage_DamageGroup = (Units within 190.00 of DrunkenRage_Point)
              • Unit - Remove Drunken Rage ( AAEmpower ) buff from DrunkenRage_TriggeringUnit
              • Unit - Kill DrunkenRage_AAEmpGetDummy[AbilityIndexer]
              • Unit Group - Pick every unit in DrunkenRage_DamageGroup and do (Actions)
                • Loop - Actions
                  • Set DrunkenRage_DamagePicked = (Picked unit)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • (DrunkenRage_DamagePicked is alive) Equal to True
                          • (DrunkenRage_DamagePicked is A structure) Equal to False
                          • (DrunkenRage_DamagePicked is A flying unit) Equal to False
                          • (DrunkenRage_DamagePicked is Magic Immune) Equal to False
                          • (DrunkenRage_DamagePicked belongs to an enemy of (Owner of DrunkenRage_TriggeringUnit)) Equal to True
                    • Then - Actions
                      • Set DrunkenRage_TotalDamage = (CalculateDamage + ((Max life of DrunkenRage_DamagePicked) x 0.07))
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • And - All (Conditions) are true
                            • Conditions
                              • (Owner of DrunkenRage_DamagePicked) Equal to Neutral Hostile
                              • DrunkenRage_TotalDamage Greater than 300.00
                        • Then - Actions
                          • Set DrunkenRage_TotalDamage = 300.00
                        • Else - Actions
                      • Unit - Cause DrunkenRage_TriggeringUnit to damage DrunkenRage_DamagePicked, dealing DrunkenRage_TotalDamage damage of attack type Magic and damage type Normal
                      • Special Effect - Create a special effect attached to the origin of DrunkenRage_DamagePicked using DrunkenRage_AttackSFX
                      • Special Effect - Destroy (Last created special effect)
                    • Else - Actions
              • Custom script: call RemoveLocation(udg_DrunkenRage_Point)
              • Custom script: call DestroyGroup(udg_DrunkenRage_DamageGroup)
            • Else - Actions



Spell Preview

[​IMG]


(E-Active) Body Slam
[​IMG]
ACTIVE: Gragas charges forward, colliding with the first enemy unit. He deals 80/130/180/230/280 (+60% Ability Power) magic damage to enemies in the area and bumps them back, stunning them for 1 second.

Triggers

E Body Slam Cast
  • E Body Slam Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to BodySlam_Ability
    • Actions
      • Set BodySlam_TriggeringUnit = (Triggering unit)
      • Set AbilityIndexer = (Custom value of BodySlam_TriggeringUnit)
      • Set BodySlam_Points[1] = (Position of BodySlam_TriggeringUnit)
      • Set BodySlam_Points[2] = (Target point of ability being cast)
      • Set BodySlam_DashBool[AbilityIndexer] = True
      • Set BdSlmExpCask_KBTotalDistance[AbilityIndexer] = 600.00
      • Set BdSlmExpCask_KBSpeed[AbilityIndexer] = 25.00
      • Set BdSlmExpCask_KBAngle[AbilityIndexer] = (Angle from BodySlam_Points[1] to BodySlam_Points[2])
      • Animation - Change BodySlam_TriggeringUnit's animation speed to 8.00% of its original speed
      • Unit - Turn collision for BodySlam_TriggeringUnit Off
      • Unit Group - Add BodySlam_TriggeringUnit to BdSlmExpCask_KBGroup
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in BdSlmExpCask_KBGroup) Greater than or equal to 1
        • Then - Actions
          • Trigger - Turn on BodySlam ExplosiveCask Move <gen>
        • Else - Actions
      • Custom script: call RemoveLocation(udg_BodySlam_Points[1])
      • Custom script: call RemoveLocation(udg_BodySlam_Points[2])



Spell Preview

[​IMG]


(R-Active) Explosive Cask

[​IMG]
Gragas hurls his cask, causing it to explode when it lands. Enemies hit take 200/300/400 (+70% Ability Power) magic damage and are knocked away from the explosion.

Triggers

R Explosive Cask Cast
  • R Explosive Cask Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to ExplosiveCask_Ability
    • Actions
      • -------- ======= Setting the Variables ======= --------
      • Set ExplosiveCask_TriggeringUnit = (Triggering unit)
      • Set ExplosiveCask_AbilityLevel = (Level of ExplosiveCask_Ability for BarrelRoll_TriggeringUnit)
      • Set ExplosiveCask_Points[1] = (Position of ExplosiveCask_TriggeringUnit)
      • Set ExplosiveCask_Points[2] = (Target point of ability being cast)
      • -------- ======= Creating dummy unit ======= --------
      • Unit - Create 1 ExplosiveCask_DummyCaster for (Owner of ExplosiveCask_TriggeringUnit) at ExplosiveCask_Points[1] facing ExplosiveCask_Points[2]
      • Set AbilityIndexer = (Custom value of (Last created unit))
      • Set ExplosiveCask_GetDummyCaster[AbilityIndexer] = ExplosiveCask_TriggeringUnit
      • Set ExplosiveCask_DummyTargetPoint[AbilityIndexer] = (Target point of ability being cast)
      • Unit - Add ExplosiveCask_DummyAbility to (Last created unit)
      • Unit - Set level of ExplosiveCask_DummyAbility for (Last created unit) to ExplosiveCask_AbilityLevel
      • Unit - Order (Last created unit) to Neutral Tinker - Pocket Factory ExplosiveCask_Points[2]
      • -------- ======= Set dummy's expiration timer and variables . When it dies, create cask dummy ======= --------
      • Set Math = ((Distance between ExplosiveCask_Points[1] and ExplosiveCask_Points[2]) / ExplosiveCask_CaskSpeed)
      • Unit - Add a Math second Generic expiration timer to (Last created unit)
      • -------- ======= Remove leaks ======= --------
      • Custom script: call RemoveLocation(udg_ExplosiveCask_Points[1])
      • Custom script: call RemoveLocation(udg_ExplosiveCask_Points[2])

R Explosive Cask Impact
  • R Explosive Cask Impact
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to ExplosiveCask_DummyCaster
    • Actions
      • Set ExplosiveCask_TriggeringUnit = (Dying unit)
      • Set AbilityIndexer = (Custom value of ExplosiveCask_TriggeringUnit)
      • Set ExplosiveCask_AbilityLevel = (Level of ExplosiveCask_DummyAbilty for ExplosiveCask_TriggeringUnit)
      • Set CalculateDamage = (ExplosiveCask_BaseDamage[ExplosiveCask_AbilityLevel] + ((Real((Intelligence of ExplosiveCask_GetDummyCaster[AbilityIndexer] (Include bonuses)))) x 0.70))
      • Set ExplosiveCask_GetTargetPoint = ExplosiveCask_DummyTargetPoint[AbilityIndexer]
      • Set ExplosiveCask_DamageGroup = (Units within 430.00 of ExplosiveCask_GetTargetPoint)
      • Unit Group - Pick every unit in ExplosiveCask_DamageGroup and do (Actions)
        • Loop - Actions
          • Set ExplosiveCask_DamagePicked = (Picked unit)
          • Set ExplosiveCask_DamagePoint = (Position of ExplosiveCask_DamagePicked)
          • Set AbilityIndexer2 = (Custom value of ExplosiveCask_DamagePicked)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • And - All (Conditions) are true
                • Conditions
                  • (ExplosiveCask_DamagePicked is alive) Equal to True
                  • (ExplosiveCask_DamagePicked is A structure) Equal to False
                  • (ExplosiveCask_DamagePicked is A flying unit) Equal to False
                  • (ExplosiveCask_DamagePicked is Magic Immune) Equal to False
                  • (ExplosiveCask_DamagePicked belongs to an enemy of (Owner of HappyHour_TriggeringUnit)) Equal to True
            • Then - Actions
              • Unit - Cause ExplosiveCask_TriggeringUnit to damage ExplosiveCask_DamagePicked, dealing CalculateDamage damage of attack type Magic and damage type Normal
              • Set BdSlmExpCask_KBTotalDistance[AbilityIndexer2] = 900.00
              • Set BdSlmExpCask_KBSpeed[AbilityIndexer2] = 30.00
              • Set BdSlmExpCask_KBAngle[AbilityIndexer2] = (Angle from ExplosiveCask_GetTargetPoint to ExplosiveCask_DamagePoint)
              • Unit Group - Add ExplosiveCask_DamagePicked to BdSlmExpCask_KBGroup
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in BdSlmExpCask_KBGroup) Greater than or equal to 1
                • Then - Actions
                  • Trigger - Turn on BodySlam ExplosiveCask Move <gen>
                • Else - Actions
            • Else - Actions
          • Custom script: call RemoveLocation(udg_ExplosiveCask_DamagePoint)
      • Special Effect - Create a special effect at ExplosiveCask_DummyTargetPoint[AbilityIndexer] using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
      • Special Effect - Set Scale of (Last created special effect) to 1.80
      • Special Effect - Destroy (Last created special effect)
      • Custom script: call DestroyGroup(udg_ExplosiveCask_DamageGroup)
      • Custom script: call RemoveLocation(udg_ExplosiveCask_GetTargetPoint)
      • Custom script: call RemoveLocation(udg_ExplosiveCask_DummyTargetPoint[udg_AbilityIndexer])

BodySlam ExplosiveCask Move
  • BodySlam ExplosiveCask Move
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in BdSlmExpCask_KBGroup and do (Actions)
        • Loop - Actions
          • Set BdysSlmExpCask_PickedUnit = (Picked unit)
          • Set AbilityIndexer2 = (Custom value of BdysSlmExpCask_PickedUnit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (BdysSlmExpCask_PickedUnit is alive) Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BdSlmExpCask_KBTotalDistance[AbilityIndexer2] Greater than 0.00
                • Then - Actions
                  • Set BdSlmExpCask_KBLocI = (Position of BdysSlmExpCask_PickedUnit)
                  • Set BdSlmExpCask_KBLocII = (BdSlmExpCask_KBLocI offset by BdSlmExpCask_KBSpeed[AbilityIndexer2] towards BdSlmExpCask_KBAngle[AbilityIndexer2] degrees)
                  • Set BdSlmExpCask_KBTotalDistance[AbilityIndexer2] = (BdSlmExpCask_KBTotalDistance[AbilityIndexer2] - BdSlmExpCask_KBSpeed[AbilityIndexer2])
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • BodySlam_DashBool[AbilityIndexer2] Equal to True
                    • Then - Actions
                      • Unit - Move BdysSlmExpCask_PickedUnit instantly to BdSlmExpCask_KBLocII
                      • Set BodySlam_Points[1] = (BdSlmExpCask_KBLocI offset by 120.00 towards BdSlmExpCask_KBAngle[AbilityIndexer2] degrees)
                      • Set BodySlam_DashDmgGroup = (Units within 120.00 of BodySlam_Points[1])
                      • Unit Group - Pick every unit in BodySlam_DashDmgGroup and do (Actions)
                        • Loop - Actions
                          • Set BodySlam_DashDmgPicked = (Picked unit)
                          • Set AbilityIndexer2 = (Custom value of BodySlam_DashDmgPicked)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • And - All (Conditions) are true
                                • Conditions
                                  • (BodySlam_DashDmgPicked is alive) Equal to True
                                  • (BodySlam_DashDmgPicked is A structure) Equal to False
                                  • (BodySlam_DashDmgPicked is A flying unit) Equal to False
                                  • (BodySlam_DashDmgPicked is Magic Immune) Equal to False
                                  • (BodySlam_DashDmgPicked belongs to an enemy of (Owner of BdysSlmExpCask_PickedUnit)) Equal to True
                            • Then - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • BodySlam_Flag Equal to False
                                • Then - Actions
                                  • Special Effect - Create a special effect attached to the origin of BodySlam_TriggeringUnit using BodySlam_SFX[1]
                                  • Special Effect - Set Scale of (Last created special effect) to 2.00
                                  • Special Effect - Destroy (Last created special effect)
                                  • Unit - Order BdysSlmExpCask_PickedUnit to Attack (Random unit from BodySlam_DashDmgGroup)
                                  • Animation - Change BdysSlmExpCask_PickedUnit's animation speed to 100.00% of its original speed
                                  • Unit - Turn collision for BdysSlmExpCask_PickedUnit On
                                  • Unit Group - Remove BdysSlmExpCask_PickedUnit from BdSlmExpCask_KBGroup
                                  • Set BodySlam_Flag = True
                                • Else - Actions
                              • Set BodySlam_DashBool[AbilityIndexer] = False
                              • Set BodySlam_AbilityLevel = (Level of BodySlam_Ability for BdysSlmExpCask_PickedUnit)
                              • Set CalculateDamage = (BodySlam_BaseDamage[BodySlam_AbilityLevel] + ((Real((Intelligence of BdysSlmExpCask_PickedUnit (Include bonuses)))) x BodySlam_APScale))
                              • Set BodySlam_Points[2] = (Position of BodySlam_DashDmgPicked)
                              • Set BdSlmExpCask_KBTotalDistance[AbilityIndexer2] = 90.00
                              • Set BdSlmExpCask_KBSpeed[AbilityIndexer2] = 3.50
                              • Set BdSlmExpCask_KBAngle[AbilityIndexer2] = (Angle from BdSlmExpCask_KBLocI to BodySlam_Points[2])
                              • Unit - Cause BdysSlmExpCask_PickedUnit to damage BodySlam_DashDmgPicked, dealing CalculateDamage damage of attack type Magic and damage type Normal
                              • Unit Group - Add BodySlam_DashDmgPicked to BdSlmExpCask_KBGroup
                              • Special Effect - Create a special effect attached to the chest of BodySlam_DashDmgPicked using BodySlam_SFX[1]
                              • Special Effect - Destroy (Last created special effect)
                              • Custom script: call RemoveLocation(udg_BodySlam_Points[2])
                            • Else - Actions
                              • Set BodySlam_Flag = False
                      • Custom script: call RemoveLocation(udg_BodySlam_Points[1])
                      • Custom script: call DestroyGroup(udg_BodySlam_DashDmgGroup)
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Terrain pathing at BdSlmExpCask_KBLocII of type Walkability is off) Equal to True
                        • Then - Actions
                          • Unit - Turn collision for BdysSlmExpCask_PickedUnit On
                          • Unit Group - Remove BdysSlmExpCask_PickedUnit from BdSlmExpCask_KBGroup
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Number of units in BdSlmExpCask_KBGroup) Equal to 0
                            • Then - Actions
                              • Trigger - Turn off BodySlam ExplosiveCask Move <gen>
                            • Else - Actions
                        • Else - Actions
                          • Unit - Move BdysSlmExpCask_PickedUnit instantly to BdSlmExpCask_KBLocII
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • BodySlam_DashBool[AbilityIndexer2] Equal to True
                    • Then - Actions
                      • Special Effect - Create a special effect attached to the origin of BdysSlmExpCask_PickedUnit using Objects\Spawnmodels\Undead\ImpaleTargetDust\ImpaleTargetDust.mdl
                    • Else - Actions
                      • Special Effect - Create a special effect attached to the origin of BdysSlmExpCask_PickedUnit using Abilities\Weapons\AncientProtectorMissile\AncientProtectorMissile.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Custom script: call RemoveLocation(udg_BdSlmExpCask_KBLocI)
                  • Custom script: call RemoveLocation(udg_BdSlmExpCask_KBLocII)
                • Else - Actions
                  • Animation - Change BdysSlmExpCask_PickedUnit's animation speed to 100.00% of its original speed
                  • Unit - Turn collision for BdysSlmExpCask_PickedUnit On
                  • Unit Group - Remove BdysSlmExpCask_PickedUnit from BdSlmExpCask_KBGroup
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Number of units in BdSlmExpCask_KBGroup) Equal to 0
                    • Then - Actions
                      • Trigger - Turn off BodySlam ExplosiveCask Move <gen>
                    • Else - Actions
            • Else - Actions
              • Animation - Change BdysSlmExpCask_PickedUnit's animation speed to 100.00% of its original speed
              • Unit - Turn collision for BdysSlmExpCask_PickedUnit On
              • Unit Group - Remove BdysSlmExpCask_PickedUnit from BdSlmExpCask_KBGroup
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in BdSlmExpCask_KBGroup) Equal to 0
                • Then - Actions
                  • Trigger - Turn off BodySlam ExplosiveCask Move <gen>
                • Else - Actions



Spell Preview

[​IMG]


CREDITS:
=> Bribe for his amazing Damage Engine and GUI Unit Indexer
=> Modified Rolling Keg Missile model by JesusHipster
=> Modified Rolling Barrel Missile model by HammerFist132
=> Modified blue thunder clap model by DCrimson
=> Lifebloom model by Champara Bros


CHANGELOGS

• v1.0 - Release

• v1.5 - Changes made to all abilities.
--------- Happy Hour:
--------- >> Heal amount now configurable.
--------- >> Changed event from "Begins casting" to "Starts casting".
--------- >> Minor condition tweaks and removed a Do Nothing trigger.
--------- >> Fixed a bug where the heal will cast twice.
--------- >> Cooldown dummy now spawns with Unit Indexer event.

--------- Barrel Roll:
--------- >> Cask travel speed now configurable.
--------- >> Cask duration now configurable.
--------- >> Assigned proper variables to the cask dummy.
--------- >> Merged [Q Barrel Roll Start] and [Q Barrel Roll Damage Auto]

--------- Drunken Rage:
--------- >> Merged [W Drunken Rage Damage] and [W Drunken Rage DmgReduc]
--------- >> Fixed damage reduction math ( It used to reduce all damage to 5 )

--------- Body Slam:
--------- >> Dash speed increased from 23.00 to 25.00
--------- >> Gragas now stops when he dies mid-dash.

--------- Explosive Cask:
--------- >> Cask travel speed now configurable.
--------- >> Dead enemies are no longer knocked away from the impact.


• v1.8 - Ability ratios are now configurable. A few changes to Barrel Roll, Drunken Rage and Body Slam.
--------- Barrel Roll:
--------- >> Detonation effect size increased. (Just the sfx, not the range)

--------- Drunken Rage:
--------- >> Fixed damage reduction calculation.

--------- Body Slam:
--------- >> Unit Group detection now filters unit inside the group, making it easier to modify targets.



Keywords:
league of legends, lol, gragas, brewmaster, drunk, aoe, knockback
Contents

[LoL] Gragas Abilities Set (Map)

  1. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    I will upload previews later.

    Preview uploaded. Enjoy the spell guys!
     
    Last edited: Oct 6, 2019
  2. Devalut

    Devalut

    Joined:
    Feb 9, 2009
    Messages:
    1,255
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Looks awesome!
     
  3. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    Thanks!
     
  4. MyPad

    MyPad

    Spell Reviewer

    Joined:
    May 9, 2014
    Messages:
    1,445
    Resources:
    8
    Models:
    1
    Icons:
    2
    Maps:
    1
    Spells:
    3
    JASS:
    1
    Resources:
    8
    A rough review:

    It feels odd that the configurable parts of the spell sets are contained in the same trigger as the map exclusive creation of the demo unit. I suggest splitting each configurable part of each spell into their own triggers.

    Upon close inspection of the trigger
    P Happy Hour Detect
    , it appears that the bonus is applied before the caster even gets to start the effects of its' spell, making it abusable in certain conditions. Changing the event such that the trigger runs on the start of the effect instead of the moment the spell is casted (unit begins casting) would be viable. Also, the Do nothing option in the Else-Actions branch can be removed.

    Speaking of the Happy Hour ability, it's just something minor; why not use "less than" instead of "not equal to" comparator? Why hardcode the amount healed to just 6%, when it can be made configurable? Why heal the caster twice; once at the
    P Happy Hour Detect
    trigger, and another at the
    P Happy Hour Cast
    trigger?

    Instead of having to manually listen to the creation of a dummy unit in trigger
    P Happy Hour Dummy
    , why not opt to register to the index event provided by the Unit Indexer that's included in the script?

    Moving on to the Barrel Roll ability, the distance is computed based on a fixed value of 900, which coincides with the dummy ability given. Why not expose a variable that will hold said value, which will make it more convenient to update if one changes the missile speed in the dummy ability? (Even better, why not make it so that the variable reads the missile speed directly from the Object Data)

    On trigger
    Q Barrel Roll Start
    , after assigning (Last Created unit) to BarrelRoll_DamagePicked, you can just refer to BarrelRoll_DamagePicked when getting the index of the unit instead of having to waste a function call (Last Created unit) which will return the same thing. Also,
    Q Barrel Roll Start
    and
    Q Barrel Roll Damage Auto
    can be merged into one trigger. (Again, why is the expiration timer of the cask unit a hardcoded field? (not configurable))

    Now, with the Drunken Rage ability, merging the two triggers
    W Drunken Rage Damage
    and
    W Drunken Rage DmgReduc
    would be recommended, with each keeping their own logic intact.

    Considering only those above, the ability set would need an update.

    Awaiting Update
     
  5. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    Dang, that's a lot of things to update.
    How?
     
  6. MyPad

    MyPad

    Spell Reviewer

    Joined:
    May 9, 2014
    Messages:
    1,445
    Resources:
    8
    Models:
    1
    Icons:
    2
    Maps:
    1
    Spells:
    3
    JASS:
    1
    Resources:
    8
    By using the new natives related to Object Data manipulation. (If the version you have is 1.31+)

    This is one possible method:
    • Have a dummy unit hold the desired ability (via adding the ability)
    • Assign the variable to what would be read with the Object Data functions.
    • Remove the ability (and maybe the dummy unit).
    Hopefully, there should be an expanded list of functions in the ability section, or if there isn't, you can copy something like this:

    Code (vJASS):

    set <var>[<level>] = BlzGetAbilityRealLevelField(BlzGetUnitAbility(<dummy>, <abilityId>), ABILITY_RLF_<SOMETHING>, <level> - 1)
    set <var> = BlzGetAbilityIntegerField(BlzGetUnitAbility(<dummy>, <abilityId>), ABILITY_IF_<SOMETHING>)
     


    This would be a helpful constant:
    ABILITY_IF_MISSILE_SPEED


    I also attached a common.j file for browsing the list of available constants related to object data manipulation (Some are working, others aren't)
     

    Attached Files:

  7. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    • Custom script: set udg_BarrelRoll_CaskSpeed = BlzGetAbilityIntegerField(BlzGetUnitAbility(udg_BarrelRoll_TriggeringUnit, udg_BarrelRoll_Ability), ABILITY_IF_MISSILE_SPEED)

    This returns 0.000 for some reason. "BarrelRoll_TriggeringUnit" was a dummy unit created right above this custom script.
     
  8. MyPad

    MyPad

    Spell Reviewer

    Joined:
    May 9, 2014
    Messages:
    1,445
    Resources:
    8
    Models:
    1
    Icons:
    2
    Maps:
    1
    Spells:
    3
    JASS:
    1
    Resources:
    8
    That's because the ability code being used is not the dummy ability that actually throws the cask (which has the projectile speed). Try udg_BarrelRoll_DummyAbility instead as a parameter, ensuring that the BarrelRoll_TriggeringUnit is the dummy unit, and has the ability beforehand.
     
  9. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    Aah, that works.

    MAP UPDATED!

    • v1.5 - Changes made to all abilities.

    --------- Happy Hour:
    --------- >> Heal amount now configurable.
    --------- >> Changed event from "Begins casting" to "Starts casting".
    --------- >> Minor condition tweaks and removed a Do Nothing trigger.
    --------- >> Fixed a bug where the heal will cast twice.
    --------- >> Cooldown dummy now spawns with Unit Indexer event.

    --------- Barrel Roll:
    --------- >> Cask travel speed now configurable.
    --------- >> Cask duration now configurable.
    --------- >> Assigned proper variables to the cask dummy.
    --------- >> Merged
    Q Barrel Roll Start
    and
    Q Barrel Roll Damage Auto


    --------- Drunken Rage:
    --------- >> Merged
    W Drunken Rage Damage
    and
    W Drunken Rage DmgReduc

    --------- >> Fixed damage reduction math ( It used to reduce all damage to 5 )

    --------- Body Slam:
    --------- >> Dash speed increased from 23.00 to 25.00
    --------- >> Gragas now stops when he dies mid-dash.

    --------- Explosive Cask:
    --------- >> Cask travel speed now configurable.
    --------- >> Dead enemies are no longer knocked away from the impact.
     
  10. MyPad

    MyPad

    Spell Reviewer

    Joined:
    May 9, 2014
    Messages:
    1,445
    Resources:
    8
    Models:
    1
    Icons:
    2
    Maps:
    1
    Spells:
    3
    JASS:
    1
    Resources:
    8
    Noticed something odd about the damage reduction calculation in the current version.

    (For Drunken Rage)

    Damage reduction values per level are represented as decimals treated as percentages. (0.18 x 0.01 is 0.18% in practice, but was nominally 18%). As such, damage reduction computations often reduce too much damage, leaving it at a low threshold of 5 (a potentially-configurable part of the spell).

    Adding a bit more configurability to the percentages themselves would be desired, such as the following ability description would show:

    Configurable Percentages

    (+70% Ability Power)
    (+60% Ability Power)
    (+1%)


    The group handle
    BodySlam_DashDmgGroup
    could be optimized to filter the units inside the loop, instead of having to filter each unit on enumeration (matching unit equal to yadda yadda), in trigger
    BodySlam ExplosiveCask Move
     
  11. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    I've always find it weird how damage reduction is calculated. What should I do to make the math more precise?

    I know. But I used a condition that detects if the group has any units that matches the inserted conditions. If such, than the caster will stop dashing and damages enemies in his frontal vicinity. As far as I know, there's not much ways that you can detect if a group with desired conditions is empty or not without the use of Matching Units.
     
  12. MyPad

    MyPad

    Spell Reviewer

    Joined:
    May 9, 2014
    Messages:
    1,445
    Resources:
    8
    Models:
    1
    Icons:
    2
    Maps:
    1
    Spells:
    3
    JASS:
    1
    Resources:
    8
    My apologies for the late reply.

    First, BaseDamageRdc should be set to what would be the desired percentage in decimal representation. Something like this (10%):

    • Set DrunkenRage_BaseDmgRdc[1] = 0.10


    Then, upon calculating the amount of damage to be received, it should somewhat look like this:

    • Set CalculateDamage = (DrunkenRage_BaseDmgRdc[DrunkenRage_AbilityLevel] + ((Real((Intelligence of DrunkenRage_TriggeringUnit (Include bonuses)))) x 0.01))


    A possible approach for this would be to do what was previously suggested above. If at least 1 unit passes the filter, then the usual stuff dealing with collision would be enforced, and a flag variable will be set to not repeat the process again, only being reset outside the loop. It will look like this:

    • Set BodySlam_DashDmgGroup = (Units within 120.00 of BodySlam_Points[1])
    • Unit Group - Pick every unit in BodySlam_DashDmgGroup and do (Actions)
      • Loop - Actions
        • Set BodySlam_DashDmgPicked = (Picked unit)
        • Set AbilityIndexer = (Custom value of BodySlam_DashDmgPicked)
        • If (All Conditions Are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • <Insert Conditions here>
          • Then - Actions
            • If <flag variable not flagged yet> then
              • Do Something with Special Effect and Collision
              • Flag the variable
            • Set BodySlam_Points[2] = (Position of BodySlam_DashDmgPicked)
            • Set BdSlmExpCask_KBTotalDistance[AbilityIndexer] = 90.00
            • Set BdSlmExpCask_KBSpeed[AbilityIndexer] = 3.50
            • Set BdSlmExpCask_KBAngle[AbilityIndexer] = (Angle from BdSlmExpCask_KBLocI to BodySlam_Points[2])
            • Unit - Cause BdysSlmExpCask_PickedUnit to damage BodySlam_DashDmgPicked, dealing CalculateDamage damage of attack type Magic and damage type Normal
            • Unit Group - Add BodySlam_DashDmgPicked to BdSlmExpCask_KBGroup
            • Special Effect - Create a special effect attached to the chest of BodySlam_DashDmgPicked using BodySlam_SFX[1]
            • Special Effect - Destroy (Last created special effect)
            • Custom script: call RemoveLocation(udg_BodySlam_Points[2])
          • <unflag flag variable>
     
  13. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    What's a flag variable?
     
  14. Pyrogasm

    Pyrogasm

    Joined:
    Feb 27, 2007
    Messages:
    3,788
    Resources:
    1
    Spells:
    1
    Resources:
    1
    A boolean you set to true/false to indicate something did or didn't happen.
     
  15. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    I see. Do I need to index the flag or not?
     
  16. MyPad

    MyPad

    Spell Reviewer

    Joined:
    May 9, 2014
    Messages:
    1,445
    Resources:
    8
    Models:
    1
    Icons:
    2
    Maps:
    1
    Spells:
    3
    JASS:
    1
    Resources:
    8
    Nope. It's instantaneous, so one global variable will suffice.
     
  17. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    MAP UPDATED!

    • v1.8 - Ability ratios are now configurable. A few changes to Barrel Roll, Drunken Rage and Body Slam.

    --------- Barrel Roll:
    --------- >> Detonation effect size increased. (Just the sfx, not the range)

    --------- Drunken Rage:
    --------- >> Fixed damage reduction calculation.

    --------- Body Slam:
    --------- >> Unit Group detection now filters unit inside the group, making it easier to modify targets.
     
  18. xYours Trulyx

    xYours Trulyx

    Joined:
    Jan 9, 2016
    Messages:
    1,344
    Resources:
    7
    Models:
    5
    Maps:
    1
    Spells:
    1
    Resources:
    7
    @MyPad

    Uhh, any new reviews on the spell?
     
  19. MyPad

    MyPad

    Spell Reviewer

    Joined:
    May 9, 2014
    Messages:
    1,445
    Resources:
    8
    Models:
    1
    Icons:
    2
    Maps:
    1
    Spells:
    3
    JASS:
    1
    Resources:
    8
    A worthy spellpack addition to the Hive's collection of resources.

    Approved