• 🏆 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!

Dota Ultimates [01] - Sand King and Kunkka

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: Forsaken and ILH
:fp: About:
This is one little pack with two dota ultimates, epicenter of sand king and ghost ship of kunkka. ALL SPELLS IN MUI.

:fp: Credits:
Felipe Gormadoc (For Spellpack)
Blizzard Entertainment (For WE Engine)
Mc ! (For Pool Model)


Give Credits For Use it

Keywords:
Kunkka, Sand, King, Ult, Epicenter, Ghost, Ship, Dota, Dota, 2, Spells, Spell, Ultimate, Ult, Pirate, Sea, Water, Earth, Explosion, Shock, Collision,
Contents

Kunkka and Sand King Ultimates (Map)

Reviews
IcemanBo: Too long as NeedsFix. Rejected. 13:37, 5th May 2014 BPower: http://www.hiveworkshop.com/forums/spells-569/dota-ultimates-01-sand-king-kunkka-250926/index2.html#post2522566

Moderator

M

Moderator

IcemanBo: Too long as NeedsFix. Rejected.

13:37, 5th May 2014
BPower:
http://www.hiveworkshop.com/forums/spells-569/dota-ultimates-01-sand-king-kunkka-250926/index2.html#post2522566
 

  • Geral Settings
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- OBS: The array of the variables corresponds to the level of skill. --------
      • -------- OBS: If increasing the ShipDistance, recalculate the time to stun. --------
      • -------- --------------------------------------------------------------------------- --------
      • -------- Epicenter Settings---------------------------------------------- --------
      • -------- --------------------------------------------------------------------------- --------
      • Set SKsettings_PulseNumber[1] = 6
      • Set SKsettings_PulseNumber[2] = 8
      • Set SKsettings_PulseNumber[3] = 10
      • -------- --------------------------------------------------------------------------- --------
      • -------- Ghost Ship Settings-------------------------------------------- --------
      • -------- --------------------------------------------------------------------------- --------
      • Set KKsettings_Damage[1] = 50.00
      • Set KKsettings_Damage[2] = 100.00
      • Set KKsettings_Damage[3] = 150.00
      • -------- --------------------------------------------------------------------------- --------
      • Set KKsettings_ShipSpeed[1] = 17.00
      • Set KKsettings_ShipSpeed[2] = 17.00
      • Set KKsettings_ShipSpeed[3] = 17.00
      • -------- --------------------------------------------------------------------------- --------
      • Set KKsettings_ShipDistance[1] = 1000.00
      • Set KKsettings_ShipDistance[2] = 1000.00
      • Set KKsettings_ShipDistance[3] = 1000.00
      • -------- --------------------------------------------------------------------------- --------
  • SK Epicenter
    • Events
      • Unit - A unit Finishes casting an ability
    • Conditions
      • (Ability being cast) Equal to Epicenter
    • Actions
      • Set SKepicentro_Index = (SKepicentro_Index + 1)
      • Set SKepicentro_Count = (SKepicentro_Count + 1)
      • Set SKepicentro_Boolean[SKepicentro_Index] = True
      • Set Skepicentro_Caster[SKepicentro_Index] = (Triggering unit)
      • Set Skepicentro_PositionCaster[SKepicentro_Index] = (Position of Skepicentro_Caster[SKepicentro_Index])
      • Unit - Create 1 Dummy [epicenter] for (Owner of Skepicentro_Caster[SKepicentro_Index]) at Skepicentro_PositionCaster[SKepicentro_Index] facing Default building facing degrees
      • Set SKepicentro_Dummy[SKepicentro_Index] = (Last created unit)
      • Unit - Order SKepicentro_Dummy[SKepicentro_Index] to Human Mountain King - Thunder Clap
      • Set Skepicentro_PulseCount[SKepicentro_Index] = 0
      • Custom script: call RemoveLocation(udg_Skepicentro_PositionCaster[udg_SKepicentro_Index])
      • Trigger - Turn on SK Epicenter Periodic <gen>
  • SK Epicenter Periodic
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
    • Actions
      • For each (Integer SKepicentro_Loop) from 1 to SKepicentro_Index, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SKepicentro_Boolean[SKepicentro_Loop] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Skepicentro_PulseCount[SKepicentro_Loop] Less than SKsettings_PulseNumber[(Level of Epicenter for Skepicentro_Caster[SKepicentro_Loop])]
                • Then - Actions
                  • Set Skepicentro_PositionCaster[SKepicentro_Loop] = (Position of Skepicentro_Caster[SKepicentro_Loop])
                  • Unit - Move SKepicentro_Dummy[SKepicentro_Loop] instantly to Skepicentro_PositionCaster[SKepicentro_Loop]
                  • Unit - Order SKepicentro_Dummy[SKepicentro_Loop] to Human Mountain King - Thunder Clap
                  • Custom script: call RemoveLocation(udg_Skepicentro_PositionCaster[udg_SKepicentro_Loop])
                  • Set Skepicentro_PulseCount[SKepicentro_Loop] = (Skepicentro_PulseCount[SKepicentro_Loop] + 1)
                • Else - Actions
                  • Set Skepicentro_PulseCount[SKepicentro_Loop] = 0
                  • Unit - Remove SKepicentro_Dummy[SKepicentro_Loop] from the game
                  • Set SKepicentro_Boolean[SKepicentro_Loop] = False
                  • Set SKepicentro_Count = (SKepicentro_Count - 1)
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SKepicentro_Count Equal to 0
        • Then - Actions
          • Set SKepicentro_Index = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions
  • KK Ghost Ship
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Ghost Ship
    • Actions
      • Set KKghostship_Index = (KKghostship_Index + 1)
      • Set KKghostship_Count = (KKghostship_Count + 1)
      • Set KKghostship_Boolean[KKghostship_Index] = True
      • Set KKghostship_Caster[KKghostship_Index] = (Triggering unit)
      • -------- Set Angle --------
      • Set KKghostship_Point01[KKghostship_Index] = (Position of KKghostship_Caster[KKghostship_Index])
      • Set KKghostship_Point02[KKghostship_Index] = (Target point of ability being cast)
      • Set KKghostship_Angle[KKghostship_Index] = (Angle from KKghostship_Point01[KKghostship_Index] to KKghostship_Point02[KKghostship_Index])
      • Custom script: call RemoveLocation(udg_KKghostship_Point02[udg_KKghostship_Index])
      • -------- Set Dummy SHIP --------
      • Set KKghostship_Point02[KKghostship_Index] = (KKghostship_Point01[KKghostship_Index] offset by -500.00 towards KKghostship_Angle[KKghostship_Index] degrees)
      • Unit - Create 1 Dummy [ship] for Player 1 (Red) at KKghostship_Point02[KKghostship_Index] facing KKghostship_Angle[KKghostship_Index] degrees
      • Set KKghostship_DummySHIP[KKghostship_Index] = (Last created unit)
      • Custom script: call RemoveLocation(udg_KKghostship_Point02[udg_KKghostship_Index])
      • -------- Set Collision Point --------
      • Set KKghostship_Point02[KKghostship_Index] = (KKghostship_Point01[KKghostship_Index] offset by KKsettings_ShipDistance[(Level of Ghost Ship for KKghostship_Caster[KKghostship_Index])] towards KKghostship_Angle[KKghostship_Index] degrees)
      • Animation - Change KKghostship_DummySHIP[KKghostship_Index]'s vertex coloring to (75.00%, 75.00%, 100.00%) with 60.00% transparency
      • Unit - Create 1 Dummy [pool] for Player 1 (Red) at KKghostship_Point02[KKghostship_Index] facing Default building facing degrees
      • Set KKghostship_DummyPOOL[KKghostship_Index] = (Last created unit)
      • -------- Start Periodic --------
      • Custom script: call RemoveLocation(udg_KKghostship_Point01[udg_KKghostship_Index])
      • Unit - Order KKghostship_DummyPOOL[KKghostship_Index] to Undead Dreadlord - Inferno KKghostship_Point02[KKghostship_Index]
      • Trigger - Turn on KK Ghost Ship Periodic <gen>
  • KK Ghost Ship Periodic
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer KKghostship_LoopMUI) from 1 to KKghostship_Index, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • KKghostship_Boolean[KKghostship_LoopMUI] Equal to True
            • Then - Actions
              • Set KKghostship_Point01[KKghostship_LoopMUI] = (Position of KKghostship_DummySHIP[KKghostship_LoopMUI])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Distance between KKghostship_Point01[KKghostship_LoopMUI] and KKghostship_Point02[KKghostship_LoopMUI]) Less than or equal to 100.00
                • Then - Actions
                  • Custom script: call RemoveLocation(udg_KKghostship_Move[udg_KKghostship_LoopMUI])
                  • Custom script: call RemoveLocation(udg_KKghostship_Point01[udg_KKghostship_LoopMUI])
                  • Unit - Kill KKghostship_DummySHIP[KKghostship_LoopMUI]
                  • Unit - Add a 5.00 second Generic expiration timer to KKghostship_DummySHIP[KKghostship_LoopMUI]
                  • Unit - Remove KKghostship_DummyPOOL[KKghostship_LoopMUI] from the game
                  • Custom script: set bj_wantDestroyGroup = true
                  • Unit Group - Pick every unit in (Units within 425.00 of KKghostship_Point02[KKghostship_LoopMUI] matching (((Matching unit) belongs to an enemy of (Owner of KKghostship_Caster[KKghostship_LoopMUI])) Equal to True)) and do (Actions)
                    • Loop - Actions
                      • Unit - Cause KKghostship_Caster[KKghostship_LoopMUI] to damage (Picked unit), dealing KKsettings_Damage[(Level of Ghost Ship for KKghostship_Caster[KKghostship_LoopMUI])] damage of attack type Spells and damage type Normal
                  • Set KKghostship_Boolean[KKghostship_LoopMUI] = False
                  • Set KKghostship_Count = (KKghostship_Count - 1)
                • Else - Actions
                  • Set KKghostship_Move[KKghostship_LoopMUI] = (KKghostship_Point01[KKghostship_LoopMUI] offset by KKsettings_ShipSpeed[(Level of Ghost Ship for KKghostship_Caster[KKghostship_LoopMUI])] towards KKghostship_Angle[KKghostship_LoopMUI] degrees)
                  • Unit - Move KKghostship_DummySHIP[KKghostship_LoopMUI] instantly to KKghostship_Move[KKghostship_LoopMUI], facing KKghostship_Angle[KKghostship_LoopMUI] degrees
                  • Custom script: call RemoveLocation(udg_KKghostship_Move[udg_KKghostship_LoopMUI])
                  • Custom script: call RemoveLocation(udg_KKghostship_Point01[udg_KKghostship_LoopMUI])
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • KKghostship_Count Equal to 0
        • Then - Actions
          • Set KKghostship_Index = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions
 
Last edited:
@DIMF indeed. Though chances may be rare (since why the hell would there be 8000 instances of a spell active within 10s), it's better to be safe.

Oh, and Thunder Clap uses terrain deformations. Triggered area damage is better. :wink:

then u said about the spells? NOT about the setting trigger.

Yes, most likely.
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
@DIMF indeed. Though chances may be rare (since why the hell would there be 8000 instances of a spell active within 10s), it's better to be safe.

With current indexing it does not have to be 8192 indexes within 10 seconds. That would break the new indexing method.
With this way all that needs to happen to break the index limit is 1 spell instance created before the all others end. So if spell is cast once every second it will break the limit in 8192 seconds. Although it is small think about a spell being used a lot of times. Looping through all of those unused indexes is costly and pointless.

well... '-'
then u said about the spells? NOT about the setting trigger.
correct?

The settings trigger looks ok.
Your timer should run every .03 or .04 seconds not .5 seconds.
Fix the major part then worry about the small stuff.
 
@DIMF indeed. Though chances may be rare (since why the hell would there be 8000 instances of a spell active within 10s), it's better to be safe.

Oh, and Thunder Clap uses terrain deformations. Triggered area damage is better. :wink:



Yes, most likely.

Thanks for your comment:grin:, and you made ​​a good observation about the thunder clap, but if u note the ultimate of sand king in dota 1 or 2 u can see that the earth deform, I wanted to make it as similar as possible :thumbs_up:

The settings trigger looks ok.
Your timer should run every .03 or .04 seconds not .5 seconds.
Fix the major part then worry about the small stuff.

Now i can understand what u said, I will correct as soon as possible.
But I'm curious, why i can use 0.03/0.04/1.00 but i cant use 0.05
 
Level 19
Joined
Mar 18, 2012
Messages
1,716
Please take a look into this tutorial: Dynamic indexing
You should check if a trigger is already activated, this can be done via an integer comparison of the current index. You'll find all information in the tutorial I linked here.

  • udg_Skepicentro_PositionCaster
doesn't have to be of type array. A non array point variable is enough.

You could store the level of epicenter into a variable.

You could use just one dummy caster for the whole game season.

The configuration trigger is lacking. Missing variables are ability, damage type, attack type, aoe
I haven't check the seetings ingame, but I want to remember you that a proper tooltip is also part of a complete spell submission.
 
Top