• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Sparkwave v1.0 Gui and Jass

Spawns lightnings from heaven, dealing shocking damage in an area of effect and leaving a charge-field which slows every unit passing it
Level 1: 60 damage, Field stays 5s

Level 2: 90 damage, Field stays 10s

Level 3: 120 damage, Field stays 15s
---
Hint: Type -lvlmax to get the char to lv10
Type -cd to reset the cooldown
Spell doesn't attack mechanical units
Spell is MUI/MPI/epic
--
Spell is made by me and therefore credit me if you're gonna use it, thanks.

UPDATE:
As a 'lesson' of my ongoing jasslearning, I redid this spell in (v)jass - just enable the respective trgger.

JASS:
//=====================================================\\
//                   Sparkwave                         \\
//                                                     \\
//                 Credits go to:                      \\
//              HINDYhat, PurplePoot                   \\
//=====================================================\\
scope MeinScope initializer Sparkwave
    //=================================================\\
    //=Now, first we do the usual check which ability  \\
    //=is being cast                                   \\
    //=================================================\\
    private function Conditions takes nothing returns boolean
        return GetSpellAbilityId() == 'A003'
    endfunction

    private function Actions takes nothing returns nothing
    //=================================================\\
    //=Here we define the locals                       \\
    //=================================================\\
        local unit caster = GetTriggerUnit()
        local unit target = GetSpellTargetUnit()
        local unit u
        local integer i = GetUnitAbilityLevel(caster, 'A003')
        local integer i2 = 0
        local real x = GetUnitX(target)
        local real y = GetUnitY(target)
        local player p = GetOwningPlayer(caster)
    //=================================================\\
    //=Finally, we create the first and the second     \\
    //=dummy                                           \\
    //=================================================\\
        set u = CreateUnit(p, 'n000', x, y, 90)
        call UnitApplyTimedLife(u, 'BLTF' , .2)
        set u = CreateUnit(p, 'n001', x, y, 90)
        call UnitApplyTimedLife(u, 'BLTF' , i*5)
        call SetUnitAbilityLevel(u, 'A001', i)
    //=========================================================\\
    //=As we need six of the third dummy we create one each 60°\\
    //=========================================================\\
        loop
            exitwhen i2 > 5
    //=================================================\\
    //=We order it to cast 'chainlightning'           =\\
    //=================================================\\
            set u =  CreateUnit(p, 'n002', (x + 700.00*Cos((i2*60.00)*bj_DEGTORAD)), y + 700.00*Sin((i2*60)*bj_DEGTORAD), 90.00)
            call SetUnitAbilityLevel(u, 'A001', i)
            call IssueTargetOrder(u, "chainlightning", target)
            call UnitApplyTimedLife(u, 'BLTF' , .2)
    //=======================================================\\
    //=And increase the loopcount by one and the angle by 60=\\
    //=======================================================\\
            set i2 = (i2 + 1)
        endloop
    //=================================================\\
    //=To prevent leaks, we null the needed locals    =\\
    //=================================================\\
        set u = null
        set target = null
        set caster = null
    endfunction
   
    private function Sparkwave takes nothing returns nothing
        local trigger t = CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
        call TriggerAddCondition(t, Condition(function Conditions))
        call TriggerAddAction(t, function Actions)
    endfunction
endscope

Keywords:
sparkwave spark lightning spell volt slow
Contents

Sparkwave (Map)

Reviews
21:42, 3rd Feb 2009 Dr Super Good: Recommended An impressive spell for its simplicity. It seems reliable and next to initial cast lag, it also does not reduce fram rate too much. Unfortunatly it is GUI thou, so can not achieve the...

Moderator

M

Moderator

21:42, 3rd Feb 2009
Dr Super Good:
Evaluation

Rating

Recommended
Rating Comment

An impressive spell for its simplicity. It seems reliable and next to initial cast lag, it also does not reduce fram rate too much. Unfortunatly it is GUI thou, so can not achieve the efficency that JASS can. However it does seem leakless and MUI which is what really maters for a spell. However the method used for multi level support in this spell is multiple selection which is discouraged as formula tend to be faster and more efficent for spells with a lot of levels. I can only recommend the use of this spell as it is not too different from normal WC3 spells as far as effect and also it is only one trigger that should be easy to import.

Suggestions . . .
- Improve documentation.
- Improve multi level support efficiency.
- Posiably optimize code further by using JASS.
Advice: If you do not understand why this spell was given the rating it received or if you would like to ask questions about how to improve this spell. Feel free to send a private message to spell moderator Dr Super Good.
 
Level 16
Joined
Jul 4, 2008
Messages
1,106
Squiggy, im testing your spell.


Code:
[COLOR="Green"]Review[/COLOR][CODE]Well, it was very well made, but the spell name doesn't match with the spell.
You should maybe rename it to something like, Sparkylanding, or such.
Cuz wave, well... You know what is wave. [COLOR="Lime"]3.4/5 = 4 [+rep][/COLOR]
[/CODE]



I Accept with this. [PS: I sayd it first!]

EDIT:
The name is nice but you should consider something like Thunderclash or Stormcrack cuz it doesn't really has anything to do with any kind of wave...
 
Last edited:
Level 25
Joined
Jun 5, 2008
Messages
2,572
Try using torando's slow aura cuz it gives a negative buff contrary to the positive endurance aura buff.
Besides that i will give it a 4 though it has a lot of potential improvements...
Also +rep.
EDIT:
The name is nice but you should consider something like Thunderclash or Stormcrack cuz it doesn't really has anything to do with any kind of wave...
 
Level 15
Joined
Jul 19, 2007
Messages
618
nice spell! its great that it has jass and gui but the problem with jass one is that its not easy editable... u know what i mean many people dont know jass to well so they will not know how to change rawcodes and such! add more documentation on how to install it and constants for spell setup... ofc u made GUI for people who dont know jass but there are people who want to use jass coz of efficiency and jass-ers will still like to simply edit constants rather then editing the code...

anyway its still great as Dr. SG said its 4/5 from my side to!
Greets and keep the good work!
~Dark Dragon
 
Level 15
Joined
Jul 19, 2007
Messages
618
I don't know that much about constants and stuff.
All I was taught, lies within the code :p

i see! well its quite simple so ill just teach u here:

for example one of constants should be spells rawcode!

JASS:
scope MeinScope initializer Sparkwave

    //=================================================\\
    //=Defines user changeable values \\
    //=================================================\\
    globals
         // Spells raw code goes here. The Sparkwave's rawcode from object editor
         private constant integer    SPARKWAVE_RAWCODE         = 'A003'
    endglobals

    //=================================================\\
    //=Now, first we do the usual check which ability \\
    //=is being cast \\
    //=================================================\\
    private function Conditions takes nothing returns boolean
        return GetSpellAbilityId() == SPARKWAVE_RAWCODE
    endfunction

so as you can see just what u need to do is now replace all ur 'A003' values to SPARKWAVE_RAWCODE constant!

you can ofc make some more to make spell even more editable but its your choice.

Best Regards!
~Dark Dragon
 
Level 15
Joined
Jul 19, 2007
Messages
618
Umm thanks for the explanation.. but I think I'll leave that to my teacher

ahh well k and i think as Kingz said that adding constants would be nice but if you dont want or i bad explained it then feel free to ask people who explain things better then me, well its like i said just wanted to help but its a nice spell already and i belive that GUI-ers will pick GUI and jass-ers jass so yeah ill say its already good enough!

Regards!
~Dark Dragon
 
Level 15
Joined
Jan 31, 2007
Messages
502
Looks quite nice ingame
i like your ideas, most times the script / Trigger is quite simple but the outcome it great

- I would suggest, as mentioned to create a global block for the constants

- You forgot to null the local player p

- You could rename the scope, "MeinScope" does not really fit to a spell, sounds like a german example (My Scope)

- The GUI and Jass version does not work properly due you never set bthe level of the chainlightning spell => it will always deals 10 (60) damage

- With adding the ability and adjusting its fly height or whatever you need you do not have to create multiple dummies, one unit would be enough

- Because you are setting your "y" real (GUI) to 45 each time before using your reset of it at the end is senseless - you do not have to "null" reals

Atall i really liked it and its code is simple but not bad [4/5]
 
Level 4
Joined
May 20, 2009
Messages
96
How to you download/import spells

please contact me at [email protected] please
and tell me what spell this was posted on not ur username
i wont have any idea who you are if you tell me ur username

P.S. my problem is theres no tutorial like the model idk how to get it into a map
 

old

old

Level 6
Joined
May 8, 2016
Messages
112
dude, i really don't understand why you just don't make a simple spell test map... What is the trick now? What should i do to make this work? I use the spell but NOTHING happens, nothing. Target the enemy, press the button, but nothing and the spell goes to CD.
 
Top