• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Leviathan the Tide Hunter spells v1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: deepstrasz
This spells created by me, they're similar to DotA hero {Tidehunter}.
The spells are GUI and MUI.

Please give me credits if you used it.
BY Storm_hih

Triggers:

1.Gush

  • Events
    • Unit - A unit Starts the effect of an ability
  • Conditions
    • (Ability being cast) Equal to Gush
  • Actions
    • Set GushUnit = (Triggering unit)
    • Set GushTarget = (Target unit of ability being cast)
    • Set GushPoint = (Position of (Target unit of ability being cast))
    • Unit - Cause GushUnit to damage GushTarget, dealing (60.00 + (50.00 x (Real((Level of Gush for GushUnit))))) damage of attack type Magic and damage type Universal
    • Unit - Create 1 Dummy Gush for (Owner of GushUnit) at GushPoint facing Default building facing degrees
    • Set GushDummy = (Last created unit)
    • Unit - Add Gush Armor to GushDummy
    • Unit - Set level of Gush Armor for GushDummy to (Level of Gush for GushUnit)
    • Unit - Add a 1.00 second Generic expiration timer to GushDummy
    • Unit - Order GushDummy to Undead Necromancer - Cripple GushTarget
    • Custom script: call RemoveLocation (udg_GushPoint)


2.Kraken Shell Learn

  • Events
    • Unit - A unit Learns a skill
  • Conditions
    • (Learned Hero Skill) Equal to Kraken Shell
    • ((Learning Hero) is in KrakenGroup) Not equal to True
  • Actions
    • Unit Group - Add (Learning Hero) to KrakenGroup
    • Set KrakenCount = (KrakenCount + 1)
    • Unit - Set the custom value of (Learning Hero) to KrakenCount
    • Trigger - Add to Kraken <gen> the event (Unit - (Learning Hero) Takes damage)


2.Kraken Shell Damage Checking

  • Events
  • Conditions
  • Actions
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • KrakenDamageCount[(Custom value of (Triggering unit))] Less than 600.00
      • Then - Actions
        • Set KrakenDamageCount[(Custom value of (Triggering unit))] = (KrakenDamageCount[(Custom value of (Triggering unit))] + (Damage taken))
        • Set KrakenCounterStart[(Custom value of (Triggering unit))] = 1
        • Set KrakenTimeCounter[(Custom value of (Triggering unit))] = 0.00
      • Else - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • KrakenDamageCount[(Custom value of (Triggering unit))] Greater than or equal to 600.00
          • Then - Actions
            • Unit - Remove Negative buffs considered Magic or physical from (Triggering unit) (Include expiration timers, Include auras)
            • Special Effect - Create a special effect attached to the chest of (Triggering unit) using Objects\Spawnmodels\Naga\NagaDeath\NagaDeath.mdl
            • Special Effect - Destroy (Last created special effect)
            • Set KrakenCounterStart[(Custom value of (Triggering unit))] = 0
            • Set KrakenTimeCounter[(Custom value of (Triggering unit))] = 0.00
            • Set KrakenDamageCount[(Custom value of (Triggering unit))] = 0.00
          • Else - Actions


3.Kraken Shell Timer

  • Events
    • Time - Every 0.03 seconds of game time
  • Conditions
  • Actions
    • For each (Integer A) from 1 to KrakenCount, do (Actions)
      • Loop - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • KrakenTimeCounter[(Integer A)] Greater than or equal to 6.00
          • Then - Actions
            • Set KrakenDamageCount[(Integer A)] = 0.00
            • Set KrakenTimeCounter[(Integer A)] = 0.00
            • Set KrakenCounterStart[(Integer A)] = 0
          • Else - Actions
            • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • KrakenTimeCounter[(Integer A)] Less than 6.00
                • KrakenCounterStart[(Integer A)] Not equal to 0
              • Then - Actions
                • Set KrakenTimeCounter[(Integer A)] = (KrakenTimeCounter[(Integer A)] + 0.03)
              • Else - Actions


4.Anchor Smash Damage

  • Events
    • Unit - A unit Starts the effect of an ability
  • Conditions
    • (Ability being cast) Equal to Anchor Smash
  • Actions
    • Set AnchorPoint = (Position of (Triggering unit))
    • Set AnchorGroup = (Units within 400.00 of AnchorPoint matching ((((Matching unit) is A structure) Not equal to True) and ((((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True) and (((Matching unit) Not equal to (Triggering unit)) and (((Matching
    • Unit Group - Pick every unit in AnchorGroup and do (Actions)
      • Loop - Actions
        • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Other\CrushingWave\CrushingWaveDamage.mdl
        • Special Effect - Destroy (Last created special effect)
        • Unit - Cause (Casting unit) to damage (Picked unit), dealing (25.00 + (50.00 x (Real((Level of Anchor Smash for (Casting unit)))))) damage of attack type Hero and damage type Universal
    • Custom script: call DestroyGroup (udg_AnchorGroup)
    • Custom script: call RemoveLocation (udg_AnchorPoint)


5.Ravage

  • Events
    • Unit - A unit Starts the effect of an ability
  • Conditions
    • (Ability being cast) Equal to Ravage
  • Actions
    • Set RavageUnit = (Triggering unit)
    • Set RavagePoint = (Position of RavageUnit)
    • For each (Integer A) from 1 to 16, do (Actions)
      • Loop - Actions
        • Unit - Create 1 Dummy Ravage for (Owner of RavageUnit) at RavagePoint facing (22.50 x (Real((Integer A)))) degrees
        • Set RavageDummy[(Integer A)] = (Last created unit)
        • Unit - Add Ravage to RavageDummy[(Integer A)]
        • Unit - Set level of Ravage for RavageDummy[(Integer A)] to (Level of Ravage for RavageUnit)
        • Unit - Add a 1.60 second Generic expiration timer to RavageDummy[(Integer A)]
        • Set RavageDummyPoint[(Integer A)] = (RavagePoint offset by 600.00 towards (22.50 x (Real((Integer A)))) degrees)
        • Unit - Order RavageDummy[(Integer A)] to Undead Crypt Lord - Impale RavageDummyPoint[(Integer A)]
        • Custom script: call RemoveLocation (udg_RavageDummyPoint[GetForLoopIndexA()])
    • Custom script: call RemoveLocation (udg_RavagePoint)


6.Ravage Stun

  • Events
    • Time - Every 0.05 seconds of game time
  • Conditions
  • Actions
    • Set RavageGroup = (Units in (Playable map area) matching (((Matching unit) has buff Ravage Dummy ) Equal to True))
    • Unit Group - Pick every unit in RavageGroup and do (Actions)
      • Loop - Actions
        • Set RavagePlayer = (Player group((Owner of (Picked unit))))
        • Set RavageTarget = (Picked unit)
        • Set RavageTargetPoint = (Position of RavageTarget)
        • Unit - Create 1 Dummy Ravage for (Owner of (Picked unit)) at RavageTargetPoint facing Default building facing degrees
        • Set RavageStunDummy = (Last created unit)
        • Unit - Add a 1.00 second Generic expiration timer to RavageStunDummy
        • Unit - Add Ravage Stun to RavageStunDummy
        • Unit - Set level of Ravage Stun for RavageStunDummy to (Level of Ravage for RavageStunDummy)
        • Unit - Order RavageStunDummy to Neutral - Firebolt (Picked unit)
        • Custom script: call RemoveLocation (udg_RavageTargetPoint)
        • Custom script: call DestroyForce(udg_RavagePlayer)
    • Custom script: call DestroyGroup (udg_RavageGroup)


7.Dummy Clear

  • Events
    • Unit - A unit Dies
  • Conditions
    • ((Unit-type of (Dying unit)) Equal to Dummy Gush) or ((Unit-type of (Dying unit)) Equal to Dummy Ravage)
  • Actions
    • Unit - Remove (Dying unit) from the game
Contents

Tide Hunter Spells By Storm_hih (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 16:20, 17th Jul 2012 Magtheridon96: You shouldn't use Custom value. Custom value is reserved for unit indexers. Like Maker said, imagine if all spells and systems used custom values...

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

16:20, 17th Jul 2012
Magtheridon96:

  • You shouldn't use Custom value. Custom value is reserved for unit indexers. Like Maker said, imagine if all spells and systems used custom values. None of them would work.
  • Try as much as you can to reduce the number of function calls you have and use variables wherever possible. For example:
    • Set GushTarget = (Target unit of ability being cast)
    • Set GushPoint = (Position of (Target unit of ability being cast))
    This trigger snippet can simply be this:
    • Set GushTarget = (Target unit of ability being cast)
    • Set GushPoint = (Position of GushTarget)
  • Learning hero -> Triggering unit
  • Use Bribe's Damage Engine to detect damage because it's not good to have your own mini-damage detection inside one spell rather than having one system that will do everything for all spells and systems.
  • Use Bribe's Unit Indexer instead of setting the custom values. Bribe's unit indexer will set custom values for you, so each unit will have a unique index. This way, you could attach data to a unit by creating an array and using the custom value of that unit as an array index.
  • NEVER use (Integer A). Use your own integer. (Integer A) will most certainly bug everything in your map if you don't use it right.

There's a lot of room for improvement here :/
 
You could use a unit indexer like Bribe's Unit Indexer for GUI.

This way, you wouldn't set the custom value of a unit, but you would use the custom value as an index for your arrays because it would set the custom value of each unit to a unique integer everytime a unit enters the map. It also recycles Ids when a unit leaves the map.
 
About the stun, since you apply it every now and then, if for example I get buffed by a spell which acts like Omni's repel after getting stunned, then I won't be stunned anymore right?

Anyway, where did you use RavagePlayer? If you planned to use it for the owner part in the dummy creation, then it should be a Player type, not a player group type...

and you might wanna use a global group then just clear it after usage rather than creating and destroying groups every now and then...

and instead of default facing, you might just want to use 270.0 (because the default facing returns that value)
 
I think you should find a way to turn off the trigger when it is not needed... because right now it will still run even if no one will be using ravage...

and

Adiktuz said:
Anyway, where did you use RavagePlayer? If you planned to use it for the owner part in the dummy creation, then it should be a Player type, not a player group type...

and you might wanna use a global group then just clear it after usage rather than creating and destroying groups every now and then...

and instead of default facing, you might just want to use 270.0 (because the default facing returns that value)
 
Top