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

Soul Exceleration v1.2

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

Zilfallon launches herself to the targeted location dealing damage to all nearby units (200 Range) till she reaches the location, Which also does 5 + Distance from Cast to Target (200 Range).
Level 1 - 5/Damage Per Sec, 600 cast range.
Level 2 - 10/Damage Per Sec, 700 cast range.
Level 3 - 15/Damage Per Sec, 800 cast range.
Cooldown - 4/3/2

  • SE Int
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- ---------------------------- --------
      • Hashtable - Create a hashtable
      • Set Int_SE_Hashtable = (Last created hashtable)
      • -------- ---------------------------- --------
  • SE Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Soul Exceleration
    • Actions
      • -------- ---------------------------- --------
      • -------- Set. --------
      • Set Int_SE_Cast = (Position of (Triggering unit))
      • Set Int_SE_Target = (Target point of ability being cast)
      • Set Int_SE_Angle = (Angle from Int_SE_Cast to Int_SE_Target)
      • Set Int_SE_Create = (Int_SE_Cast offset by 100.00 towards Int_SE_Angle degrees)
      • Set Int_SE_Region = (Region centered at Int_SE_Target with size (50.00, 50.00))
      • Set Int_SE_Speed = 3.50
      • Set Int_SE_Damage = (5.00 x (Real((Level of (Ability being cast) for (Triggering unit)))))
      • -------- ---------------------------- --------
      • -------- Effects. --------
      • Special Effect - Create a special effect at Int_SE_Cast using Abilities\Spells\Other\HowlOfTerror\HowlCaster.mdl
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect at Int_SE_Target using Abilities\Spells\Other\HowlOfTerror\HowlCaster.mdl
      • Special Effect - Destroy (Last created special effect)
      • -------- ---------------------------- --------
      • -------- Hashtables. --------
      • Set Int_SE_Handle = (Triggering unit)
      • Hashtable - Save Handle OfInt_SE_Cast as (Key Int_SE_Handle) of (Key Cast) in Int_SE_Hashtable
      • Hashtable - Save Handle OfInt_SE_Target as (Key Int_SE_Handle) of (Key Target) in Int_SE_Hashtable
      • Hashtable - Save Int_SE_Angle as (Key Int_SE_Handle) of (Key Angle) in Int_SE_Hashtable
      • Hashtable - Save Handle OfInt_SE_Region as (Key Int_SE_Handle) of (Key Region) in Int_SE_Hashtable
      • Hashtable - Save Int_SE_Speed as (Key Int_SE_Handle) of (Key Speed) in Int_SE_Hashtable
      • -------- ---------------------------- --------
      • Unit - Turn collision for (Triggering unit) Off
      • -------- ---------------------------- --------
      • Unit Group - Add (Triggering unit) to Int_SE_Group
      • -------- ---------------------------- --------
      • -------- Turn on other trigger. --------
      • Trigger - Turn on SE Loop <gen>
      • -------- ---------------------------- --------
      • -------- Remove leaks. --------
      • Custom script: call RemoveLocation(udg_Int_SE_Cast)
      • Custom script: call RemoveLocation(udg_Int_SE_Target)
      • Custom script: call RemoveLocation(udg_Int_SE_Create)
      • -------- ---------------------------- --------
  • SE Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in Int_SE_Group and do (Actions)
        • Loop - Actions
          • -------- ---------------------------- --------
          • Set Int_SE_Handle = (Picked unit)
          • Set Int_SE_Cast = (Load (Key Int_SE_Handle) of (Key Cast) in Int_SE_Hashtable)
          • Set Int_SE_Target = (Load (Key Int_SE_Handle) of (Key Target) in Int_SE_Hashtable)
          • Set Int_SE_Angle = (Load (Key Int_SE_Handle) of (Key Angle) from Int_SE_Hashtable)
          • Set Int_SE_Speed = (Load (Key Int_SE_Handle) of (Key Speed) from Int_SE_Hashtable)
          • Set Int_SE_Picked = (Picked unit)
          • -------- ---------------------------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Int_SE_Speed Less than 40.00
            • Then - Actions
              • Hashtable - Save (Int_SE_Speed + 1.00) as (Key Int_SE_Handle) of (Key Speed) in Int_SE_Hashtable
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Int_SE_Region contains (Picked unit)) Equal to False
            • Then - Actions
              • -------- ---------------------------- --------
              • Set Int_SE_Loc = (Position of Int_SE_Picked)
              • Set Int_SE_Move = (Int_SE_Loc offset by Int_SE_Speed towards Int_SE_Angle degrees)
              • -------- ---------------------------- --------
              • Unit - Move Int_SE_Picked instantly to Int_SE_Move
              • -------- ---------------------------- --------
              • Special Effect - Create a special effect at Int_SE_Move using Abilities\Spells\Undead\CarrionSwarm\CarrionSwarmDamage.mdl
              • Special Effect - Destroy (Last created special effect)
              • -------- ---------------------------- --------
              • Custom script: set bj_wantDestroyGroup = true
              • -------- ---------------------------- --------
              • Unit Group - Pick every unit in (Units within 200.00 of (Position of Int_SE_Picked) matching ((((Matching unit) belongs to an enemy of (Owner of Int_SE_Picked)) Equal to True) and (((Matching unit) is alive) Equal to True))) and do (Actions)
                • Loop - Actions
                  • Set Int_SE_Loc2 = (Position of (Picked unit))
                  • Special Effect - Create a special effect at Int_SE_Loc2 using Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Unit - Cause Int_SE_Picked to damage (Picked unit), dealing Int_SE_Damage damage of attack type Spells and damage type Normal
                  • Custom script: call RemoveLocation(udg_Int_SE_Loc2)
              • -------- ---------------------------- --------
              • Destructible - Pick every destructible within 200.00 of (Position of Int_SE_Picked) and do (Actions)
                • Loop - Actions
                  • Destructible - Kill (Picked destructible)
              • Custom script: call RemoveLocation(udg_Int_SE_Loc)
              • Custom script: call RemoveLocation(udg_Int_SE_Move)
            • Else - Actions
              • -------- ---------------------------- --------
              • Custom script: set bj_wantDestroyGroup = true
              • Unit Group - Pick every unit in (Units within 200.00 of (Position of Int_SE_Picked) matching ((((Matching unit) belongs to an enemy of (Owner of Int_SE_Picked)) Equal to True) and (((Matching unit) is alive) Equal to True))) and do (Actions)
                • Loop - Actions
                  • Set Int_SE_Loc2 = (Position of (Picked unit))
                  • Special Effect - Create a special effect at Int_SE_Loc2 using Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Unit - Cause Int_SE_Picked to damage (Picked unit), dealing (Int_SE_Damage + (Distance between Int_SE_Cast and Int_SE_Target)) damage of attack type Spells and damage type Normal
                  • Custom script: call RemoveLocation(udg_Int_SE_Loc2)
              • Unit - Turn collision for Int_SE_Picked On
              • Unit - Order Int_SE_Picked to Stop
              • -------- ---------------------------- --------
              • -------- Touching this will cause trigger to not work. --------
              • Unit Group - Remove Int_SE_Picked from Int_SE_Group
              • Hashtable - Clear all child hashtables of child (Key Int_SE_Handle) in Int_SE_Hashtable
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Int_SE_Group is empty) Equal to True
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
              • -------- ---------------------------- --------


Log

v1.2 Made more configable, fixed destroy trees.
v1.1 Fixed 2 location leaks.
v1.0 First upload.
Keywords:
Soul Exceleration was made by x3GlikE cause I got bored.
Contents

Soul Exceleration (Map)

Reviews
12.12 IcemanBo: For long time as NeedsFix. Rejected. 14:15, 1st Jun 2011 Maker: You're using too many point variables, get rid of some of them. You only need 4, you're using 6. You should reverse child and parent keys. For example: Hashtable...

Moderator

M

Moderator

12.12
IcemanBo: For long time as NeedsFix. Rejected.

14:15, 1st Jun 2011
Maker:
You're using too many point variables, get rid of some of them. You only need 4, you're using 6.
You should reverse child and parent keys. For example:
  • Hashtable - Save Handle OfInt_SE_Cast as (Key Int_SE_Handle) of (Key Cast) in Int_SE_Hashtable
->
  • Hashtable - Save Handle OfInt_SE_Cast as (Key Cast) of (Key Int_SE_Handle) in Int_SE_Hashtable
Make the Int_SE_Handle an integer variable.
You leak in the unit group picks and in the destructible pick in the looping trigger.
 
Level 7
Joined
Apr 12, 2011
Messages
124
@ roarworkshop
Wtf?
@ x3Glike
nice spell, but you should make a boolean that toggles if the spell hits trees and also a checker if caster hits a tree order stop
set Boolean = true/false
if Boolean = true then
...................

@D4RK_G4ND4LF

You're my lightning effect hero :D
 
Last edited:
Level 19
Joined
Feb 4, 2009
Messages
1,313
:vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf::vw_wtf: THATS SO EASY HAHAHHAHAHAH!! I can create that and if you comment in the fire circle im not the one who created that one that was my younger brother so its simple!! SO DON't TELL ME ITS SO EASY!!

@ roarworkshop
Wtf?

x3GlikE commented on roarwokshops spell and therefore roarworkshop is spamming icons and writing senceless stuff here
also I bet he was the one who voted 1/5 without any reason
I vote for negrep

edit:
haha now he ran away and deleted his post :p

@D4RK_G4ND4LF

You're my lightning effect hero :D

thanks ;D

@topic:
you should check the destructables first (you don't want to destroy bridges, elevators and switches, don't you?)
you can do that by ordering a hidden dummy unit with harvest ability to harvest the destructable
if the order of that unit is "harvest" after that the destructible is a tree
else you can stop the dummy with harvest ability for next use
 
Last edited:
Level 37
Joined
Mar 6, 2006
Messages
9,240
You're leaking positions in the unit group picks and you should remove the locations and the region stored in the hashtable before clearing the hashtable.

This
  • Set Int_SE_Handle = (Triggering unit)
should be
  • Custom script: set udg_Int_SE_Handle = GetHandleId(GetTriggerUnit())
Make the handle variable an integer variable.

Then save the values like this:
  • Hashtable - Save Handle OfInt_SE_Cast as(Key Cast) of Int_SE_Handle in Int_SE_Hashtable
I think you should only deal damage on units once, and only create a special effect on them once. Not it spams effects. Create a group for the caster and save it into a hashtable. Then in the looping trigger, check whether the units to be damaged are in the group or not. If they are not, damage them and add them to the group.
 
Last edited:
Level 12
Joined
Apr 16, 2010
Messages
584
Well this one is really nice! What about adding some misses or slow units that you jump through? Would be much better. And who rated it 1? For what? For lack of self confidence? Well i need to rate 5/5 =) Also in unit groups where you deal damage check if picked unit isn't a structure.

Edit: is this Unit - Order Int_SE_Picked to Stop necessary?
 
Level 5
Joined
May 27, 2009
Messages
94
x3GlikE commented on roarwokshops spell and therefore roarworkshop is spamming icons and writing senceless stuff here
also I bet he was the one who voted 1/5 without any reason
I vote for negrep

edit:
haha now he ran away and deleted his post :p



thanks ;D

@topic:
you should check the destructables first (you don't want to destroy bridges, elevators and switches, don't you?)
you can do that by ordering a hidden dummy unit with harvest ability to harvest the destructable
if the order of that unit is "harvest" after that the destructible is a tree
else you can stop the dummy with harvest ability for next use
Nice spell!
Now that is just ass licking.
 
Top