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

Cataclysm v1.2 [IMPROVED TO THE MAX]

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
x3GlikE Presents;
Cataclysm
IMPROVED
Cataclysm

Slow:
-Attack Speed : 0.25/0.35/0.45
-Movement Speed : 0.50/0.60/0.70
Yozshura pumps himself full of blood and rage making him jump to targeted location slamming down with such force that rocks fly up. Making a circle of unbreakable rock blocking units from going in or out. Units trapped are slowed.
Rocks last 10 seconds.

  • Int
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set Int_Cataclysm_Hashtable = (Last created hashtable)
      • -------- ------------------------------ --------
      • -------- Jump System --------
      • Set JDA_JumpHigh_Distance = 1.00
      • Set JDA_DestroyTrees_Dash = True
      • Set JDA_Speed = 10.00
      • Set JDA_SpecialEffect = Abilities\Spells\Other\Volcano\VolcanoMissile.mdl
      • -------- ------------------------------ --------
      • -------- Settings --------
      • Set Int_Cataclysm_Unit[1] = Rock
      • Set Int_Cataclysm_Unit[2] = Cataclysm_Dummy2
      • Set Int_Cataclysm_Duration = 10.00
      • Set Int_Cataclysm_UnitsN = 15
      • -------- ------------------------------ --------
  • Cataclysm
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Cataclysm
    • Actions
      • -------- ------------------------------ --------
      • Set JDA_TargetPoint = (Target point of ability being cast)
      • Set JDA_Unit = (Triggering unit)
      • Trigger - Run Jump System 1 <gen> (checking conditions)
      • Set Int_Cataclysm_Temppoint[1] = (Target point of ability being cast)
      • Set Int_Cataclysm_Player = (Triggering player)
      • -------- ------------------------------ --------
      • -------- Hashtables --------
      • Unit - Create 1 Int_Cataclysm_Unit[2] for Int_Cataclysm_Player at Int_Cataclysm_Temppoint[1] facing Default building facing degrees
      • Unit - Add a Int_Cataclysm_Duration second Generic expiration timer to (Last created unit)
      • Set Int_Cataclysm_ID = (Last created unit)
      • Hashtable - Save Int_Cataclysm_Duration as (Key time) of (Key Int_Cataclysm_ID) in Int_Cataclysm_Hashtable
      • Hashtable - Save Handle OfInt_Cataclysm_Temppoint[1] as (Key point1) of (Key Int_Cataclysm_ID) in Int_Cataclysm_Hashtable
      • Hashtable - Save Handle OfInt_Cataclysm_Player as (Key player) of (Key Int_Cataclysm_ID) in Int_Cataclysm_Hashtable
      • Hashtable - Save (Level of (Ability being cast) for (Triggering unit)) as (Key spell_level) of (Key Int_Cataclysm_ID) in Int_Cataclysm_Hashtable
      • -------- ------------------------------ --------
      • Unit Group - Add (Last created unit) to Int_Cataclysm_Dummy
      • -------- ------------------------------ --------
      • -------- ------------------------------ --------
      • For each (Integer A) from 1 to Int_Cataclysm_UnitsN, do (Actions)
        • Loop - Actions
          • Set Int_Cataclysm_Temppoint[2] = (Int_Cataclysm_Temppoint[1] offset by 350.00 towards ((360.00 / (Real(Int_Cataclysm_UnitsN))) x (Real((Integer A)))) degrees)
          • Unit - Create 1 Int_Cataclysm_Unit[1] for Int_Cataclysm_Player at Int_Cataclysm_Temppoint[2] facing Default building facing degrees
          • Unit - Add a Int_Cataclysm_Duration second Generic expiration timer to (Last created unit)
          • Special Effect - Create a special effect at Int_Cataclysm_Temppoint[2] using Abilities\Spells\Other\Volcano\VolcanoDeath.mdl
          • Special Effect - Destroy (Last created special effect)
          • -------- ------------------------------ --------
          • -------- Remove Leaks --------
          • Custom script: call RemoveLocation(udg_Int_Cataclysm_Temppoint[2])
          • -------- ------------------------------ --------
      • -------- ------------------------------ --------
      • -------- Fall effect --------
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick every unit in (Units within 350.00 of Int_Cataclysm_Temppoint[1] matching ((((Matching unit) is A ground unit) Equal to True) and (((Matching unit) belongs to an enemy of Int_Cataclysm_Player) Equal to True))) and do (Actions)
        • Loop - Actions
          • Set Int_Cataclysm_Temppoint[2] = (Position of (Picked unit))
          • Animation - Play (Picked unit)'s decay flesh animation
          • Special Effect - Create a special effect at Int_Cataclysm_Temppoint[2] using Abilities\Spells\Orc\MirrorImage\MirrorImageDeathCaster.mdl
          • Special Effect - Destroy (Last created special effect)
          • -------- ------------------------------ --------
          • -------- Remove Leaks --------
          • Custom script: call RemoveLocation(udg_Int_Cataclysm_Temppoint[2])
          • -------- ------------------------------ --------
      • Trigger - Turn on Cataclysm Loop <gen>
      • -------- ------------------------------ --------
      • -------- Remove Leaks --------
      • Custom script: call RemoveLocation(udg_Int_Cataclysm_Temppoint[1])
      • -------- ------------------------------ --------
  • Cataclysm Loop
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Int_Cataclysm_Dummy and do (Actions)
        • Loop - Actions
          • -------- ------------------------------ --------
          • -------- Settings --------
          • Set Int_Cataclysm_ID = (Picked unit)
          • Set Int_Cataclysm_Duration = (Load (Key time) of (Key (Picked unit)) from Int_Cataclysm_Hashtable)
          • Set Int_Cataclysm_Temppoint[1] = (Load (Key point1) of (Key (Picked unit)) in Int_Cataclysm_Hashtable)
          • Set Int_Cataclysm_Player = (Load (Key player) of (Key (Picked unit)) in Int_Cataclysm_Hashtable)
          • Set Int_Cataclysm_SpellLevel = (Load (Key spell_level) of (Key (Picked unit)) from Int_Cataclysm_Hashtable)
          • -------- ------------------------------ --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Int_Cataclysm_Duration Greater than 0.00
            • Then - Actions
              • -------- ------------------------------ --------
              • Set PickedLoc = (Position of (Picked unit))
              • Hashtable - Save (Int_Cataclysm_Duration - 1.00) as (Key time) of (Key Int_Cataclysm_ID) in Int_Cataclysm_Hashtable
              • Custom script: set bj_wantDestroyGroup = true
              • Unit Group - Pick every unit in (Units within 350.00 of PickedLoc matching ((((Matching unit) is A ground unit) Equal to True) and (((Matching unit) belongs to an enemy of Int_Cataclysm_Player) Equal to True))) and do (Actions)
                • Loop - Actions
                  • -------- ------------------------------ --------
                  • -------- Do not touch --------
                  • Set Int_Cataclysm_Temppoint[2] = (Position of (Picked unit))
                  • Unit - Create 1 Int_Cataclysm_Unit[2] for Int_Cataclysm_Player at Int_Cataclysm_Temppoint[2] facing Default building facing degrees
                  • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
                  • Unit - Set level of Cataclysm_Dummy_slow for (Last created unit) to (1 x Int_Cataclysm_SpellLevel)
                  • Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)
                  • -------- ------------------------------ --------
                  • -------- Remove Leaks --------
                  • Custom script: call RemoveLocation(udg_Int_Cataclysm_Temppoint[2])
                  • -------- ------------------------------ --------
              • Custom script: call RemoveLocation(udg_PickedLoc)
              • -------- ------------------------------ --------
              • -------- Remove Leaks --------
              • Custom script: call RemoveLocation(udg_Int_Cataclysm_Temppoint[1])
              • -------- ------------------------------ --------
            • Else - Actions
              • -------- ------------------------------ --------
              • -------- Remove --------
              • Hashtable - Clear all child hashtables of child (Key Int_Cataclysm_ID) in Int_Cataclysm_Hashtable
              • Unit Group - Remove (Picked unit) from Int_Cataclysm_Dummy
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Int_Cataclysm_Dummy is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
              • -------- ------------------------------ --------

Note: This is the first hashtables spell I made so if theres any thing wrong please try and help me improve my skills.
Special Thanks;
defskull
Log

v1.2 -Fixed Code
v1.1 -New Test Map
-Fixed Code
v1.0 First release
Keywords:
x3GlikE owned defskull but thanks him for helping him with this spell
Contents

Cataclysm v1.2 (Map)

Reviews
12.12 IcemanBo: For long time as NeedsFix. Rejected. Bribe Set Int_Cataclysm_Player = (Owner of (Triggering unit)) -> (Triggering player)... and reference this variable instead of calling (Triggering player repeatedly) (Casting unit) ->...

Moderator

M

Moderator

12.12
IcemanBo: For long time as NeedsFix. Rejected.

Bribe

Set Int_Cataclysm_Player = (Owner of (Triggering unit)) -> (Triggering player)... and reference this variable instead of calling (Triggering player repeatedly)

(Casting unit) -> (Triggering unit)

(Key (Last created unit)) should be set to a variable as it involves three function calls: GetHandleIdBJ(GetLastCreatedUnit())

When possible, avoid using arrays. Array[2], for example, can be simplified into Variable2.

Maker, v1.2:
You save the point[1] into a hashtable but remove it at the end of the cast trigger. You load it in the looping trigger, but do not use it. Fix that.
 
Level 12
Joined
Apr 16, 2010
Messages
584
88WaRCraFT3 said:
In cataclysm loop you forget to add bj_wanttodestroyground something like that i forget
You mean bj_wantDestroyGroup= true =)
@x3GlikE, from the screenshot it looks like your dummies have hp bars, add locust ability. Wait, But if you add locust it'll make the rock walkable, so i suggest creating a pathing blocker where are rocks and moving blocker with rocks - no hp bars and rocks will be unwalkable...
Coding seems nice and understandable!
 

SpasMaster

Hosted Project: SC
Level 23
Joined
Jan 29, 2010
Messages
1,969
Here you go:

Cataclysm.jpg


Jarvan IV heroically leaps to an enemy champion, dealing physical damage and creating a circle of impassable terrain around them for a 3.5 second duration. Jarvan IV can destroy the impassable terrain by activating this again. Champions can still leave or enter the area by using teleport abilities.

Source: Click
 
  • -------- ------------------------------ --------
  • -------- Do not touch --------
  • Set Int_Cataclysm_Temppoint[2] = (Position of (Picked unit))
  • Unit - Create 1 Int_Cataclysm_Unit[2] for Int_Cataclysm_Player at Int_Cataclysm_Temppoint[2] facing Default building facing degrees
  • Unit - Set level of Cataclysm_Dummy for (Last created unit) to (1 x Int_Cataclysm_SpellLevel)
  • Unit - Order (Last created unit) to Undead Banshee - Curse (Picked unit)
  • Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)
  • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
Don't repeat (Last Created Unit)
Store it in a variable for use so you dont have to constantly call the function (Last Created Unit).

Same goes for ANY other functions you constantly use in the triggers.

Btw, your dummies have hp bars. Give them the locust ability.


All of these:

  • Set JDA_JumpHigh_Distance = 1.00
  • Set JDA_DestroyTrees_Dash = True
  • Set JDA_Speed = 10.00
  • Set JDA_SpecialEffect = Abilities\Spells\Other\Volcano\VolcanoMissile.mdl
  • Set JDA_Animation = attack
  • Set JDA_AnimationSpeed = 0.60
Along with other constant values should be set at map initialization.

You have to think about efficiency because it's one of the key factors
a spell/system needs to be approved.
 
Level 11
Joined
Mar 18, 2009
Messages
788
Jarvan IV Cataclysm :D

It needs a little more work, the stones got health bars and they move when the path is incorrect due to the units in the landing circle, so maybe you could move them out of the way before the stones are created.

Move them just a little bit out from the ring if they are outside the range and if they are inside you move them a little bit in to the center.

Also you could add a button after the ability has been cast which can be used to destroy the stones if you don't want them to block your way in case the enemy blinks out of the arena. Like the real Cataclysm spell :goblin_good_job:
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
use Integer as ID...

example:

Set ID = Key (last Creted unit)

then in the loop trigger, reference it as...

Set ID = Key (picked unit)

this;

  • Unit Group - Remove (Picked unit) from Int_Cataclysm_Dummy
  • Hashtable - Clear all child hashtables of child (Key (ID)) in Int_Cataclysm_Hashtable
the ORDER should be last if you want this spell be used by AI...

  • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
  • Unit - Set level of Cataclysm_Dummy_slow for (Last created unit) to (1 x Int_Cataclysm_SpellLevel)
  • Unit - Order (Last created unit) to Human Sorceress - Slow (Picked unit)
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
List only the stats of the current level in the tooltip. In the learn tooltip, you can list the stats of all levels.
1 x ?
  • Unit - Set level of Cataclysm_Dummy_slow for (Last created unit) to (1 x Int_Cataclysm_SpellLevel)
You store the point...
  • Hashtable - Save Handle OfInt_Cataclysm_Temppoint[1] as (Key point1) of (Key (Last created unit)) in Int_Cataclysm_Hashtable
...but remove it in the same trigger
  • Custom script: call RemoveLocation(udg_Int_Cataclysm_Temppoint[1])
Then you load it in the loop trigger:
  • Set Int_Cataclysm_Temppoint[1] = (Load (Key point1) of (Key (Picked unit)) in Int_Cataclysm_Hashtable)
That would return null since you removed it. But you're not using it for anything.
Change the speed to 0.
  • Animation - Change JD_Unit[JD_Integers[3]] flying height to JD_JumpHigh[JD_Integers[3]] at 1000000000.00
The settings block in the cast trigger should be at the initialization trigger.
 
You have to set constant values at Map Initialization.
Please listen to me!

EDIT:

I'm going to make this easier for you.
See these variables:

  • Set JDA_JumpHigh_Distance = 1.00
  • Set JDA_DestroyTrees_Dash = True
  • Set JDA_Speed = 10.00
  • Set JDA_SpecialEffect = Abilities\Spells\Other\Volcano\VolcanoMissile.mdl
  • Set Int_Cataclysm_Unit[1] = Rock
  • Set Int_Cataclysm_Unit[2] = Cataclysm_Dummy2
  • Set Int_Cataclysm_Duration = 10.00
  • Set Int_Cataclysm_UnitsN = 15
Also, don't use integer A
Use Integer Variable since Integer A can cause some wierd bugs.

  • For each (Integer A) from 1 to Int_Cataclysm_UnitsN, do (Actions)
    • Loop - Actions
      • Set Int_Cataclysm_Temppoint[2] = (Int_Cataclysm_Temppoint[1] offset by 350.00 towards ((360.00 / (Real(Int_Cataclysm_UnitsN))) x (Real((Integer A)))) degrees)
      • Unit - Create 1 Int_Cataclysm_Unit[1] for Int_Cataclysm_Player at Int_Cataclysm_Temppoint[2] facing Default building facing degrees
      • Unit - Add a Int_Cataclysm_Duration second Generic expiration timer to (Last created unit)
      • Special Effect - Create a special effect at Int_Cataclysm_Temppoint[2] using Abilities\Spells\Other\Volcano\VolcanoDeath.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- ------------------------------ --------
      • -------- Remove Leaks --------
      • Custom script: call RemoveLocation(udg_Int_Cataclysm_Temppoint[2])
      • -------- ------------------------------ --------
      • -------- ------------------------------ --------
One last comment, use custom script to save the Handle Id of the Last
Created Unit in an integer so you don't have to constantly call Key(Last Created Unit)

EDIT:

Another comment, don't use an array for the dummy units in the settings.
Just create 2 seperate variables.
Arrays can increase the size of a variable greatly (relatively), so they're best
used when storing a lot of data (maybe 5 instances is good)
 
Level 20
Joined
Jul 12, 2010
Messages
1,717
Screenshot Provided of bug, perhaps someone more used to reviewing triggers may find the issue.
it's not a bug man, after 50 casts comes ultimate cataclysm which spawns rocks on the entire map!! xD

I don't find this issue in the triggers but when you cast multiple times in the map the spell bugs out and leaves the rocks :p
how to solve your problem:
set spell cooldown above 10 sec
it's not like you are going to set the cooldown of this ability to 0 in your map lol
 
Top