Name | Type | is_array | initial_value |
anglespeed | real | No | |
castsound | sound | Yes | |
clawduration | real | No | |
clawprocess | timer | No | |
clawspeed | real | No | |
spellinterval | real | No | |
traceduration | real | No |
function Trig_init_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then
return false
endif
return true
endfunction
function Trig_init_Actions takes nothing returns nothing
local location spawn = GetUnitLoc(GetTriggerUnit())
local integer c = 1
call StartTimerBJ( udg_clawprocess, true, udg_spellinterval )
call PlaySoundBJ( udg_castsound[GetRandomInt(1, 9)] )
loop
exitwhen c > 3
call CreateNUnitsAtLoc( 1, 'u001', GetOwningPlayer(GetTriggerUnit()), spawn, ( GetUnitFacing(GetTriggerUnit()) + ( (-90.00) + ( 45.00 * I2R(c) ) ) ) )
call UnitApplyTimedLifeBJ( udg_clawduration, 'BTLF', GetLastCreatedUnit() )
call SetUnitUserData( GetLastCreatedUnit(), ( ( 90 + GetRandomInt(-15, 15) ) - ( c * 45 ) ) )
set c = c + 1
endloop
call RemoveLocation(spawn)
endfunction
//===========================================================================
function InitTrig_init takes nothing returns nothing
set gg_trg_init = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_init, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_init, Condition( function Trig_init_Conditions ) )
call TriggerAddAction( gg_trg_init, function Trig_init_Actions )
endfunction
function Trig_move_Func001A takes nothing returns nothing
local location to
if ( GetUnitUserData(GetEnumUnit()) == 0 ) then
call SetUnitUserData( GetEnumUnit(), GetRandomInt(-15, 15) )
endif
if ( GetUnitUserData(GetEnumUnit()) > 0 ) then
call SetUnitUserData( GetEnumUnit(), ( GetUnitUserData(GetEnumUnit()) - 1 ) )
call SetUnitFacingTimed( GetEnumUnit(), ( GetUnitFacing(GetEnumUnit()) + udg_anglespeed ), 0 )
if ( GetUnitUserData(GetEnumUnit()) == 0 ) then
call SetUnitUserData( GetEnumUnit(), GetRandomInt(-45, 0) )
endif
endif
if ( GetUnitUserData(GetEnumUnit()) < 0 ) then
call SetUnitUserData( GetEnumUnit(), ( GetUnitUserData(GetEnumUnit()) + 1 ) )
call SetUnitFacingTimed( GetEnumUnit(), ( GetUnitFacing(GetEnumUnit()) - udg_anglespeed ), 0 )
if ( GetUnitUserData(GetEnumUnit()) == 0 ) then
call SetUnitUserData( GetEnumUnit(), GetRandomInt(0, 45) )
endif
endif
set to = PolarProjectionBJ(GetUnitLoc(GetEnumUnit()), udg_clawspeed, GetUnitFacing(GetEnumUnit()))
call SetUnitPositionLoc( GetEnumUnit(), to)
call CreateNUnitsAtLoc( 1, 'u000', GetOwningPlayer(GetEnumUnit()), to, GetRandomDirectionDeg() )
call UnitApplyTimedLifeBJ( udg_traceduration, 'BTLF', GetLastCreatedUnit() )
call RemoveLocation(to)
endfunction
function Trig_move_Actions takes nothing returns nothing
local group ug = GetUnitsOfTypeIdAll('u001')
call ForGroupBJ(ug, function Trig_move_Func001A )
call DestroyGroup(ug)
endfunction
//===========================================================================
function InitTrig_move takes nothing returns nothing
set gg_trg_move = CreateTrigger( )
call TriggerRegisterTimerExpireEventBJ( gg_trg_move, udg_clawprocess )
call TriggerAddAction( gg_trg_move, function Trig_move_Actions )
endfunction