Spellpack Flame Fury, Snow Storm, and Light Lance

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
last updated: January 24, 2008
version 1.00: original submission
version 1.01: changed the missile art for Light Lance
version 1.02: changed the missile art for Light Lance; tooltip fixes; added more info in implementation instructions
version 1.03: JASS version; consolidated all 3 spells onto 1 hero
version 1.04: new JASS version with coding optimizations--Snow Storm consolidated into 1 trigger; preloading; configuration


My first Spells submission.

These are three different spells that are really based on the same concept: projectiles continuously fire outward in the direction of the current facing angle of the hero automatically, and the hero is able to move and aim the spell during the duration of the spell. (It may be hard to explain; just try it out and see.)

Flame Fury
Spell type: instant cast
Description: Sprays a constant wide cone of fire to burn enemy units. The flames always shoot in the direction of the facing angle of the Hero. For the duration of the spell, the Hero is able to move and aim the blasts of fire albeit very slowly. [100 mana cost; 10 second cooldown]
Level 1 - up to 80 damage per second for 5 seconds; 250 distance and 150 width AoE cone area; the Hero is slowed by 95%.
Level 2 - up to 100 damage per second for 6 seconds; 300 distance and 200 width AoE cone area; the Hero is slowed by 90%.
Level 3 - up to 120 damage per second for 7 seconds; 350 distance and 250 width AoE cone area; the Hero is slowed by 85%.

Coding: JASS; requires vJASS
Leaks: Leakless
Multi Instanceability: MUI
Lag-susceptibility: low
Import Difficulty: easy (instructions included)

Trigger:
JASS:
//===========================================================================
//========================== Flame Fury v1.04 ===============================
//============================ Instructions =================================
//===========================================================================
// MUI; requires vJASS
//===========================================================================
// 1. Go to the Object Editor, and copy + paste the following:
//    Units
//       * Dummy Caster
//    Abilities
//       * Flame Fury: Add this ability to the Hero; make sure the Base Order ID
//         does not conflict with any other spell on the Hero.
//       * Slow (for Flame Fury): make sure that the buff is set to the custom
//         "Flame Fury (Caster)" buff. This is the buff that will show on the
//         Hero and that is used in this trigger.
//       * Breath of Fire (for Flame Fury)
//    Buffs
//       * Flame Fury (Caster)
// 2. Copy the following triggers:
//       * this trigger: "FlameFury"
// 3. Other options:
//    Custom Gameplay Constants (this is what allows the Hero to move around and
//    aim the spell, albeit very slowly): 
//       * Movement - Unit Speed - Maximum: 522
//       * Movement - Unit Speed - Minimum: 1
//    Hero
//       * Movement - Turn Rate: 0.20 (this is part of the balance of the skill;
//         a slower turning rate makes it harder to aim)
// 4. To adjust the balance of the skill, you can change some of the following
//    values:
//    Abilities
//       * Flame Fury: Cooldown, Mana Cost
//       * Breath of Fire (for Flame Fury): Damages, Distances, Areas, etc.
//       * Slow (for Flame Fury): Attack Speed Factor, Movement Speed Factor
// 5. Make sure that the rawcodes specified below reference the to proper units,
//    abilities, or buffs.
scope FlameFury
globals
    private constant integer FFURY  = 'A003' //Ability ID of "Flame Fury"
    private constant integer DUMMY  = 'h000' //Unit    ID of "Dummy Caster"
    private constant integer SLOW   = 'A009' //Ability ID of "Slow (for Flame Fury)"
    private constant integer BOFIRE = 'A001' //Ability ID of "Breath of Fire (for Flame Fury)"
    private constant integer BUFF   = 'B003' //Buff    ID of "Flame Fury (Caster)"
// 6. More configuration options:
    private constant real INTERVAL   =   0.10 //timer interval; default 0.10 seconds
    private constant real ATKDIST    = 100.00 //attack distance; adjust only if necessary--if distance specified in Object Editor is less than 100.00
    private constant real DURFACTOR  =   1.00 //this and DURBASE determine the duration of the spell; default 1.00
    private constant real DURBASE    =   4.00 //this and DURFACTOR determine the duration of the spell; default 4.00
    private constant real SIZEFACTOR =   0.15 //this and SIZEBASE determine the size (graphical only) of the Breath of Fire projectile; default 0.15
    private constant real SIZEBASE   =   0.30 //this and SIZEFACTOR determine the size (graphical only) of the Breath of Fire projectile; default 0.30
endglobals
//=========================== End of Instructions ===========================
//===========================================================================
private struct FF
    unit hero
    integer lvl
    integer ticks
endstruct
globals
    private FF array ALLDATA
    private timer ALLTIMER = CreateTimer()
    private integer TOTAL = 0
endglobals
//===========================================================================
private function Cond takes nothing returns boolean
    return GetSpellAbilityId() == FFURY
endfunction
//===========================================================================
private function TimerActions takes nothing returns nothing
    local FF data
    local real face_rad
    local real x1
    local real y1
    local real x2
    local real y2
    local real size
    local unit u
    local integer i = 1
    loop
        exitwhen i > TOTAL
        set data = ALLDATA<i>
        set face_rad = GetUnitFacing(data.hero) * bj_PI/180
        set x1 = GetUnitX(data.hero)
        set y1 = GetUnitY(data.hero)
        set x2 = x1 + ATKDIST * Cos(face_rad)
        set y2 = y1 + ATKDIST * Sin(face_rad)
        set size = data.lvl * SIZEFACTOR + SIZEBASE
        set u = CreateUnit(GetOwningPlayer(data.hero), DUMMY, x1, y1, face_rad)
        call SetUnitScale(u, size, size, size)
        call UnitApplyTimedLife(u, &#039;BTLF&#039;, 1.00)
        call UnitAddAbility(u, BOFIRE)
        call SetUnitAbilityLevel(u, BOFIRE, data.lvl)
        call IssuePointOrder(u, &quot;breathoffire&quot;, x2, y2)
        set data.ticks = data.ticks - 1
        if data.ticks &lt;= 0 or GetWidgetLife(data.hero) &lt; 0.406 then
            call UnitRemoveAbility(data.hero, BUFF)
            call data.destroy()
            set ALLDATA<i> = ALLDATA[TOTAL]
            set TOTAL = TOTAL - 1
            set i = i - 1
            if TOTAL == 0 then
                call PauseTimer(ALLTIMER)
            endif
        endif
        set i = i + 1
    endloop
    set u = null
endfunction

private function Actions takes nothing returns nothing
    local FF data = FF.create()
    local unit u
    set data.hero = GetTriggerUnit()
    set data.lvl = GetUnitAbilityLevel(data.hero, FFURY)
    set data.ticks = R2I((data.lvl * DURFACTOR + DURBASE) / INTERVAL)
    set u = CreateUnit(GetOwningPlayer(data.hero), DUMMY, GetUnitX(data.hero), GetUnitY(data.hero), 0)
    call UnitApplyTimedLife(u, &#039;BTLF&#039;, 1.00)
    call UnitAddAbility(u, SLOW)
    call SetUnitAbilityLevel(u, SLOW, data.lvl)
    call IssueTargetOrder(u, &quot;slow&quot;, data.hero)
    set TOTAL = TOTAL + 1
    set ALLDATA[TOTAL] = data
    if TOTAL == 1 then
        call TimerStart(ALLTIMER, INTERVAL, true, function TimerActions)
    endif
    set u = null
endfunction
//===========================================================================
public function InitTrig takes nothing returns nothing
    local unit u = CreateUnit(Player(0), DUMMY, 0, 0, 0)
    call UnitAddAbility(u, SLOW)
    call UnitAddAbility(u, BOFIRE)
    call RemoveUnit(u)
    set gg_trg_FlameFury = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_FlameFury, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(gg_trg_FlameFury, Condition(function Cond))
    call TriggerAddAction(gg_trg_FlameFury, function Actions)
    set u = null
endfunction
endscope</i></i>



Snow Storm
Spell type: instant cast
Description: Launches a constant barrage of ice to damage and slow enemy units. The snow storm always shoots in the direction of the facing angle of the Hero. For the duration of the spell, the Hero is able to move and aim the blasts of fire albeit very slowly. [75 mana cost; 10 second cooldown]
Level 1 - up to 60 damage per second for 5 seconds; 200 area of effect; the Hero is slowed by 95%.
Level 2 - up to 90 damage per second for 6 seconds; 250 area of effect; the Hero is slowed by 90%.
Level 3 - up to 120 damage per second for 7 seconds; 300 area of effect; the Hero is slowed by 85%.

Coding: JASS; requires vJASS
Leaks: Leakless
Multi Instanceability: MUI
Lag-susceptibility: low
Import Difficulty: easy (instructions included)

Trigger:
JASS:
//===========================================================================
//========================== Snow Storm v1.04 ===============================
//============================ Instructions =================================
//===========================================================================
// MUI; requires vJASS
//===========================================================================
// 1. Go to the Object Editor, and copy + paste the following:
//    Units
//       * Dummy Caster
//       * Dummy Attacker 1
//       * Dummy Attacker 2
//       * Dummy Attacker 3
//    Abilities
//       * Snow Storm: Add this ability to the Hero; make sure the Base Order ID
//         does not conflict with any other spell on the Hero.
//       * Slow (for Snow Storm): make sure that the buff is set to the custom
//         &quot;Snow Storm (Caster)&quot; buff. This is the buff that will show on the
//         Hero and that is used in this trigger.
//       * Frost Attack (no missile art)
//    Buffs
//       * Snow Storm (Caster)
// 2. Copy the following triggers:
//       * this trigger: &quot;SnowStorm&quot;
// 3. Other options:
//    Custom Gameplay Constants (this is what allows the Hero to move around and aim the spell, albeit very slowly: 
//       * Movement - Unit Speed - Maximum: 522
//       * Movement - Unit Speed - Minimum: 1
//    Hero
//       * Movement - Turn Rate: 0.20 (this is part of the balance of the skill; a slower turning rate makes it harder to aim)
// 4. To adjust the balance of the skill, you can change some of the following values:
//    Units
//       * Dummy Attacker 1/2/3: Damages, Range, Area of Effect
//    Abilities
//       * Snow Storm: Cooldown, Mana Cost
//       * Slow (for Snow Storm): Attack Speed Factor, Movement Speed Factor
// 5. Make sure that the rawcodes specified here reference the to proper units,
//    abilities, or buffs.
scope SnowStorm
globals
    private constant integer SSTORM  = &#039;A005&#039; //Ability ID of &quot;Snow Storm&quot;
    private constant integer DUMMY   = &#039;h000&#039; //Unit    ID of &quot;Dummy Caster&quot;
    private constant integer SLOW    = &#039;A000&#039; //Ability ID of &quot;Slow (for Snow Storm)&quot;
    private constant integer DUMATK1 = &#039;h001&#039; //Unit    ID of &quot;Dummy Attacker 1&quot;
    private constant integer DUMATK2 = &#039;h002&#039; //Unit    ID of &quot;Dummy Attacker 2&quot;
    private constant integer DUMATK3 = &#039;h003&#039; //Unit    ID of &quot;Dummy Attacker 3&quot;
    private constant integer FROST   = &#039;A007&#039; //Ability ID of &quot;Frost Attack (no missile art)&quot;
    private constant integer BUFF    = &#039;B000&#039; //Buff    ID of &quot;Snow Storm (Caster)&quot;
// 6. More configuration options:
    private constant real INTERVAL   =   0.33 //timer interval; default 0.33
    private constant real ATKDIST    = 400.00 //attack distance; default 400.00
    private constant real DURFACTOR  =   1.00 //this and DURBASE determine the duration of the spell; default 1.00
    private constant real DURBASE    =   4.00 //this and DURFACTOR determine the duration of the spell; default 4.00
    private constant real SIZEFACTOR =   0.50 //this and SIZEBASE determine the size (graphical only) of the Snow Storm projectile; default 0.50
    private constant real SIZEBASE   =   0.00 //this and SIZEFACTOR determine the size (graphical only) of the Snow Storm projectile; default 0.00
endglobals
//=========================== End of Instructions ===========================
//===========================================================================
private struct SS
    unit hero
    integer lvl
    integer ticks
endstruct
globals
    private SS array ALLDATA
    private timer ALLTIMER = CreateTimer()
    private integer TOTAL = 0
    private integer array DUMATK
endglobals
//===========================================================================
private function Cond takes nothing returns boolean
    return GetSpellAbilityId() == SSTORM
endfunction
//===========================================================================
private function TimerActions takes nothing returns nothing
    local SS data
    local real face_rad
    local real x1
    local real y1
    local real x2
    local real y2
    local real size
    local unit u
    local integer i = 1
    loop
        exitwhen i &gt; TOTAL
        set data = ALLDATA<i>
        set face_rad = GetUnitFacing(data.hero) * bj_PI/180
        set x1 = GetUnitX(data.hero)
        set y1 = GetUnitY(data.hero)
        set x2 = x1 + ATKDIST * Cos(face_rad)
        set y2 = y1 + ATKDIST * Sin(face_rad)
        set size = data.lvl * SIZEFACTOR + SIZEBASE
        set u = CreateUnit(GetOwningPlayer(data.hero), DUMATK[data.lvl], x1, y1, face_rad)
        call SetUnitScale(u, size, size, size)
        call UnitApplyTimedLife(u, &#039;BTLF&#039;, 1.00)
        call UnitAddAbility(u, FROST)
        call IssuePointOrder(u, &quot;attackground&quot;, x2, y2)
        set data.ticks = data.ticks - 1
        if data.ticks &lt;= 0 or GetWidgetLife(data.hero) &lt; 0.406 then
            call UnitRemoveAbility(data.hero, BUFF)
            call data.destroy()
            set ALLDATA<i> = ALLDATA[TOTAL]
            set TOTAL = TOTAL - 1
            set i = i - 1
            if TOTAL == 0 then
                call PauseTimer(ALLTIMER)
            endif
        endif
        set i = i + 1
    endloop
    set u = null
endfunction

private function Actions takes nothing returns nothing
    local SS data = SS.create()
    local unit u
    set data.hero = GetTriggerUnit()
    set data.lvl = GetUnitAbilityLevel(data.hero, SSTORM)
    set data.ticks = R2I((data.lvl * DURFACTOR + DURBASE) / INTERVAL)
    set u = CreateUnit(GetOwningPlayer(data.hero), DUMMY, GetUnitX(data.hero), GetUnitY(data.hero), 0)
    call UnitApplyTimedLife(u, &#039;BTLF&#039;, 1.00)
    call UnitAddAbility(u, SLOW)
    call SetUnitAbilityLevel(u, SLOW, data.lvl)
    call IssueTargetOrder(u, &quot;slow&quot;, data.hero)
    set TOTAL = TOTAL + 1
    set ALLDATA[TOTAL] = data
    if TOTAL == 1 then
        call TimerStart(ALLTIMER, INTERVAL, true, function TimerActions)
    endif
    set u = null
endfunction
//===========================================================================
public function InitTrig takes nothing returns nothing
    local unit u = CreateUnit(Player(0), DUMMY, 0, 0, 0)
    call UnitAddAbility(u, SLOW)
    call UnitAddAbility(u, FROST)
    call RemoveUnit(u)
    call RemoveUnit(CreateUnit(Player(0), DUMATK1, 0, 0, 0))
    call RemoveUnit(CreateUnit(Player(0), DUMATK2, 0, 0, 0))
    call RemoveUnit(CreateUnit(Player(0), DUMATK3, 0, 0, 0))
    set gg_trg_SnowStorm = CreateTrigger()
    set DUMATK[1] = DUMATK1
    set DUMATK[2] = DUMATK2
    set DUMATK[3] = DUMATK3
    call TriggerRegisterAnyUnitEventBJ(gg_trg_SnowStorm, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(gg_trg_SnowStorm, Condition(function Cond))
    call TriggerAddAction(gg_trg_SnowStorm, function Actions)
    set u = null
endfunction
endscope</i></i>



Light Lance
Spell type: instant cast
Description: Emits a constant narrow stream of light to damage enemy units. The light lance always shoots in the direction of the facing angle of the Hero. For the duration of the spell, the Hero is able to move and aim the light albeit very slowly. [100 mana cost; 10 second cooldown]
Level 1 - up to 120 damage per second for 5 seconds; 300 distance line damage; the Hero is slowed by 95%.
Level 2 - up to 160 damage per second for 6 seconds; 450 distance line damage; the Hero is slowed by 90%.
Level 3 - up to 200 damage per second for 7 seconds; 600 distance line damage; the Hero is slowed by 85%.

Coding: JASS; requires vJASS
Leaks: Leakless
Multi Instanceability: MUI
Lag-susceptibility: low
Import Difficulty: easy (instructions included)

Trigger:
JASS:
//===========================================================================
//========================== Light Lance v1.04 ==============================
//============================ Instructions =================================
//===========================================================================
// MUI; requires vJASS
//===========================================================================
// 1. Go to the Object Editor, and copy + paste the following:
//   Units
//       * Dummy Caster
//   Abilities
//       * Light Lance: Add this ability to the Hero; make sure the Base Order ID
//         does not conflict with any other spell on the Hero.
//       * Slow (for Light Lance): make sure that the buff is set to the custom
//         &quot;Light Lance (Caster)&quot; buff. This is the buff that will show on the
//         Hero and that is used in this trigger.
//       * Carrion Swarm (for Light Lance)
//    Buffs
//       * Light Lance (Caster)
// 2. Copy the following triggers:
//       * this trigger: &quot;LightLance&quot;
// 3. Other options:
//    Custom Imports: created by th15 (<a href="http://www.hiveworkshop.com/resources_new/models/907/" target="_blank" class="link link--external" rel="nofollow ugc noopener">http://www.hiveworkshop.com/resources_new/models/907/</a>)
//       * laseryellow.mdx
//       * laseryellow.blp
//    Custom Gameplay Constants (this is what allows the Hero to move around and
//    aim the spell, albeit very slowly: 
//       * Movement - Unit Speed - Maximum: 522
//       * Movement - Unit Speed - Minimum: 1
//    Hero
//       * Movement - Turn Rate: 0.20 (this is part of the balance of the skill;
//         a slower turning rate makes it harder to aim)
// 4. To adjust the balance of the skill, you can change some of the following values:
//    Abilities
//       * Light Lance: Cooldown, Mana Cost
//       * Carrion Swarm (for Light Lance): Damages, Distances, Areas, etc.
//       * Slow (for Light Lance): Attack Speed Factor, Movement Speed Factor
// 5. Make sure that the rawcodes specified here reference the to proper units,
//    abilities, or buffs.
scope LightLance
globals
    private constant integer LLIGHT = &#039;A004&#039; //Ability ID of &quot;Flame Fury&quot;
    private constant integer DUMMY  = &#039;h000&#039; //Unit    ID of &quot;Dummy Caster&quot;
    private constant integer SLOW   = &#039;A002&#039; //Ability ID of &quot;Slow (for Flame Fury)&quot;
    private constant integer CSWARM = &#039;A008&#039; //Ability ID of &quot;Carrion Swarm (for Light Lance)&quot;
    private constant integer BUFF   = &#039;B001&#039; //Buff    ID of &quot;Flame Fury (Caster)&quot;
// 6. More configuration options:
    private constant real INTERVAL   =   0.10 //timer interval; default 0.10 seconds
    private constant real ATKDIST    = 100.00 //attack distance; adjust only if necessary--if distance specified in Object Editor is less than 100.00
    private constant real DURFACTOR  =   1.00 //this and DURBASE determine the duration of the spell; default 1.00
    private constant real DURBASE    =   4.00 //this and DURFACTOR determine the duration of the spell; default 4.00
    private constant real SIZEFACTOR =   0.10 //this and SIZEBASE determine the size (graphical only) of the Breath of Fire projectile; default 0.10
    private constant real SIZEBASE   =   0.30 //this and SIZEFACTOR determine the size (graphical only) of the Breath of Fire projectile; default 0.30
endglobals
//=========================== End of Instructions ===========================
//===========================================================================
private struct LL
    unit hero
    integer lvl
    integer ticks
endstruct
globals
    private LL array ALLDATA
    private timer ALLTIMER = CreateTimer()
    private integer TOTAL = 0
endglobals
//===========================================================================
private function Cond takes nothing returns boolean
    return GetSpellAbilityId() == LLIGHT
endfunction
//===========================================================================
private function TimerActions takes nothing returns nothing
    local LL data
    local real face_rad
    local real x1
    local real y1
    local real x2
    local real y2
    local real size
    local unit u
    local integer i = 1
    loop
        exitwhen i &gt; TOTAL
        set data = ALLDATA<i>
        set face_rad = GetUnitFacing(data.hero) * bj_PI/180
        set x1 = GetUnitX(data.hero)
        set y1 = GetUnitY(data.hero)
        set x2 = x1 + ATKDIST * Cos(face_rad)
        set y2 = y1 + ATKDIST * Sin(face_rad)
        set size = data.lvl * SIZEFACTOR + SIZEBASE
        set u = CreateUnit(GetOwningPlayer(data.hero), DUMMY, x1, y1, face_rad)
        call SetUnitScale(u, size, size, size)
        call UnitApplyTimedLife(u, &#039;BTLF&#039;, 1.00)
        call UnitAddAbility(u, CSWARM)
        call SetUnitAbilityLevel(u, CSWARM, data.lvl)
        call IssuePointOrder(u, &quot;carrionswarm&quot;, x2, y2)
        set data.ticks = data.ticks - 1
        if data.ticks &lt;= 0 or GetWidgetLife(data.hero) &lt; 0.406 then
            call UnitRemoveAbility(data.hero, BUFF)
            call data.destroy()
            set ALLDATA<i> = ALLDATA[TOTAL]
            set TOTAL = TOTAL - 1
            set i = i - 1
            if TOTAL == 0 then
                call PauseTimer(ALLTIMER)
            endif
        endif
        set i = i + 1
    endloop
    set u = null
endfunction

private function Actions takes nothing returns nothing
    local LL data = LL.create()
    local unit u
    set data.hero = GetTriggerUnit()
    set data.lvl = GetUnitAbilityLevel(data.hero, LLIGHT)
    set data.ticks = R2I((data.lvl * DURFACTOR + DURBASE) / INTERVAL)
    set u = CreateUnit(GetOwningPlayer(data.hero), DUMMY, GetUnitX(data.hero), GetUnitY(data.hero), 0)
    call UnitApplyTimedLife(u, &#039;BTLF&#039;, 1.00)
    call UnitAddAbility(u, SLOW)
    call SetUnitAbilityLevel(u, SLOW, data.lvl)
    call IssueTargetOrder(u, &quot;slow&quot;, data.hero)
    set TOTAL = TOTAL + 1
    set ALLDATA[TOTAL] = data
    if TOTAL == 1 then
        call TimerStart(ALLTIMER, INTERVAL, true, function TimerActions)
    endif
    set u = null
endfunction
//===========================================================================
public function InitTrig takes nothing returns nothing
    local unit u = CreateUnit(Player(0), DUMMY, 0, 0, 0)
    call UnitAddAbility(u, SLOW)
    call UnitAddAbility(u, CSWARM)
    call RemoveUnit(u)
    set gg_trg_LightLance = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_LightLance, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(gg_trg_LightLance, Condition(function Cond))
    call TriggerAddAction(gg_trg_LightLance, function Actions)
    set u = null
endfunction
endscope</i></i>


Obsolete
Improvements
  • I'm not completely satisfied with the look of Light Lance because...sometimes it looks like the Hero is urinating. But out of all the different Missile Arts I tried, this was the closest thing I could find to what I had in mind. (I was looking for something that looks like a thin continuous laser beam shooting outwards at high speed.)
  • The triggers "Flame Fury Cast," "Snow Storm Cast," and "Light Lance Cast" all have a Wait 0.00 in them. I'd like to get rid of those Waits, but I couldn't figure out how to debug a certain thing without using the Waits. (The bug is that sometimes the periodic triggers would not detect the casting unit with the buff, and the periodic trigger would turn itself off too soon. Presumably, this is because it takes a certain amount of time for a buff to appear on a unit before it can be reliably detected.)

One screenshot for all three spells:
 

Attachments

  • [Spellpack] FFury, SStorm, LLance v1.04.w3x
    64.7 KB · Views: 499

Squll2

je'ne sais pas
Reaction score
76
*Agrees with the Spoiler*

neat ideas, but could be improved with more effects :p
 

Doomhammer

Bob Kotick - Gamers' corporate spoilsport No. 1
Reaction score
67
the yellow art looks a bit like releasing ones pressured bladder :D

either way,

+rep for well-made spells!
 

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
version 1.01

Thanks!

a nice Holy Beam Thing
Not exactly what I was picturing, but it turned out looking very cool nonetheless.

*Agrees with the Spoiler*
I'm glad I could get rid of that unintended imagery:)

+rep for well-made spells!
Thanks. Glad you liked them!

So, what's the procedure if I wanted to edit my submission after it's been approved? Should I go ahead and edit the first post and replace the file attachments?

Edit: updated attachments are now included in the first post.
 

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
Thanks. Done.

Updated with version 1.02.
-changed the missile art for Light Lance
-fixed some text tooltips
-added more info in implementation instructions
 

Knocksious

Sweet, I got 2 little green bars!
Reaction score
46
yea I like that better than the holy spiral

do ya think you could raise the height that the lance fires from?
Right now it looks like it shoots out of his feet
 

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
do ya think you could raise the height that the lance fires from?
Right now it looks like it shoots out of his feet

Yeah, I noticed that from the very beginning. But no matter what I tried (messing around with the dummy caster's "Art - Projectile Launch - Z," "Movement - Height Minimum," and "Movement - Height") it didn't seem to make a difference. Apparently, as far as I can tell, you can't change the projectile launch height of cone/line spells like Carrion Swarm and Breath of Fire.

The only alternative that I can see is to change it so that the damage come from dummy attackers with "Artillery (Line)" instead of dummy casters using cone/line spells. Maybe I'll play around with that later on.
 

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
mind if I change it so that the caster slams instead of casts?

You mean have the caster play the Slam animation instead of Spell? Sure, you can change whatever you want for your map.

Updated to version 1.03, redone in JASS. Consolidated all 3 spells onto 1 hero.
 

denmax

You can change this now in User CP.
Reaction score
155
I recommend increasing the height of Light Cane?

Also, why can't you just make a unit cast the spell instead of the hero (with the waits)

example is like this:

Hero casts a spell, which does nothing but trigger a unit to cast the spell that does the effect..
 

DrinkSlurm

Eat Bachelor Chow!
Reaction score
50
I recommend increasing the height of Light Cane?
Yeah, I noticed that from the very beginning. But no matter what I tried (messing around with the dummy caster's "Art - Projectile Launch - Z," "Movement - Height Minimum," and "Movement - Height") it didn't seem to make a difference. Apparently, as far as I can tell, you can't change the projectile launch height of cone/line spells like Carrion Swarm and Breath of Fire.
Also, why can't you just make a unit cast the spell instead of the hero (with the waits)

example is like this:

Hero casts a spell, which does nothing but trigger a unit to cast the spell that does the effect..
Either you're confused about how the spell works, or I'm confused about you're post.

When the Hero casts the spell, a dummy is created that casts a modified Slow on the Hero to slow it and give it a buff. Then (after a short wait) a repeating timer is started that checks for Heroes in the map that have a particular buff. If any matching units are found, then a dummy unit is created there and casts (or attacks) the effects of the spell. (And if no valid matching units with the buff are found, the timer is shut off.)
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Ghan Ghan:
    Howdy
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1

      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