function Trig_DivineLoop_Func002C takes nothing returns boolean
if ( not ( udg_DivCount >= udg_DivCountMAX ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func011Func007001003001 takes nothing returns boolean
return ( IsUnitAlly(GetFilterUnit(), GetOwningPlayer(udg_DivDummyUNIT)) == false )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002001 takes nothing returns boolean
return ( GetOwningPlayer(GetFilterUnit()) != GetOwningPlayer(udg_DivDummyUNIT) )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002002002001 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_MAGIC_IMMUNE) == false )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002002002002001 takes nothing returns boolean
return ( IsUnitHiddenBJ(GetFilterUnit()) == false )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002002002002002 takes nothing returns boolean
return ( IsUnitIllusionBJ(GetFilterUnit()) == false )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002002002002 takes nothing returns boolean
return GetBooleanAnd( Trig_DivineLoop_Func004Func011Func007001003002002002002001(), Trig_DivineLoop_Func004Func011Func007001003002002002002002() )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002002002 takes nothing returns boolean
return GetBooleanAnd( Trig_DivineLoop_Func004Func011Func007001003002002002001(), Trig_DivineLoop_Func004Func011Func007001003002002002002() )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002002 takes nothing returns boolean
return GetBooleanAnd( Trig_DivineLoop_Func004Func011Func007001003002002001(), Trig_DivineLoop_Func004Func011Func007001003002002002() )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003002 takes nothing returns boolean
return GetBooleanAnd( Trig_DivineLoop_Func004Func011Func007001003002001(), Trig_DivineLoop_Func004Func011Func007001003002002() )
endfunction
function Trig_DivineLoop_Func004Func011Func007001003 takes nothing returns boolean
return GetBooleanAnd( Trig_DivineLoop_Func004Func011Func007001003001(), Trig_DivineLoop_Func004Func011Func007001003002() )
endfunction
function Trig_DivineLoop_Func004Func011Func007A takes nothing returns nothing
set udg_DivPickedUnit = GetEnumUnit()
call UnitDamageTargetBJ( udg_DivCast, udg_DivPickedUnit, udg_DivDPS, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_DIVINE )
call AddSpecialEffectTargetUnitBJ( "chest", udg_DivPickedUnit, "Abilities\\Weapons\\WingedSerpentMissile\\WingedSerpentMissile.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003001001 takes nothing returns boolean
return ( IsUnitInGroup(GetFilterUnit(), udg_DivGroup2) == false )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003001002 takes nothing returns boolean
return ( IsUnitInGroup(GetFilterUnit(), udg_DivGroup3) == false )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003001 takes nothing returns boolean
return GetBooleanAnd( Trig_DivineLoop_Func004Func011Func010001003001001(), Trig_DivineLoop_Func004Func011Func010001003001002() )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003002002001 takes nothing returns boolean
return ( IsUnitAlly(GetFilterUnit(), GetOwningPlayer(udg_DivDummyUNIT)) == true )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003002002002 takes nothing returns boolean
return ( GetOwningPlayer(GetFilterUnit()) == GetOwningPlayer(udg_DivDummyUNIT) )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003002002 takes nothing returns boolean
return GetBooleanOr( Trig_DivineLoop_Func004Func011Func010001003002002001(), Trig_DivineLoop_Func004Func011Func010001003002002002() )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003002 takes nothing returns boolean
return GetBooleanAnd( Trig_DivineLoop_Func004Func011Func010001003002001(), Trig_DivineLoop_Func004Func011Func010001003002002() )
endfunction
function Trig_DivineLoop_Func004Func011Func010001003 takes nothing returns boolean
return GetBooleanAnd( Trig_DivineLoop_Func004Func011Func010001003001(), Trig_DivineLoop_Func004Func011Func010001003002() )
endfunction
function Trig_DivineLoop_Func004Func011Func010A takes nothing returns nothing
set udg_DivPickedUnit = GetEnumUnit()
call AddSpecialEffectTargetUnitBJ( "origin", udg_DivPickedUnit, udg_DivEffectB )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call SetUnitInvulnerable( udg_DivPickedUnit, true )
call GroupAddUnitSimple( udg_DivPickedUnit, udg_DivGroup2 )
set udg_Handle_Div2 = GetHandleId(udg_DivPickedUnit)
call SaveUnitHandleBJ( udg_DivDummyUNIT, 6, udg_Handle_Div2, udg_Hash_Divine )
endfunction
function Trig_DivineLoop_Func004Func011Func013Func005Func001C takes nothing returns boolean
if ( ( IsUnitAliveBJ(udg_DivDummyUNIT) == false ) ) then
return true
endif
if ( ( IsUnitHiddenBJ(udg_DivPickedUnit) == true ) ) then
return true
endif
if ( ( udg_DivTar == null ) ) then
return true
endif
if ( ( udg_DivTar == udg_DivDummyUNIT ) ) then
return true
endif
return false
endfunction
function Trig_DivineLoop_Func004Func011Func013Func005C takes nothing returns boolean
if ( not Trig_DivineLoop_Func004Func011Func013Func005Func001C() ) then
return false
endif
if ( not ( DistanceBetweenPoints(udg_DP, udg_DP2) > udg_DivAoE ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func011Func013A takes nothing returns nothing
set udg_DivPickedUnit = GetEnumUnit()
set udg_Handle_Div2 = GetHandleId(udg_DivPickedUnit)
set udg_DP2 = GetUnitLoc(udg_DivPickedUnit)
set udg_DivTar = LoadUnitHandleBJ(6, udg_Handle_Div2, udg_Hash_Divine)
if ( Trig_DivineLoop_Func004Func011Func013Func005C() ) then
call AddSpecialEffectTargetUnitBJ( "origin", udg_DivPickedUnit, udg_DivEffectC )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call SetUnitInvulnerable( udg_DivPickedUnit, false )
call GroupRemoveUnitSimple( udg_DivPickedUnit, udg_DivGroup2 )
call FlushChildHashtableBJ( udg_Handle_Div2, udg_Hash_Divine )
else
endif
call RemoveLocation(udg_DP2)
endfunction
function Trig_DivineLoop_Func004Func011C takes nothing returns boolean
if ( not ( udg_DivBool == true ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func012Func003Func002C takes nothing returns boolean
if ( not ( udg_DivDuration == 8 ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func012Func003Func003C takes nothing returns boolean
if ( not ( udg_DivDuration == 5 ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func012Func003Func004C takes nothing returns boolean
if ( not ( udg_DivDuration == 2 ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func012Func003Func014Func001C takes nothing returns boolean
if ( not ( udg_DivIntegerSFX >= 4 ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func012Func003Func014C takes nothing returns boolean
if ( not ( udg_DivIntegerSFX == udg_DivLoop ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func012Func003C takes nothing returns boolean
if ( not ( udg_DivDuration > 0 ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func020Func001Func003C takes nothing returns boolean
if ( not ( LoadUnitHandleBJ(6, udg_Handle_Div2, udg_Hash_Divine) == udg_DivDummyUNIT ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004Func020Func001A takes nothing returns nothing
set udg_DivPickedUnit = GetEnumUnit()
set udg_Handle_Div2 = GetHandleId(udg_DivPickedUnit)
if ( Trig_DivineLoop_Func004Func020Func001Func003C() ) then
call AddSpecialEffectTargetUnitBJ( "origin", udg_DivPickedUnit, udg_DivEffectC )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
call SetUnitInvulnerable( udg_DivPickedUnit, false )
call GroupRemoveUnitSimple( udg_DivPickedUnit, udg_DivGroup2 )
else
endif
endfunction
function Trig_DivineLoop_Func004Func020C takes nothing returns boolean
if ( not ( udg_DivDuration == 0 ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func004A takes nothing returns nothing
set udg_DivDummyUNIT = GetEnumUnit()
set udg_DP = GetUnitLoc(udg_DivDummyUNIT)
set udg_Handle_Div = GetHandleId(udg_DivDummyUNIT)
// =============================
set udg_DivAoE = LoadRealBJ(2, udg_Handle_Div, udg_Hash_Divine)
set udg_DivAngle = LoadRealBJ(11, udg_Handle_Div, udg_Hash_Divine)
set udg_DivAngleTemp = udg_DivAngle
set udg_DivDuration = LoadIntegerBJ(3, udg_Handle_Div, udg_Hash_Divine)
set udg_DivIntegerSFX = LoadIntegerBJ(15, udg_Handle_Div, udg_Hash_Divine)
// =============================
if ( Trig_DivineLoop_Func004Func011C() ) then
set udg_DivCast = LoadUnitHandleBJ(1, udg_Handle_Div, udg_Hash_Divine)
set udg_DivDPS = LoadRealBJ(4, udg_Handle_Div, udg_Hash_Divine)
set udg_DivGroup2 = LoadGroupHandleBJ(5, udg_Handle_Div, udg_Hash_Divine)
// ==============================
set bj_wantDestroyGroup = true
call ForGroupBJ( GetUnitsInRangeOfLocMatching(udg_DivAoE, udg_DP, Condition(function Trig_DivineLoop_Func004Func011Func007001003)), function Trig_DivineLoop_Func004Func011Func007A )
// ==============================
set bj_wantDestroyGroup = true
call ForGroupBJ( GetUnitsInRangeOfLocMatching(udg_DivAoE, udg_DP, Condition(function Trig_DivineLoop_Func004Func011Func010001003)), function Trig_DivineLoop_Func004Func011Func010A )
// ==============================
// ==============================
call ForGroupBJ( udg_DivGroup2, function Trig_DivineLoop_Func004Func011Func013A )
// ==============================
set udg_DivDuration = ( udg_DivDuration - 1 )
call SaveGroupHandleBJ( udg_DivGroup2, 5, udg_Handle_Div, udg_Hash_Divine )
call SaveIntegerBJ( udg_DivDuration, 3, udg_Handle_Div, udg_Hash_Divine )
else
endif
set udg_DivLoop = 1
loop
exitwhen udg_DivLoop > 4
set udg_DL = LoadLightningHandleBJ(( udg_DivLoop + 6 ), udg_Handle_Div, udg_Hash_Divine)
// =============================
if ( Trig_DivineLoop_Func004Func012Func003C() ) then
if ( Trig_DivineLoop_Func004Func012Func003Func002C() ) then
// // Remove a few BJs doing this method.
call SetLightningColor( udg_DL, 0.80, 0.80, 0.80, 1 )
else
endif
if ( Trig_DivineLoop_Func004Func012Func003Func003C() ) then
call SetLightningColor( udg_DL, 0.60, 0.60, 0.60, 1 )
else
endif
if ( Trig_DivineLoop_Func004Func012Func003Func004C() ) then
call SetLightningColor( udg_DL, 0.40, 0.40, 0.40, 1 )
else
endif
// =============================
// =============================
set udg_DivAngleTemp = ( udg_DivAngleTemp + ( udg_DivAngleUp * ( I2R(udg_DivLoop) - 1 ) ) )
set udg_DP2 = PolarProjectionBJ(udg_DP, udg_DivAoE, udg_DivAngleTemp)
// =============================
// =============================
call MoveLightningEx(udg_DL , true , GetLocationX(udg_DP), GetLocationY(udg_DP), GetLocationZ(udg_DP) + (udg_DPH2) , GetLocationX(udg_DP2), GetLocationY(udg_DP2), GetLocationZ(udg_DP2) + (udg_DPH1) )
// =============================
if ( Trig_DivineLoop_Func004Func012Func003Func014C() ) then
if ( Trig_DivineLoop_Func004Func012Func003Func014Func001C() ) then
set udg_DivIntegerSFX = 0
else
endif
call AddSpecialEffectLocBJ( udg_DP2, udg_DivEffectD )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
else
endif
call RemoveLocation(udg_DP2)
else
call DestroyLightning( udg_DL )
endif
set udg_DivLoop = udg_DivLoop + 1
endloop
// =============================
set udg_DivIntegerSFX = ( udg_DivIntegerSFX + 1 )
set udg_DivAngle = ( udg_DivAngle + udg_DivAngleConstantUp )
// =============================
call SaveIntegerBJ( udg_DivIntegerSFX, 15, udg_Handle_Div, udg_Hash_Divine )
call SaveRealBJ( udg_DivAngle, 11, udg_Handle_Div, udg_Hash_Divine )
// =============================
if ( Trig_DivineLoop_Func004Func020C() ) then
call ForGroupBJ( udg_DivGroup2, function Trig_DivineLoop_Func004Func020Func001A )
call GroupRemoveUnitSimple( udg_DivDummyUNIT, udg_DivGroup )
call UnitApplyTimedLifeBJ( 0.01, 'BTLF', udg_DivDummyUNIT )
call SetUnitExplodedBJ( udg_DivDummyUNIT, true )
set udg_DivTRIGGER = ( udg_DivTRIGGER - 1 )
call FlushChildHashtableBJ( udg_Handle_Div, udg_Hash_Divine )
else
endif
// =============================
call RemoveLocation(udg_DP)
endfunction
function Trig_DivineLoop_Func005Func002Func006Func009C takes nothing returns boolean
if ( ( udg_DivTar == null ) ) then
return true
endif
if ( ( IsUnitDeadBJ(udg_DivTar) == true ) ) then
return true
endif
return false
endfunction
function Trig_DivineLoop_Func005Func002Func006C takes nothing returns boolean
if ( not Trig_DivineLoop_Func005Func002Func006Func009C() ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Func005Func002A takes nothing returns nothing
set udg_DivPickedUnit = GetEnumUnit()
// =============================
set udg_Handle_Div2 = GetHandleId(udg_DivPickedUnit)
set udg_DivTar = LoadUnitHandleBJ(6, udg_Handle_Div2, udg_Hash_Divine)
// =============================
if ( Trig_DivineLoop_Func005Func002Func006C() ) then
// =============================
call AddSpecialEffectTargetUnitBJ( "origin", udg_DivPickedUnit, udg_DivEffectC )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
// =============================
call SetUnitInvulnerable( udg_DivPickedUnit, false )
call GroupRemoveUnitSimple( udg_DivPickedUnit, udg_DivGroup2 )
// =============================
call FlushChildHashtableBJ( udg_Handle_Div2, udg_Hash_Divine )
else
endif
endfunction
function Trig_DivineLoop_Func005C takes nothing returns boolean
if ( not ( udg_DivTRIGGER == 0 ) ) then
return false
endif
return true
endfunction
function Trig_DivineLoop_Actions takes nothing returns nothing
// This makes a "1 second" delay...
if ( Trig_DivineLoop_Func002C() ) then
set udg_DivBool = true
set udg_DivCount = 0
else
set udg_DivBool = false
set udg_DivCount = ( udg_DivCount + 1 )
endif
// =============================
call ForGroupBJ( udg_DivGroup, function Trig_DivineLoop_Func004A )
if ( Trig_DivineLoop_Func005C() ) then
// =============================
call ForGroupBJ( udg_DivGroup2, function Trig_DivineLoop_Func005Func002A )
// =============================
call DisableTrigger( GetTriggeringTrigger() )
else
endif
endfunction
//===========================================================================
function InitTrig_DivineLoop takes nothing returns nothing
set gg_trg_DivineLoop = CreateTrigger( )
call DisableTrigger( gg_trg_DivineLoop )
call TriggerRegisterTimerEventPeriodic( gg_trg_DivineLoop, 0.03 )
call TriggerAddAction( gg_trg_DivineLoop, function Trig_DivineLoop_Actions )
endfunction