Spellpack Icy Spell Pack

Blackrage

Ultra Cool Member
Reaction score
25
I liked the Frost Arrow Spell the most for some reason :p

So I edited it into a vJASS version (requires Cohadars ABC system)

JASS:
scope FrostArrow

    globals
        constant integer FA_ArrowUnitRaw = 'n005' 
        constant integer FA_Raw = 'A00Q'
        constant integer FA_FNRaw = 'A00S'
        constant integer FA_DummyRaw = 'e003'
        constant real FA_Delay = 0.25
        constant real FA_DmgConst = 25.
        constant real FA_DmgLvl = 75.
    endglobals
        
        struct Arrow
            unit arr
            unit t
            unit u
        endstruct

function FA_Arrow takes nothing returns nothing
    local timer tim = GetExpiredTimer()
    local unit d
    local real dist
    local Arrow Data = GetTimerStructA(tim)
    set dist = SquareRoot((GetUnitX(Data.t) - GetUnitX(Data.arr)) * (GetUnitX(Data.t) - GetUnitX(Data.arr)) + (GetUnitY(Data.t) - GetUnitY(Data.arr)) * (GetUnitY(Data.t) - GetUnitY(Data.arr)))
    if dist >= 125 and (GetUnitState(Data.t, UNIT_STATE_LIFE) > .405) then
        set d = CreateUnit(GetOwningPlayer(Data.arr), FA_DummyRaw, GetUnitX(Data.arr), GetUnitY(Data.arr), 270)
        call UnitApplyTimedLife(d, 'BTLF', 0.5)
        call UnitAddAbility(d, FA_FNRaw)
        call SetUnitAbilityLevel(d, FA_FNRaw, GetUnitAbilityLevel(Data.u, FA_Raw))
        call IssueTargetOrder(d, "frostnova", d)
    else
        call UnitDamageTarget(Data.arr, Data.t, (FA_DmgLvl + FA_DmgConst * GetUnitAbilityLevel(Data.u, FA_Raw)), true, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_COLD, WEAPON_TYPE_WHOKNOWS)
        call RemoveUnit(Data.arr)
        call ClearTimerStructA(tim)
        call PauseTimer(GetExpiredTimer())
        call DestroyTimer(GetExpiredTimer())
    endif
    set d = null 
    set tim = null
endfunction

function FA_Conds takes nothing returns boolean
    return GetSpellAbilityId() == FA_Raw
endfunction

function FA_Acts takes nothing returns nothing
    local Arrow Data = Arrow.create()
    local location p
    local location tp
    local timer tim
    set Data.t = GetSpellTargetUnit()
    set Data.u = GetTriggerUnit()
    set p = GetUnitLoc(Data.u)
    set tp = GetUnitLoc(Data.t)
    set Data.arr = CreateUnit(GetOwningPlayer(Data.u), FA_ArrowUnitRaw, GetLocationX(p), GetLocationY(p), AngleBetweenPoints( p, tp))
    set tim = CreateTimer()
    
    call IssueTargetOrder(Data.arr, "attack", Data.t)
    
    call SetTimerStructA(tim, Data)
    
    call TimerStart(tim, 0.25, true, function FA_Arrow)
    
    call RemoveLocation(p)
    call RemoveLocation(tp)
endfunction
endscope

function InitTrig_FrostArrow takes nothing returns nothing
    set gg_trg_FrostArrow = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_FrostArrow, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition(gg_trg_FrostArrow, Condition(function FA_Conds))
    call TriggerAddAction(gg_trg_FrostArrow, function FA_Acts)
endfunction


Im planning to use this spell in my map for frost ranger (In Dawn of Corruption) :)
 

T.s.e

Wish I was old and a little sentimental
Reaction score
133
Nice spells, some quite original and looks good. That vJass confuses me a lot though.
 

Mike889

New Member
Reaction score
15
Wow, they're very cool =D +rep, i love ice pics ^^
Well, make more ice spells =P What about a Storm Gust spell that freezes everyone?
 

Nappe

New Member
Reaction score
5
After casting the Frost Arrow a few times, it appeared to get stuck on the single point and keep making frost novas at that position, and that lasted like 10 seconds and then it vanished. It happened to me 2 times when I was trying it.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top