• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Toss v1.0

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
A spell from DotA named Toss :)

Tiny's Toss Description:
Tiny grabs the nearest unit, friend or foe, and launches them at a location. Upon landing, the unit deals damage in an area as well as receiving 20% of that damage to themselves (this damage increases as your size increases). Cannot toss Dragon Knight in Elder Form.
Level 1 - 75 damage, 700 range.
Level 2 - 150 damage, 900 range.
Level 3 - 225 damage, 1100 range.
Level 4 - 300 damage, 1300 range.
• If a unit is hit by Avalanche and then Tossed, they can be hit a second time by Avalanche if they land back in its AoE before it ends.
• Tossed allies do not take any damage.
Mana Cost: 120
Cooldown: 10 seconds

Triggers [GUI]

Toss Cast:
  • Toss Spell
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Toss
    • Actions
      • -------- -------------------------------------- --------
      • -------- Setting variables --------
      • -------- -------------------------------------- --------
      • Set TossUnit[1] = (Triggering unit)
      • Set TossUnit[2] = (Target unit of ability being cast)
      • Set TossPosition[1] = (Position of TossUnit[2])
      • Set TossGroup = (Units within 275.00 of (Position of TossUnit[1]) matching (((((Matching unit) is alive) Equal to True) and ((Level of Toss for (Matching unit)) Not equal to 1)) and ((Matching unit) Not equal to TossUnit[1])))
      • Set TossUnit[3] = (Random unit from TossGroup)
      • -------- -------------------------------------- --------
      • -------- checking if there is nearby unit --------
      • -------- -------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (TossUnit[3] Equal to No unit) or ((Owner of TossUnit[3]) Equal to (Owner of TossUnit[1]))
        • Then - Actions
          • -------- -------------------------------------- --------
          • -------- stops the unit if there is no unit nearby --------
          • -------- -------------------------------------- --------
          • Unit - Order TossUnit[1] to Stop
          • Cinematic - Clear the screen of text messages for (Player group((Owner of TossUnit[1])))
          • -------- -------------------------------------- --------
          • -------- creating text message for triggering unit --------
          • -------- -------------------------------------- --------
          • If (TossUnit[3] Equal to No unit) then do (Game - Display to (Player group((Owner of TossUnit[1]))) for 2.00 seconds the text: ...) else do (Game - Display to (Player group((Owner of TossUnit[1]))) for 2.00 seconds the text: ...)
          • -------- -------------------------------------- --------
          • -------- returning the mana points --------
          • -------- -------------------------------------- --------
          • Unit - Set mana of TossUnit[1] to ((Mana of TossUnit[1]) + 120.00)
        • Else - Actions
          • -------- -------------------------------------- --------
          • -------- adding abilities --------
          • -------- -------------------------------------- --------
          • Unit - Add Crow Form to TossUnit[3]
          • Unit - Remove Crow Form from TossUnit[3]
          • Unit - Pause TossUnit[3]
          • Unit - Turn collision for TossUnit[3] Off
          • Set TossCounter = 0
          • -------- -------------------------------------- --------
          • -------- setting up the toss timer --------
          • -------- -------------------------------------- --------
          • Countdown Timer - Start TossTimer as a Repeating timer that will expire in 0.02 seconds
          • Special Effect - Create a special effect attached to the origin of TossUnit[3] using Abilities\Spells\Human\FlakCannons\FlakTarget.mdl
      • Custom script: call DestroyGroup (udg_TossGroup)
Toss Loop
  • Toss Loop
    • Events
      • Time - TossTimer expires
    • Conditions
    • Actions
      • -------- -------------------------------------- --------
      • -------- checking if the unit lands from being tossed --------
      • -------- -------------------------------------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • TossCounter Greater than 50
        • Then - Actions
          • -------- -------------------------------------- --------
          • -------- pausing timer then adding a collision --------
          • -------- -------------------------------------- --------
          • Countdown Timer - Pause TossTimer
          • Unit - Unpause TossUnit[3]
          • Unit - Turn collision for TossUnit[3] On
          • Animation - Change TossUnit[3] flying height to (Default flying height of TossUnit[3]) at 0.00
          • -------- -------------------------------------- --------
          • -------- we create a special effect when the unit lands off --------
          • -------- -------------------------------------- --------
          • Special Effect - Create a special effect attached to the origin of TossUnit[3] using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
          • -------- -------------------------------------- --------
          • -------- then if it lands off, we should damage that unit --------
          • -------- -------------------------------------- --------
          • Unit - Cause TossUnit[1] to damage TossUnit[3], dealing (0.20 x (75.00 x (Real((Level of Toss for TossUnit[1]))))) damage of attack type Spells and damage type Fire
          • -------- -------------------------------------- --------
          • -------- then the AoE damage --------
          • -------- -------------------------------------- --------
          • Set TossGroup = (Units within 300.00 of (Position of TossUnit[3]) matching (((Matching unit) belongs to an enemy of (Owner of TossUnit[1])) Equal to True))
          • Unit Group - Pick every unit in TossGroup and do (Unit - Cause TossUnit[1] to damage (Picked unit), dealing (75.00 x (Real((Level of Toss for TossUnit[1])))) damage of attack type Spells and damage type Fire)
          • -------- -------------------------------------- --------
          • -------- removing possible leaks --------
          • -------- -------------------------------------- --------
          • Custom script: call DestroyGroup (udg_TossGroup)
          • Custom script: call RemoveLocation (udg_TossPosition[1])
          • Custom script: call RemoveLocation (udg_TossPosition[3])
        • Else - Actions
          • -------- -------------------------------------- --------
          • -------- changing tossed unit's flying height --------
          • -------- -------------------------------------- --------
          • Set TossCounter = (TossCounter + 1)
          • Animation - Change TossUnit[3] flying height to (775.00 - ((((Real(TossCounter)) - 25.00) x ((Real(TossCounter)) - 25.00)) - 25.00)) at 0.00
          • Set TossPosition[2] = (Position of TossUnit[2])
          • If ((Distance between TossPosition[1] and TossPosition[2]) Greater than 1000.00) then do (Set TossPosition[3] = TossPosition[3]) else do (Set TossPosition[3] = TossPosition[2])
          • Set TossPosition[4] = (Position of TossUnit[3])
          • Set TossPosition[5] = (TossPosition[4] offset by ((Distance between TossPosition[4] and TossPosition[3]) / (50.00 - (Real(TossCounter)))) towards (Angle from TossPosition[4] to TossPosition[3]) degrees)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Distance between TossPosition[4] and TossPosition[3]) Greater than or equal to ((Distance between TossPosition[4] and TossPosition[3]) / (50.00 - (Real(TossCounter))))
            • Then - Actions
              • Unit - Move TossUnit[3] instantly to TossPosition[5]
            • Else - Actions
              • Unit - Move TossUnit[3] instantly to TossPosition[3]
      • -------- -------------------------------------- --------
      • -------- again, removing possible leaks --------
      • -------- -------------------------------------- --------
      • Custom script: call RemoveLocation (udg_TossPosition[2])
      • Custom script: call RemoveLocation (udg_TossPosition[4])
      • Custom script: call RemoveLocation (udg_TossPosition[5])
Special Thanks to:
IceFrog: for the spell idea.

Keywords:
DotA, IceFrog, kurtgiogi, Toss, DotA Toss, Toss Spell, Tiny, Stone Giant, Stone, Giant, DotA Spell, Throw
Contents

Toss v1.0 (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. The spell is not MUI. Also check leaks. You leak player groups and at least one location.

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

Maker, Toss v1.0, 03:32 30th Oct 2011

The spell is not MUI.
Also check leaks.
You leak player groups and at least one location.
 
If a unit is hit by Avalanche and then Tossed, they can be hit a second time by Avalanche if they land back in its AoE before it ends.

Irrelevant much?

  • Set TossGroup = (Units within 275.00 of (Position of TossUnit[1]) matching (((((Matching unit) is alive) Equal to True) and ((Level of Toss for (Matching unit)) Not equal to 1)) and ((Matching unit) Not equal to TossUnit[1])))
(Position of TossUnit[1]) leaks.

Also, in GUI, you're supposed to use Periodic triggers. Timers aren't really that convenient. We only use them in Jass and vJass.
 
Tiny's Toss Description:
Tiny grabs the nearest unit, friend or foe, and launches them at a location. Upon landing, the unit deals damage in an area as well as receiving 20% of that damage to themselves (this damage increases as your size increases). Cannot toss Dragon Knight in Elder Form.
Level 1 - 75 damage, 700 range.
Level 2 - 150 damage, 900 range.
Level 3 - 225 damage, 1100 range.
Level 4 - 300 damage, 1300 range.
• If a unit is hit by Avalanche and then Tossed, they can be hit a second time by Avalanche if they land back in its AoE before it ends.
• Tossed allies do not take any damage.
Mana Cost: 120
Cooldown: 10 seconds

-->super copied from DotA eh?

go read some triggering tutorials, especially on leaks and making MUI spells...
 
Level 4
Joined
Jun 22, 2011
Messages
11
Tiny's Toss Description:
Tiny grabs the nearest unit, friend or foe, and launches them at a location. Upon landing, the unit deals damage in an area as well as receiving 20% of that damage to themselves (this damage increases as your size increases). Cannot toss Dragon Knight in Elder Form.
Level 1 - 75 damage, 700 range.
Level 2 - 150 damage, 900 range.
Level 3 - 225 damage, 1100 range.
Level 4 - 300 damage, 1300 range.
• If a unit is hit by Avalanche and then Tossed, they can be hit a second time by Avalanche if they land back in its AoE before it ends.
• Tossed allies do not take any damage.
Mana Cost: 120
Cooldown: 10 seconds

-->super copied from DotA eh?

go read some triggering tutorials, especially on leaks and making MUI spells...
Is it bad to copy the description of the spell "Toss" from DotA? Of course i will read some of those tutorials from triggering and how to make those spells MUI. I'm learning too on how to avoid those leaks :).

Very nice spell. Might use this lol. Good job.

Thanks, but i need to fix those leaks and change the timer onto periodic event. i'll try to fix it :p

Irrelevant much?

  • Set TossGroup = (Units within 275.00 of (Position of TossUnit[1]) matching (((((Matching unit) is alive) Equal to True) and ((Level of Toss for (Matching unit)) Not equal to 1)) and ((Matching unit) Not equal to TossUnit[1])))
(Position of TossUnit[1]) leaks.

Also, in GUI, you're supposed to use Periodic triggers. Timers aren't really that convenient. We only use them in Jass and vJass.

if the TossUnit[1] leaks, what do i need to do to fix it?
 
Last edited:
Level 14
Joined
Mar 23, 2011
Messages
1,439
Is it bad to copy the description of the spell "Toss" from DotA? Of course i will read some of those tutorials from triggering and how to make those spells MUI. I'm learning too on how to avoid those leaks :).

It's just too unoriginal to just "copy" a spell from the map,im sick of all those who just makes dota spells (omnislash,leap,nevermore spell packs,etc.)
it covers up about 50% of the spells section,why wont you people just make original spells and not copied spells...
why is dota ruining warcraft 3's possibilities? oh lord why?
 
Because you copied the irrelevant parts... what's the use of the details about something like avalanche, when the only spell you have is Toss? You should also remove the thing about Dragon knight and the damage increase when you grow in size...

its the position of TossUnit[1] that leaks, not the unit itself... Also as Maker said, your spell is not MUI, meaning only one unit can use it at a moment... Its a requisite here in the spells section that Spells/systems be MUI... Go read tutorials first then come back...

Its fine to do DotA spells once in a while, but do the more useful ones... and better yet, add your own touch to it rather than just making a complete copy of it...
 
if the TossUnit[1] leaks, what do i need to do to fix it?

As Adiktuz said, it's his position that leaks.

You should store it in a variable like this:
  • Set TempLoc = (Position of TossUnit[1])
  • Set TossGroup = (Units within 275.00 of TempLoc matching (((((Matching unit) is alive) Equal to True) and ((Level of Toss for (Matching unit)) Not equal to 1)) and ((Matching unit) Not equal to TossUnit[1])))
  • Custom script: call RemoveLocation(udg_TempLoc)
 
Top