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

Frost Shatter v1.0

btnfrostbolt.jpg

Frost Shatter

Caster shapes up a frost orb that shoots out ice shards.
Shards explodes upon contact with an enemy unit, dealing area damage
and slowing down the attack and movement speed of units in the area
for a short brief of time.
Level 1 - Each explosion deals 100 damage in AoE 180,
slow lasts 3 seconds.
Level 2 - Each explosion deals 140 damage in AoE 180,
slow lasts 4 seconds.
Level 3 - Each explosion deals 180 damage in AoE 180,
slow lasts 5 seconds.



  • Frost Shatter
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Frost Shatter
    • Actions
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Getting the main settings for the spell --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set FS_Caster = (Triggering unit)
      • Set FS_Location_I = (Position of FS_Caster)
      • Set FS_Location_II = (Target point of ability being cast)
      • Set FS_Ability_Level = (Level of (Ability being cast) for FS_Caster)
      • Hashtable - Save FS_Ability_Level as (Key level) of (Key FS_Unit_Handle) in DummyTable
      • Hashtable - Save Handle OfFS_Caster as (Key caster) of (Key FS_Unit_Handle) in FrostTable
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Setting the orb --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set FS_Angle = (Angle from FS_Location_I to FS_Location_II)
      • Set FS_Speed = 8.00
      • Set FS_Distance = 1000.00
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Setting some base optimatizations --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Set FS_Buff = Frost Shatter
      • Set FS_Nova_AoE = 100.00
      • Set FS_Intervals = 4
      • Set FS_Dummy_Ability = Frost Shatter (Dummy)
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Creating the orb and and setting its settings --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Unit - Create 1 Dummy(Orb of Frost) for (Owner of FS_Caster) at FS_Location_I facing Default building facing degrees
      • Unit - Pause (Last created unit)
      • Unit - Turn collision for (Last created unit) Off
      • Unit Group - Add (Last created unit) to FS_Move_Group
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Saving reals into hashtable --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Hashtable - Save FS_Angle as (Key angle) of (Key (Last created unit)) in FrostTable
      • Hashtable - Save FS_Speed as (Key speed) of (Key (Last created unit)) in FrostTable
      • Hashtable - Save FS_Distance as (Key distance) of (Key (Last created unit)) in FrostTable
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Removing used locations --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_FS_Location_I)
      • Custom script: call RemoveLocation(udg_FS_Location_II)
  • Frost Shatter Execution
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- ##### Do not hange anything in this trigger, the things you can change will be marked with a star [ * ] ##### --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Executing the orb actions --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Unit Group - Pick every unit in FS_Move_Group and do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Loading the orb settings --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Set FS_Angle = (Load (Key angle) of (Key (Picked unit)) from FrostTable)
          • Set FS_Distance = (Load (Key distance) of (Key (Picked unit)) from FrostTable)
          • Set FS_Speed = (Load (Key speed) of (Key (Picked unit)) from FrostTable)
          • Set FS_Counter = (Load (Key counter) of (Key (Picked unit)) from FrostTable)
          • Set FS_Shards = (Load (Key shards) of (Key (Picked unit)) from FrostTable)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • FS_Distance Greater than 0.00
            • Then - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Setting locations, counters and moving the unit --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Set FS_Move_Loc_I = (Position of (Picked unit))
              • Set FS_Move_Loc_II = (FS_Move_Loc_I offset by FS_Speed towards FS_Angle degrees)
              • Hashtable - Save (FS_Distance - FS_Speed) as (Key distance) of (Key (Picked unit)) in FrostTable
              • Set FS_Shards = (FS_Shards + 1)
              • Set FS_Counter = (FS_Counter + 10.00)
              • Hashtable - Save FS_Shards as (Key shards) of (Key (Picked unit)) in FrostTable
              • Hashtable - Save FS_Counter as (Key counter) of (Key (Picked unit)) in FrostTable
              • Unit - Move (Picked unit) instantly to FS_Move_Loc_II
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Creating shards and setting their settings --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • FS_Shards Equal to FS_Intervals
                • Then - Actions
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- Setting the shard settings --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Set FS_Shards = 0
                  • Hashtable - Save FS_Shards as (Key shards) of (Key (Picked unit)) in FrostTable
                  • Set FS_Dummy_Cast_Point = (Position of (Last created unit))
                  • Set FS_Dummy_Cast_Point2 = (FS_Dummy_Cast_Point offset by 50.00 towards FS_Counter degrees)
                  • -------- * --------
                  • Set FS_Shard_Distance = 600.00
                  • Set FS_Shard_Speed = 15.00
                  • -------- * --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- Further shard settings --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Set FS_Shard_Angle = (Angle from FS_Dummy_Cast_Point to FS_Dummy_Cast_Point2)
                  • Unit - Create 1 Dummy(Orb of Frost Missile) for (Owner of (Picked unit)) at FS_Move_Loc_II facing Default building facing degrees
                  • Set FS_Dummy_Missile = (Last created unit)
                  • Unit - Make FS_Dummy_Missile face FS_Shard_Angle over 0.00 seconds
                  • Unit Group - Add FS_Dummy_Missile to FS_Dummy_Group
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- Saving values into a hashtable --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Hashtable - Save FS_Shard_Angle as (Key angle) of (Key (Last created unit)) in DummyTable
                  • Hashtable - Save FS_Shard_Speed as (Key speed) of (Key (Last created unit)) in DummyTable
                  • Hashtable - Save FS_Shard_Distance as (Key distance) of (Key (Last created unit)) in DummyTable
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- Removing used locations --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Custom script: call RemoveLocation(udg_FS_Dummy_Cast_Point)
                  • Custom script: call RemoveLocation(udg_FS_Dummy_Cast_Point2)
                • Else - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Removing used locations --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Custom script: call RemoveLocation(udg_FS_Move_Loc_I)
              • Custom script: call RemoveLocation(udg_FS_Move_Loc_II)
            • Else - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Clearing hashtable and removing the orb as the orb reaches its finnal distance --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in FrostTable
              • Unit - Kill (Picked unit)
              • Unit Group - Remove (Picked unit) from FS_Move_Group
              • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • -------- Executing the shard actions --------
      • -------- ------------------------------------------------------------------------------------------------- --------
      • Unit Group - Pick every unit in FS_Dummy_Group and do (Actions)
        • Loop - Actions
          • -------- ------------------------------------------------------------------------------------------------- --------
          • -------- Loading the values needed for further actions --------
          • -------- ------------------------------------------------------------------------------------------------- --------
          • Set FS_Caster = (Load (Key caster) of (Key (Picked unit)) in FrostTable)
          • Set FS_Ability_Level = (Load (Key level) of (Key FS_Unit_Handle) from DummyTable)
          • Set FS_Shard_Angle = (Load (Key angle) of (Key (Picked unit)) from DummyTable)
          • Set FS_Shard_Speed = (Load (Key speed) of (Key (Picked unit)) from DummyTable)
          • Set FS_Shard_Distance = (Load (Key distance) of (Key (Picked unit)) from DummyTable)
          • -------- ------------------------------------------------------------------------------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • FS_Shard_Distance Greater than 0.00
            • Then - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Setting the shard settings and moving them --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Set FS_DummyLocI = (Position of (Picked unit))
              • Set FS_DummyLocII = (FS_DummyLocI offset by FS_Shard_Speed towards FS_Shard_Angle degrees)
              • Set FS_Dummy_Damage_Group = (Units within 100.00 of FS_DummyLocII matching ((((Matching unit) is A structure) Equal to False) and (((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff Slowed) Not equal to True)) and (((Owner of (Matching unit)) is an enemy of (Owne
              • Hashtable - Save (FS_Shard_Distance - FS_Shard_Speed) as (Key distance) of (Key (Picked unit)) in DummyTable
              • Unit - Move (Picked unit) instantly to FS_DummyLocII
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Exploding the shards --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Number of units in FS_Dummy_Damage_Group) Greater than or equal to 1
                • Then - Actions
                  • Unit - Set life of (Picked unit) to 5.00
                • Else - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Destroying the used unit group --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Custom script: call DestroyGroup(udg_FS_Dummy_Damage_Group)
              • -------- ------------------------------------------------------------------------------------------------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Life of (Picked unit)) Less than 10.00
                • Then - Actions
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- Removing the exploded shard from the game --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Unit - Kill (Picked unit)
                  • Unit - Remove (Picked unit) from the game
                  • Unit Group - Remove (Picked unit) from FS_Dummy_Group
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- Setting the settings for the dummy --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Set FS_Location = (Position of (Picked unit))
                  • Set FS_Damage_Group = (Units within FS_Nova_AoE of FS_Location matching ((((Matching unit) is A structure) Equal to False) and (((((Matching unit) is alive) Equal to True) and (((Matching unit) has buff FS_Buff) Equal to False)) and (((Owner of (Matching unit)) is an enemy of (Own
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- Creating and setting the dummy that will cast a spell --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Unit - Create 1 Dummy for (Owner of (Picked unit)) at FS_Location facing Default building facing degrees
                  • Set FS_Dummy = (Last created unit)
                  • Unit - Add a 1.00 second Generic expiration timer to FS_Dummy
                  • Unit - Add FS_Dummy_Ability to FS_Dummy
                  • Unit - Set level of FS_Dummy_Ability for FS_Dummy to FS_Ability_Level
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- ordering dummy to cast a spell if any unit is nearby --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Unit Group - Pick every unit in FS_Damage_Group and do (Actions)
                    • Loop - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • ((Picked unit) has buff FS_Buff) Not equal to True
                        • Then - Actions
                          • -------- ------------------------------------------------------------------------------------------------- --------
                          • -------- * --------
                          • -------- Change the order here if you give any other ability to the dummy --------
                          • -------- ------------------------------------------------------------------------------------------------- --------
                          • Unit - Order FS_Dummy to Undead Lich - Frost Nova (Picked unit)
                        • Else - Actions
                      • -------- ------------------------------------------------------------------------------------------------- --------
                      • -------- * --------
                      • Special Effect - Create a special effect at FS_Location using Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Special Effect - Create a special effect at FS_Location using Abilities\Weapons\ZigguratMissile\ZigguratMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • -------- * --------
                      • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • -------- Removing and destroying used location and unit group --------
                  • -------- ------------------------------------------------------------------------------------------------- --------
                  • Custom script: call RemoveLocation(udg_FS_Location)
                  • Custom script: call DestroyGroup(udg_FS_Damage_Group)
                  • -------- ------------------------------------------------------------------------------------------------- --------
                • Else - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Removing used locations --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Custom script: call RemoveLocation(udg_FS_DummyLocI)
              • Custom script: call RemoveLocation(udg_FS_DummyLocII)
              • -------- ------------------------------------------------------------------------------------------------- --------
            • Else - Actions
              • -------- ------------------------------------------------------------------------------------------------- --------
              • -------- Clearing the hashtable --------
              • -------- ------------------------------------------------------------------------------------------------- --------
              • Hashtable - Clear all child hashtables of child (Key (Picked unit)) in DummyTable
              • Hashtable - Clear all child hashtables of child (Key FS_Unit_Handle) in DummyTable
              • Unit - Remove (Picked unit) from the game
              • Unit Group - Remove (Picked unit) from FS_Dummy_Group
Here is a little spell I've made ;)

Give credits if you use this spell on your map.

-Berz-

Keywords:
frost, ice, freeze, cold, orb, shard, explosion, nova, circle
Contents

Frost Shatter (Map)

Reviews
16:49, 25th Sep 2009 Hanky: Good job -BerZeKeR-. The spell looks ok and will be surely useful for most GUI users. But an always active trigger isn't that good. Try to improve that point. And the hashtables could be used even more effective. But...

Moderator

M

Moderator

16:49, 25th Sep 2009
Hanky:
Good job -BerZeKeR-. The spell looks ok and will be surely useful for most GUI users. But an always active trigger isn't that good. Try to improve that point. And the hashtables could be used even more effective. But apart from those small things good work. The spell look nearly like mine just as GUI spell.

Right now I'll rate this spell as useful, because the spell is fine enough to be approved but still not perfect.
 
Level 11
Joined
Jul 2, 2008
Messages
601
Coding for me seems fine, the only negative comments about it is that dummy shards are all spawned with 270 degrees facing, so at the moment of spawning they all face south and then turn into needed direction, looks weird.

Idea isn't such an original one, you see. =\
Description and tooltips are outstanding as always (for you). Why uploading this as separated spell?
 
Level 11
Joined
Jul 2, 2008
Messages
601
I find your tooltips and documentation quite fine and exhaustive (if this could be said like this Oo I'm sure, you'll understand, but I'm not sure that's right adjective) e.g. look at RMX's spellpack, you'll find just lulz :p Well, he is just the brightest example, even though he is good coder, but sometimes both the spell and tooltip are piece of ... chocolate =)
 
Level 10
Joined
Sep 21, 2007
Messages
517
Hey berzeker bro, i suggest when you do like a pack fo spells, you create one global hashtable for them, i mean as long as you index it properly, and not make mistakes in saving indexes, im pretty darn sure itll be more efficient than having a table for each spell ^^ and cool spell dude ^^ you use GUI as it must be used, no crazy confusing indexing xP >_>
 
Level 37
Joined
Mar 5, 2008
Messages
3,887
Yeah, I try to make tooltips easy to understand, even if the grammar isnt rerally correct :p
I know I could use only one hashtable, but it was like that: on the start I had 4 triggers and then I connected them to 2 and hashtables were left as they are.

I found indexing odd to :) dunno why, but its messy.

Thanks for the comments guys :D
 
Level 37
Joined
Mar 5, 2008
Messages
3,887
Thanks Hanky! :D

What do you mean by always active trigger? You mean that "initially on" thing?

I'm getting an idea how to fix that with counting the units in the group, but there comes another problem again with turning it on and back off and on...

I know I could use only one hashtable, but i like them to be apart because one is for the orb and the second is for the shards. (To bad I can hardly get along with these hashatables)

Right now I'm just happy that I've made this thing to work and that it's good enough to be approved ;)
 
Level 17
Joined
Mar 2, 2009
Messages
332
amazing! i am currently inactive cuz of my school(hardest high school in my country) but i have time to take a look on my friend's spells! and i can say it is amazing.....triggering fine and using hashtables (you are becoming GUI pro).....effects cool even i tough they are "little" but actually when it hits unit becomes something more interesting! documentation as always and spell map well done with nice text on beginning!!!!! 5/5 +rep! you are getting better and better!!!
 
Top