function Delete_Projectile takes integer k, boolean bl returns nothing
if(bl==true) then
call RemoveUnit(udg_Projectile[k])
endif
set udg_Projectiles_Number = ( udg_Projectiles_Number - 1 )
set udg_Projectile[k] = udg_Projectile[udg_Projectiles_Number]
set udg_Projectile_Angle[k] = udg_Projectile_Angle[udg_Projectiles_Number]
set udg_Projectile_Type[k] = udg_Projectile_Type[udg_Projectiles_Number]
set udg_Projectile_Target[k] = udg_Projectile_Target[udg_Projectiles_Number]
set udg_Projectile_VY[k] = udg_Projectile_VY[udg_Projectiles_Number]
set udg_Projectile_VZ[k] = udg_Projectile_VZ[udg_Projectiles_Number]
set udg_Projectile_Y[k] = udg_Projectile_Y[udg_Projectiles_Number]
set udg_Projectile_Z[k] = udg_Projectile_Z[udg_Projectiles_Number]
set udg_Projectile[udg_Projectiles_Number] = null
endfunction
function GetHeightOffset takes nothing returns nothing
local location loc
local real r = 1000.00
local real an
local integer w = 1
local integer w1
set udg_Camera_Height_Offset = 0.00
loop
exitwhen w > 5
set an = 0.00
set w1 = 1
loop
exitwhen w1 > 12
set loc = Location(udg_XCenter+(r*Cos(an)),udg_YCenter+(r*Sin(an)))
set udg_Camera_Height_Offset = udg_Camera_Height_Offset + GetLocationZ(loc)
set an = ( an + 30.00 )
set w1 = w1 + 1
call RemoveLocation(loc)
set loc = null
endloop
set r = ( r - 166.66 )
set w = w + 1
endloop
set loc = Location(udg_XCenter,udg_YCenter)
set udg_Camera_Height_Offset = udg_Camera_Height_Offset + GetLocationZ(loc)
set udg_Camera_Height_Offset = ( udg_Camera_Height_Offset / 61.00 )
call RemoveLocation(loc)
set loc = null
endfunction
function Delete_Player_Projectile takes integer k,integer j,boolean bl returns nothing
if(bl==true) then
call RemoveUnit(udg_Player_Projectile[j])
endif
set udg_Player_Projectile_Number[k] = ( udg_Player_Projectile_Number[k] - 1 )
set k = ( ( udg_Player_Projectile_Maximum_Numb * k ) + udg_Player_Projectile_Number[k] )
set udg_Player_Projectile[j] = udg_Player_Projectile[k]
set udg_Player_Projectile_Angle[j] = udg_Player_Projectile_Angle[k]
set udg_Player_Projectile_Type[j] = udg_Player_Projectile_Type[k]
set udg_Player_Projectile_Time[j] = udg_Player_Projectile_Time[k]
set udg_Player_Projectile_Koef[j] = udg_Player_Projectile_Koef[k]
set udg_Player_Projectile_Angle_Speed[j] = udg_Player_Projectile_Angle_Speed[k]
set udg_Player_Projectile_VY[j] = udg_Player_Projectile_VY[k]
set udg_Player_Projectile_VZ[j] = udg_Player_Projectile_VZ[k]
set udg_Player_Projectile_Y[j] = udg_Player_Projectile_Y[k]
set udg_Player_Projectile_Z[j] = udg_Player_Projectile_Z[k]
set udg_Player_Projectile_Z0[j] = udg_Player_Projectile_Z0[k]
set udg_Player_Projectile_0Y[j] = udg_Player_Projectile_0Y[k]
set udg_Player_Projectile_0Z[j] = udg_Player_Projectile_0Z[k]
set udg_Player_Projectile[k] = null
endfunction
function Status_Bar takes integer k returns nothing
local integer i = 2
loop
exitwhen i > 11
if ( ( I2R(( i - 1 )) * 6.66 ) <= ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Flying_Machine[( k + 2 )]) + 3.33 ) ) then
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 1, "war3mapImported\\Health.tga" )
else
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 1, "war3mapImported\\Health0.tga" )
endif
if ( I2R(( ( i - 1 ) * 10 )) <= udg_Energy[k] ) then
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 2, "war3mapImported\\Energy.tga" )
else
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 2, "war3mapImported\\Energy0.tga" )
endif
if ( ( i - 1 ) <= udg_Life[k] ) then
call MultiboardSetItemStyleBJ( udg_MultiBoard[k], i, 3, true, true )
else
call MultiboardSetItemStyleBJ( udg_MultiBoard[k], i, 3, true, false )
endif
set i = i + 1
endloop
loop
exitwhen i > 16
if ( ( I2R(( i - 1 )) * 6.66 ) <= ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Flying_Machine[( k + 2 )]) + 3.33 ) ) then
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 1, "war3mapImported\\Health.tga" )
else
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 1, "war3mapImported\\Health0.tga" )
endif
set i = i + 1
endloop
if ( udg_Const == 2 ) then
call MultiboardSetItemValueBJ( udg_MultiBoard[k], 11, 4, I2S(udg_Points[0]) )
call MultiboardSetItemValueBJ( udg_MultiBoard[k], 11, 5, I2S(udg_Points[1]) )
else
call MultiboardSetItemValueBJ( udg_MultiBoard[k], 2, 4, I2S(udg_Points[k]) )
endif
endfunction
function Special_Projectile takes integer k returns nothing
set udg_Special_Projectile_Angle[k] = ( udg_Special_Projectile_Angle[k] + udg_Special_Projectile_Speed )
set udg_Energy[k] = ( udg_Energy[k] - udg_En )
call SetUnitY(udg_Special_Projectile[k], udg_YCenter+udg_Y[k]+( 150.00 * CosBJ(udg_Special_Projectile_Angle[k]) ))
call SetUnitFlyHeight(udg_Special_Projectile[k], udg_Height[k]+( 150.00 * SinBJ(udg_Special_Projectile_Angle[k]) ),0)
if ( udg_Energy[k] <= 0.00 ) then
call KillUnit( udg_Special_Projectile[k] )
set udg_Special_Projectile[k] = null
endif
endfunction
function Auto_Aim takes integer k returns nothing
local location loc1 = Location(udg_Projectile_Y[k], udg_Projectile_Z[k])
local location loc2 = Location(udg_YCenter + udg_Y[udg_Projectile_Target[k]], udg_Height[udg_Projectile_Target[k]])
local real Aim_Angle = AngleBetweenPoints( loc1, loc2)
call RemoveLocation(loc1)
set loc1 = null
call RemoveLocation(loc2)
set loc2 = null
if ( Aim_Angle < 0.00 ) then
set Aim_Angle = ( Aim_Angle + 360.00 )
endif
if ( udg_Projectile_Angle[k] < 0.00 ) then
set udg_Projectile_Angle[k] = ( udg_Projectile_Angle[k] + 360.00 )
endif
if ( udg_Revive_Time[udg_Projectile_Target[k]] == -1.00 ) then
if ( ( Aim_Angle - udg_Projectile_Angle[k] ) >= 0 - udg_Angle_Sector[udg_Difficulty] ) then
if ( ( Aim_Angle - udg_Projectile_Angle[k] ) <= udg_Angle_Sector[udg_Difficulty] ) then
set udg_Projectile_Angle[k] = ( udg_Projectile_Angle[k] + ( ( Aim_Angle - udg_Projectile_Angle[k] ) * udg_Angle_Speed1[udg_Difficulty] ) )
endif
endif
endif
set udg_Projectile_Y[k] = (udg_Projectile_Y[k]+(udg_Projectile_speed[udg_Projectile_Type[k]] * CosBJ( udg_Projectile_Angle[k] )))
set udg_Projectile_Z[k] = (udg_Projectile_Z[k]+(udg_Projectile_speed[udg_Projectile_Type[k]] * SinBJ( udg_Projectile_Angle[k] )))
endfunction
function Create_Floathing_Text takes integer k returns nothing
local location temp_point
set udg_Floathing_Text_Y[udg_Floathing_Text_Number] = udg_Unit_Y[k]
set udg_Floathing_Text_Z[udg_Floathing_Text_Number] = udg_Unit_Z[k]+udg_Unit_Origin_Offset[udg_Unit_Current_State[k]]
set temp_point = Location(udg_XCenter, udg_Unit_Y[k] - 100.00 )
call CreateTextTagLocBJ( I2S(udg_Unit_State_Points[udg_Unit_Current_State[k]]), temp_point, udg_Floathing_Text_Z[udg_Floathing_Text_Number], 10, 80.00, 80.00, 40.00, 0 )
call RemoveLocation ( temp_point )
set udg_Floathing_Text[udg_Floathing_Text_Number] = GetLastCreatedTextTag()
call SetTextTagPermanentBJ( udg_Floathing_Text[udg_Floathing_Text_Number], false )
set udg_Floathing_Text_Age[udg_Floathing_Text_Number] = 2.50
set udg_Floathing_Text_Number = ( udg_Floathing_Text_Number + 1 )
set temp_point = null
endfunction
function Delete_Floathing_Text takes integer k returns nothing
call DestroyTextTagBJ( udg_Floathing_Text[k] )
set udg_Floathing_Text_Number = ( udg_Floathing_Text_Number - 1 )
set udg_Floathing_Text[k] = udg_Floathing_Text[udg_Floathing_Text_Number]
set udg_Floathing_Text_Age[k] = udg_Floathing_Text_Age[udg_Floathing_Text_Number]
set udg_Floathing_Text_Y[k] = udg_Floathing_Text_Y[udg_Floathing_Text_Number]
set udg_Floathing_Text_Z[k] = udg_Floathing_Text_Z[udg_Floathing_Text_Number]
set udg_Floathing_Text[udg_Floathing_Text_Number] = null
endfunction
function Create_Main_Weapon takes integer k, player p returns nothing
local location loc
call RemoveUnit( udg_Main_Weapon[k] )
set loc = Location(udg_XCenter, udg_YCenter - 720.00 )
call CreateNUnitsAtLoc( 1, udg_Weapon_Projectile[udg_Main_Weapon_Type[k]], p, loc, 90.00 )
call RemoveLocation ( loc )
set udg_Main_Weapon[k] = GetLastCreatedUnit()
call UnitAddAbilityBJ( 'A001', udg_Main_Weapon[k] )
call SetUnitFlyHeightBJ( udg_Main_Weapon[k], ( udg_Camera_Height[k] + 400.00 ), 0.00 )
call PauseUnitBJ( true, udg_Main_Weapon[k] )
set loc = Location(udg_XCenter, udg_YCenter - 650.00 )
call DestroyTextTagBJ( udg_Main_Weapon_FT[k] )
call CreateTextTagLocBJ( udg_Main_Weapon_Name[udg_Main_Weapon_Type[k]], loc, ( udg_Camera_Height[k] + 385.00 ), 10, 100, 100, 100, 0 )
set udg_Main_Weapon_FT[k] = GetLastCreatedTextTag()
call ShowTextTagForceBJ( false, udg_Main_Weapon_FT[k], GetForceOfPlayer(udg_Player[0]) )
call ShowTextTagForceBJ( false, udg_Main_Weapon_FT[k], GetForceOfPlayer(udg_Player[1]) )
call ShowTextTagForceBJ( true, udg_Main_Weapon_FT[k], GetForceOfPlayer(udg_Player[k]) )
call RemoveLocation ( loc )
set loc = null
endfunction
function Create_Special_Weapon takes integer k, player p returns nothing
local location loc
call RemoveUnit( udg_Special_Weapon[k] )
set loc = Location(udg_XCenter, udg_YCenter - 720.00 )
call CreateNUnitsAtLoc( 1, udg_Special_Weapon_Model[udg_Special_Weapon_Type[k]], p, loc, 90.00 )
call RemoveLocation ( loc )
set udg_Special_Weapon[k] = GetLastCreatedUnit()
call UnitAddAbilityBJ( 'A001', udg_Special_Weapon[k] )
call SetUnitFlyHeightBJ( udg_Special_Weapon[k], ( udg_Camera_Height[k] + 300.00 ), 0.00 )
call SetUnitScalePercent( udg_Special_Weapon[k], 100, 100, 100 )
call PauseUnitBJ( true, udg_Special_Weapon[k] )
set loc = Location(udg_XCenter, udg_YCenter - 650.00 )
call DestroyTextTagBJ( udg_Special_Weapon_FT[k] )
call CreateTextTagLocBJ( udg_Special_Weapon_Name[udg_Special_Weapon_Type[k]], loc, ( udg_Camera_Height[k] + 325.00 ), 10, 100, 100, 100, 0 )
set udg_Special_Weapon_FT[k] = GetLastCreatedTextTag()
call ShowTextTagForceBJ( false, udg_Special_Weapon_FT[k], GetForceOfPlayer(udg_Player[0]) )
call ShowTextTagForceBJ( false, udg_Special_Weapon_FT[k], GetForceOfPlayer(udg_Player[1]) )
call ShowTextTagForceBJ( true, udg_Special_Weapon_FT[k], GetForceOfPlayer(udg_Player[k]) )
call RemoveLocation ( loc )
set loc = null
endfunction
function Delete_Drop_Item takes integer k returns nothing
call DestroyTextTagBJ( udg_Drop_Item_Floating_Text[k] )
set udg_Drop_Item_Number = ( udg_Drop_Item_Number - 1 )
set udg_Drop_Item[k] = udg_Drop_Item[udg_Drop_Item_Number]
set udg_D_I_F_T_Offset[k] = udg_D_I_F_T_Offset[udg_Drop_Item_Number]
set udg_Drop_Item_Floating_Text[k] = udg_Drop_Item_Floating_Text[udg_Drop_Item_Number]
set udg_Drop_Item_Type[k] = udg_Drop_Item_Type[udg_Drop_Item_Number]
set udg_Drop_Weapon_Type[k] = udg_Drop_Weapon_Type[udg_Drop_Item_Number]
set udg_Drop_Item[udg_Drop_Item_Number] = null
set udg_Drop_Item_Floating_Text[udg_Drop_Item_Number] = null
endfunction
function Delete_Unit takes integer k returns nothing
set udg_Unit_Number = ( udg_Unit_Number - 1 )
set udg_Moving_Unit[k] = udg_Moving_Unit[udg_Unit_Number]
set udg_Unit_Timer[k] = udg_Unit_Timer[udg_Unit_Number]
set udg_Unit_Current_State[k] = udg_Unit_Current_State[udg_Unit_Number]
set udg_Unit_Time[k] = udg_Unit_Time[udg_Unit_Number]
set udg_Unit_Type[k] = udg_Unit_Type[udg_Unit_Number]
set udg_Ranged_Unit[k] = udg_Ranged_Unit[udg_Unit_Number]
set udg_Unit_Glimmer[k] = udg_Unit_Glimmer[udg_Unit_Number]
set udg_Unit_Cooldown[k] = udg_Unit_Cooldown[udg_Unit_Number]
set udg_Unit_Remaining_Shots[k] = udg_Unit_Remaining_Shots[udg_Unit_Number]
set udg_Unit_Shot_Time[k] = udg_Unit_Shot_Time[udg_Unit_Number]
set udg_Unit_VY[k] = udg_Unit_VY[udg_Unit_Number]
set udg_Unit_VZ[k] = udg_Unit_VZ[udg_Unit_Number]
set udg_Unit_a[k] = udg_Unit_a[udg_Unit_Number]
set udg_Unit_c[k] = udg_Unit_c[udg_Unit_Number]
set udg_Unit_Inertia_Y[k] = udg_Unit_Inertia_Y[udg_Unit_Number]
set udg_Unit_Inertia_Z[k] = udg_Unit_Inertia_Z[udg_Unit_Number]
set udg_Unit_Y[k] = udg_Unit_Y[udg_Unit_Number]
set udg_Unit_Z[k] = udg_Unit_Z[udg_Unit_Number]
set udg_Unit_0Y[k] = udg_Unit_0Y[udg_Unit_Number]
set udg_Unit_0Z[k] = udg_Unit_0Z[udg_Unit_Number]
set udg_Unit_Z0[k] = udg_Unit_Z0[udg_Unit_Number]
if(udg_Boss == udg_Unit_Number)then
set udg_Boss = k
endif
set udg_Moving_Unit[udg_Unit_Number] = null
endfunction
function Play_Sound takes integer k returns nothing
call SetSoundPitchBJ( udg_Sound[( 8*k + udg_Sound_Chanel[k] )], GetRandomReal(udg_Sound_Pitch_Min[k], udg_Sound_Pitch_Max[k]) )
call SetSoundVolumeBJ( udg_Sound[( 8*k + udg_Sound_Chanel[k] )], GetRandomReal(udg_Sound_Volume_Min[k], udg_Sound_Volume_Max[k]) )
call PlaySoundBJ( udg_Sound[( 8*k + udg_Sound_Chanel[k] )] )
if ( udg_Sound_Chanel[k] == 7 ) then
set udg_Sound_Chanel[k] = 0
else
set udg_Sound_Chanel[k] = ( udg_Sound_Chanel[k] + 1 )
endif
endfunction
function Func01 takes nothing returns nothing
local integer i = 0
loop
exitwhen i > udg_Projectiles_Number - 1
if ( udg_Projectile_Type[i] == 9 or udg_Projectile_Type[i] == 10 ) then
call KillUnit( udg_Projectile[i] )
call Delete_Projectile(i,null)
else
set i = i + 1
endif
endloop
endfunction
function Death takes integer k, integer j returns nothing
if(udg_Unit_Boss_Class[udg_Unit_Type[k]]==true) then
set udg_Boss = -1
set udg_Game_Over_Time = 3.00
set udg_Points[0] = ( udg_Points[0] + udg_Unit_State_Points[udg_Unit_Current_State[k]] )
call Status_Bar(0)
set udg_Points[1] = ( udg_Points[1] + udg_Unit_State_Points[udg_Unit_Current_State[k]] )
call Status_Bar(1)
set udg_Victory = true
call Create_Floathing_Text(k)
call Func01()
else
set udg_Points[j] = ( udg_Points[j] + udg_Unit_State_Points[udg_Unit_Current_State[k]] )
call Status_Bar(j)
set udg_Propability = ( udg_Propability + udg_Propability_Increase )
set udg_L3 = k
set udg_L4 = j
call ConditionalTriggerExecute( gg_trg_Create_Drop_Item )
endif
set udg_Unit_Timer[k] = 1.00 + udg_Game_Time
endfunction
function Explosion01 takes nothing returns nothing
call CinematicFilterGenericBJ( 0.50, BLEND_MODE_MODULATE_2X, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 80.00, 80.00, 80.00, 0.00, 100.00, 100.00, 100.00, 0.00 )
call TriggerSleepAction( 0.50 )
call CinematicFilterGenericBJ( 0.10, BLEND_MODE_ADDITIVE, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 100.00, 100.00, 80.00, 100.00, 100.00, 100.00, 0.00 )
call CinematicFilterGenericBJ( 0.50, BLEND_MODE_ADDITIVE, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 100.00, 100.00, 0.00, 100.00, 100.00, 100.00, 100.00 )
endfunction
function Explosion02 takes nothing returns nothing
call CameraSetEQNoiseForPlayer( Player(0), 10.00 )
call CameraSetEQNoiseForPlayer( Player(1), 10.00 )
call CinematicFilterGenericBJ( 0.20, BLEND_MODE_ADDITIVE, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 50.00, 0.00, 100.00, 100.00, 60.00, 30.00, 0.00 )
call TriggerSleepAction( 0.20 )
call CinematicFilterGenericBJ( 0.20, BLEND_MODE_ADDITIVE, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 60.00, 30.00, 0.00, 100.00, 50.00, 0.00, 100.00 )
call TriggerSleepAction( 0.80 )
call CameraClearNoiseForPlayer( Player(0) )
call CameraClearNoiseForPlayer( Player(1) )
endfunction
function Special_Weapon_1 takes integer k returns nothing
local integer j
local location p0
local location p01
local location p = Location(udg_YCenter + udg_Y[k] , udg_Height[k])
local location p1 = Location(udg_XCenter, udg_YCenter)
if ( udg_Energy[k] >= udg_Special_Weapon_Energy_Cost[udg_Special_Weapon_Type[k]] ) then
set udg_Special_Weapon_Cooldown[k] = udg_Special_Weapon_Cooldown_Max[udg_Special_Weapon_Type[k]] + udg_Game_Time
set udg_Energy[k] = ( udg_Energy[k] - udg_Special_Weapon_Energy_Cost[udg_Special_Weapon_Type[k]] )
set p0 = GetUnitLoc(udg_Flying_Machine[k])
call CreateNUnitsAtLoc( 1, 'h006', Player(PLAYER_NEUTRAL_PASSIVE), p0, 0.00 )
call RemoveLocation ( p0 )
call SetUnitTimeScalePercent( GetLastCreatedUnit(), 50.00 )
call SetUnitFlyHeightBJ( GetLastCreatedUnit(), udg_Height[k], 0.00 )
call KillUnit( GetLastCreatedUnit() )
call PlaySoundBJ( gg_snd_NightElfBuildingDeathLarge1 )
call Explosion01()
set j = 0
loop
exitwhen j > ( udg_Unit_Number - 1 )
set p0 = Location ( udg_Unit_Y[j] , udg_Unit_Z[j] + udg_Unit_Origin_Offset[udg_Unit_Current_State[j]] )
set p01 = GetUnitLoc(udg_Moving_Unit[j])
if ( IsUnitHiddenBJ(udg_Moving_Unit[j]) == false and IsUnitAliveBJ(udg_Moving_Unit[j]) == true and DistanceBetweenPoints(p0, p) < 700.00 and DistanceBetweenPoints(p01, p1) < 850.00 ) then
call RemoveLocation ( p0 )
call RemoveLocation ( p01 )
set p0 = GetUnitLoc(udg_Moving_Unit[j])
call CreateNUnitsAtLoc( 1, 'h007', Player(PLAYER_NEUTRAL_PASSIVE), p0, 0.00 )
call RemoveLocation ( p0 )
call SetUnitFlyHeightBJ( GetLastCreatedUnit(), ( udg_Unit_Z[j] + udg_Unit_Origin_Offset[udg_Unit_Current_State[j]] ), 0.00 )
call KillUnit( GetLastCreatedUnit() )
call SetUnitLifeBJ( udg_Moving_Unit[j], ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Moving_Unit[j]) - 200.00 ) )
set udg_Unit_Glimmer[j] = 100
if ( IsUnitDeadBJ(udg_Moving_Unit[j]) == true ) then
call Death(j,k)
endif
else
call RemoveLocation ( p0 )
set p0 = null
call RemoveLocation ( p01 )
set p01 = null
endif
set j = j + 1
endloop
call Status_Bar(k)
set j = 0
loop
exitwhen j > udg_Projectiles_Number - 1
set p0 = Location ( GetUnitY(udg_Projectile[j]) , GetUnitFlyHeight(udg_Projectile[j]) )
if ( DistanceBetweenPoints(p0, p) < 600.00 ) then
call RemoveLocation ( p0 )
set p0 = GetUnitLoc(udg_Projectile[j])
call CreateNUnitsAtLoc( 1, 'h007', Player(PLAYER_NEUTRAL_PASSIVE), p0, 0.00 )
call RemoveLocation ( p0 )
call SetUnitFlyHeightBJ( GetLastCreatedUnit(), GetUnitFlyHeight(udg_Projectile[j]), 0.00 )
call KillUnit( GetLastCreatedUnit() )
call KillUnit( udg_Projectile[j] )
call Delete_Projectile ( j, null )
set j = ( j - 1 )
else
call RemoveLocation ( p0 )
set p0 = null
endif
set j = j + 1
endloop
else
call DisplayTextToForce( GetForceOfPlayer(udg_Player[k]), "not enough energy" )
call Play_Sound(12)
endif
call RemoveLocation (p)
call RemoveLocation (p1)
set p = null
set p1 = null
endfunction
function Special_Weapon_2 takes integer j, integer k, real angle returns nothing
local integer i = 0
local integer l
local location temp_point
set k = k - 1
if ( udg_Energy[j] >= udg_Special_Weapon_Energy_Cost[udg_Special_Weapon_Type[j]] ) then
set udg_Special_Weapon_Cooldown[j] = udg_Special_Weapon_Cooldown_Max[udg_Special_Weapon_Type[j]] + udg_Game_Time
set udg_Energy[j] = ( udg_Energy[j] - udg_Special_Weapon_Energy_Cost[udg_Special_Weapon_Type[j]] )
set udg_Angle3 = 0-(k*angle/2)
if( (udg_Player_Projectile_Number[j] + k) > udg_Player_Projectile_Maximum_Numb) then
set k = (udg_Player_Projectile_Maximum_Numb - udg_Player_Projectile_Number[j])
endif
loop
exitwhen i > k
set l = ( udg_Player_Projectile_Number[j] + ( udg_Player_Projectile_Maximum_Numb * j ) )
set temp_point = Location ( udg_XCenter , GetUnitY(udg_Flying_Machine[j]) + ( 20.00 * CosBJ(udg_Angle3) ) )
call CreateNUnitsAtLoc( 1, udg_Weapon_Projectile[10], Player(PLAYER_NEUTRAL_PASSIVE), temp_point, 0.00 )
call RemoveLocation ( temp_point )
call SetUnitFlyHeightBJ( GetLastCreatedUnit(), ( udg_Height[j] + ( 20.00 * SinBJ(udg_Angle3) ) ), 0.00 )
set udg_Player_Projectile[l] = GetLastCreatedUnit()
set udg_Player_Projectile_Angle[l] = udg_Angle3
set udg_Player_Projectile_Type[l] = 10
set udg_Player_Projectile_Time[l] = udg_Game_Time
set udg_Player_Projectile_VY[l] = ( udg_Weapon_Projectile_Speed[10] * CosBJ(udg_Player_Projectile_Angle[l]) )
set udg_Player_Projectile_VZ[l] = ( udg_Weapon_Projectile_Speed[10] * SinBJ(udg_Player_Projectile_Angle[l]) )
set udg_Player_Projectile_Y[l] = GetUnitY(udg_Player_Projectile[l])
set udg_Player_Projectile_Z[l] = GetUnitFlyHeight(udg_Player_Projectile[l])
set udg_Player_Projectile_Z0[l] = udg_Player_Projectile_Z[l] - udg_Height[j]
set udg_Player_Projectile_Number[j] = ( udg_Player_Projectile_Number[j] + 1 )
set udg_Angle3 = ( udg_Angle3 + angle )
set i = i + 1
endloop
call Play_Sound(7)
call Status_Bar(j)
else
call DisplayTextToForce( GetForceOfPlayer(udg_Player[j]), "not enough energy" )
call Play_Sound(12)
endif
set temp_point = null
endfunction
function Show_MB takes integer k, player p returns nothing
if(GetLocalPlayer() == p) then
call MultiboardDisplay( udg_MultiBoard[k],true )
call MultiboardMinimizeBJ( true, udg_MultiBoard[k] )
call MultiboardMinimizeBJ( false, udg_MultiBoard[k] )
endif
endfunction
function Keys takes integer k returns nothing
local integer j=0
set udg_ZSpeed[k]=0.00
set udg_YSpeed[k]=0.00
if(udg_Up[k]==true) then
set udg_ZSpeed[k]=udg_ZSpeed_Const
set j=j+1
else
if(udg_Down[k]==true) then
set udg_ZSpeed[k]=0.00-udg_ZSpeed_Const
set j=j+1
endif
endif
if(udg_Right[k]==true) then
set udg_YSpeed[k]=udg_YSpeed_Const
set j=j+1
else
if(udg_Left[k]==true) then
set udg_YSpeed[k]=0.00-udg_YSpeed_Const
set j=j+1
endif
endif
if(j==2) then
set udg_ZSpeed[k]=udg_ZSpeed[k]/1.41
set udg_YSpeed[k]=udg_YSpeed[k]/1.41
endif
endfunction
function Player_Glimmer takes nothing returns nothing
local integer k=udg_k
loop
exitwhen udg_Invulnarable[k]==0
call SetUnitVertexColorBJ( udg_Flying_Machine[k], 100, 100, 100, 80.00 )
call TriggerSleepAction( 0.1 )
call SetUnitVertexColorBJ( udg_Flying_Machine[k], 100, 100, 100, 0.00 )
call TriggerSleepAction( 0.1 )
endloop
endfunction
function Get_Target takes nothing returns integer
local boolean j=true
local integer aim=-1
local integer i=0
loop
exitwhen i>1
if( IsUnitAliveBJ(udg_Flying_Machine[i+2]) == true ) then
set aim = i
else
set j = false
endif
set i = i + 1
endloop
if ( j==true ) then
set aim = GetRandomInt(0, 1)
endif
return aim
endfunction
Name | Type | is_array | initial_value |
Aim | integer | No | |
Ammo | integer | Yes | |
Ammo_LedearBoard | leaderboard | Yes | |
Angle | real | No | |
Angle1 | real | No | 10.00 |
Angle2 | real | No | |
Angle3 | real | No | |
Angle4 | real | No | |
Angle_Sector | real | Yes | 45.00 |
Angle_Speed | real | Yes | |
Angle_Speed1 | real | Yes | 0.16 |
Armor_Detorminator | real | Yes | 1.00 |
Auto_Fire | boolean | Yes | |
Avoidance | boolean | Yes | |
Avoidance_Koef | real | Yes | 1.00 |
Avoidance_Timer | timer | Yes | |
Avoidance_Window | timerdialog | Yes | |
b1 | integer | No | |
b2 | integer | No | |
b3 | integer | No | |
Bonus_Damage | boolean | Yes | |
Bonus_Item_F_T_Offset | real | Yes | |
Bonus_Item_Name | string | Yes | |
Boss | integer | No | -1 |
Boss_Health_Bar | texttag | Yes | |
Boss_Max_Health | real | No | |
Camera_Height | real | Yes | 500.00 |
Camera_Height_Offset | real | No | |
Center | unit | No | |
Const | integer | No | 1 |
Const_Speed | real | No | 4.00 |
Cooldown_Detorminator | real | Yes | 1.00 |
D_I_F_T_Offset | real | Yes | |
Dark_Force_Unit | unit | Yes | |
Dark_Force_Unit_AI | integer | Yes | -1 |
Difficulty | integer | No | |
Difficulty_Bonus_Timer | real | Yes | |
Difficulty_Menu | dialog | No | |
Difficulty_Menu_Button | button | Yes | |
Difficulty_Monster_Damage | real | Yes | 1.00 |
Down | boolean | Yes | |
Drop_Item | unit | Yes | |
Drop_Item_Floating_Text | texttag | Yes | |
Drop_Item_Function | trigger | Yes | |
Drop_Item_Model | unitcode | Yes | h009 |
Drop_Item_Number | integer | No | |
Drop_Item_Propability | real | Yes | 0.10 |
Drop_Item_Propability_Max | real | Yes | 0.10 |
Drop_Item_Type | integer | Yes | |
Drop_Weapon_Type | integer | Yes | |
Empty_Bar | string | Yes | |
En | real | No | 0.12 |
Energy | real | Yes | |
FarZ | real | Yes | 10000.00 |
FB_Speed | real | No | 3.00 |
Floathing_Text | texttag | Yes | |
Floathing_Text_Age | real | Yes | |
Floathing_Text_Number | integer | No | |
Floathing_Text_Y | real | Yes | |
Floathing_Text_Z | real | Yes | |
Flying_Machine | unit | Yes | |
Game_Over_Time | real | No | -1.00 |
Game_Time | real | No | -0.02 |
Game_Time1 | real | No | -0.05 |
H_B_Z | real | Yes | 370.00 |
Height | real | Yes | 300.00 |
i1 | integer | No | |
i10 | integer | No | |
i11 | integer | No | |
i12 | integer | No | |
i2 | integer | No | |
i3 | integer | No | |
i4 | integer | No | |
i5 | integer | No | |
i6 | integer | No | |
i7 | integer | No | |
i8 | integer | No | |
i9 | integer | No | |
Invulnarable | real | Yes | |
Invulnarable_Time | real | No | 1.50 |
Item | integer | Yes | |
Item_Number | integer | No | 10 |
k | integer | No | |
L1 | integer | No | |
L3 | integer | No | |
L4 | integer | No | |
Left | boolean | Yes | |
Life | integer | Yes | |
Life_Limit | integer | No | 4 |
Life_Number | integer | No | |
m1 | integer | No | |
m2 | integer | No | |
m3 | integer | No | |
m4 | integer | No | |
m5 | integer | No | |
m6 | integer | No | |
Main_Weapon | unit | Yes | |
Main_Weapon_F_T_Offset | real | Yes | |
Main_Weapon_FT | texttag | Yes | |
Main_Weapon_Koef | real | Yes | 1.00 |
Main_Weapon_Name | string | Yes | Main Weapon |
Main_Weapon_Number | integer | No | 10 |
Main_Weapon_Type | integer | Yes | |
Moving_Unit | unit | Yes | UnitNull |
MultiBoard | multiboard | Yes | |
n | integer | No | 0 |
n0 | integer | No | 0 |
n1 | integer | No | |
n3 | integer | No | |
n4 | integer | No | -1 |
n5 | integer | No | |
Player | player | Yes | |
Player_Projectile | unit | Yes | |
Player_Projectile_0Y | real | Yes | |
Player_Projectile_0Z | real | Yes | |
Player_Projectile_Angle | real | Yes | |
Player_Projectile_Angle_Speed | real | Yes | |
Player_Projectile_Koef | real | Yes | 1.00 |
Player_Projectile_Maximum_Numb | integer | No | 50 |
Player_Projectile_Number | integer | Yes | |
Player_Projectile_Time | real | Yes | |
Player_Projectile_Type | integer | Yes | |
Player_Projectile_VY | real | Yes | |
Player_Projectile_VZ | real | Yes | |
Player_Projectile_Y | real | Yes | |
Player_Projectile_Z | real | Yes | |
Player_Projectile_Z0 | real | Yes | |
Point | texttag | Yes | |
Points | integer | Yes | |
Projectile | unit | Yes | UnitNull |
Projectile_Angle | real | Yes | |
Projectile_Function | trigger | Yes | |
Projectile_Maximum_Number | integer | No | 30 |
Projectile_Object | unitcode | Yes | |
Projectile_Scale | real | Yes | |
Projectile_speed | real | Yes | 10.00 |
Projectile_Target | integer | Yes | |
Projectile_Timer | real | No | |
Projectile_Type | integer | Yes | |
Projectile_VY | real | Yes | |
Projectile_VZ | real | Yes | |
Projectile_Y | real | Yes | |
Projectile_Z | real | Yes | |
Projectiles_Number | integer | No | |
Propability | real | No | -0.10 |
Propability_Increase | real | No | 0.00 |
q1 | integer | No | |
q2 | integer | No | |
R | real | No | |
Random | real | No | |
Random2 | real | No | |
Ranged_Unit | boolean | Yes | false |
Rapid_Fire | boolean | Yes | |
Rapid_Fire_Timer | timer | Yes | |
Rapid_Fire_Window | timerdialog | Yes | |
Real1 | real | No | |
Real2 | real | No | |
Region | rect | Yes | |
Revive_Time | real | Yes | -1.00 |
Right | boolean | Yes | false |
s | integer | No | |
Shield | boolean | Yes | |
Shield_Effect | effect | Yes | |
Shield_Timer | timer | Yes | |
Shield_Window | timerdialog | Yes | |
Sound | sound | Yes | |
Sound_Chanel | integer | Yes | |
Sound_Pitch_Max | real | Yes | 1.10 |
Sound_Pitch_Min | real | Yes | 0.90 |
Sound_Volume_Max | real | Yes | 60.00 |
Sound_Volume_Min | real | Yes | 50.00 |
Special_Projectile | unit | Yes | |
Special_Projectile_Angle | real | Yes | |
Special_Projectile_Speed | real | No | 18.00 |
Special_Weapon | unit | Yes | |
Special_Weapon_Cooldown | real | Yes | 3.00 |
Special_Weapon_Cooldown_Max | real | Yes | |
Special_Weapon_Energy | real | Yes | |
Special_Weapon_Energy_Cost | real | Yes | |
Special_Weapon_F_T_Offset | real | Yes | |
Special_Weapon_FT | texttag | Yes | |
Special_Weapon_Function | trigger | Yes | |
Special_Weapon_Model | unitcode | Yes | |
Special_Weapon_Name | string | Yes | Special Weapon |
Special_Weapon_Number | integer | No | 4 |
Special_Weapon_Propability | real | Yes | 0.10 |
Special_Weapon_Propability_Max | real | Yes | 0.10 |
Special_Weapon_Type | integer | Yes | |
Speed | real | Yes | 4.00 |
t | real | No | |
Target | integer | No | |
TEMP_Group | group | No | |
TEMP_Point | location | No | |
TEMP_Point10 | location | No | |
TEMP_Point11 | location | No | |
TEMP_Point2 | location | No | |
TEMP_Point3 | location | No | |
TEMP_Point5 | location | No | |
TEMP_Point6 | location | No | |
TEMP_Point7 | location | No | |
TEMP_Point8 | location | No | |
TEMP_Point9 | location | No | |
Time | real | No | |
Timer_Number | integer | Yes | |
Unit | unitcode | Yes | |
Unit_0Y | real | Yes | |
Unit_0Z | real | Yes | |
Unit_a | real | Yes | |
Unit_AI_Number | integer | Yes | |
Unit_Boss_Class | boolean | Yes | false |
Unit_c | real | Yes | |
Unit_Cooldown | real | Yes | |
Unit_Current_State | integer | Yes | 0 |
Unit_Facing | boolean | Yes | |
Unit_Glimmer | real | Yes | |
Unit_Inertia_Y | real | Yes | |
Unit_Inertia_Z | real | Yes | |
Unit_Maximum_Number | integer | No | 30 |
Unit_Number | integer | No | 0 |
Unit_Origin_Offset | real | Yes | |
Unit_Projectile_Point_Y | real | Yes | |
Unit_Projectile_Point_Z | real | Yes | |
Unit_Remaining_Shots | integer | Yes | |
Unit_Shot_Time | real | Yes | -1.00 |
Unit_Shot_Time_Max | real | Yes | |
Unit_State_a | real | Yes | 0.00 |
Unit_State_Always_Shot | boolean | Yes | |
Unit_State_Animated | boolean | Yes | |
Unit_State_Animation | string | Yes | Stand |
Unit_State_Attack_Animation | boolean | Yes | |
Unit_State_b | real | Yes | 0.00 |
Unit_State_Cooldown | real | Yes | 0.00 |
Unit_State_Cooldown_at_start | real | Yes | |
Unit_State_Cooldown_Error | real | Yes | |
Unit_State_Face_Angle | real | Yes | 270.00 |
Unit_State_Function | trigger | Yes | |
Unit_State_Health_Denominator | real | Yes | 1.00 |
Unit_State_Hidden | boolean | Yes | |
Unit_State_Points | integer | Yes | |
Unit_State_Projectile_Aim | boolean | Yes | true |
Unit_State_Projectile_Angle | real | Yes | |
Unit_State_Projectile_Number | integer | Yes | |
Unit_State_Projectile_Type | integer | Yes | -1 |
Unit_State_Remaining_Shots | integer | Yes | |
Unit_State_Shot_Error | real | Yes | |
Unit_State_Shot_Propability | real | Yes | |
Unit_State_Speed | real | Yes | |
Unit_State_Speed1 | real | Yes | |
Unit_State_Time | real | Yes | -1.00 |
Unit_State_Time1 | real | Yes | |
Unit_State_Time_Error | real | Yes | |
Unit_State_VY | real | Yes | |
Unit_State_VZ | real | Yes | |
Unit_State_Z0 | real | Yes | -1.00 |
Unit_Sync | boolean | Yes | |
Unit_Time | real | Yes | |
Unit_Timer | real | Yes | -1.00 |
Unit_Type | integer | Yes | |
Unit_VY | real | Yes | |
Unit_VZ | real | Yes | |
Unit_Y | real | Yes | |
Unit_YScale | real | Yes | |
Unit_Z | real | Yes | |
Unit_Z0 | real | Yes | |
Unit_ZScale | real | Yes | |
Up | boolean | Yes | false |
Victory | boolean | No | |
W | boolean | No | |
Weapon | boolean | Yes | true |
Weapon_Cooldown | real | Yes | -1.00 |
Weapon_Cooldown_Max | real | Yes | |
Weapon_Projectile | unitcode | Yes | |
Weapon_Projectile_Angle | real | Yes | 15.00 |
Weapon_Projectile_Angle_Speed | real | Yes | 15.00 |
Weapon_Projectile_Function | trigger | Yes | |
Weapon_Projectile_Height | real | Yes | |
Weapon_Projectile_Hit_Points | real | Yes | |
Weapon_Projectile_Next_State | integer | Yes | -1 |
Weapon_Projectile_Number | integer | Yes | |
Weapon_Projectile_Simetri | boolean | Yes | |
Weapon_Projectile_Speed | real | Yes | |
Weapon_Projectile_State_Angle | real | Yes | |
Weapon_Projectile_State_Time | real | Yes | -1.00 |
Weapon_Propability | real | Yes | 0.10 |
Weapon_Propability_Max | real | Yes | 0.10 |
Weapon_Sound | integer | Yes | -1 |
XCenter | real | No | 0.00 |
Y | real | Yes | 0.00 |
YCenter | real | No | 0.00 |
YSpeed | real | Yes | |
YSpeed_Const | real | No | 13.00 |
Z | real | No | |
ZSpeed | real | Yes | |
ZSpeed_Const | real | No | 13.00 |
function Trig_Player_Projectile_Line_Actions takes nothing returns nothing
set udg_Player_Projectile_Y[udg_i7] = (udg_Player_Projectile_Y[udg_i7] + udg_Player_Projectile_VY[udg_i7])
set udg_Player_Projectile_Z[udg_i7] = (udg_Player_Projectile_Z[udg_i7] + udg_Player_Projectile_VZ[udg_i7])
endfunction
//===========================================================================
function InitTrig_Player_Projectile_Line takes nothing returns nothing
set gg_trg_Player_Projectile_Line = CreateTrigger( )
call TriggerAddAction( gg_trg_Player_Projectile_Line, function Trig_Player_Projectile_Line_Actions )
endfunction
function Trig_Player_Projectile_Zigzag_Actions takes nothing returns nothing
set udg_Player_Projectile_Y[udg_i7] = (udg_Player_Projectile_Y[udg_i7]+(udg_Weapon_Projectile_Speed[udg_Player_Projectile_Type[udg_i7]]*CosBJ((udg_Player_Projectile_Angle[udg_i7]+udg_Angle1))))
set udg_Player_Projectile_Z[udg_i7] = (udg_Player_Projectile_Z[udg_i7]+(udg_Weapon_Projectile_Speed[udg_Player_Projectile_Type[udg_i7]]*SinBJ((udg_Player_Projectile_Angle[udg_i7]+udg_Angle1))))
endfunction
//===========================================================================
function InitTrig_Player_Projectile_Zigzag takes nothing returns nothing
set gg_trg_Player_Projectile_Zigzag = CreateTrigger( )
call TriggerAddAction( gg_trg_Player_Projectile_Zigzag, function Trig_Player_Projectile_Zigzag_Actions )
endfunction
function Trig_Player_Projectile_Special_Actions takes nothing returns nothing
set udg_Player_Projectile_Y[udg_i7] = (udg_Player_Projectile_Y[udg_i7]+udg_Player_Projectile_VY[udg_i7])
set udg_Player_Projectile_Z[udg_i7] = (udg_Player_Projectile_Z[udg_i7]+( ( udg_Height[udg_n3] + udg_Player_Projectile_Z0[udg_i7] - udg_Player_Projectile_Z[udg_i7]) / ( udg_Projectile_speed[udg_Player_Projectile_Type[udg_i7]] * udg_FB_Speed ) ) )
endfunction
//===========================================================================
function InitTrig_Player_Projectile_Fire_Bolt takes nothing returns nothing
set gg_trg_Player_Projectile_Fire_Bolt = CreateTrigger( )
call TriggerAddAction( gg_trg_Player_Projectile_Fire_Bolt, function Trig_Player_Projectile_Special_Actions )
endfunction
function Trig_Player_Projectile_Rocket_Actions takes nothing returns nothing
set udg_Player_Projectile_Angle[udg_i7] = ( udg_Player_Projectile_Angle[udg_i7] - udg_Player_Projectile_Angle_Speed[udg_i7] )
set udg_Player_Projectile_Y[udg_i7] = (udg_Player_Projectile_Y[udg_i7]+( udg_Weapon_Projectile_Speed[udg_Player_Projectile_Type[udg_i7]] * CosBJ(udg_Player_Projectile_Angle[udg_i7])))
set udg_Player_Projectile_Z[udg_i7] = (udg_Player_Projectile_Z[udg_i7]+( udg_Weapon_Projectile_Speed[udg_Player_Projectile_Type[udg_i7]] * SinBJ(udg_Player_Projectile_Angle[udg_i7])))
endfunction
//===========================================================================
function InitTrig_Player_Projectile_Rocket takes nothing returns nothing
set gg_trg_Player_Projectile_Rocket = CreateTrigger( )
call TriggerAddAction( gg_trg_Player_Projectile_Rocket, function Trig_Player_Projectile_Rocket_Actions )
endfunction
function Trig_Profectile_Line_Actions takes nothing returns nothing
set udg_Projectile_Y[udg_i5] = (udg_Projectile_Y[udg_i5] + udg_Projectile_VY[udg_i5])
set udg_Projectile_Z[udg_i5] = (udg_Projectile_Z[udg_i5] + udg_Projectile_VZ[udg_i5])
endfunction
//===========================================================================
function InitTrig_Projectile_Line takes nothing returns nothing
set gg_trg_Projectile_Line = CreateTrigger( )
call TriggerAddAction( gg_trg_Projectile_Line, function Trig_Profectile_Line_Actions )
endfunction
function Trig_Projectile_Zigzag_Actions takes nothing returns nothing
set udg_Projectile_Y[udg_i5] = (udg_Projectile_Y[udg_i5]+(udg_Projectile_speed[udg_Projectile_Type[udg_i5]] * CosBJ(( udg_Projectile_Angle[udg_i5] + udg_Angle1 ))))
set udg_Projectile_Z[udg_i5] = (udg_Projectile_Z[udg_i5]+(udg_Projectile_speed[udg_Projectile_Type[udg_i5]] * SinBJ(( udg_Projectile_Angle[udg_i5] + udg_Angle1 ))))
endfunction
//===========================================================================
function InitTrig_Projectile_Zigzag takes nothing returns nothing
set gg_trg_Projectile_Zigzag = CreateTrigger( )
call TriggerAddAction( gg_trg_Projectile_Zigzag, function Trig_Projectile_Zigzag_Actions )
endfunction
function Trig_Projectile_Arc_Actions takes nothing returns nothing
if ( udg_Projectile_Angle[udg_i5] > 90.00 ) then
if ( udg_Projectile_Angle[udg_i5] < 270.00 ) then
set udg_Projectile_Angle[udg_i5] = ( udg_Projectile_Angle[udg_i5] + udg_Angle_Speed[0] )
endif
endif
if ( udg_Projectile_Angle[udg_i5] < 90.00 ) then
if ( udg_Projectile_Angle[udg_i5] > -90.00 ) then
set udg_Projectile_Angle[udg_i5] = ( udg_Projectile_Angle[udg_i5] - udg_Angle_Speed[0] )
endif
endif
set udg_Projectile_Y[udg_i5] = (udg_Projectile_Y[udg_i5]+(udg_Projectile_speed[udg_Projectile_Type[udg_i5]] * CosBJ( udg_Projectile_Angle[udg_i5] )))
set udg_Projectile_Z[udg_i5] = (udg_Projectile_Z[udg_i5]+(udg_Projectile_speed[udg_Projectile_Type[udg_i5]] * SinBJ( udg_Projectile_Angle[udg_i5] )))
endfunction
//===========================================================================
function InitTrig_Projectile_Arc takes nothing returns nothing
set gg_trg_Projectile_Arc = CreateTrigger( )
call TriggerAddAction( gg_trg_Projectile_Arc, function Trig_Projectile_Arc_Actions )
endfunction