function Trig_Omnislash_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A0C6' ) ) then
return false
endif
return true
endfunction
function Trig_Omnislash_Func004001 takes nothing returns boolean
return ( GetUnitAbilityLevelSwapped('A0C6', udg_o) == 1 )
endfunction
function Trig_Omnislash_Func005001 takes nothing returns boolean
return ( GetUnitAbilityLevelSwapped('A0C6', udg_o) == 2 )
endfunction
function Trig_Omnislash_Func006001 takes nothing returns boolean
return ( GetUnitAbilityLevelSwapped('A0C6', udg_o) == 3 )
endfunction
function Trig_Omnislash_Func017Func003002003001 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) != true )
endfunction
function Trig_Omnislash_Func017Func003002003002001001 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_FLYING) != true )
endfunction
function Trig_Omnislash_Func017Func003002003002001002 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Omnislash_Func017Func003002003002001 takes nothing returns boolean
return GetBooleanAnd( Trig_Omnislash_Func017Func003002003002001001(), Trig_Omnislash_Func017Func003002003002001002() )
endfunction
function Trig_Omnislash_Func017Func003002003002002 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_o)) == true )
endfunction
function Trig_Omnislash_Func017Func003002003002 takes nothing returns boolean
return GetBooleanAnd( Trig_Omnislash_Func017Func003002003002001(), Trig_Omnislash_Func017Func003002003002002() )
endfunction
function Trig_Omnislash_Func017Func003002003 takes nothing returns boolean
return GetBooleanAnd( Trig_Omnislash_Func017Func003002003001(), Trig_Omnislash_Func017Func003002003002() )
endfunction
function Trig_Omnislash_Func017Func006Func005A takes nothing returns nothing
set udg_p = GetEnumUnit()
set udg_pl = GetUnitLoc(udg_p)
call SetUnitPositionLoc( udg_o, udg_pl )
call RemoveLocation( udg_pl )
call SetUnitAnimation( udg_o, "attack" )
call UnitDamageTargetBJ( udg_o, udg_p, GetRandomReal(150.00, 250.00), ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL )
call AddSpecialEffectTargetUnitBJ( "chest", udg_o, "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
endfunction
function Trig_Omnislash_Func017Func006C takes nothing returns boolean
if ( not ( CountUnitsInGroup(udg_EG[1]) > 0 ) ) then
return false
endif
return true
endfunction
function Trig_Omnislash_Actions takes nothing returns nothing
set udg_o = GetTriggerUnit()
set udg_t = GetSpellTargetUnit()
set udg_tl = GetUnitLoc(udg_t)
if ( Trig_Omnislash_Func004001() ) then
set udg_loop = 3
else
call DoNothing( )
endif
if ( Trig_Omnislash_Func005001() ) then
set udg_loop = 5
else
call DoNothing( )
endif
if ( Trig_Omnislash_Func006001() ) then
set udg_loop = 8
else
call DoNothing( )
endif
call SetUnitInvulnerable( udg_o, true )
call AddSpecialEffectTargetUnitBJ( "weapon", udg_o, "Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile_mini.mdl" )
set udg_Effect = GetLastCreatedEffectBJ()
call SetUnitVertexColorBJ( udg_o, 100, 100, 100, 50.00 )
call SetUnitPositionLoc( udg_o, udg_tl )
call RemoveLocation( udg_tl )
call SetUnitAnimation( udg_o, "attack" )
call UnitDamageTargetBJ( udg_o, udg_t, GetRandomReal(150.00, 250.00), ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL )
call AddSpecialEffectTargetUnitBJ( "chest", udg_o, "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = udg_loop
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
call PolledWait( 0.05 )
set udg_o_current_loc = GetUnitLoc(udg_o)
set udg_EG[1] = GetUnitsInRangeOfLocMatching(600.00, udg_o_current_loc, Condition(function Trig_Omnislash_Func017Func003002003))
set udg_EG[2] = GetRandomSubGroup(1, udg_EG[1])
call RemoveLocation( udg_o_current_loc )
if ( Trig_Omnislash_Func017Func006C() ) then
call ForGroupBJ( udg_EG[2], function Trig_Omnislash_Func017Func006Func005A )
call DestroyGroup( udg_EG[1] )
call DestroyGroup( udg_EG[2] )
else
call DestroyGroup( udg_EG[1] )
call DestroyGroup( udg_EG[2] )
call SetUnitVertexColorBJ( udg_o, 100, 100, 100, 0.00 )
call SetUnitInvulnerable( udg_o, false )
endif
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
call SetUnitVertexColorBJ( udg_o, 100, 100, 100, 0.00 )
call SetUnitInvulnerable( udg_o, false )
call DestroyEffectBJ( udg_Effect )
endfunction
//===========================================================================
function InitTrig_Omnislash takes nothing returns nothing
set gg_trg_Omnislash = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Omnislash, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Omnislash, Condition( function Trig_Omnislash_Conditions ) )
call TriggerAddAction( gg_trg_Omnislash, function Trig_Omnislash_Actions )
endfunction