H
Hjalle
Guest
SO im making my first spell and I went over a fatal error problem.
May anyone check out what wrong with this code? It keeps giving me an fatal error.
When i comment out the call ForGroup() it doesn't crash, and I spawn the special effect like i wanted.
Also, may you be kind to tell what i can improve with the code since I am not very good with JASS.
May anyone check out what wrong with this code? It keeps giving me an fatal error.
JASS:
function Spell_Conditions takes nothing returns boolean
if ( GetSpellAbilityId() != 039;AEfk039; ) then
return false
endif
return true
endfunction
function Spell_Filter takes nothing returns boolean
local unit u = GetTriggerUnit()
if ( GetFilterUnit() == u ) then
return false
endif
if ( GetUnitAbilityLevel( GetFilterUnit(),039;Bvul039; ) > 0 ) then
return false
endif
if ( GetUnitState( u,UNIT_STATE_LIFE ) <= 0 ) then
return false
endif
if ( IsUnitEnemy( GetFilterUnit(),GetOwningPlayer(u) ) == false ) then
return false
endif
return true
endfunction
function Spell_LifeDrain takes location ul, player p returns nothing
// local unit e = GetEnumUnit()
// local unit d = CreateUnitAtLoc(p, 'hfoo', ul, 0.00)
// call SetUnitMoveSpeed( e, 0.00 )
// call UnitAddAbility(d, 'ANdr')
// call IssueTargetOrder(d,"drain",e)
// call UnitApplyTimedLife(d,'BTLF',8.00)
// call SetUnitFlyHeight(e, 200.00, 200.00)
// set e = null
// set d = null
endfunction
function Spell_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local location ul = GetUnitLoc(u)
local effect ue = AddSpecialEffectTarget("Doodads\\Cinematic\\EyeOfSargeras\\EyeOfSargeras.mdl", u, "overhead")
local group g = GetUnitsInRangeOfLocMatching(512.00,ul, Condition(function Spell_Filter))
local integer gn = CountUnitsInGroup(g)
local player p = GetOwningPlayer(u)
call SetUnitInvulnerable(u,true)
if ( gn == 0 ) then
call SetUnitInvulnerable(u,false)
call DestroyEffect(ue)
call DestroyGroup(g)
set gn = 0
call RemoveLocation(ul)
set u = null
set p = null
return
endif
call ForGroup(g, function Spell_LifeDrain)
call TriggerSleepAction( 8.00 )
call SetUnitInvulnerable(u,false)
call DestroyEffect(ue)
call DestroyGroup(g)
set gn = 0
call RemoveLocation(ul)
set u = null
set p = null
endfunction
function InitTrig_Spell takes nothing returns nothing
set gg_trg_Spell = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Spell, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_Spell, Condition( function Spell_Conditions ) )
call TriggerAddAction( gg_trg_Spell, function Spell_Actions )
endfunction
When i comment out the call ForGroup() it doesn't crash, and I spawn the special effect like i wanted.
Also, may you be kind to tell what i can improve with the code since I am not very good with JASS.