BRUTAL
I'm working
- Reaction score
- 118
Bloody Spear
Import Difficulty: Medium
Allowed Targets: Enemy ground units
Leakless?: not 100% sure
GUI/JASS?: GUI
Lagless?: just a little at the first cast for me
MUI?: ya
Spell Description: Sending out a rope dart, it impales itself into the victim's chest, allowing Scorpion to pull the victim through the air toward him, stunning the victim, for free hits, as well as cause damage.
Level 1 - (100 + str * 2
Level 2 - (200 + str * 2)
Level 3 - (300 + str * 2)
Level 4 - (400 + str * 2)
Triggers below:
This is basically a meat hook kind of spell, but i think its alot cooler, cause all the meat hook spells ive seen are just one unit kinda going further out till it hits the target, mine has a rope , o ya and this was my recreation on Scorpions Bloody Spear from Mortal Kombat
Post any leaks or bugs you find
Im not the best at removing leaks, so you might find some, post those too
Thanks to Waaaaagh for help with a little error i didnt see
Also when your casting the spell, when the rope units are created you'll notice that the angle that they face is like not right, but then correct (look at the screenshots) im not sure why it happens, i'll try to fix it up
Posion Spear
Dl the maps:
Import Difficulty: Medium
Allowed Targets: Enemy ground units
Leakless?: not 100% sure
GUI/JASS?: GUI
Lagless?: just a little at the first cast for me
MUI?: ya
Spell Description: Sending out a rope dart, it impales itself into the victim's chest, allowing Scorpion to pull the victim through the air toward him, stunning the victim, for free hits, as well as cause damage.
Level 1 - (100 + str * 2
Level 2 - (200 + str * 2)
Level 3 - (300 + str * 2)
Level 4 - (400 + str * 2)
Triggers below:
Code:
One
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Bloody Spear
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
CV Less than 1000
Then - Actions
Set CV = (CV + 1)
Else - Actions
Set CV = 1
Set BloodySpearDamage[CV] = 0
Set BloodySpearDamageCheck[CV] = 0
Set BloodySpearPullBack[CV] = False
Set BloodySpearBoolean[CV] = False
Set BloodySpearMaxTime[CV] = 0.00
Set BloodySpearPullTimer[CV] = 0.00
Set BloodySpearInteger[CV] = 0
Set BloodySpearCaster[CV] = (Casting unit)
Set BloodySpearCasterPos[CV] = (Position of BloodySpearCaster[CV])
Set BloodySpearTarget[CV] = (Target unit of ability being cast)
Set BloodySpearTargetPos[CV] = (Position of BloodySpearTarget[CV])
Unit - Pause BloodySpearCaster[CV]
Set BloodySpearAngle[CV] = (Angle from BloodySpearCasterPos[CV] to BloodySpearTargetPos[CV])
Unit - Make BloodySpearCaster[CV] face BloodySpearAngle[CV] over 0.00 seconds
Set BloodySpearCasterFace[CV] = (Facing of BloodySpearCaster[CV])
Unit - Create 1 Dummy for (Owner of BloodySpearCaster[CV]) at BloodySpearCasterPos[CV] facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Set the custom value of (Last created unit) to CV
Set BloodySpearDummy[CV] = (Last created unit)
Unit Group - Add (Last created unit) to BloodySpearUg
Code:
Two
Events
Time - Every 0.04 seconds of game time
Conditions
(Number of units in BloodySpearUg) Greater than 0
Actions
Unit Group - Pick every unit in BloodySpearUg and do (Actions)
Loop - Actions
Set TempInt = (Custom value of (Picked unit))
Set BloodySpearMaxTime[TempInt] = (BloodySpearMaxTime[TempInt] + 0.04)
Set BloodySpearInteger[TempInt] = (BloodySpearInteger[TempInt] + 1)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearInteger[TempInt] Equal to 1
Then - Actions
Set BloodySpearTp[TempInt] = (BloodySpearCasterPos[TempInt] offset by 40.00 towards BloodySpearAngle[TempInt] degrees)
Unit - Create 1 Spear for (Owner of BloodySpearCaster[TempInt]) at BloodySpearTp[TempInt] facing BloodySpearAngle[TempInt] degrees
Custom script: call RemoveLocation (udg_BloodySpearTp[udg_TempInt])
Unit Group - Add (Last created unit) to BloodySpearUgSpear[TempInt]
Set BloodySpearBoolean[TempInt] = True
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearBoolean[TempInt] Equal to True
Then - Actions
Set BloodySpearTp[TempInt] = (BloodySpearCasterPos[TempInt] offset by 40.00 towards BloodySpearAngle[TempInt] degrees)
Unit - Create 1 Rope for (Owner of BloodySpearCaster[TempInt]) at BloodySpearTp[TempInt] facing BloodySpearAngle[TempInt] degrees
Custom script: call RemoveLocation (udg_BloodySpearTp[udg_TempInt])
Unit Group - Add (Last created unit) to BloodySpearUgRope[TempInt]
Else - Actions
Code:
Three
Events
Time - Every 0.02 seconds of game time
Conditions
(Number of units in BloodySpearUg) Greater than 0
Actions
Unit Group - Pick every unit in BloodySpearUg and do (Actions)
Loop - Actions
Set TempInt = (Custom value of (Picked unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearPullBack[TempInt] Equal to True
Then - Actions
Set BloodySpearBoolean[TempInt] = False
Unit Group - Pick every unit in BloodySpearUgSpear[TempInt] and do (Actions)
Loop - Actions
Set BloodySpearCasterPos2[TempInt] = (Position of BloodySpearCaster[TempInt])
Set BloodySpearSpearPos[TempInt] = (Position of (Picked unit))
Set BloodySpearTp[TempInt] = (BloodySpearSpearPos[TempInt] offset by 20.00 towards (BloodySpearAngle[TempInt] + 180.00) degrees)
Unit - Move (Picked unit) instantly to BloodySpearTp[TempInt], facing BloodySpearAngle[TempInt] degrees
Set BloodySpearPullTimer[TempInt] = (BloodySpearPullTimer[TempInt] + 0.02)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearMaxTime[TempInt] Greater than or equal to 1.78
Then - Actions
Unit - Turn collision for BloodySpearTarget[TempInt] On
Unit - Unpause BloodySpearCaster[TempInt]
Unit - Remove BloodySpearDummy[TempInt] from the game
Custom script: call RemoveLocation (udg_BloodySpearCasterPos[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearTargetPos[udg_TempInt])
Else - Actions
Unit Group - Pick every unit in BloodySpearPullUg[TempInt] and do (Actions)
Loop - Actions
Unit - Move BloodySpearTarget[TempInt] instantly to BloodySpearSpearPos[TempInt], facing (Facing of BloodySpearTarget[TempInt]) degrees
Set BloodySpearDistance3[TempInt] = (Distance between BloodySpearCasterPos2[TempInt] and BloodySpearSpearPos[TempInt])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearDistance3[TempInt] Less than or equal to 45.00
Then - Actions
Unit - Remove (Picked unit) from the game
Unit - Turn collision for BloodySpearTarget[TempInt] On
Unit - Unpause BloodySpearCaster[TempInt]
Unit - Remove BloodySpearDummy[TempInt] from the game
Custom script: call RemoveLocation (udg_BloodySpearCasterPos[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearTargetPos[udg_TempInt])
Else - Actions
Custom script: call RemoveLocation (udg_BloodySpearCasterPos2[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearSpearPos[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearTp[udg_TempInt])
Unit Group - Pick every unit in BloodySpearUgRope[TempInt] and do (Actions)
Loop - Actions
Set BloodySpearCasterPos2[TempInt] = (Position of BloodySpearCaster[TempInt])
Set BloodySpearSpearPos[TempInt] = (Position of (Picked unit))
Set BloodySpearTp[TempInt] = (BloodySpearSpearPos[TempInt] offset by 20.00 towards (BloodySpearAngle[TempInt] + 180.00) degrees)
Unit - Move (Picked unit) instantly to BloodySpearTp[TempInt], facing BloodySpearAngle[TempInt] degrees
Set BloodySpearDistance3[TempInt] = (Distance between BloodySpearCasterPos2[TempInt] and BloodySpearSpearPos[TempInt])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearDistance3[TempInt] Less than or equal to 25.00
Then - Actions
Unit - Remove (Picked unit) from the game
Else - Actions
Custom script: call RemoveLocation (udg_BloodySpearCasterPos2[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearSpearPos[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearTp[udg_TempInt])
Else - Actions
Unit Group - Pick every unit in BloodySpearUgRope[TempInt] and do (Actions)
Loop - Actions
Set BloodySpearRopePos[TempInt] = (Position of (Picked unit))
Set BloodySpearTp[TempInt] = (BloodySpearRopePos[TempInt] offset by 20.00 towards BloodySpearAngle[TempInt] degrees)
Unit - Move (Picked unit) instantly to BloodySpearTp[TempInt], facing BloodySpearAngle[TempInt] degrees
Custom script: call RemoveLocation (udg_BloodySpearSpearPos[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearTp[udg_TempInt])
Unit Group - Pick every unit in BloodySpearUgSpear[TempInt] and do (Actions)
Loop - Actions
Set BloodySpearSpearPos[TempInt] = (Position of (Picked unit))
Set BloodySpearTp[TempInt] = (BloodySpearSpearPos[TempInt] offset by 20.00 towards BloodySpearAngle[TempInt] degrees)
Unit - Move (Picked unit) instantly to BloodySpearTp[TempInt], facing BloodySpearAngle[TempInt] degrees
Custom script: call RemoveLocation (udg_BloodySpearSpearPos[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearTp[udg_TempInt])
Code:
Four
Events
Time - Every 0.02 seconds of game time
Conditions
(Number of units in BloodySpearUg) Greater than 0
Actions
Unit Group - Pick every unit in BloodySpearUg and do (Actions)
Loop - Actions
Set TempInt = (Custom value of (Picked unit))
Unit Group - Pick every unit in BloodySpearUgSpear[TempInt] and do (Actions)
Loop - Actions
Set BloodySpearSpearPos[TempInt] = (Position of (Picked unit))
Set BloodySpearTargetPos[TempInt] = (Position of BloodySpearTarget[TempInt])
Set BloodySpearDistance2[TempInt] = (Distance between BloodySpearTargetPos[TempInt] and BloodySpearSpearPos[TempInt])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearDistance2[TempInt] Less than or equal to 65.00
Then - Actions
Set BloodySpearPullBack[TempInt] = True
Unit - Turn collision for BloodySpearTarget[TempInt] Off
Unit Group - Add BloodySpearTarget[TempInt] to BloodySpearPullUg[TempInt]
Set BloodySpearDamageCheck[TempInt] = (BloodySpearDamageCheck[TempInt] + 1)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearMaxTime[TempInt] Greater than or equal to 0.85
Then - Actions
Set BloodySpearPullBack[TempInt] = True
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BloodySpearDamageCheck[TempInt] Equal to 1
Then - Actions
Floating Text - Create floating text that reads Get over here! above BloodySpearCaster[TempInt] with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Set the velocity of (Last created floating text) to 30.00 towards 65.00 degrees
Floating Text - Change the lifespan of (Last created floating text) to 1.20 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.75 seconds
Special Effect - Create a special effect attached to the origin of BloodySpearTarget[TempInt] using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
Special Effect - Destroy (Last created special effect)
Set BloodySpearDamage[TempInt] = ((2 x (Strength of BloodySpearCaster[TempInt] (Exclude bonuses))) + (100 x (Level of Bloody Spear for BloodySpearCaster[TempInt])))
Floating Text - Create floating text that reads (String(BloodySpearDamage[TempInt])) above BloodySpearTarget[TempInt] with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
Floating Text - Change (Last created floating text): Disable permanence
Floating Text - Set the velocity of (Last created floating text) to 30.00 towards 65.00 degrees
Floating Text - Change the lifespan of (Last created floating text) to 1.20 seconds
Floating Text - Change the fading age of (Last created floating text) to 0.75 seconds
Unit - Create 1 Dummy for (Owner of BloodySpearCaster[TempInt]) at BloodySpearCasterPos[TempInt] facing Default building facing degrees
Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
Unit - Add Storm Bolt to (Last created unit)
Unit - Set level of Storm Bolt for (Last created unit) to (Level of Unknown (A001) for BloodySpearCaster[TempInt])
Unit - Order (Last created unit) to Human Mountain King - Storm Bolt BloodySpearTarget[TempInt]
Unit - Cause (Last created unit) to damage BloodySpearTarget[TempInt], dealing (Real(BloodySpearDamage[TempInt])) damage of attack type Spells and damage type Normal
Else - Actions
Custom script: call RemoveLocation (udg_BloodySpearTargetPos[udg_TempInt])
Custom script: call RemoveLocation (udg_BloodySpearSpearPos[udg_TempInt])
This is basically a meat hook kind of spell, but i think its alot cooler, cause all the meat hook spells ive seen are just one unit kinda going further out till it hits the target, mine has a rope , o ya and this was my recreation on Scorpions Bloody Spear from Mortal Kombat
Post any leaks or bugs you find
Im not the best at removing leaks, so you might find some, post those too
Thanks to Waaaaagh for help with a little error i didnt see
Also when your casting the spell, when the rope units are created you'll notice that the angle that they face is like not right, but then correct (look at the screenshots) im not sure why it happens, i'll try to fix it up
Posion Spear
Dl the maps: