scope HealingWave initializer init
globals
private constant integer SPELL_ID = 'A004'
private constant integer Max_Level = 4
endglobals
private function Heal takes integer level returns real
return 100.+50.*level
endfunction
private function Mana takes integer level returns real
return 50.+25.*level
endfunction
private function Jump takes integer level returns integer
return 3+level
endfunction
// Setup End
globals
public aBuffType id = 0
endglobals
private struct Data
unit Caster
unit array Targets [7]
integer Count
group Grp
static method create takes unit u returns thistype
local thistype this = thistype.allocate()
set this.Caster = u
set this.Count = 0
set this.Grp = CreateGroup()
set u = null
return this
endmethod
method onDestroy takes nothing returns nothing
local integer i = 0
call DestroyGroup(this.Grp)
loop
exitwhen i >= 7
set this.Targets[i] = null
set i = i + 1
endloop
set this.Caster = null
set this.Grp = null
endmethod
endstruct
private function Create takes aBuff eventBuff returns nothing
return
endfunction
private function Spell_Cast takes nothing returns nothing
local unit u = GetTriggerUnit()
local Data this = Data.create(u)
local integer level = GetUnitAbilityLevel(this.Caster,SPELL_ID)
endfunction
private function Conds takes nothing returns boolean
return GetSpellAbilityId()==SPELL_ID
endfunction
private function init takes nothing returns nothing
local trigger Trig = CreateTrigger()
local integer index = 0
loop
call TriggerRegisterPlayerUnitEvent(Trig,Player(index),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
call TriggerAddCondition(Trig,Condition(function Conds))
call TriggerAddAction(Trig,function Spell_Cast)
set id = aBuffType.create()
set id.eventCreate = ABuffEvent_Create.Create //This line is the problem
endfunction
endscope