[Log in / Register]
| News | Chat | Pastebin | Donations | Tutorials | Rules | Forums |
| Maps | Skins | Icons | Models | Spells | Tools | Jass | Packs | Hosted Projects | Starcraft II Modding | Starcraft II Resources | Galaxy Wiki |
(Keeps Hive Alive)
Go Back   The Hive Workshop > Spells


Reply
 
Thread Tools
The Hive Workshop Spells:
Bat Form v1.3
by Marsal
Images
Highslide JS
Details
Uploaded:12:47, 3rd Aug 2012
Last Updated:04:58, 4th Aug 2012
Keywords:skillshot, bat, form, vampire, dreadlord, travel, teleport, damage,
Type:Target Ground
Category:GUI / Triggers

My entry for The Legendary 2012 arena event. My opponent is defskull.

Description:
The hero launches towards the target point in form of a bat swarm dealing damage. The swarm will deal 8% less damage for each target hit, down to a minimum of 40% damage dealt.

This spell was greatly inspired by:
-Ezreal from League of Legends
-The Ancient Apparition from DotA
-Kain from Legacy of Kain


Spell type: Global Skillshot

Bat Form
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Bat Form
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BTHas[BTLastRecycled] Equal to True
Then - Actions
Set BTMax = (BTMax + 1)
Set BTIndex = BTMax
Else - Actions
Set BTIndex = BTLastRecycled
Set BTLastRecycled = BTRecycledList[BTLastRecycled]
Set BTCaster[BTIndex] = (Triggering unit)
Set BTCasterPoint[BTIndex] = (Position of BTCaster[BTIndex])
Set TempLoc = (Target point of ability being cast)
Set BTAngle[BTIndex] = (Angle from BTCasterPoint[BTIndex] to TempLoc)
Set BTDistance[BTIndex] = 0.00
Set BTAbiLevel[BTInteger] = (Level of Bat Form for BTCaster[BTIndex])
Set BTDamage[BTIndex] = (50.00 + (15.00 x (Real(BTAbiLevel[BTInteger]))))
Set BTOriginalDamage[BTInteger] = BTDamage[BTInteger]
Set BTDamageReduce[BTInteger] = (BTDamage[BTIndex] x 0.08)
Set BTDone[BTIndex] = False
Set BTStop[BTIndex] = False
Set BTHas[BTIndex] = True
Set BTCount = (BTCount + 1)
Unit - Create 1 Target Pointer for (Triggering player) at BTCasterPoint[BTIndex] facing Default building facing degrees
Set BTTargetPointer[BTIndex] = (Last created unit)
Animation - Change BTTargetPointer[BTIndex]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
Unit - Pause BTTargetPointer[BTIndex]
Unit - Make BTTargetPointer[BTIndex] Invulnerable
Custom script: set udg_BTDMGGroup[udg_BTIndex] = CreateGroup()
Custom script: call RemoveLocation (udg_TempLoc)
Unit - Remove Bat Form from BTCaster[BTIndex]
Unit - Add Bat Form Launch to BTCaster[BTIndex]
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Bat Form Loop <gen> is on) Equal to False
Then - Actions
Trigger - Turn on Bat Form Loop <gen>
Else - Actions


Bat Form Activate
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Bat Form Launch
Actions
Set TempUnit = (Triggering unit)
For each (Integer TempIntS) from 0 to BTMax, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
TempUnit Equal to BTCaster[TempIntS]
Then - Actions
Custom script: call RemoveLocation (udg_BTCasterPoint[udg_TempIntS])
Set BTCasterPoint[TempIntS] = (Position of BTCaster[TempIntS])
Set BTTargetPoint[TempIntS] = (Position of BTTargetPointer[TempIntS])
Set BTAngle[TempIntS] = (Angle from BTCasterPoint[TempIntS] to BTTargetPoint[TempIntS])
Set BTMaxDistance[TempIntS] = BTDistance[TempIntS]
Set BTDistance[TempIntS] = 0.00
Set BTStop[TempIntS] = True
Unit - Remove Bat Form Launch from BTCaster[TempIntS]
Unit - Add Bat Form to BTCaster[TempIntS]
Unit - Set level of Bat Form for BTCaster[TempIntS] to BTAbiLevel[TempIntS]
Unit - Pause BTCaster[TempIntS]
Unit - Turn collision for BTCaster[TempIntS] Off
Unit - Make BTCaster[TempIntS] Invulnerable
Unit - Create 1 Swarm Dummy for (Owner of BTCaster[TempIntS]) at BTCasterPoint[TempIntS] facing BTAngle[TempIntS] degrees
Set BTSwarm[TempIntS] = (Last created unit)
Animation - Change BTSwarm[TempIntS]'s animation speed to 40.00% of its original speed
Unit - Create 1 Bat Effect for (Owner of BTCaster[TempIntS]) at BTCasterPoint[TempIntS] facing BTAngle[TempIntS] degrees
Animation - Change (Last created unit)'s animation speed to 300.00% of its original speed
Unit - Kill (Last created unit)
Sound - Play SacrificeUnit <gen> at 100.00% volume, attached to BTCaster[TempIntS]
Else - Actions


Bat Form Loop
Events
Time - Every 0.03 seconds of game time
Conditions
Actions
For each (Integer BTInteger) from 0 to BTMax, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BTHas[BTInteger] Equal to True
Then - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BTStop[BTInteger] Equal to False
Then - Actions
Set BTDistance[BTInteger] = (BTDistance[BTInteger] + 40.00)
Set TempLoc = (BTCasterPoint[BTInteger] offset by BTDistance[BTInteger] towards BTAngle[BTInteger] degrees)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
((Playable map area) contains TempLoc) Equal to True
Then - Actions
Unit - Move BTTargetPointer[BTInteger] instantly to TempLoc
Else - Actions
Custom script: call RemoveLocation (udg_BTCasterPoint[udg_BTInteger])
Set BTCasterPoint[BTInteger] = (Position of BTCaster[BTInteger])
Set BTTargetPoint[BTInteger] = (Position of BTTargetPointer[BTInteger])
Set BTAngle[BTInteger] = (Angle from BTCasterPoint[BTInteger] to BTTargetPoint[BTInteger])
Set BTMaxDistance[BTInteger] = BTDistance[BTInteger]
Set BTDistance[BTInteger] = 0.00
Set BTStop[BTInteger] = True
Unit - Remove Bat Form Launch from BTCaster[BTInteger]
Unit - Add Bat Form to BTCaster[BTInteger]
Unit - Set level of Bat Form for BTCaster[BTInteger] to BTAbiLevel[BTInteger]
Unit - Turn collision for BTCaster[BTInteger] Off
Unit - Pause BTCaster[BTInteger]
Unit - Make BTCaster[BTInteger] Invulnerable
Unit - Create 1 Swarm Dummy for (Owner of BTCaster[BTInteger]) at BTCasterPoint[BTInteger] facing BTAngle[BTInteger] degrees
Set BTSwarm[BTInteger] = (Last created unit)
Animation - Change BTSwarm[BTInteger]'s animation speed to 40.00% of its original speed
Unit - Create 1 Bat Effect for (Owner of BTCaster[BTInteger]) at BTCasterPoint[BTInteger] facing BTAngle[BTInteger] degrees
Animation - Change (Last created unit)'s animation speed to 300.00% of its original speed
Unit - Kill (Last created unit)
Sound - Play SacrificeUnit <gen> at 100.00% volume, attached to BTCaster[BTInteger]
Custom script: call RemoveLocation (udg_TempLoc)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BTDone[BTInteger] Equal to False
Then - Actions
Set BTDistance[BTInteger] = (BTDistance[BTInteger] + 35.00)
Set TempLoc = (BTCasterPoint[BTInteger] offset by BTDistance[BTInteger] towards BTAngle[BTInteger] degrees)
Unit - Move BTCaster[BTInteger] instantly to TempLoc
Unit - Move BTSwarm[BTInteger] instantly to TempLoc
Animation - Change BTCaster[BTInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 100.00% transparency
Custom script: set bj_wantDestroyGroup = true
Unit Group - Pick every unit in (Units within 225.00 of TempLoc matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and (((((Matching unit) is alive) Equal to True) and (((Matching unit) is in BTDMGGroup[BTInteger]) Equal to Fa and do (Actions)
Loop - Actions
Unit Group - Add (Picked unit) to BTDMGGroup[BTInteger]
Unit - Cause BTCaster[BTInteger] to damage (Picked unit), dealing BTDamage[BTInteger] damage of attack type Pierce and damage type Normal
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BTDamage[BTInteger] Greater than (BTOriginalDamage[BTInteger] x 0.40)
Then - Actions
Set BTDamage[BTInteger] = (BTDamage[BTInteger] - BTDamageReduce[BTInteger])
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BTDistance[BTInteger] Greater than or equal to BTMaxDistance[BTInteger]
Then - Actions
Unit - Move BTCaster[BTInteger] instantly to TempLoc
Set BTDone[BTInteger] = True
Custom script: set bj_wantDestroyGroup = true
Destructible - Pick every destructible within 200.00 of TempLoc and do (Actions)
Loop - Actions
Destructible - Kill (Picked destructible)
Else - Actions
Custom script: call RemoveLocation (udg_TempLoc)
Else - Actions
Unit - Turn collision for BTCaster[BTInteger] On
Unit - Explode BTTargetPointer[BTInteger]
Unit - Explode BTSwarm[BTInteger]
Unit - Unpause BTCaster[BTInteger]
Unit - Make BTCaster[BTInteger] Vulnerable
Animation - Change BTCaster[BTInteger]'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
Custom script: call DestroyGroup (udg_BTDMGGroup[udg_BTInteger])
Custom script: call RemoveLocation (udg_BTCasterPoint[udg_BTInteger])
Set BTCount = (BTCount - 1)
Set BTHas[BTInteger] = False
Set BTRecycledList[BTInteger] = BTLastRecycled
Set BTLastRecycled = BTInteger
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
BTCount Equal to 0
Then - Actions
Set BTRecycledList[BTInteger] = 0
Set BTLastRecycled = 0
Set BTMax = 0
Trigger - Turn off (This trigger)
Else - Actions
Else - Actions


Changelog
v1.3
- Fixed sound
- Fixed effect problems when launched directly
- Now destroys destructibles at the destination
- Scaled damage circle to fit it more to the effect
v1.2
- Extra effects
- Changed sound
- Damage changes as targets are hit.
v1.1 - Fixed loop issue
v1.0 - Release
Rating - 4.00 (1 vote)
(Hover and click)
Moderator Comments
Useful
16:17, 3rd Aug 2012
Magtheridon96: Okay, there aren't any major problems at this point.
I'll still leave the Indexing tip in this review in case you want to update it to use a better form of indexing.

Still, good job.

Indexing tip
Your indexing is pretty much the same way I do indexing in vJass, but the iteration isn't as good as it could be. There are cases in which you'd be iterating over dead instances when you don't need to.
Try using a stack instead. All you need is one variable to store the number of running instances and arrays for all your data. (And another integer to use in the For each loop)
Allocation is done by incrementing the integer simply.
Deallocation is done like this:

set data1[currentInstanceInLoop] = data1[instancesRunningCount]
set data2[currentInstanceInLoop] = data2[instancesRunningCount]
etc...
set currentInstanceInLoop = currentInstanceInLoop - 1
set instancesRunningCount = instancesRunningCount - 1

This spell is approved and works properly.


Download Bat Form v1.3.w3x
(41.27 KB, 433 Downloads)

Old 08-04-2012, 01:35 PM   #2 (permalink)
Registered User Marsal
Tsubaki :)
 
Marsal's Avatar
 
Join Date: Jun 2009
Posts: 1,409
Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)
Upcoming changes today:
-Damage increase and damage reduction depending on how many targets are hit.
-Effects (moaaaar eyecandy)
-Sound changes
__________________

People should learn how to say "Thanks" and how to give rep to those who helped them.....
Marsal is offline   Reply With Quote
Old 08-06-2012, 05:29 AM   #3 (permalink)
Registered User mckill2009
SSJ99999 Pinoy!
 
mckill2009's Avatar
 
Join Date: Mar 2009
Posts: 4,380
mckill2009 is a splendid one to behold (847)mckill2009 is a splendid one to behold (847)mckill2009 is a splendid one to behold (847)mckill2009 is a splendid one to behold (847)mckill2009 is a splendid one to behold (847)
Quote:
The hero launches towards the target point...
no it doesnt, it travels towards the edge of the map at that angle, which causes bugs, the picture below shows the hero cant get out of the shaded area...


EDIT:
In any case, the spell looks great so Im rating it 4/5 unless changes made...
Attached Images
File Type: jpg Clipboard01.jpg (52.9 KB, 1627 views)
__________________
My Resources:
My Maps
My Systems/Spells

Your ideas tend to result in unnecessary violence so shut the F*** up!
mckill2009 is offline   Reply With Quote
Old 08-06-2012, 06:29 AM   #4 (permalink)
Registered User Marsal
Tsubaki :)
 
Marsal's Avatar
 
Join Date: Jun 2009
Posts: 1,409
Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)
I thought I fixed this :/ I'll update with a fix asap.
__________________

People should learn how to say "Thanks" and how to give rep to those who helped them.....
Marsal is offline   Reply With Quote
Old 08-07-2012, 08:20 AM   #5 (permalink)
Registered User defskull
ϟƘƦƖ|ןΣ✘
 
defskull's Avatar
 
Join Date: Mar 2008
Posts: 7,532
defskull has a brilliant future (1282)defskull has a brilliant future (1282)defskull has a brilliant future (1282)defskull has a brilliant future (1282)
Zephyr Contest #9 - Winner: Stringed Shuriken: An assassin is always working like a trickster. This entry proves the theory, as defskull managed to integrate the fictional lore of the human legacy into a single, virtual ability. Strike fast, die instantly! 
I thought you went over the deadline, hmmm.
So this spell does not support cooldown since you use the method Add/Remove Ability ?

Last edited by defskull; 08-07-2012 at 08:51 AM.
defskull is online now   Reply With Quote
Old 08-07-2012, 09:16 AM   #6 (permalink)
Registered User Marsal
Tsubaki :)
 
Marsal's Avatar
 
Join Date: Jun 2009
Posts: 1,409
Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)
I don't really know what is the deadline ~.~

Forgot about this, I thought it will act like items with abilities, if you drop it and pick it up again it will still have a cooldown. I could fix that by using a different method but from what you said I guess I'm out of the deadline :/
__________________

People should learn how to say "Thanks" and how to give rep to those who helped them.....
Marsal is offline   Reply With Quote
Old 08-07-2012, 10:05 AM   #7 (permalink)
Registered User defskull
ϟƘƦƖ|ןΣ✘
 
defskull's Avatar
 
Join Date: Mar 2008
Posts: 7,532
defskull has a brilliant future (1282)defskull has a brilliant future (1282)defskull has a brilliant future (1282)defskull has a brilliant future (1282)
Zephyr Contest #9 - Winner: Stringed Shuriken: An assassin is always working like a trickster. This entry proves the theory, as defskull managed to integrate the fictional lore of the human legacy into a single, virtual ability. Strike fast, die instantly! 
The deadline was August 2nd.
Well, rules are rules dude :/

You also signed the contract to obey the rules.
defskull is online now   Reply With Quote
Old 08-07-2012, 10:24 AM   #8 (permalink)
Registered User Marsal
Tsubaki :)
 
Marsal's Avatar
 
Join Date: Jun 2009
Posts: 1,409
Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)
Don't be a douche... I didn't know what the deadline is since I wasn't there.. Anyway this is just a spell, it took really nothing but 2-3 hours. It's not the world.
__________________

People should learn how to say "Thanks" and how to give rep to those who helped them.....
Marsal is offline   Reply With Quote
Old 08-08-2012, 01:17 PM   #9 (permalink)
Registered User iChaos
Bored, Inactive.
 
iChaos's Avatar
 
Join Date: May 2012
Posts: 184
iChaos has little to show at this moment (30)iChaos has little to show at this moment (30)iChaos has little to show at this moment (30)iChaos has little to show at this moment (30)
Quote:
Originally Posted by mckill2009 View Post




----------------------------------------------------------------------

As you can see in the image, there is 2 heroes. But when I used the skill, it went over the border, and left the other hero. I tried it with the other one, but I didn't work. So only 1 hero left.
__________________

iChaos is offline   Reply With Quote
Old 08-08-2012, 01:53 PM   #10 (permalink)
Registered User Marsal
Tsubaki :)
 
Marsal's Avatar
 
Join Date: Jun 2009
Posts: 1,409
Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)Marsal will become famous soon enough (118)
Hmm... It shouldn't do this. In fact it's nearly impossible :/ Anyway, I'll try to fix these things after the spell is judged.
__________________

People should learn how to say "Thanks" and how to give rep to those who helped them.....
Marsal is offline   Reply With Quote
Reply

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off


All times are GMT. The time now is 03:18 AM.





Powered by vBulletin
Copyright 2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.5.1 PL2
Copyright © Ralle