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_Time[k] = udg_Projectile_Time[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 GetUnitZ takes unit u returns real
local real z
local location loc = Location(GetUnitX(u), GetUnitY(u))
set z = GetUnitFlyHeight(u)+GetLocationZ(loc)
call RemoveLocation(loc)
set loc = null
set u = null
return z
endfunction
function SetUnitZ takes unit u, real z returns nothing
local location loc = Location(GetUnitX(u), GetUnitY(u))
call SetUnitFlyHeight(u,z-GetLocationZ(loc),0)
call RemoveLocation(loc)
set loc = null
set u = null
endfunction
function Create_Player_Projectile takes integer k, integer weapon, real y, real z, real angle, real koef returns nothing
local integer j = udg_Player_Projectile_Number[k] + udg_Player_Projectile_Maximum_Numb*k
local location loc
set y = y + udg_YCenter
set loc = Location(udg_XCenter, y )
set udg_Player_Projectile_Number[k] = udg_Player_Projectile_Number[k] + 1
set udg_Player_Projectile[j] = CreateUnitAtLoc( Player(PLAYER_NEUTRAL_PASSIVE), udg_Weapon_Projectile[weapon], loc, 90.00 )
call SetUnitZ(udg_Player_Projectile[j],z)
call SetUnitLifeBJ( udg_Player_Projectile[j], udg_Weapon_Projectile_Damage[weapon] )
if(udg_Bonus_Damage[k] == true) then
call SetUnitLifeBJ( udg_Player_Projectile[j], ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Player_Projectile[j]) * 1.35 ) )
endif
set udg_Player_Projectile_Time[j] = udg_Weapon_Projectile_State_Time[weapon]
if(udg_Weapon_Projectile_State_Time[weapon]!=-1) then
set udg_Player_Projectile_Time[j] = udg_Player_Projectile_Time[j] + udg_Game_Time
endif
set udg_Player_Projectile_Target[j] = -1
set udg_Player_Projectile_Y[j] = y
set udg_Player_Projectile_Z[j] = z
set udg_Player_Projectile_Z0[j] = z - udg_Height[k]
set udg_Player_Projectile_0Y[j] = y - 1000.00
set udg_Player_Projectile_Angle[j] = angle
set udg_Player_Projectile_Koef[j] = koef
set udg_Player_Projectile_Angle_Speed[j] = ( udg_Weapon_Projectile_Angle_Speed[weapon] * koef )
set udg_Player_Projectile_Type[j] = weapon
set udg_Player_Projectile_VY[j] = udg_Weapon_Projectile_Speed[weapon] * CosBJ(udg_Player_Projectile_Angle[j])
set udg_Player_Projectile_VZ[j] = udg_Weapon_Projectile_Speed[weapon] * SinBJ(udg_Player_Projectile_Angle[j])
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_Target[j] = udg_Player_Projectile_Target[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 ) - 5 <= ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Flying_Machine[( k + 2 )]) ) ) then
if ( ( I2R(( i - 1 )) * 6.66 ) <= ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Flying_Machine[( k + 2 )]) ) ) then
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 1, "war3mapImported\\Health.tga" )
else
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 1, "war3mapImported\\Health05.tga" )
endif
else
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 1, "war3mapImported\\Health0.tga" )
endif
if ( I2R(( ( i - 1 ) * 10 )) - 5 <= udg_Energy[k] ) then
if(udg_Special_Weapon_Cooldown[k]<udg_Game_Time) then
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\\Energy05.tga" )
endif
else
call MultiboardSetItemIconBJ( udg_MultiBoard[k], i, 2, "war3mapImported\\Energy2.tga" )
endif
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])+"/"+I2S(udg_Max_Points) )
call MultiboardSetItemValueBJ( udg_MultiBoard[k], 11, 5, I2S(udg_Points[1])+"/"+I2S(udg_Max_Points) )
else
call MultiboardSetItemValueBJ( udg_MultiBoard[k], 2, 4, I2S(udg_Points[k])+"/"+I2S(udg_Max_Points) )
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 )
set udg_Special_Projectile_Y[k] = udg_YCenter+udg_Y[k]+( 150.00 * CosBJ(udg_Special_Projectile_Angle[k]) )
set udg_Special_Projectile_Z[k] = udg_Height[k]+( 150.00 * SinBJ(udg_Special_Projectile_Angle[k]) )
call SetUnitY(udg_Special_Projectile[k], udg_Special_Projectile_Y[k])
call SetUnitZ(udg_Special_Projectile[k], udg_Special_Projectile_Z[k] )
if ( udg_Energy[k] <= 0.00 ) then
call KillUnit( udg_Special_Projectile[k] )
set udg_Special_Projectile[k] = null
endif
endfunction
function Auto_Aim0 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 )
elseif(Aim_Angle > 360) 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 )
elseif(udg_Projectile_Angle[k] > 360) then
set udg_Projectile_Angle[k] = ( udg_Projectile_Angle[k] - 360.00 )
endif
if( Aim_Angle - udg_Projectile_Angle[k] > 180 ) then
set udg_Projectile_Angle[k] = udg_Projectile_Angle[k] + 360
elseif( Aim_Angle - udg_Projectile_Angle[k] < - 180 ) then
set Aim_Angle = Aim_Angle + 360
endif
if ( udg_Revive_Time[udg_Projectile_Target[k]] == -1.00 ) then
if ( ( Aim_Angle - udg_Projectile_Angle[k] ) >= - 30 ) then
if ( ( Aim_Angle - udg_Projectile_Angle[k] ) <= 30 ) then
set udg_Projectile_Angle[k] = ( udg_Projectile_Angle[k] + ( ( Aim_Angle - udg_Projectile_Angle[k] ) * 0.12 ) )
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 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 )
elseif(Aim_Angle > 360) 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 )
elseif(udg_Projectile_Angle[k] > 360) then
set udg_Projectile_Angle[k] = ( udg_Projectile_Angle[k] - 360.00 )
endif
if( Aim_Angle - udg_Projectile_Angle[k] > 180 ) then
set udg_Projectile_Angle[k] = udg_Projectile_Angle[k] + 360
elseif( Aim_Angle - udg_Projectile_Angle[k] < - 180 ) then
set Aim_Angle = Aim_Angle + 360
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 Auto_Aim1 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 )
elseif(Aim_Angle > 360) 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 )
elseif(udg_Projectile_Angle[k] > 360) then
set udg_Projectile_Angle[k] = ( udg_Projectile_Angle[k] - 360.00 )
endif
if( Aim_Angle - udg_Projectile_Angle[k] > 180 ) then
set udg_Projectile_Angle[k] = udg_Projectile_Angle[k] + 360
elseif( Aim_Angle - udg_Projectile_Angle[k] < - 180 ) then
set Aim_Angle = Aim_Angle + 360
endif
if ( udg_Revive_Time[udg_Projectile_Target[k]] == -1.00 ) then
set udg_Projectile_Angle[k] = ( udg_Projectile_Angle[k] + ( ( Aim_Angle - udg_Projectile_Angle[k] ) * 0.3 ) )
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
local real s = udg_Unit_State_FT_S[udg_Unit_Current_State[k]]
local real r = udg_Unit_State_FT_R[udg_Unit_Current_State[k]]
local real g = udg_Unit_State_FT_G[udg_Unit_Current_State[k]]
local real b = udg_Unit_State_FT_B[udg_Unit_Current_State[k]]
set temp_point = Location(udg_XCenter, udg_Unit_Y[k] - 100.00 )
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]]-GetLocationZ(temp_point)
call CreateTextTagLocBJ( I2S(udg_Unit_State_Points[udg_Unit_Current_State[k]]), temp_point, udg_Floathing_Text_Z[udg_Floathing_Text_Number], s, r, g, b, 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] = udg_Unit_State_FT_Max_Age[udg_Unit_Current_State[k]]
set udg_Floathing_Text_State[udg_Floathing_Text_Number] = udg_Unit_Current_State[k]
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_State[k] = udg_Floathing_Text_State[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 )
set udg_Main_Weapon[k] = CreateUnitAtLoc( p, udg_Weapon_Projectile[udg_Main_Weapon_Type[k]], loc, 90.00 )
call RemoveLocation ( loc )
call UnitAddAbilityBJ( 'A001', udg_Main_Weapon[k] )
call SetUnitZ( udg_Main_Weapon[k], ( udg_Camera_Height[k] + 400.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 )
set udg_Special_Weapon[k] = CreateUnitAtLoc( p, udg_Special_Weapon_Model[udg_Special_Weapon_Type[k]], loc, 90.00 )
call RemoveLocation ( loc )
call UnitAddAbilityBJ( 'A001', udg_Special_Weapon[k] )
call SetUnitZ( udg_Special_Weapon[k], ( udg_Camera_Height[k] + 340.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 Move_F_T0 takes texttag t, real x, real y, real z returns nothing
local location loc = Location(x, y)
call SetTextTagPosBJ( t, loc, z )
call RemoveLocation(loc)
set loc = null
set t = null
endfunction
function Move_F_T takes texttag t, real x, real y, real z returns nothing
local location loc = Location(x, y)
call SetTextTagPosBJ( t, loc, z - GetLocationZ(loc) )
call RemoveLocation(loc)
set loc = null
set t = 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_Item_Y[k] = udg_Drop_Item_Y[udg_Drop_Item_Number]
set udg_Drop_Item_Z[k] = udg_Drop_Item_Z[udg_Drop_Item_Number]
set udg_Drop_Weapon_Type[k] = udg_Drop_Weapon_Type[udg_Drop_Item_Number]
endfunction
function Delete_Unit takes integer k returns nothing
local integer i = 0
local integer j
set udg_Speed[1] = udg_Speed[1] + udg_Unit_Sp_Dcr[udg_Unit_Type[k]]
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_Anim_Time[k] = udg_Unit_Anim_Time[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]
set udg_Unit_Z00[k] = udg_Unit_Z00[udg_Unit_Number]
if(udg_Boss == udg_Unit_Number)then
set udg_Boss = k
endif
set udg_Moving_Unit[udg_Unit_Number] = null
loop
exitwhen i > 1
set j = i*udg_Player_Projectile_Maximum_Numb
loop
exitwhen j > i*udg_Player_Projectile_Maximum_Numb + udg_Player_Projectile_Number[i] - 1
if(udg_Player_Projectile_Target[j] == udg_Unit_Number) then
set udg_Player_Projectile_Target[j] = k
endif
set j = j + 1
endloop
set i = i + 1
endloop
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 Death takes integer k, integer j returns nothing
if(IsUnitAliveBJ(udg_Flying_Machine[j+2])==true) then
call SetUnitLifeBJ( udg_Flying_Machine[j+2], GetUnitStateSwap(UNIT_STATE_LIFE, udg_Flying_Machine[j+2]) + udg_Absorbtion_Koef[j] )
endif
if(udg_Unit_Boss_Class[udg_Unit_Type[k]]==true) then
call ConditionalTriggerExecute( gg_trg_Boss_Death )
set udg_Boss = -1
set udg_Game_Over_Time = 8.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
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
call Create_Floathing_Text(k)
set udg_Unit_Timer[k] = udg_Unit_Death_Time[udg_Unit_Type[k]] + udg_Game_Time
endfunction
function Damage takes integer pl, integer k, real damage returns nothing
call SetUnitLifeBJ( udg_Moving_Unit[k], GetUnitStateSwap(UNIT_STATE_LIFE, udg_Moving_Unit[k]) - damage )
set udg_Unit_Glimmer[k] = udg_Unit_Glimmer[k] + damage + 15.00
if ( udg_Unit_Glimmer[k] > 100.00 ) then
set udg_Unit_Glimmer[k] = 100.00
endif
if(IsUnitDeadBJ(udg_Moving_Unit[k]) == true) then
call Death(k,pl)
else
if(udg_Unit_Boss_Class[udg_Unit_Type[k]]==true and GetUnitStateSwap(UNIT_STATE_LIFE,udg_Moving_Unit[k])<udg_Boss_Health_Edge and udg_Unit_State_Time[udg_Unit_Current_State[k]]<0.0) then
set udg_Unit_Time[k] = 0.0
endif
endif
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 real l1
local real l2
local real z
local real y
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, 'u00J', Player(PLAYER_NEUTRAL_PASSIVE), p0, 0.00 )
call RemoveLocation ( p0 )
call SetUnitTimeScalePercent( GetLastCreatedUnit(), 50.00 )
call SetUnitZ( GetLastCreatedUnit(), udg_Height[k] )
call KillUnit( GetLastCreatedUnit() )
call PlaySoundBJ( gg_snd_NightElfBuildingDeathLarge1 )
call Explosion01()
set j = 0
loop
exitwhen j > ( udg_Unit_Number - 1 )
set z = udg_Height[k] - udg_Unit_Z[j]
set y = udg_YCenter + udg_Y[k] - udg_Unit_Y[j]
set l1 = z*z + y*y
set y = RAbsBJ(udg_YCenter - udg_Unit_Y[j])
if ( IsUnitHiddenBJ(udg_Moving_Unit[j]) == false and IsUnitAliveBJ(udg_Moving_Unit[j]) == true and l1 < 490000 and y < 850.00 ) then
set p0 = GetUnitLoc(udg_Moving_Unit[j])
call CreateNUnitsAtLoc( 1, 'u00K', Player(PLAYER_NEUTRAL_PASSIVE), p0, 0.00 )
call RemoveLocation ( p0 )
call SetUnitZ( GetLastCreatedUnit(), ( udg_Unit_Z[j] + udg_Unit_Origin_Offset[udg_Unit_Current_State[j]] ) )
call KillUnit( GetLastCreatedUnit() )
call Damage(k, j, 200.0)
endif
set j = j + 1
endloop
call Status_Bar(k)
set j = 0
loop
exitwhen j > udg_Projectiles_Number - 1
set y = udg_YCenter + udg_Y[k] - udg_Projectile_Y[j]
set z = udg_Height[k] - udg_Projectile_Z[j]
set l1 = y*y + z*z
if ( l1 < 490000 ) then
set p0 = GetUnitLoc(udg_Projectile[j])
call CreateNUnitsAtLoc( 1, 'u00K', Player(PLAYER_NEUTRAL_PASSIVE), p0, 0.00 )
call RemoveLocation ( p0 )
call SetUnitZ( GetLastCreatedUnit(), udg_Projectile_Z[j] )
call KillUnit( GetLastCreatedUnit() )
call KillUnit( udg_Projectile[j] )
call Delete_Projectile ( j, false )
set j = ( j - 1 )
endif
set j = j + 1
endloop
else
call DisplayTextToForce( GetForceOfPlayer(udg_Player[k]), "not enough energy" )
call Play_Sound(12)
endif
set p0 = 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[20], 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] = 20
set udg_Player_Projectile_Time[l] = udg_Game_Time
set udg_Player_Projectile_VY[l] = ( udg_Weapon_Projectile_Speed[20] * CosBJ(udg_Player_Projectile_Angle[l]) )
set udg_Player_Projectile_VZ[l] = ( udg_Weapon_Projectile_Speed[20] * 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 n = 4*k
if ( GetSpellAbilityId() == 'A000' ) then
if ( udg_Auto_Fire[k] == false ) then
set udg_Auto_Fire[k] = true
else
set udg_Auto_Fire[k] = false
endif
return
endif
if ( GetSpellAbilityId() == 'A002' ) then
if ( udg_Special_Weapon_Cooldown[k] < udg_Game_Time ) then
set udg_L1 = k
call ConditionalTriggerExecute( udg_Special_Weapon_Function[udg_Special_Weapon_Type[k]] )
else
call Play_Sound(12)
endif
return
endif
if ( GetSpellAbilityId() == 'A003' ) then
if ( udg_FarZ[k] == 11000.00 ) then
set udg_FarZ[k] = 3000.00
else
set udg_FarZ[k] = 11000.00
endif
return
endif
if ( GetSpellAbilityId() == 'A004' ) then
if ( udg_Rotation[k] == 180.00 ) then
set udg_Rotation[k] = 165.00
set udg_Angle_of_Attack[k] = 350.00
set udg_Distance[k] = 1400.00
set udg_Camera_dh[k] = 30.00
set udg_Camera_dy[k] = -110.00
else
set udg_Rotation[k] = 180.00
set udg_Angle_of_Attack[k] = 360.00
set udg_Distance[k] = 1500.00
set udg_Camera_dh[k] = 0.00
set udg_Camera_dy[k] = 0.00
endif
call SetCameraTargetControllerNoZForPlayer( udg_Player[k], udg_Center, 0, udg_Camera_dy[k], false )
call SetCameraFieldForPlayer( udg_Player[k], CAMERA_FIELD_TARGET_DISTANCE, udg_Distance[k], 0.00 )
set udg_rot[n] = CosBJ(udg_Angle_of_Attack[k])
set udg_rot[n+1] = SinBJ(udg_Angle_of_Attack[k])
set udg_rot[n+2] = CosBJ(udg_Rotation[k])
set udg_rot[n+3] = SinBJ(udg_Rotation[k])
endif
endfunction
function ArrowKeys takes integer k returns nothing
local integer j=0
local boolean move = false
set udg_ZSpeed[k+2]=0.00
set udg_YSpeed[k+2]=0.00
if(udg_Up[k]==true) then
set udg_ZSpeed[k+2]=udg_ZSpeed_Const
set j=j+1
set move = true
else
if(udg_Down[k]==true) then
set udg_ZSpeed[k+2]=-udg_ZSpeed_Const
set j=j+1
set move = true
endif
endif
if(udg_Right[k]==true) then
set udg_YSpeed[k+2]=udg_YSpeed_Const
set j=j+1
set move = true
else
if(udg_Left[k]==true) then
set udg_YSpeed[k+2]=-udg_YSpeed_Const
set j=j+1
set move = true
endif
endif
if(j==2) then
set udg_ZSpeed[k+2]=udg_ZSpeed[k+2]/1.41
set udg_YSpeed[k+2]=udg_YSpeed[k+2]/1.41
endif
if(RSignBJ(udg_ZSpeed[k+2])!=RSignBJ(udg_ZSpeed[k]) or udg_ZSpeed[k]==0) then
set udg_ZSpeed[k]=udg_ZSpeed[k+2]/4
endif
if(RSignBJ(udg_YSpeed[k+2])!=RSignBJ(udg_YSpeed[k]) or udg_YSpeed[k]==0) then
set udg_YSpeed[k]=udg_YSpeed[k+2]/4
endif
if(move==false) then
set udg_YSpeed[k]=0
set udg_ZSpeed[k]=0
endif
endfunction
function CreateDropItem takes integer Type, real y, real z returns nothing
local integer item_type = Type/100
local integer weapon_type = Type - 100*item_type
local integer n = udg_Drop_Item_Number
local integer model
local real angle
local real r
local real g
local real b
local string str
local location p
set p = Location(udg_XCenter, y)
if(z-GetLocationZ(p)<15.00) then
set z = GetLocationZ(p) + 15.00
elseif(z > 900.00 + udg_Camera_Height_Offset) then
set z = 900.00 + udg_Camera_Height_Offset
endif
if(item_type<10) then
set model = udg_Drop_Item_Model[item_type]
set angle = 0.00
set r = 100.00
set g = 95.00
set b = 50.00
set str = udg_Bonus_Item_Name[item_type]
set udg_D_I_F_T_Offset[n] = udg_Bonus_Item_F_T_Offset[item_type]
else
set angle = 90.00
if(item_type==10 or item_type==12) then
set model = udg_Weapon_Projectile[weapon_type]
if(weapon_type==0) then
set r = 100.00
set g = 30.00
set b = 100.00
elseif(weapon_type==9) then
set r = 0.00
set g = 100.00
set b = 0.00
else
set r = 100.00
set g = 30.00
set b = 30.00
endif
set str = udg_Main_Weapon_Name[weapon_type]
set udg_D_I_F_T_Offset[n] = udg_Main_Weapon_F_T_Offset[weapon_type]
else
set model = udg_Special_Weapon_Model[weapon_type]
set r = 30.00
set g = 30.00
set b = 100.00
set str = udg_Special_Weapon_Name[weapon_type]
set udg_D_I_F_T_Offset[n] = udg_Special_Weapon_F_T_Offset[weapon_type]
endif
set udg_Drop_Weapon_Type[n] = weapon_type
endif
set udg_Drop_Item[n] = CreateUnitAtLoc( Player(PLAYER_NEUTRAL_PASSIVE), model, p, angle )
call RemoveLocation(p)
call SetUnitZ(udg_Drop_Item[n], z)
if(item_type>9) then
call SetUnitScalePercent( udg_Drop_Item[n], 100.00, 100.00, 100.00 )
endif
call PauseUnitBJ( true, udg_Drop_Item[n] )
set p = Location(udg_XCenter, y - udg_D_I_F_T_Offset[n])
call CreateTextTagLocBJ( str, p, z - GetLocationZ(p) - 30.00, 9.00, r, g, b, 0 )
call RemoveLocation(p)
set p = null
set udg_Drop_Item_Floating_Text[n] = GetLastCreatedTextTag()
set udg_Drop_Item_Y[n] = y
set udg_Drop_Item_Z[n] = z
set udg_Drop_Item_Type[n] = item_type
set udg_Drop_Item_Number = n + 1
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
function Hit takes integer k, integer j returns nothing
local location loc1 = Location(udg_Unit_Y[j],udg_Unit_Z[j])
local location loc2 = Location(udg_Y[k]+udg_YCenter,udg_Height[k])
local real angle = AngleBetweenPoints( loc1, loc2)
call RemoveLocation(loc1)
set loc1 = null
call RemoveLocation(loc2)
set loc2 = null
set udg_Hit[k] = udg_Game_Time + 0.06
set udg_ZSpeed[k] = 0
set udg_YSpeed[k] = 0
set udg_Push_Y[k] = 15*CosBJ(angle)
set udg_Push_Z[k] = 15*SinBJ(angle)
endfunction
function Create_Lava_Spawn takes destructable dsr returns nothing
local location p = GetDestructableLoc(dsr)
local integer n = udg_Lava_Spawn_Num
set udg_Lava_Spawn_Num = udg_Lava_Spawn_Num + 1
call CreateNUnitsAtLoc( 1, 'u01V', Player(PLAYER_NEUTRAL_PASSIVE), p, 0 )
set udg_Lava_Spawn[n] = GetLastCreatedUnit()
set udg_Lava_Spawn_X[n] = GetLocationX(p)
set udg_Lava_Spawn_Y[n] = GetLocationY(p)
set udg_Lava_Spawn_Z[n] = GetLocationZ(p)+1
set udg_Lava_Spawn_Vx[n] = GetRandomReal(-5, 5)
set udg_Lava_Spawn_Vy[n] = GetRandomReal(-5, 5)
set udg_Lava_Spawn_Vz[n] = 20 + GetRandomReal(-5, 5)
call RemoveLocation(p)
set p = null
set dsr = null
endfunction
function Delete_Lava_Spawn takes integer k returns nothing
local integer n = udg_Lava_Spawn_Num - 1
call KillUnit(udg_Lava_Spawn[k])
set udg_Lava_Spawn[k] = udg_Lava_Spawn[n]
set udg_Lava_Spawn_X[k] = udg_Lava_Spawn_X[n]
set udg_Lava_Spawn_Y[k] = udg_Lava_Spawn_Y[n]
set udg_Lava_Spawn_Z[k] = udg_Lava_Spawn_Z[n]
set udg_Lava_Spawn_Vx[k] = udg_Lava_Spawn_Vx[n]
set udg_Lava_Spawn_Vy[k] = udg_Lava_Spawn_Vy[n]
set udg_Lava_Spawn_Vz[k] = udg_Lava_Spawn_Vz[n]
set udg_Lava_Spawn_Num = udg_Lava_Spawn_Num - 1
endfunction
function Move_Lava_Spawn takes integer k returns nothing
set udg_Lava_Spawn_X[k] = udg_Lava_Spawn_X[k] + udg_Lava_Spawn_Vx[k]
set udg_Lava_Spawn_Y[k] = udg_Lava_Spawn_Y[k] + udg_Lava_Spawn_Vy[k]
set udg_Lava_Spawn_Z[k] = udg_Lava_Spawn_Z[k] + udg_Lava_Spawn_Vz[k]
set udg_Lava_Spawn_Vz[k] = udg_Lava_Spawn_Vz[k] - 0.18
call SetUnitX(udg_Lava_Spawn[k],udg_Lava_Spawn_X[k])
call SetUnitY(udg_Lava_Spawn[k],udg_Lava_Spawn_Y[k])
call SetUnitZ(udg_Lava_Spawn[k],udg_Lava_Spawn_Z[k])
endfunction
function Create_Active_Unit takes integer AI returns nothing
local location temp_point = Location(udg_XCenter, udg_YCenter+1000)
local integer q1 = udg_Unit_Number
local integer i1 = 0
local integer t = udg_Unit_AI_Number[AI]
local integer state = udg_Unit_State1[t]
set udg_Unit_Number = udg_Unit_Number + 1
call CreateNUnitsAtLoc( 1, udg_Unit[AI], Player(2), temp_point, udg_Unit_State_Face_Angle[state] )
call RemoveLocation(temp_point)
set udg_Moving_Unit[q1] = GetLastCreatedUnit()
set udg_Unit_Timer[q1] = -1.00
set udg_Unit_Inertia_Y[q1] = 0.00
set udg_Unit_Inertia_Z[q1] = 0.00
set udg_Unit_Glimmer[q1] = -1.00
set udg_Unit_Anim_Time[q1] = -1.00
set udg_Unit_Cooldown[q1] = udg_Unit_State_Cooldown_at_start[udg_Unit_Current_State[q1]] + udg_Game_Time
set udg_Unit_Shot_Time[q1] = -1.00
set udg_Unit_Type[q1] = t
set udg_Speed[1] = udg_Speed[1] - udg_Unit_Sp_Dcr[t]
set udg_Unit_Current_State[q1] = state
set udg_Unit_Time[q1] = udg_Unit_State_Time[state]
if ( udg_Unit_State_Time[state] > -1.00 ) then
set udg_Unit_Time[q1] = udg_Unit_Time[q1] + udg_Game_Time + GetRandomReal(-udg_Unit_State_Time_Error[state], udg_Unit_State_Time_Error[state])
endif
set udg_Unit_Y[q1] = udg_YCenter + udg_Unit_Start_Loc[t]
if ( udg_Unit_Sync[AI] == true ) then
if ( udg_Time == 0.00 ) then
set udg_Time = 0.10
endif
set udg_Unit_Time[q1] = udg_Unit_Time[q1] + udg_Time
set udg_Unit_Cooldown[q1] = ( udg_Unit_Cooldown[q1] - udg_Time )
set udg_Unit_Y[q1] = udg_Unit_Y[q1] + ( udg_Time * udg_Unit_Sync_Dist[AI] )
endif
set udg_Unit_Remaining_Shots[q1] = udg_Unit_State_Remaining_Shots[state]
if ( udg_Unit_State_Animated[state] == true ) then
call SetUnitAnimationByIndex(udg_Moving_Unit[q1], udg_Unit_State_Animation_n[state])
endif
if ( udg_Unit_State_Hidden[state] == true ) then
call ShowUnitHide( udg_Moving_Unit[q1] )
endif
call SetUnitLifeBJ( udg_Moving_Unit[q1], ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Moving_Unit[q1]) / udg_Unit_State_Health_Denominator[state] ) )
call SetUnitFacing( udg_Moving_Unit[q1], udg_Unit_State_Face_Angle[state] )
call SetUnitY( udg_Moving_Unit[udg_q1], udg_Unit_Y[udg_q1] )
if ( udg_Unit_Boss_Class[t] == true ) then
set udg_Boss = q1
set udg_Boss_Max_Health = GetUnitStateSwap(UNIT_STATE_LIFE, udg_Moving_Unit[q1])
loop
exitwhen i1 > 39
set temp_point = Location(udg_XCenter, ( udg_YCenter - ( 320.00 - ( I2R(i1) * 16.00 ) ) ))
if ( GetPlayerSlotState(udg_Player[0]) == PLAYER_SLOT_STATE_PLAYING ) then
call CreateTextTagLocBJ( "I", temp_point, ( udg_Camera_Height[0] + udg_H_B_Z[0] ), 15.00, 100.00, 0.00, 0.00, 0 )
set udg_Boss_Health_Bar[i1] = GetLastCreatedTextTag()
call ShowTextTagForceBJ( false, udg_Boss_Health_Bar[i1], GetForceOfPlayer(udg_Player[1]) )
else
endif
if ( GetPlayerSlotState(udg_Player[1]) == PLAYER_SLOT_STATE_PLAYING ) then
call CreateTextTagLocBJ( "I", temp_point, ( udg_Camera_Height[1] + udg_H_B_Z[1] ), 15.00, 100.00, 0.00, 0.00, 0 )
set udg_Boss_Health_Bar[( i1 + 40 )] = GetLastCreatedTextTag()
call ShowTextTagForceBJ( false, udg_Boss_Health_Bar[( i1 + 40 )], GetForceOfPlayer(udg_Player[0]) )
else
endif
call RemoveLocation ( temp_point )
set i1 = i1 + 1
endloop
endif
if ( udg_Unit_State_Ground[state] == true ) then
call SetUnitFlyHeightBJ( udg_Moving_Unit[q1], 0.00, 0.00 )
endif
set udg_Unit_a[q1] = udg_Unit_State_a[state]
set udg_Unit_c[q1] = udg_Unit_Y[q1]
set udg_Unit_Z[q1] = GetUnitZ(udg_Moving_Unit[q1])
set udg_Unit_Z0[q1] = udg_Unit_Z[q1]
set udg_Unit_Z00[q1] = ( udg_Unit_State_Z0[state] + GetRandomReal(-udg_Unit_State_Z0_Error[state], udg_Unit_State_Z0_Error[state]) )
set udg_Max_Points = udg_Max_Points + udg_Unit_State_Points[udg_Unit_Current_State[q1]]
call Status_Bar(0)
call Status_Bar(1)
set temp_point = null
endfunction
function BossAnger takes nothing returns nothing
local integer n = 74
if(udg_Boss_Angry==false and GetUnitStateSwap(UNIT_STATE_LIFE, udg_Moving_Unit[udg_Boss])<udg_Boss_Max_Health*0.333) then
set udg_Boss_Angry = true
loop
exitwhen n>80
if(udg_Unit_State_Time[n]>0) then
set udg_Unit_State_Time[n] = udg_Unit_State_Time[n]*0.5
endif
if(udg_Unit_State_Time1[n]>0) then
set udg_Unit_State_Time1[n] = udg_Unit_State_Time1[n]*0.5
endif
set udg_Unit_State_Speed[n] = udg_Unit_State_Speed[n]*2.0
set udg_Unit_State_VY[n] = udg_Unit_State_VY[n]*2.0
set udg_Unit_State_VZ[n] = udg_Unit_State_VZ[n]*2.0
set n = n + 1
endloop
endif
endfunction
Name | Type | is_array | initial_value |
Absorbtion | boolean | Yes | |
Absorbtion_Koef | real | Yes | |
Absorbtion_Timer | timer | Yes | |
Absorbtion_Window | timerdialog | Yes | |
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_of_Attack | real | Yes | |
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 | |
Bool | boolean | No | false |
Boss | integer | No | -1 |
Boss_Angry | boolean | No | |
Boss_Health_Bar | texttag | Yes | |
Boss_Health_Edge | real | No | |
Boss_Max_Health | real | No | |
Boss_State | integer | No | |
Camera_dh | real | Yes | |
Camera_dy | real | Yes | |
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 |
Distance | real | Yes | 1500.00 |
Down | boolean | Yes | |
Drop_Item | unit | Yes | |
Drop_Item_Floating_Text | texttag | Yes | |
Drop_Item_Function | trigger | Yes | |
Drop_Item_Model | unitcode | Yes | u00O |
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_Item_Y | real | Yes | |
Drop_Item_Z | real | Yes | |
Drop_Weapon_Type | integer | Yes | |
Empty_Bar | string | Yes | |
En | real | No | 0.08 |
Energy | real | Yes | |
FarZ | real | Yes | 11000.00 |
FB_Speed | real | No | 3.00 |
Floathing_Text | texttag | Yes | |
Floathing_Text_Age | real | Yes | |
Floathing_Text_Number | integer | No | |
Floathing_Text_State | integer | Yes | |
Floathing_Text_Y | real | Yes | |
Floathing_Text_Z | real | Yes | |
Flying_Machine | unit | Yes | |
Fog | boolean | No | false |
Game_Over_Time | real | No | -1.00 |
Game_Time | real | No | -0.02 |
Game_Time1 | real | No | -0.05 |
Gun_Madnass | boolean | Yes | |
Gun_Madnass_Koef | integer | Yes | 1 |
Gun_Madnass_Timer | timer | Yes | |
Gun_Madnass_Window | timerdialog | Yes | |
H_B_Z | real | Yes | 350.00 |
Height | real | Yes | 300.00 |
Hit | real | Yes | |
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 | 12 |
k | integer | No | |
L1 | integer | No | |
L3 | integer | No | |
L4 | integer | No | |
Lava_Spawn | unit | Yes | |
Lava_Spawn_Num | integer | No | |
Lava_Spawn_Vx | real | Yes | |
Lava_Spawn_Vy | real | Yes | |
Lava_Spawn_Vz | real | Yes | |
Lava_Spawn_X | real | Yes | |
Lava_Spawn_Y | real | Yes | |
Lava_Spawn_Z | real | Yes | |
Left | boolean | Yes | |
Life | integer | Yes | |
Life_Limit | integer | No | 7 |
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 | 12 |
Main_Weapon_Type | integer | Yes | |
Max_Points | integer | No | |
Moving_Unit | unit | Yes | UnitNull |
MultiBoard | multiboard | Yes | |
n | integer | No | 0 |
n0 | integer | Yes | 0 |
n1 | integer | No | |
n3 | integer | No | |
n4 | integer | No | -1 |
n5 | integer | No | |
Pierce_Timer | timer | Yes | |
Pierce_Window | timerdialog | Yes | |
Player | player | Yes | |
Player_Message_Cooldown | real | Yes | |
Player_Num | integer | No | |
Player_Picks | integer | 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_Hit | real | Yes | 1.00 |
Player_Projectile_Koef | real | Yes | 1.00 |
Player_Projectile_Maximum_Numb | integer | No | 50 |
Player_Projectile_Number | integer | Yes | |
Player_Projectile_Target | integer | Yes | -1 |
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 | 50 |
Projectile_Next_State | integer | Yes | -1 |
Projectile_Object | unitcode | Yes | |
Projectile_Scale | real | Yes | |
Projectile_speed | real | Yes | 10.00 |
Projectile_State_Time | real | Yes | -1.00 |
Projectile_Target | integer | Yes | |
Projectile_Time | real | Yes | -1.00 |
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.00 |
Propability_Increase | real | No | 0.00 |
Push_Y | real | Yes | |
Push_Z | real | Yes | |
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 | |
Rect | rect | No | |
Region | rect | Yes | |
Rev_Num | integer | No | 0 |
Revenants | unit | Yes | |
Revive_Time | real | Yes | -1.00 |
Right | boolean | Yes | false |
rot | real | Yes | |
Rotation | real | Yes | 180.00 |
s | integer | No | |
SectorID | 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_Projectile_Y | real | Yes | |
Special_Projectile_Z | real | Yes | |
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 | 5 |
Special_Weapon_Propability | real | Yes | 0.10 |
Special_Weapon_Propability_Max | real | Yes | 0.10 |
Special_Weapon_Type | integer | Yes | |
Speed | real | Yes | |
Stop | boolean | No | |
Target | integer | No | |
TEMP_Group | group | No | |
TEMP_Point | location | No | |
TEMP_Point10 | location | No | |
TEMP_Point11 | location | No | |
TEMP_Point12 | 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 | |
UN | integer | No | |
Unit | unitcode | Yes | |
Unit_0Y | real | Yes | |
Unit_0Z | real | Yes | |
Unit_a | real | Yes | |
Unit_AI_Number | integer | Yes | |
Unit_Anim_Time | real | Yes | -1.00 |
Unit_Attack_Time | real | Yes | |
Unit_Boss_Class | boolean | Yes | false |
Unit_c | real | Yes | |
Unit_Cooldown | real | Yes | |
Unit_Current_State | integer | Yes | 0 |
Unit_Death_Time | real | Yes | 1.00 |
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_MBoss_Class | boolean | Yes | |
Unit_Next_State | integer | Yes | |
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_Sp_Dcr | real | Yes | 0.20 |
Unit_Start_Loc | real | Yes | 950.00 |
Unit_State1 | integer | Yes | |
Unit_State_a | real | Yes | 0.00 |
Unit_State_Always_Shot | boolean | Yes | |
Unit_State_Animated | boolean | Yes | false |
Unit_State_Animation_n | integer | Yes | 2 |
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_FT_B | real | Yes | 40.00 |
Unit_State_FT_G | real | Yes | 80.00 |
Unit_State_FT_Max_Age | real | Yes | 2.50 |
Unit_State_FT_R | real | Yes | 80.00 |
Unit_State_FT_S | real | Yes | 10.00 |
Unit_State_Function | trigger | Yes | |
Unit_State_Ground | boolean | Yes | |
Unit_State_Health_Denominator | real | Yes | 1.00 |
Unit_State_Hidden | boolean | Yes | |
Unit_State_Points | integer | Yes | |
Unit_State_Projectile_Aim | real | Yes | -1.00 |
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_Restore_Health | boolean | 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_State_Z0_Error | real | Yes | |
Unit_Sync | boolean | Yes | |
Unit_Sync_Dist | real | 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_Z00 | real | Yes | |
Unit_ZScale | real | Yes | |
Up | boolean | Yes | false |
Victory | boolean | No | |
Weapon | boolean | No | 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_Boss_Det | real | Yes | 1.00 |
Weapon_Projectile_Damage | real | Yes | 10.00 |
Weapon_Projectile_Function | trigger | Yes | |
Weapon_Projectile_Height | 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_Create | boolean | Yes | |
Weapon_Projectile_State_Remove | boolean | Yes | |
Weapon_Projectile_State_Time | real | Yes | -1.00 |
Weapon_Projectile_Weakening | real | Yes | |
Weapon_Propability | real | Yes | 0.10 |
Weapon_Propability_Max | real | Yes | 0.10 |
Weapon_Sound | integer | Yes | -1 |
Wep | boolean | No | |
XCenter | real | No | 0.00 |
Y | real | Yes | 0.00 |
YCenter | real | No | 0.00 |
YMax | real | No | 700.00 |
YMax1 | real | No | 700.00 |
YSpeed | real | Yes | |
YSpeed_Const | real | No | 14.00 |
Z | real | No | |
ZSpeed | real | Yes | |
ZSpeed_Const | real | No | 14.00 |
//function Clear_Group takes nothing returns nothing
// call RemoveUnit( GetEnumUnit() )
//endfunction
//function Clear_Rect takes rect reg returns nothing
// local group tg = GetUnitsOfPlayerAll(Player(2))
// call ForGroupBJ( tg, function Clear_Group )
// call DestroyGroup (tg)
// set tg = null
//endfunction
function Clear_Group takes nothing returns nothing
if ( RectContainsUnit(udg_Rect, GetEnumUnit()) == true ) then
call RemoveUnit( GetEnumUnit() )
endif
endfunction
function Clear_Rect takes rect reg returns nothing
local group tg = GetUnitsOfPlayerAll(Player(2))
set udg_Rect = reg
call ForGroupBJ( tg, function Clear_Group )
call DestroyGroup (tg)
set tg = null
set reg = null
endfunction
function Trig_Monster_Replacement_Actions takes nothing returns nothing
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_023)
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_032)
else
call Clear_Rect(gg_rct_Region_031)
endif
else
call Clear_Rect(gg_rct_Region_022)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_076)
else
call Clear_Rect(gg_rct_Region_075)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_025)
else
call Clear_Rect(gg_rct_Region_024)
call Clear_Rect(gg_rct_Region_028)
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_033)
else
call Clear_Rect(gg_rct_Region_034)
endif
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_027)
else
call Clear_Rect(gg_rct_Region_026)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_030)
else
call Clear_Rect(gg_rct_Region_029)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_036)
else
call Clear_Rect(gg_rct_Region_037)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_039)
else
call Clear_Rect(gg_rct_Region_038)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_041)
else
call Clear_Rect(gg_rct_Region_040)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_044)
else
call Clear_Rect(gg_rct_Region_043)
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_045)
else
call Clear_Rect(gg_rct_Region_046)
endif
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_048)
else
call Clear_Rect(gg_rct_Region_047)
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_049)
else
call Clear_Rect(gg_rct_Region_050)
endif
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_052)
else
call Clear_Rect(gg_rct_Region_051)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_054)
else
call Clear_Rect(gg_rct_Region_053)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_056)
else
call Clear_Rect(gg_rct_Region_055)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_058)
else
call Clear_Rect(gg_rct_Region_057)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_060)
else
call Clear_Rect(gg_rct_Region_059)
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_077)
endif
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_062)
else
call Clear_Rect(gg_rct_Region_061)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_063)
else
call Clear_Rect(gg_rct_Region_064)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_066)
else
call Clear_Rect(gg_rct_Region_065)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_068)
else
call Clear_Rect(gg_rct_Region_067)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_070)
else
call Clear_Rect(gg_rct_Region_069)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_072)
else
call Clear_Rect(gg_rct_Region_071)
endif
if(GetRandomInt(0,1)==0) then
call Clear_Rect(gg_rct_Region_074)
else
call Clear_Rect(gg_rct_Region_073)
endif
endfunction
//===========================================================================
function InitTrig_Randomize_Monters takes nothing returns nothing
set gg_trg_Randomize_Monters = CreateTrigger( )
call TriggerAddAction( gg_trg_Randomize_Monters, function Trig_Monster_Replacement_Actions )
endfunction
function Trig_Boss_AI_Actions takes nothing returns nothing
set udg_Unit_State_Function[71] = gg_trg_Unit_Line
set udg_Unit_Origin_Offset[71] = 200.00
set udg_Unit_State_Speed[71] = 3.00
set udg_Unit_State_Time[71] = 4.00
set udg_Unit_State_a[71] = 180.00
set udg_Unit_State_Points[71] = 10000
set udg_Unit_State_FT_Max_Age[71] = 10.00
set udg_Unit_State_FT_S[71] = 14.00
set udg_Unit_State_FT_R[71] = 80.00
set udg_Unit_State_FT_G[71] = 45.00
set udg_Unit_State_FT_B[71] = 10.00
set udg_Unit_State_Health_Denominator[71] = I2R(( 2 / udg_Const ))
set udg_Unit_Next_State[71] = 72
set udg_Unit_State_Function[72] = gg_trg_Unit_Line
set udg_Unit_Origin_Offset[72] = 200.00
set udg_Unit_State_Speed[72] = 0.00
set udg_Unit_State_Time[72] = 0.70
set udg_Unit_State_Attack_Animation[72] = true
set udg_Unit_Shot_Time_Max[72] = 0.60
set udg_Unit_State_Projectile_Type[72] = 13
set udg_Unit_State_Projectile_Aim[72] = 180.00
set udg_Unit_State_Projectile_Angle[72] = ( 14.50 + I2R(udg_Difficulty) )
set udg_Unit_State_Projectile_Number[72] = 9
set udg_Unit_State_Remaining_Shots[72] = 1
set udg_Unit_State_Shot_Propability[72] = 1.00
set udg_Unit_State_Points[72] = 10000
set udg_Unit_State_FT_Max_Age[72] = 10.00
set udg_Unit_State_FT_S[72] = 14.00
set udg_Unit_State_FT_R[72] = 80.00
set udg_Unit_State_FT_G[72] = 45.00
set udg_Unit_State_FT_B[72] = 10.00
set udg_Unit_Next_State[72] = 73
set udg_Unit_Origin_Offset[73] = 200.00
set udg_Unit_State_Speed[73] = 0.00
set udg_Unit_State_Time[73] = 0.70
set udg_Unit_State_Attack_Animation[73] = true
set udg_Unit_Shot_Time_Max[73] = 0.60
set udg_Unit_State_Projectile_Type[73] = 14
set udg_Unit_State_Projectile_Aim[73] = 180.00
set udg_Unit_State_Projectile_Angle[73] = ( 14.50 + I2R(udg_Difficulty) )
set udg_Unit_State_Projectile_Number[73] = 8
set udg_Unit_State_Remaining_Shots[73] = 1
set udg_Unit_State_Shot_Propability[73] = 1.00
set udg_Unit_State_Points[73] = 10000
set udg_Unit_State_FT_Max_Age[73] = 10.00
set udg_Unit_State_FT_S[73] = 14.00
set udg_Unit_State_FT_R[73] = 80.00
set udg_Unit_State_FT_G[73] = 45.00
set udg_Unit_State_FT_B[73] = 10.00
set udg_Unit_Next_State[73] = 74
set udg_Unit_Origin_Offset[74] = 200.00
set udg_Unit_State_Speed[74] = 0.00
set udg_Unit_State_Time[74] = 3.00
set udg_Unit_State_Attack_Animation[74] = true
set udg_Unit_Shot_Time_Max[74] = 0.60
set udg_Unit_State_Projectile_Type[74] = 15
set udg_Unit_State_Projectile_Aim[74] = 180.00
set udg_Unit_State_Projectile_Angle[74] = ( 14.50 + I2R(udg_Difficulty) )
set udg_Unit_State_Projectile_Number[74] = 9
set udg_Unit_State_Remaining_Shots[74] = 1
set udg_Unit_State_Shot_Propability[74] = 1.00
set udg_Unit_State_Points[74] = 10000
set udg_Unit_State_FT_Max_Age[74] = 10.00
set udg_Unit_State_FT_S[74] = 14.00
set udg_Unit_State_FT_R[74] = 80.00
set udg_Unit_State_FT_G[74] = 45.00
set udg_Unit_State_FT_B[74] = 10.00
set udg_Unit_Next_State[74] = 75
set udg_Unit_State_Function[75] = gg_trg_Unit_Sine1
set udg_Unit_Origin_Offset[75] = 200.00
set udg_Unit_State_Animated[75] = true
set udg_Unit_State_Animation_n[75] = 4
set udg_Unit_State_Cooldown[75] = ( 0.20 + ( 0.05 * I2R(udg_Difficulty) ) )
set udg_Unit_State_Cooldown_at_start[75] = 0.20
set udg_Unit_State_Projectile_Type[75] = 16
set udg_Unit_State_Projectile_Aim[75] = -1.00
set udg_Unit_State_Projectile_Number[75] = 1
set udg_Unit_State_Remaining_Shots[75] = ( ( 10 - udg_Difficulty ) * udg_Const )
set udg_Unit_State_Shot_Propability[75] = 0.35
set udg_Unit_State_Shot_Error[75] = 60.00
set udg_Unit_State_Speed[75] = 0.00
set udg_Unit_State_Time[75] = -2.00
set udg_Unit_State_Time1[75] = 2.00
set udg_Unit_State_a[75] = 90.00
set udg_Unit_State_b[75] = 0.01
set udg_Unit_State_Points[75] = 10000
set udg_Unit_State_FT_Max_Age[75] = 10.00
set udg_Unit_State_FT_S[75] = 14.00
set udg_Unit_State_FT_R[75] = 80.00
set udg_Unit_State_FT_G[75] = 45.00
set udg_Unit_State_FT_B[75] = 10.00
set udg_Unit_Next_State[75] = 76
set udg_Unit_State_Function[76] = gg_trg_Unit_Sine1
set udg_Unit_Origin_Offset[76] = 200.00
set udg_Unit_State_Animated[76] = true
set udg_Unit_State_Animation_n[76] = 4
set udg_Unit_State_Cooldown[76] = ( 0.20 + ( 0.05 * I2R(udg_Difficulty) ) )
set udg_Unit_State_Cooldown_at_start[76] = 0.20
set udg_Unit_State_Projectile_Type[76] = 16
set udg_Unit_State_Projectile_Aim[76] = -1.00
set udg_Unit_State_Projectile_Number[76] = 1
set udg_Unit_State_Remaining_Shots[76] = ( ( 10 - udg_Difficulty ) * udg_Const )
set udg_Unit_State_Shot_Propability[76] = 0.35
set udg_Unit_State_Shot_Error[76] = 60.00
set udg_Unit_State_Speed[76] = 0.00
set udg_Unit_State_Time[76] = -2.00
set udg_Unit_State_Time1[76] = 2.00
set udg_Unit_State_a[76] = 90.00
set udg_Unit_State_b[76] = 0.01
set udg_Unit_State_Points[76] = 10000
set udg_Unit_State_FT_Max_Age[76] = 10.00
set udg_Unit_State_FT_S[76] = 14.00
set udg_Unit_State_FT_R[76] = 80.00
set udg_Unit_State_FT_G[76] = 45.00
set udg_Unit_State_FT_B[76] = 10.00
set udg_Unit_Next_State[76] = 77
set udg_Unit_State_Function[77] = gg_trg_Unit_Sine1
set udg_Unit_Origin_Offset[77] = 200.00
set udg_Unit_State_Animated[77] = true
set udg_Unit_State_Animation_n[77] = 4
set udg_Unit_State_Cooldown[77] = ( 0.20 + ( 0.05 * I2R(udg_Difficulty) ) )
set udg_Unit_State_Cooldown_at_start[77] = 0.20
set udg_Unit_State_Projectile_Type[77] = 16
set udg_Unit_State_Projectile_Aim[77] = -1.00
set udg_Unit_State_Projectile_Number[77] = 1
set udg_Unit_State_Remaining_Shots[77] = ( ( 10 - udg_Difficulty ) * udg_Const )
set udg_Unit_State_Shot_Propability[77] = 0.35
set udg_Unit_State_Shot_Error[77] = 60.00
set udg_Unit_State_Speed[77] = 0.00
set udg_Unit_State_Time[77] = -2.00
set udg_Unit_State_Time1[77] = 3.00
set udg_Unit_State_a[77] = 90.00
set udg_Unit_State_b[77] = 0.01
set udg_Unit_State_Points[77] = 10000
set udg_Unit_State_FT_Max_Age[77] = 10.00
set udg_Unit_State_FT_S[77] = 14.00
set udg_Unit_State_FT_R[77] = 80.00
set udg_Unit_State_FT_G[77] = 45.00
set udg_Unit_State_FT_B[77] = 10.00
set udg_Unit_Next_State[77] = 78
set udg_Unit_State_Function[78] = gg_trg_Unit_Line
set udg_Unit_Origin_Offset[78] = 200.00
set udg_Unit_State_Speed[78] = 3.00
set udg_Unit_State_Time[78] = 2.00
set udg_Unit_State_a[78] = 0.00
set udg_Unit_State_Z0[78] = 1100.00
set udg_Unit_State_Points[78] = 10000
set udg_Unit_State_FT_Max_Age[78] = 10.00
set udg_Unit_State_FT_S[78] = 14.00
set udg_Unit_State_FT_R[78] = 80.00
set udg_Unit_State_FT_G[78] = 45.00
set udg_Unit_State_FT_B[78] = 10.00
set udg_Unit_Next_State[78] = 79
set udg_Unit_State_Function[79] = gg_trg_Unit_Sine1
set udg_Unit_Origin_Offset[79] = 200.00
set udg_Unit_State_Animated[79] = true
set udg_Unit_State_Animation_n[79] = 4
if ( udg_Difficulty == 2 ) then
set udg_Unit_State_Cooldown[79] = 0.40
else
if ( udg_Difficulty < 2 ) then
set udg_Unit_State_Cooldown[79] = 0.30
else
set udg_Unit_State_Cooldown[79] = 0.50
endif
endif
set udg_Unit_State_Cooldown_at_start[79] = 1.00
set udg_Unit_State_Projectile_Type[79] = 3
set udg_Unit_State_Projectile_Aim[79] = -1.00
set udg_Unit_State_Projectile_Angle[79] = 22.00
set udg_Unit_State_Projectile_Number[79] = 3
set udg_Unit_State_Remaining_Shots[79] = 50
set udg_Unit_State_Shot_Propability[79] = 0.50
set udg_Unit_State_Shot_Error[79] = 40.00
set udg_Unit_State_Speed[79] = 0.00
set udg_Unit_State_a[79] = 70.00
set udg_Unit_State_b[79] = 0.02
set udg_Unit_State_Time[79] = 12.00
set udg_Unit_State_Time1[79] = 3.00
set udg_Unit_State_Points[79] = 10000
set udg_Unit_State_FT_Max_Age[79] = 10.00
set udg_Unit_State_FT_S[79] = 14.00
set udg_Unit_State_FT_R[79] = 80.00
set udg_Unit_State_FT_G[79] = 45.00
set udg_Unit_State_FT_B[79] = 10.00
set udg_Unit_Next_State[79] = 80
set udg_Unit_State_Function[80] = gg_trg_Unit_Line
set udg_Unit_Origin_Offset[80] = 200.00
set udg_Unit_State_Speed[80] = 3.00
set udg_Unit_State_Time[80] = 2.00
set udg_Unit_State_a[80] = 180.00
set udg_Unit_State_Z0[80] = 900.00
set udg_Unit_State_Z0_Error[80] = 300.00
set udg_Unit_State_Points[80] = 10000
set udg_Unit_State_FT_Max_Age[80] = 10.00
set udg_Unit_State_FT_S[80] = 14.00
set udg_Unit_State_FT_R[80] = 80.00
set udg_Unit_State_FT_G[80] = 45.00
set udg_Unit_State_FT_B[80] = 10.00
set udg_Unit_Next_State[80] = 72
set udg_Unit_Projectile_Point_Y[25] = 60.00
set udg_Unit_Projectile_Point_Z[25] = 200.00
set udg_Unit_YScale[25] = 120.00
set udg_Unit_ZScale[25] = 200.00
set udg_Unit_Attack_Time[25] = 1.66
set udg_Unit_Boss_Class[25] = true
set udg_Unit_Death_Time[25] = 9.40
set udg_Unit_Start_Loc[25] = 980.00
set udg_Unit_State1[25] = 71
// Special1----------------------------------
set udg_Unit_State_Function[86] = gg_trg_Unit_Line
set udg_Unit_Origin_Offset[86] = 200.00
set udg_Unit_State_Z0[86] = 1100.00
set udg_Unit_State_Animated[86] = true
set udg_Unit_State_Animation_n[86] = 4
set udg_Unit_State_Cooldown[86] = ( 0.10 + ( 0.05 * I2R(udg_Difficulty) ) )
set udg_Unit_State_Cooldown_at_start[86] = 1.00
set udg_Unit_State_Projectile_Type[86] = 11
set udg_Unit_State_Projectile_Aim[86] = -1.00
set udg_Unit_State_Projectile_Number[86] = 3
set udg_Unit_State_Projectile_Angle[86] = 27.00
set udg_Unit_State_Remaining_Shots[86] = 23
set udg_Unit_State_Shot_Propability[86] = 0.50
set udg_Unit_State_Shot_Error[86] = 30.00
set udg_Unit_State_Speed[86] = 0.00
set udg_Unit_State_Time[86] = -2.00
set udg_Unit_State_Time1[86] = 2.00
set udg_Unit_State_Points[86] = udg_Unit_State_Points[71]
set udg_Unit_State_FT_Max_Age[86] = 10.00
set udg_Unit_State_FT_S[86] = 12.00
set udg_Unit_State_FT_R[86] = 80.00
set udg_Unit_State_FT_G[86] = 45.00
set udg_Unit_State_FT_B[86] = 10.00
// Special2----------------------------------
set udg_Unit_State_Function[87] = gg_trg_Unit_Line
set udg_Unit_Origin_Offset[87] = 200.00
set udg_Unit_State_Z0[87] = 1100.00
set udg_Unit_State_Animated[87] = true
set udg_Unit_State_Animation_n[87] = 4
set udg_Unit_State_Cooldown[87] = ( 0.10 + ( 0.05 * I2R(udg_Difficulty) ) )
set udg_Unit_State_Cooldown_at_start[87] = 1.00
set udg_Unit_State_Projectile_Type[87] = 16
set udg_Unit_State_Projectile_Aim[87] = -1.00
set udg_Unit_State_Projectile_Number[87] = 1
set udg_Unit_State_Remaining_Shots[87] = 23
set udg_Unit_State_Shot_Propability[87] = 0.60
set udg_Unit_State_Shot_Error[87] = 30.00
set udg_Unit_State_Speed[87] = 0.00
set udg_Unit_State_Time[87] = -2.00
set udg_Unit_State_Time1[87] = 2.00
set udg_Unit_State_Points[87] = udg_Unit_State_Points[71]
set udg_Unit_State_FT_Max_Age[87] = 10.00
set udg_Unit_State_FT_S[87] = 12.00
set udg_Unit_State_FT_R[87] = 80.00
set udg_Unit_State_FT_G[87] = 45.00
set udg_Unit_State_FT_B[87] = 10.00
// Special3----------------------------------
set udg_Unit_State_Function[88] = gg_trg_Unit_Line
set udg_Unit_Origin_Offset[88] = 200.00
set udg_Unit_State_Z0[87] = 1100.00
set udg_Unit_State_Animated[88] = true
set udg_Unit_State_Animation_n[88] = 4
set udg_Unit_State_Cooldown[88] = ( 0.10 + ( 0.05 * I2R(udg_Difficulty) ) )
set udg_Unit_State_Cooldown_at_start[88] = 1.00
set udg_Unit_State_Projectile_Type[88] = 15
set udg_Unit_State_Projectile_Aim[88] = -1.00
set udg_Unit_State_Projectile_Number[88] = 3
set udg_Unit_State_Projectile_Angle[88] = 18.00
set udg_Unit_State_Remaining_Shots[88] = 17
set udg_Unit_State_Shot_Propability[88] = 0.80
set udg_Unit_State_Shot_Error[88] = 60.00
set udg_Unit_State_Speed[88] = 0.00
set udg_Unit_State_Time[88] = -2.00
set udg_Unit_State_Time1[88] = 2.00
set udg_Unit_State_Points[88] = udg_Unit_State_Points[71]
set udg_Unit_State_FT_Max_Age[88] = 10.00
set udg_Unit_State_FT_S[88] = 12.00
set udg_Unit_State_FT_R[88] = 80.00
set udg_Unit_State_FT_G[88] = 45.00
set udg_Unit_State_FT_B[88] = 10.00
endfunction
//===========================================================================
function InitTrig_Boss_AI takes nothing returns nothing
set gg_trg_Boss_AI = CreateTrigger( )
call TriggerAddAction( gg_trg_Boss_AI, function Trig_Boss_AI_Actions )
endfunction
function Trig_Unit_Sine_Actions takes nothing returns nothing
local integer n = udg_UN
local integer state = udg_Unit_Current_State[n]
set udg_Unit_VY[n] = udg_Unit_State_Speed[state]
set udg_Unit_VZ[n] = ( udg_Unit_Z0[n] + ( udg_Unit_State_a[state] * SinBJ(( ( udg_Unit_Y[n] - udg_Unit_c[n] ) / udg_Unit_State_b[state] )) ) - udg_Unit_Z[n] )
endfunction
//===========================================================================
function InitTrig_Unit_Sine takes nothing returns nothing
set gg_trg_Unit_Sine = CreateTrigger( )
call TriggerAddAction( gg_trg_Unit_Sine, function Trig_Unit_Sine_Actions )
endfunction
function Trig_Unit_Sine1_Actions takes nothing returns nothing
local integer n = udg_UN
local integer state = udg_Unit_Current_State[n]
set udg_Unit_VY[n] = udg_Unit_State_Speed[state]
set udg_Unit_VZ[n] = ( udg_Unit_Z0[n] + ( udg_Unit_State_a[state] * SinBJ(( ( udg_Game_Time - udg_Unit_c[n] ) / udg_Unit_State_b[state] )) ) - udg_Unit_Z[n] )
endfunction
//===========================================================================
function InitTrig_Unit_Sine1 takes nothing returns nothing
set gg_trg_Unit_Sine1 = CreateTrigger( )
call TriggerAddAction( gg_trg_Unit_Sine1, function Trig_Unit_Sine1_Actions )
endfunction
function Trig_Unit_Circle_Actions takes nothing returns nothing
local integer n = udg_UN
set udg_Unit_a[n] = udg_Unit_a[n] + udg_Unit_State_b[udg_Unit_Current_State[n]]
set udg_Unit_VY[n] = udg_Unit_State_Speed[udg_Unit_Current_State[n]] * CosBJ(udg_Unit_a[n])
set udg_Unit_VZ[n] = udg_Unit_State_Speed[udg_Unit_Current_State[n]] * SinBJ(udg_Unit_a[n])
endfunction
//===========================================================================
function InitTrig_Unit_Circle takes nothing returns nothing
set gg_trg_Unit_Circle = CreateTrigger( )
call TriggerAddAction( gg_trg_Unit_Circle, function Trig_Unit_Circle_Actions )
endfunction
function Trig_Unit_Line_Actions takes nothing returns nothing
local integer n = udg_UN
set udg_Unit_VY[n] = udg_Unit_State_VY[udg_Unit_Current_State[n]]
set udg_Unit_VZ[n] = udg_Unit_State_VZ[udg_Unit_Current_State[n]]
endfunction
//===========================================================================
function InitTrig_Unit_Line takes nothing returns nothing
set gg_trg_Unit_Line = CreateTrigger( )
call TriggerAddAction( gg_trg_Unit_Line, function Trig_Unit_Line_Actions )
endfunction
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_Player_Projectile_Auto_Aim_Actions takes nothing returns nothing
local integer n = udg_i7
local integer i = 0
local location loc1
local location loc2
local real Aim_Angle = 0.00
local integer array monster
local integer n1 = 0
local integer random = 0
if(udg_Player_Projectile_Target[n]!=-1) then
if(udg_Unit_Timer[udg_Player_Projectile_Target[n]]!=-1.00 or udg_Unit_State_Hidden[udg_Unit_Current_State[i]] == true or RAbsBJ(udg_YCenter - udg_Unit_Y[i])>=850.00) then
set udg_Player_Projectile_Target[n] = -1
endif
endif
if(udg_Player_Projectile_Target[n]==-1) then
loop
exitwhen i > udg_Unit_Number - 1
if(udg_Unit_Timer[i]==-1.00 and udg_Unit_State_Hidden[udg_Unit_Current_State[i]] == false and RAbsBJ(udg_YCenter - udg_Unit_Y[i])<850.00 and udg_Unit_State_Points[udg_Unit_Current_State[i]]>random) then
set random = udg_Unit_State_Points[udg_Unit_Current_State[i]]
endif
set i = i + 1
endloop
set random = GetRandomInt(1, random)
set i = 0
loop
exitwhen i > udg_Unit_Number - 1
if(udg_Unit_Timer[i]==-1.00 and udg_Unit_State_Hidden[udg_Unit_Current_State[i]] == false and RAbsBJ(udg_YCenter - udg_Unit_Y[i])<850.00 and udg_Unit_State_Points[udg_Unit_Current_State[i]]>random) then
set monster[n1] = i
set n1 = n1 + 1
endif
set i = i + 1
endloop
if(n1!=0) then
set udg_Player_Projectile_Target[n] = monster[GetRandomInt(0, n1-1)]
endif
endif
if ( udg_Player_Projectile_Angle[n] < 0.00 ) then
set udg_Player_Projectile_Angle[n] = ( udg_Player_Projectile_Angle[n] + 360.00 )
elseif(udg_Player_Projectile_Angle[n] > 360) then
set udg_Player_Projectile_Angle[n] = ( udg_Player_Projectile_Angle[n] - 360.00 )
endif
if(udg_Player_Projectile_Target[n]!=-1) then
set loc1 = Location(udg_Player_Projectile_Y[n], udg_Player_Projectile_Z[n])
set loc2 = Location(udg_Unit_Y[udg_Player_Projectile_Target[n]], udg_Unit_Z[udg_Player_Projectile_Target[n]]+udg_Unit_Origin_Offset[udg_Unit_Current_State[udg_Player_Projectile_Target[n]]])
set 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 )
elseif(Aim_Angle > 360) then
set Aim_Angle = ( Aim_Angle - 360.00 )
endif
endif
if( Aim_Angle - udg_Player_Projectile_Angle[n] > 180 ) then
set udg_Player_Projectile_Angle[n] = udg_Player_Projectile_Angle[n] + 360
elseif( udg_Player_Projectile_Angle[n] - Aim_Angle > 180 ) then
set Aim_Angle = Aim_Angle + 360
endif
set udg_Player_Projectile_Angle[n] = ( udg_Player_Projectile_Angle[n] + ( ( Aim_Angle - udg_Player_Projectile_Angle[n] ) * 0.07 ) )
set udg_Player_Projectile_Y[n] = (udg_Player_Projectile_Y[n]+(udg_Weapon_Projectile_Speed[udg_Player_Projectile_Type[n]] * CosBJ( udg_Player_Projectile_Angle[n] )))
set udg_Player_Projectile_Z[n] = (udg_Player_Projectile_Z[n]+(udg_Weapon_Projectile_Speed[udg_Player_Projectile_Type[n]] * SinBJ( udg_Player_Projectile_Angle[n] )))
endfunction
//===========================================================================
function InitTrig_Player_Projectile_Auto_Aim takes nothing returns nothing
set gg_trg_Player_Projectile_Auto_Aim = CreateTrigger( )
call TriggerAddAction( gg_trg_Player_Projectile_Auto_Aim, function Trig_Player_Projectile_Auto_Aim_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_Profectile_Lava_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])
set udg_Projectile_VZ[udg_i5] = (udg_Projectile_VZ[udg_i5] - 0.18)
endfunction
//===========================================================================
function InitTrig_Projectile_Lava takes nothing returns nothing
set gg_trg_Projectile_Lava = CreateTrigger( )
call TriggerAddAction( gg_trg_Projectile_Lava, function Trig_Profectile_Lava_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
function Trig_Player_Glimmer_Actions takes nothing returns nothing
local integer k=udg_k
loop
exitwhen udg_Invulnarable[k]<udg_Game_Time
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 InitTrig_Player_Glimmer takes nothing returns nothing
set gg_trg_Player_Glimmer = CreateTrigger( )
call TriggerAddAction( gg_trg_Player_Glimmer, function Trig_Player_Glimmer_Actions )
endfunction
function Trig_Fog_Actions takes nothing returns nothing
local real zstart = 1000
local real zend = 24000
local real density = 0
local real r = 100
local real g = 20
local real b = 20
local integer i = 0
loop
exitwhen i > 99
call SetTerrainFogExBJ( 0, zstart, zend, 0, r, g, b )
set zstart = zstart - ((zstart - 500)/12)
set zend = zend - ((zend - 6000)/12)
set density = density - ((density - 0.3)/12)
set r = r - ((r - 8)/12)
set g = g - ((g - 4)/12)
set b = b - ((b - 1)/12)
set i = i + 1
call TriggerSleepAction( 0.10 )
endloop
endfunction
//===========================================================================
function InitTrig_Fog takes nothing returns nothing
set gg_trg_Fog = CreateTrigger( )
call TriggerAddAction( gg_trg_Fog, function Trig_Fog_Actions )
endfunction