Holy Cross v1.5

This bundle is marked as approved. It works and satisfies the submission rules.
  • Like
Reactions: KILLCIDE
DESCRIPTION

The Templar raises from the ground and summons 4 Cross vortices, damaging nearby enemy units including structures.
When the spell is almost over, a growing light will come out and deals heavy damage to nearby enemy units including structures.

Level 1 - Cross damages 25 per second, Light damages 50 per second.
Level 2 - Cross damages 50 per second, Light damages 100 per second.
Level 3 - Cross damages 75 per second, Light damages 150 per second.
Level 4 - Cross damages 100 per second, Light damages 200 per second.
Level 5 - Cross damages 125 per second, Light damages 250 per second.

This Spell is inspired by Castlevania Symphony of the Night, as you can see in the Video.

Skip 0.46 to 51



  • Configurables
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- =====THESE ARE THE DEFAULT CONFIGURES BASED ON THE DESCRIPTION===== --------
      • -------- IMPORTANT: You should synchronize the HC_Config_CrossFar and the AOE of the 'BUFF' ability in the object editor --------
      • -------- Example: if HC_Config_CrossFar is 450 (AOE of the BUFF ability is also 450) --------
      • -------- This will configure the gap between cross and the caster --------
      • Set HC_Config_CrossFar = 450.00
      • Set HC_Config_CrossNear = 250.00
      • -------- It is recommended that the HC_Config_CrossFar and HC_Config_CrossDamageAoE is the same --------
      • Set HC_Config_CrossDamageAoE = 450.00
      • -------- Configures how the light grows --------
      • Set HC_Config_LightSizeBase = 1.00
      • Set HC_Config_LightSizeMax = 5000.00
      • -------- Rotation Speed of the Cross --------
      • Set HC_Config_CrossRotationSpeed = 15.00
      • -------- Light Damage Reach...The higher the value, the higher the reach, this will be multiplied by the HC_LightSize --------
      • Set HC_Config_LightDamageAoE = 0.30
      • -------- Configures Caster and Cross Heights --------
      • Set HC_Confg_CrossBaseHeight = 150.00
      • Set HC_Config_CasterHeight = 300.00
      • -------- Setting UnitID, AbilityID, SfxID --------
      • Set HC_CrossUType = Cross Vortex
      • Set HC_LightUType = Light Growing
      • Set HC_LightSfxUType = Light Effect
      • Set HC_AbilityId = Holy Cross
      • Set HC_SfxID = Buff (Neutral Hostile)
  • Holy Cross
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to HC_AbilityId
    • Actions
      • Custom script: local integer index
      • Custom script: local integer CasterChildID
      • Custom script: local integer CrossChildID
      • Set HC_Caster = (Triggering unit)
      • Custom script: set udg_HC_ID = GetHandleId(udg_HC_Caster)
      • Set HC_CasterPt = (Position of HC_Caster)
      • Unit - Create 1 HC_LightUType for (Triggering player) at HC_CasterPt facing Default building facing degrees
      • Set HC_Light = (Last created unit)
      • Unit - Add HC_SfxID to HC_Light
      • Animation - Change HC_Light's size to (HC_Config_LightSizeBase%, HC_Config_LightSizeBase%, HC_Config_LightSizeBase%) of its original size
      • -------- Setting --------
      • Set HC_Level = (Level of Holy Cross for HC_Caster)
      • Set HC_Duration = 7.00
      • Custom script: set udg_HC_CrossDamage = (udg_HC_Level*25)*0.03
      • Custom script: set udg_HC_LightDamage = (udg_HC_Level*50)*0.03
      • -------- Saving --------
      • Hashtable - Save HC_Duration as 0 of HC_ID in Hash
      • Hashtable - Save HC_Level as 1 of HC_ID in Hash
      • Hashtable - Save HC_CrossDamage as 2 of HC_ID in Hash
      • Hashtable - Save Handle OfHC_CasterPt as 3 of HC_ID in Hash
      • Hashtable - Save False as 4 of HC_ID in Hash
      • Hashtable - Save Handle OfHC_Light as 5 of HC_ID in Hash
      • Hashtable - Save 0.00 as 6 of HC_ID in Hash
      • Hashtable - Save HC_LightDamage as 7 of HC_ID in Hash
      • -------- Index (NEVER adjust these unless you know what you're doing) --------
      • Custom script: set index = 4
      • Custom script: set CasterChildID = 20
      • Custom script: set CrossChildID = 0
      • -------- Saving the Cross dummies --------
      • Custom script: loop
      • Unit - Create 1 HC_CrossUType for (Triggering player) at HC_CasterPt facing Default building facing degrees
      • Custom script: call SaveUnitHandle(udg_Hash, udg_HC_ID, CasterChildID, bj_lastCreatedUnit)
      • Custom script: call SetUnitFlyHeight(bj_lastCreatedUnit, (index - 1) * udg_HC_Confg_CrossBaseHeight, 0)
      • -------- Saving rotation from the Cross unit --------
      • Custom script: call SaveReal(udg_Hash, GetHandleId(bj_lastCreatedUnit), CrossChildID, 0)
      • -------- ===================== --------
      • Custom script: set index = index - 1
      • Custom script: set CasterChildID = CasterChildID + 1
      • Custom script: exitwhen CasterChildID==24
      • Custom script: endloop
      • Unit Group - Add HC_Caster to HC_UGrp
      • Trigger - Turn on Holy Cross Loop <gen>
      • Unit - Add Storm Crow Form to HC_Caster
      • Animation - Change HC_Caster flying height to HC_Config_CasterHeight at 600.00
      • Unit - Remove Storm Crow Form from HC_Caster
      • Set HC_InstanceIndex = (HC_InstanceIndex + 1)
      • Unit - Hide HC_Light
  • Holy Cross Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in HC_UGrp and do (Actions)
        • Loop - Actions
          • Set HC_Caster = (Picked unit)
          • Custom script: set udg_HC_ID = GetHandleId(udg_HC_Caster)
          • Set HC_CasterPt = (Load 3 of HC_ID in Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (HC_Caster is alive) Equal to True
            • Then - Actions
              • Set HC_Duration = (Load 0 of HC_ID from Hash)
              • Set HC_Light = (Load 5 of HC_ID in Hash)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HC_Light is alive) Equal to True
                • Then - Actions
                  • -------- For Timer --------
                  • Hashtable - Save (HC_Duration - 0.03) as 0 of HC_ID in Hash
                  • Set HC_Level = (Load 1 of HC_ID from Hash)
                  • Set HC_CrossDamage = (Load 2 of HC_ID from Hash)
                  • Set HC_CheckLight = (Load 4 of HC_ID from Hash)
                  • Set HC_Index1 = 0
                  • For each (Integer A) from 20 to 21, do (Actions)
                    • Loop - Actions
                      • Set HC_CrossU = (Load (Integer A) of HC_ID in Hash)
                      • Custom script: set udg_HC_DummyID = GetHandleId(udg_HC_CrossU)
                      • Set HC_RotationC = (Load HC_Index1 of HC_DummyID from Hash)
                      • Set HC_LocP = (HC_CasterPt offset by HC_Config_CrossNear towards HC_RotationC degrees)
                      • Custom script: if udg_HC_Index1==0 then
                      • Hashtable - Save (HC_RotationC + HC_Config_CrossRotationSpeed) as HC_Index1 of HC_DummyID in Hash
                      • Custom script: else
                      • Hashtable - Save (HC_RotationC - HC_Config_CrossRotationSpeed) as HC_Index1 of HC_DummyID in Hash
                      • Custom script: endif
                      • Unit - Move HC_CrossU instantly to HC_LocP
                      • Set HC_Index1 = (HC_Index1 + 1)
                      • Custom script: call RemoveLocation(udg_HC_LocP)
                  • Set HC_Index1 = 6
                  • For each (Integer A) from 22 to 23, do (Actions)
                    • Loop - Actions
                      • Set HC_CrossU = (Load (Integer A) of HC_ID in Hash)
                      • Custom script: set udg_HC_DummyID = GetHandleId(udg_HC_CrossU)
                      • Set HC_RotationC = (Load HC_Index1 of HC_DummyID from Hash)
                      • Set HC_LocP = (HC_CasterPt offset by HC_Config_CrossFar towards HC_RotationC degrees)
                      • Custom script: if udg_HC_Index1==6 then
                      • Hashtable - Save (HC_RotationC + HC_Config_CrossRotationSpeed) as HC_Index1 of HC_DummyID in Hash
                      • Custom script: else
                      • Hashtable - Save (HC_RotationC - HC_Config_CrossRotationSpeed) as HC_Index1 of HC_DummyID in Hash
                      • Custom script: endif
                      • Unit - Move HC_CrossU instantly to HC_LocP
                      • Set HC_Index1 = (HC_Index1 + 1)
                      • Custom script: call RemoveLocation(udg_HC_LocP)
                  • Custom script: set bj_wantDestroyGroup=true
                  • Unit Group - Pick every unit in (Units within HC_Config_CrossDamageAoE of HC_CasterPt matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) belongs to an enemy of (Owner of HC_Caster)) Equal to True)))) and do (Actions)
                    • Loop - Actions
                      • Unit - Cause HC_Caster to damage (Picked unit), dealing HC_CrossDamage damage of attack type Chaos and damage type Death
                  • -------- LIGHT APPEARS HERE --------
                  • Set HC_CheckLight = (Load 4 of HC_ID from Hash)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • And - All (Conditions) are true
                        • Conditions
                          • HC_Duration Less than 0.00
                          • HC_CheckLight Equal to False
                    • Then - Actions
                      • Hashtable - Save True as 4 of HC_ID in Hash
                      • Unit - Unhide HC_Light
                    • Else - Actions
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • HC_CheckLight Equal to True
                        • Then - Actions
                          • -------- Light will grow here --------
                          • Set HC_LightSize = (Load 6 of HC_ID from Hash)
                          • Set HC_LightDamage = (Load 7 of HC_ID from Hash)
                          • Hashtable - Save (HC_LightSize + 100.00) as 6 of HC_ID in Hash
                          • Animation - Change HC_Light's size to (HC_LightSize%, HC_LightSize%, HC_LightSize%) of its original size
                          • -------- Light will deal damage here --------
                          • Custom script: set bj_wantDestroyGroup=true
                          • Unit Group - Pick every unit in (Units within (HC_LightSize x HC_Config_LightDamageAoE) of HC_CasterPt matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Magic Immune) Equal to False) and (((Matching unit) belongs to an enemy of (Owner of HC_Light)) Equal to True and do (Actions)
                            • Loop - Actions
                              • Unit - Cause HC_Light to damage (Picked unit), dealing HC_LightDamage damage of attack type Chaos and damage type Death
                              • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Orc\Purge\PurgeBuffTarget.mdl
                              • Special Effect - Destroy (Last created special effect)
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • HC_LightSize Greater than or equal to HC_Config_LightSizeMax
                            • Then - Actions
                              • -------- Create the last effect to end the spell --------
                              • Unit - Create 1 HC_LightSfxUType for (Owner of HC_Caster) at HC_CasterPt facing Default building facing degrees
                              • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                              • Unit - Kill HC_Light
                            • Else - Actions
                        • Else - Actions
                • Else - Actions
                  • -------- Off trigger here, Light is dead --------
                  • Custom script: call RemoveLocation(udg_HC_CasterPt)
                  • For each (Integer A) from 20 to 23, do (Actions)
                    • Loop - Actions
                      • Set HC_CrossU = (Load (Integer A) of HC_ID in Hash)
                      • Unit - Explode HC_CrossU
                      • Unit - Remove HC_CrossU from the game
                  • Animation - Change (Picked unit) flying height to 0.00 at 1000.00
                  • Unit - Unpause HC_Caster
                  • Unit Group - Remove HC_Caster from HC_UGrp
                  • Hashtable - Clear all child hashtables of child HC_ID in Hash
                  • Set HC_InstanceIndex = (HC_InstanceIndex - 1)
            • Else - Actions
              • -------- Off trigger here, Caster is dead and kill the light --------
              • Unit - Kill (Load 5 of HC_ID in Hash)
              • Custom script: call RemoveLocation(udg_HC_CasterPt)
              • For each (Integer A) from 20 to 23, do (Actions)
                • Loop - Actions
                  • Set HC_CrossU = (Load (Integer A) of HC_ID in Hash)
                  • Unit - Explode HC_CrossU
                  • Unit - Remove HC_CrossU from the game
              • Animation - Change (Picked unit) flying height to 0.00 at 1000.00
              • Unit - Unpause HC_Caster
              • Unit Group - Remove HC_Caster from HC_UGrp
              • Hashtable - Clear all child hashtables of child HC_ID in Hash
              • Set HC_InstanceIndex = (HC_InstanceIndex - 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HC_InstanceIndex Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions




167625-albums4356-picture43004.jpg

167625-albums4356-picture43005.jpg

167625-albums4356-picture43006.jpg



HOW TO INSTALL:
- Be sure to check the 'Automatically create unknown variables...', via File>Preferences>General tab.
- In the object editor, copy all that is in the Unit/Abilities/Buff tab to youir map.
- Copy all that is written on the 'Holy Cross' folder from the trigger editor to your map.
- Be sure to input the right UnitID, AbilityID, SfxID in the 'Configurables'

======================================

Changelogs:
v1.5
- Improved triggering.
- Improved variable names and setup
- Improved documentation on how to install

v1.4
- (Triggering unit) is now stored in a variable for better performance
- HC_DummyPt variable is removed since it is identical to HC_CasterPt
- Storm Crow Form to HC_Caster is removed immediately to avoid seeing it's icon
- Custom values is replaced by Hashtables
- Loop time is now 0.03 seconds.

v1.3
- Added Configurations
- Added 1 dummy for another light effect
- Added Sfx for Cross damage

v1.2
- Triggers optimized, credits to Maker
- Objects in object editor reduced

v1.1
- Fixed Caster damages everything when casting
- Cross size increased
- Ghost ability removed from cross

Keywords:
holy cross, light, hashtables, castlevania, sotn, death, power, ultimate
Contents

Holy Cross v1.5 (Map)

Level 37
Joined
Mar 6, 2006
Messages
9,242
You could do the first trigger like this. I made many improvements like not setting and removing the loc over and over again.

  • Holy Cross Copy
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Holy Cross
    • Actions
      • Set HC_Caster = (Triggering unit)
      • Set ID = (Key (Triggering unit))
      • Hashtable - Save (Level of Holy Cross for HC_Caster) as (Key hclevel) of ID in Hash
      • Set HC_CasterPt = (Position of (Triggering unit))
      • Hashtable - Save Handle OfHC_CasterPt as (Key hccasterpt) of ID in Hash
      • -------- Timer --------
      • Hashtable - Save 5.00 as (Key hctimer) of ID in Hash
      • For each (Integer loopA) from 1 to 4, do (Actions)
        • Loop - Actions
          • -------- Cross 1 --------
          • Unit - Create 1 Dummy (Cross 1) for (Owner of HC_Caster) at HC_CasterPt facing Default building facing degrees
          • Hashtable - Save Handle Of(Last created unit) as (Key (hcunit + (String(loopA)))) of ID in Hash
          • Animation - Change (Last created unit) flying height to ((Real((loopA - 1))) x 150.00) at 0.00
          • -------- Rotation --------
          • Hashtable - Save 0.00 as (Key (hcrotation + (String(loopA)))) of ID in Hash
          • -------- Offset --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (loopA mod 2) Not equal to 0
            • Then - Actions
              • Hashtable - Save 250.00 as (Key (hcoffset + (String(loopA)))) of ID in Hash
            • Else - Actions
              • Hashtable - Save 450.00 as (Key (hcoffset + (String(loopA)))) of ID in Hash
      • -------- xxxxxxxxxxxxxxxx --------
      • Unit Group - Add HC_Caster to HC_UGrp
      • Trigger - Turn on Holy Cross Loop <gen>
      • Unit - Add Storm Crow Form to HC_Caster
      • Animation - Change HC_Caster flying height to 300.00 at 600.00

You can set the fly height with triggers instead of using 4 different dummy unit types.

This block isn't needed:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • HC_Timer Equal to 4.98
    • Then - Actions
      • Unit - Pause HC_Caster
      • Unit - Add Storm Crow Form to HC_Caster
      • Animation - Play HC_Caster's stand channel animation
      • Animation - Change HC_Caster flying height to 300.00 at 600.00
    • Else - Actions
Set the animation in object editor, give the spell about 5 second follow through time. You can set "disable other abilities" to true. Add Strom Crow and change flying height in the casting trigger.

Also save the Key(Picked unit) into a variable and use the variable. Use the unit variable instead of Picked unit throughout the trigger.

Don't load the rotations/offsets if the caster is dead.

The dummies give vision. You could create them for neutral passive.

I don't think you need Holy Cross Remove. Apply a timed life for them and make them explode on death. Don't use Kill unit.

Some of the values should me made configurable, perhaps create an initialization trigger where one can configure variables.

 
Level 29
Joined
Mar 10, 2009
Messages
5,016
You could do the first trigger like this. I made many improvements like not setting and removing the loc over and over again.

  • Holy Cross Copy
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Holy Cross
    • Actions
      • Set HC_Caster = (Triggering unit)
      • Set ID = (Key (Triggering unit))
      • Hashtable - Save (Level of Holy Cross for HC_Caster) as (Key hclevel) of ID in Hash
      • Set HC_CasterPt = (Position of (Triggering unit))
      • Hashtable - Save Handle OfHC_CasterPt as (Key hccasterpt) of ID in Hash
      • -------- Timer --------
      • Hashtable - Save 5.00 as (Key hctimer) of ID in Hash
      • For each (Integer loopA) from 1 to 4, do (Actions)
        • Loop - Actions
          • -------- Cross 1 --------
          • Unit - Create 1 Dummy (Cross 1) for (Owner of HC_Caster) at HC_CasterPt facing Default building facing degrees
          • Hashtable - Save Handle Of(Last created unit) as (Key (hcunit + (String(loopA)))) of ID in Hash
          • Animation - Change (Last created unit) flying height to ((Real((loopA - 1))) x 150.00) at 0.00
          • -------- Rotation --------
          • Hashtable - Save 0.00 as (Key (hcrotation + (String(loopA)))) of ID in Hash
          • -------- Offset --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (loopA mod 2) Not equal to 0
            • Then - Actions
              • Hashtable - Save 250.00 as (Key (hcoffset + (String(loopA)))) of ID in Hash
            • Else - Actions
              • Hashtable - Save 450.00 as (Key (hcoffset + (String(loopA)))) of ID in Hash
      • -------- xxxxxxxxxxxxxxxx --------
      • Unit Group - Add HC_Caster to HC_UGrp
      • Trigger - Turn on Holy Cross Loop <gen>
      • Unit - Add Storm Crow Form to HC_Caster
      • Animation - Change HC_Caster flying height to 300.00 at 600.00

You can set the fly height with triggers instead of using 4 different dummy unit types.

This block isn't needed:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • HC_Timer Equal to 4.98
    • Then - Actions
      • Unit - Pause HC_Caster
      • Unit - Add Storm Crow Form to HC_Caster
      • Animation - Play HC_Caster's stand channel animation
      • Animation - Change HC_Caster flying height to 300.00 at 600.00
    • Else - Actions
Set the animation in object editor, give the spell about 5 second follow through time. You can set "disable other abilities" to true. Add Strom Crow and change flying height in the casting trigger.

Also save the Key(Picked unit) into a variable and use the variable. Use the unit variable instead of Picked unit throughout the trigger.

Don't load the rotations/offsets if the caster is dead.

The dummies give vision. You could create them for neutral passive.

I don't think you need Holy Cross Remove. Apply a timed life for them and make them explode on death. Don't use Kill unit.

Some of the values should me made configurable, perhaps create an initialization trigger where one can configure variables.


Genius...I've done that with multiboards but Never thought it can be done with hashtables :)...thanks Maker!...

but I cant disable Tri 3 coz the cross doesnt have explode/death
animation, it just stands there for 1 second, I want the cross to
'Immediately' dissapear after the spell...

EDIT

v1.2
- Triggers optimized, credits to Maker
- Objects in object editor reduced
 
Last edited:
Level 37
Joined
Mar 6, 2006
Messages
9,242
but I cant disable Tri 3 coz the cross doesnt have explode/death
animation, it just stands there for 1 second, I want the cross to
'Immediately' dissapear after the spell...

Scale them down and set their flying heigh to some high value. I also forgot to say that the dummies don't need invlunerability abilty, they have locust. You could add some sound effects when the crosses are circling or attach some subtle effect on them.
 
This spell looks good. Your effects are astounding! The spell is MUI since it uses Hashtables. Just one thing about the coding:
-You can reduce the size of the triggers with integer variable loops. (Trig 2)

You leak nothing. And btw, you just taught me something about group leaks :D

I'd give this spell a 4.5/5 (i think im being too nice by giving everyone 5/5s :p)
But, since we cant give scores like that, i'm forced to give you a 5/5 :)
 
well mckill, now that i reconsider my idea, it may be good for shortening the code, but i guess your right. Loops make reading the code SO confusing. So, since this spell is original and very well coded, and GUI, making it easy for most N00bs to implement it, i'm changing my score to a perfect 5/5 :) (I gave you a "mental" 4.5/5 from before, so... well... yeah you get :p)
 
Level 22
Joined
Sep 24, 2005
Messages
4,821
Awesome man, It looks like Richter's soul crush from Symphony of the Night.

Please do not take offense though, I think the crosses' movement isn't as smooth enough to show that it's rotating around the caster, it looks like it randomly moves from point a to point b.

I also noticed how the farm gets damaged, is it suppose to destroy those too? How unholy lol.

Anyways, nice spell, keep it up dude!
 
Level 22
Joined
Sep 24, 2005
Messages
4,821
You were right it is Holy Cross, Item Crush (I made a mistake lol) is the term for the sub-weapon special attacks.
Now go make the item crush where Richter throws a thousand knives.
 

Bribe

Code Moderator
Level 41
Joined
Sep 26, 2009
Messages
8,703
Holy Cross (Trig 2)

(Triggering unit) should be stored into a variable as you reference it a lot, and that would speed up performance.

HC_DummyPt and HC_CasterPt are identical, you should just recycle the location instead of creating two and removing one.

Unit - Add Storm Crow Form to HC_Caster

You should also remove it right afterwards, otherwise the crow will show up as an icon :-/

Holy Cross Dummy Dies

You're using custom value of unit, which can conflict with other systems. This part should use hashtable instead.

Light Loop

Time - Every 0.02 seconds of game time

- That could, maybe should, be 0.03 seconds. It won't overwork the computer as much and will still appear fluid to the human eye.

Overall

Looks great! Make some (preferably all) of these changes and let's get this thing approved.
 

Bribe

Code Moderator
Level 41
Joined
Sep 26, 2009
Messages
8,703
Unit - Remove HC_CrossUnit[1] from the game
Unit - Remove HC_CrossUnit[2] from the game
Unit - Remove HC_CrossUnit[3] from the game
Unit - Remove HC_CrossUnit[4] from the game

You could remove those four lines as "explode unit" pretty much does the same thing as "remove unit" (for non-heroes).

Otherwise, Approved!
 
Top