roaaaarrrr
New Member
- Reaction score
- 33
Used to use some ABC and TimerTicker but I'm switchin over to TimerUtils since it seems to be the most used and updated. I saw a spell that used ABC that looked cool and I'm trying to edit it over to TimerUtils...
Anyone have some spare time to look at it. Or does anyone have a good guide on TimerUtils. Still tryin to figure all of this out =p.
+rep for help.
It's basically just frost arrow but does exploding frost damage between the caster and the target.
Anyone have some spare time to look at it. Or does anyone have a good guide on TimerUtils. Still tryin to figure all of this out =p.
+rep for help.
JASS:
scope FrostArrow
globals
constant integer FA_ArrowUnitRaw = 039;n005039;
constant integer FA_Raw = 039;A00Q039;
constant integer FA_FNRaw = 039;A00S039;
constant integer FA_DummyRaw = 039;e003039;
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, 039;BTLF039;, 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
It's basically just frost arrow but does exploding frost damage between the caster and the target.