Spell Scatter Shot

Doom-Angel

Jass User (Just started using NewGen)
Reaction score
167
k so i finnaly finished the skill completely tell me what you think about it:

Scatter Shot
Description:Creates many energy balls around the target and then throw them all at once each ball causes 40 damage.
Level 1: 25 Energy balls.
Level 2: 50 Energy balls.
Level 3: 75 Energy balls.

Leakless: im pretty sure it is if not correct me.
MUI: yes.
Jass: yes.

Pictures: (i hope they came out good)
this is how it starts:
scattershotstartyw6.jpg
this is how it finish: (pretty much...)
scattershotfinishyg1.jpg
it's pretty hard to see what happens so seeing it ingame would be a lot better.

as some of you might have noticed this skill is supposed to reflect what piccolo does to 17 in this video: (watch from -0:30)
[YOUTUBE]9tQ60LnGcCM[/YOUTUBE]

and here's the trigger:
JASS:
//@@@@@@@@@@@@@@@@@@@@@@@@@ [Spell] Scatter Shot @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@ Made by Doom-Angel @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ~~Have Fun~~ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

//@@@@@@@@@@@@@@@@@@@@@@@@ Implementation Instructions @@@@@@@@@@@@@@@@@@@@@@@@@@@@
//1) Copy this trigger.
//2) Copy the Ability "Scatter Shot" from the Object Editor.
//3) Copy the Ability "Kaboom - Energy Ball" from the Object Editor.
//4) Copy the Dummy unit "EnergyBall" from the Object Editor.
//5) Copy the sound from the sound editor
//6) Make sure to see if the variable name of the sound have changed and just simply change it's name to the name used here - ShootSound.
//7) Export the texture Green_Glow2 from the Import Manager to your computer and import it to the requested map.
//8) after you have imported the texture just change the path of the texture to "Textures\Green_Glow2.blp" and that's it.
//9) Make sure to check if the Raw Id of the ability "Scatter Shot" and the unit "EnergyBall" are the same as the constants.
//10) If you don't know how to check the Raw Id simply go to the object editor and press CTRL+D and you will see it right away.
//11) Check the constant functions if you wanna change things in the skills like Damage,Raw Id  and etc'.
//12) ~Have Fun~ <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite7" alt=":p" title="Stick Out Tongue    :p" loading="lazy" data-shortname=":p" />

//@@@@@@@@@@@@@@@@@@@@@@@@@@@ Constants Start Here @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

//Make sure the raw id of the ability &quot;Scatter Shot&quot; is the same as the one below if not change it.
constant function SS_AbilityId takes nothing returns integer
    return &#039;A000&#039;
endfunction

//Make sure the raw id of the dummy unit &quot;EnergyBall&quot; is the same as the one below if not change it.
constant function SS_DummyId takes nothing returns integer
    return &#039;n000&#039;
endfunction

//This Constant changes the damage per ball which is by default 40.00.
constant function SS_DamagePerBall takes nothing returns real
    return 40.00
endfunction

//This Constant changes the number of balls per level which is by default 25 multiplied by the level of the skill.
constant function SS_BallPerLevel takes integer level returns integer
    return 25*level
endfunction

//This is the sound variable name in case you wanna pick another name for it just do - gg_snd_&lt;Your variable name&gt; make sure your variable has the same name as well.
//
constant function SS_SoundVariable takes nothing returns sound
    return gg_snd_ShootSound
endfunction
//@@@@@@@@@@@@@@@@@@@@@@@@@@@ Constants End Here @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//From this point on unless you know  JASS i suggest not to touch anything.


function SS_Condition takes nothing returns boolean
    return (GetSpellAbilityId()== SS_AbilityId())
endfunction



function SS_Actions takes nothing returns nothing
    local unit hero = GetTriggerUnit()
    local real heroX = GetUnitX(hero)
    local real heroY = GetUnitY(hero)
    local unit target = GetSpellTargetUnit()
    local real targetX = GetUnitX(target)
    local real targetY = GetUnitY(target)
    local real randomX
    local real randomY
    local real randomZ
    local real ballX
    local real ballY
    local real dx
    local real dy
    local real distance
    local real rate
    local unit array ball
    local real ms = GetUnitMoveSpeed(target)
    local real height = GetUnitFlyHeight(target)
    local sound shot = SS_SoundVariable()
    local integer level = GetUnitAbilityLevel(hero,SS_AbilityId())
    local integer i = 1
    call SetUnitAnimation(hero,&quot;stand&quot;)
    call SetUnitMoveSpeed(target,0)
    call SetUnitInvulnerable(hero,true)
    call TriggerSleepAction(0.5)
    call SetUnitTimeScale(hero,5)
    call PauseUnit(hero,true)
      loop
         exitwhen(i&gt;SS_BallPerLevel(level))
         call StopSound(shot,false,false)
         call SetUnitAnimation(hero,&quot;attack 3&quot;)      
            call StartSound(shot)
         set ball<i> = CreateUnit(GetOwningPlayer(hero),SS_DummyId(),heroX,heroY,GetUnitFacing(hero))
         set randomX = GetRandomReal(targetX-450,targetX+450)
           loop
              exitwhen(randomX &gt;= targetX+150 or randomX &lt;= targetX-150)
              set randomX = GetRandomReal(targetX-450,targetX+450)
           endloop 
         set randomY = GetRandomReal(targetY-450,targetY+450)
           loop
              exitwhen(randomY &gt;= targetY+150 or randomY &lt;= targetY-150)
              set randomY = GetRandomReal(targetY-450,targetY+450)
           endloop
         call IssuePointOrder(ball<i>,&quot;move&quot;,randomX,randomY)
         set ballX = GetUnitX(ball<i>)
         set ballY = GetUnitY(ball<i>)
         set dx = randomX-ballX
         set dy = randomY-ballY
         set distance = SquareRoot(dx*dx+dy*dy)
         set randomZ = GetRandomReal(50,500)
         set rate = randomZ/(distance/522)
         call SetUnitFlyHeight(ball<i>,randomZ,rate)
         call TriggerSleepAction(-1)
         set i = i+1
      endloop
    call TriggerSleepAction(2.5)
    call SetUnitTimeScale(hero,1)
    call SetUnitAnimation(hero,&quot;spell&quot;)
    set i = 1
      loop
         exitwhen (i&gt;SS_BallPerLevel(level))
           if(GetUnitState(target,UNIT_STATE_LIFE) &lt;= 0.405) then
             set i = SS_BallPerLevel(level)+1
           else
             set ballX = GetUnitX(ball<i>)
             set ballY = GetUnitY(ball<i>)
             set dx = targetX-ballX
             set dy = targetY-ballY
             set distance = SquareRoot(dx*dx+dy*dy)
             set randomZ = GetUnitFlyHeight(ball<i>)+50
             set rate = randomZ/(distance/522)
             call SetUnitFlyHeight(ball<i>,height+50,rate)
             call IssueTargetOrder(ball<i>,&quot;selfdestruct&quot;,target)
             call TriggerSleepAction(-1)
             call UnitDamageTarget(hero,target,SS_DamagePerBall(),true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_UNKNOWN,WEAPON_TYPE_WHOKNOWS) 
             set i = i+1
           endif
      endloop 
    set i=1
    call TriggerSleepAction(0)
    call DestroyEffect(AddSpecialEffect(&quot;Objects\\Spawnmodels\\Other\\NeutralBuildingExplosion\\NeutralBuildingExplosion.mdl&quot;,targetX,targetY))
    call TriggerSleepAction(0.5)
      loop
         exitwhen (i&gt;SS_BallPerLevel(level)) 
         call KillUnit(ball<i>)
         set ball<i> = null
         set i = i+1 
      endloop
    call TriggerSleepAction(0.5) 
    call PauseUnit(hero,false)
    call SetUnitMoveSpeed(target,ms)
    call SetUnitInvulnerable(hero,false)
    set hero = null 
    set target = null
    set shot = null  
endfunction

//===========================================================================
function InitTrig_Scatter_Shot takes nothing returns nothing
    set gg_trg_Scatter_Shot = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Scatter_Shot,EVENT_PLAYER_UNIT_SPELL_CHANNEL)
    call TriggerAddCondition(gg_trg_Scatter_Shot,Condition(function SS_Condition))
    call TriggerAddAction( gg_trg_Scatter_Shot,function SS_Actions)
endfunction

</i></i></i></i></i></i></i></i></i></i></i></i>

i hope it's approved :)

the map is attached below have.
~Have Fun~ :p
 

Attachments

  • [Spell]Scatter Shot.w3x
    40 KB · Views: 636

Doom-Angel

Jass User (Just started using NewGen)
Reaction score
167
yea probably but i thought most people won't notice this kind of thing.....
it was too much of trouble to try and make it exact....
 

chovynz

We are all noobs! in different states of Noobism!
Reaction score
130
Kinda off topic but isnt that "spell" from piccolo called Hellfire Grenades?

Anyways, nice job with the spell.
icon14.gif
 

chovynz

We are all noobs! in different states of Noobism!
Reaction score
130
> Kinda off topic but isnt that "spell" from piccolo called Hellfire Grenades?

Only in english videogame titles.

I stand corrected.
And remain amused that my knowledge is based on flawed translation.
 

Hero

─║╣ero─
Reaction score
250
Well first of all it's called

Hellzone Grenades

And I think it only happens in the English version?
Correct me if I am wrong please
 

Hero

─║╣ero─
Reaction score
250
Here we go:

Answers.com said:
Kakusanyūdōkōdan
Kanji / Kana 拡散誘導光弾
Romaji Kakusanyūdōkōdan
Translated Expanding dispersion of
homing light projectiles
English anime Scatter Shot
English manga Not Named
English Videogame(s) Hellzone Grenade
Creator Piccolo
Other Users
Vegeta*
DB abilities Listing - Category

Piccolo uses this move against Android 17, firing many blasts of ki, which apparently miss, when in reality Piccolo stops them in a way that completely surrounds his opponent, then makes them all fly towards his opponent at once. It is powerful and hard to dodge.

Vegeta also uses this attack twice in the anime. It is amongst his vain attempts to harm Perfect Cell (after having just absorbed #18) while fighting him in Ascended Super Saiyan. He also uses it against Majin Buu when he returned to earth, just before he and Goku fused.

In the English dub it is called Guided Scatter Shot and in games it is called Hellzone Grenade or Makankuuhouidan. It is also sometimes known as Renzoku Senkō Dan.
 

ReVolver

Mega Super Ultra Cool Member
Reaction score
608
Energy balls are like lights I don't know if lights have shadows.
 

Doom-Angel

Jass User (Just started using NewGen)
Reaction score
167
well i guess i will change it to flyer also making it have shadows makes you see easily them all through shadows but Orc_Tamer got a point though im pretty sure that in DBZ they had shadows though it's kinda ironic when you think about it.
 

Doom-Angel

Jass User (Just started using NewGen)
Reaction score
167
thanks tinki
i changed the shadow type to fly and also added to the implentetion instuctions an instruction about how to import the texture and put the correct path (i forgot about that)

anyway im all done the spell seems perfect.
 

Doom-Angel

Jass User (Just started using NewGen)
Reaction score
167
k my last edit:
made the spell faster now it shoots faster than before
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top