//TESH.scrollpos=0
//TESH.alwaysfold=0
function Version takes nothing returns string
return "1.1.0"
endfunction
function returnstring takes string i returns string
return i
endfunction
function Fake3dSound takes string soundname, real x, real y, real cutoff returns nothing
local integer i=0
local integer volume
local real dx
local real dy
local real distance
local sound k = CreateSound(soundname, false, true, true, 10, 10, "")
call SetSoundPosition(k,x,y,100.0)
call SetSoundDistanceCutoff(k,4000.0)
call StartSound(k)
call KillSoundWhenDone(k)
endfunction
//
function PPX takes real dist, real angle returns real
return udg_PolarProjection_X[R2I(angle)+1]*dist
endfunction
function PPY takes real dist, real angle returns real
return udg_PolarProjection_Y[R2I(angle)+1]*dist
endfunction
//
function AngleCheck takes real r returns real
if r < 0 then
set r= r * -1
set r= 360-r
endif
return r
endfunction
//
function LogicalTarget takes unit target, unit caster returns boolean
if IsPlayerEnemy(GetOwningPlayer(target), GetOwningPlayer(caster)) == false then
return false
elseif ( GetUnitStateSwap(UNIT_STATE_LIFE, target) == 0.00 ) then
return false
elseif GetUnitAbilityLevelSwapped('Avul', target) == 1 then
return false
endif
return true
endfunction
//
function AngleBetweenCoordinates takes real x1, real y1, real x2, real y2 returns real
local real r=Atan2BJ((y2-y1),(x2-x1))
if r < 0 then
set r= r * -1
set r= 360-r
endif
return r
endfunction
function DistanceBetweenCoordinates takes real x1, real y1, real x2, real y2 returns real
local real dx = x2-x1
local real dy = y2-y1
return SquareRoot((dx * dx) + (dy * dy))
endfunction
//
function NewUnitRegister takes unit h returns nothing
set udg_Array_On = udg_Array_On + 1
if udg_Array_On >= 8000 then
set udg_Array_On = 1
endif
if udg_UnitAssignation[udg_Array_On] != null or udg_UnitAssignation[udg_Array_On] == udg_BlankUnit then
loop
exitwhen udg_UnitAssignation[udg_Array_On] == null
set udg_Array_On = udg_Array_On + 1
endloop
endif
set udg_UnitAssignation[udg_Array_On] = h
call SetUnitUserData(h,udg_Array_On)
endfunction
function GetUnitAN takes unit h returns integer
return GetUnitUserData(h)
endfunction
function Redirect_RegisterUnit takes nothing returns nothing
if GetUnitUserData(GetTriggerUnit()) != 0 then
return
endif
call NewUnitRegister(GetTriggerUnit())
endfunction
//==============================
function PrePlacedUnits takes nothing returns nothing
call NewUnitRegister(GetEnumUnit())
endfunction
function Init_ForGlobal takes nothing returns nothing
local group x=GetUnitsInRectAll(GetPlayableMapRect())
local trigger v=CreateTrigger()
call TriggerRegisterEnterRectSimple( v, GetPlayableMapRect() )
call TriggerAddAction( v, function Redirect_RegisterUnit)
call ForGroup(x,function PrePlacedUnits)
call DestroyGroup(x)
set x=null
endfunction
//
function ExitMap takes nothing returns nothing
call CustomDefeatBJ( GetEnumPlayer(), "Game over." )
endfunction
function CameraSet takes nothing returns nothing
local location a=GetUnitLoc(udg_TempUnit)
call SetCameraFieldForPlayer( GetEnumPlayer(), CAMERA_FIELD_TARGET_DISTANCE, CameraSetupGetFieldSwap(CAMERA_FIELD_TARGET_DISTANCE, gg_cam_Ending_Camera), 0 )
call SetCameraFieldForPlayer( GetEnumPlayer(), CAMERA_FIELD_FARZ, CameraSetupGetFieldSwap(CAMERA_FIELD_FARZ, gg_cam_Ending_Camera), 0 )
call SetCameraFieldForPlayer( GetEnumPlayer(), CAMERA_FIELD_ANGLE_OF_ATTACK, CameraSetupGetFieldSwap(CAMERA_FIELD_ANGLE_OF_ATTACK, gg_cam_Ending_Camera), 0 )
call SetCameraFieldForPlayer( GetEnumPlayer(), CAMERA_FIELD_FIELD_OF_VIEW, CameraSetupGetFieldSwap(CAMERA_FIELD_FIELD_OF_VIEW, gg_cam_Ending_Camera), 0 )
call SetCameraFieldForPlayer( GetEnumPlayer(), CAMERA_FIELD_ROTATION, ( GetUnitFacing(udg_TempUnit) + 180.00 ), 0 )
call SetCameraFieldForPlayer( GetEnumPlayer(), CAMERA_FIELD_ZOFFSET, CameraSetupGetFieldSwap(CAMERA_FIELD_ZOFFSET, gg_cam_Ending_Camera), 0 )
call RemoveLocation(a)
endfunction
function Win takes nothing returns nothing
call DisplayTextToForce(GetPlayersAll(), "|c00FF0000" + GetPlayerName(udg_Force_OriginalOwner[udg_PlayersForce[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnit()))]]) + "|r|c007EBFF1 has won the game! This game will automatically end in 30 seconds.|r")
call ForForce(GetPlayersAll(),function CameraSet)
set udg_GameOver = true
call DestroyTimer(udg_ShipSlideTimer)
call DestroyTimer(udg_ProjectileSlideTimer)
call PauseAllUnitsBJ(true)
call PolledWait(10.0)
call DisplayTextToForce(GetPlayersAll(),"Twenty seconds remaining.")
call PolledWait(10.0)
call DisplayTextToForce(GetPlayersAll(),"Ten seconds remaining.")
call PolledWait(5.0)
call DisplayTextToForce(GetPlayersAll(),"Five seconds remaining.")
call PolledWait(5.0)
call ForForce(GetPlayersAll(),function ExitMap)
endfunction
//
//
//
//
//
//
// ===========================
function H2I takes handle h returns integer
return h
return 0
endfunction
function C2S takes code h returns string
return h
return null
endfunction
function S2C takes string h returns code
return h
return null
endfunction
// ===========================
function LocalVars takes nothing returns gamecache
if udg_handlevars == null then
call FlushGameCache(InitGameCache("jasslocalvars.w3v"))
set udg_handlevars = InitGameCache("jasslocalvars.w3v")
endif
return udg_handlevars
endfunction
function SetHandleHandle takes handle subject, string name, handle value returns nothing
if value==null then
call FlushStoredInteger(LocalVars(),I2S(H2I(subject)),name)
else
call StoreInteger(LocalVars(), I2S(H2I(subject)), name, H2I(value))
endif
endfunction
function SetHandleInt takes handle subject, string name, integer value returns nothing
if value==0 then
call FlushStoredInteger(LocalVars(),I2S(H2I(subject)),name)
else
call StoreInteger(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction
function SetHandleBoolean takes handle subject, string name, boolean value returns nothing
if value==false then
call FlushStoredBoolean(LocalVars(),I2S(H2I(subject)),name)
else
call StoreBoolean(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction
function SetHandleReal takes handle subject, string name, real value returns nothing
if value==0 then
call FlushStoredReal(LocalVars(), I2S(H2I(subject)), name)
else
call StoreReal(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction
function SetHandleString takes handle subject, string name, string value returns nothing
if value==null then
call FlushStoredString(LocalVars(), I2S(H2I(subject)), name)
else
call StoreString(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction
function SetHandleCode takes handle subject, string name, code value returns nothing
if value==null then
call FlushStoredString(LocalVars(), I2S(H2I(subject)), name)
else
call StoreString(LocalVars(), I2S(H2I(subject)), name, C2S(value))
endif
endfunction
function GetHandleHandle takes handle subject, string name returns handle
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleInt takes handle subject, string name returns integer
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleBoolean takes handle subject, string name returns boolean
return GetStoredBoolean(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleReal takes handle subject, string name returns real
return GetStoredReal(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleString takes handle subject, string name returns string
return GetStoredString(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleUnit takes handle subject, string name returns unit
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleTimer takes handle subject, string name returns timer
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleTrigger takes handle subject, string name returns trigger
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleEffect takes handle subject, string name returns effect
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleGroup takes handle subject, string name returns group
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleLightning takes handle subject, string name returns lightning
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleWidget takes handle subject, string name returns widget
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleCode takes handle subject, string name returns code
return S2C(GetStoredString(LocalVars(), I2S(H2I(subject)), name))
endfunction
function FlushHandleLocals takes handle subject returns nothing
call FlushStoredMission(LocalVars(), I2S(H2I(subject)) )
endfunction
//
//
//
//
//
function SlideMove takes nothing returns nothing
local unit a=GetEnumUnit()
local integer i=GetUnitUserData(a)
call SetUnitPosition(a,GetUnitX(a)+udg_SlideX[i],GetUnitY(a)+udg_SlideY[i])
endfunction
function Slide_Group takes nothing returns nothing
call ForGroup(udg_SlideProj_Group,function SlideMove)
endfunction
function Slide takes unit target, real speed, real angle returns nothing
local integer i=GetUnitAN(target)
call GroupAddUnit(udg_SlideProj_Group,target)
set udg_SlideX[i] = PPX(speed*1.5,angle)
set udg_SlideY[i] = PPY(speed*1.5,angle)
endfunction
//
//
//
//
function Cruiser_Shield1 takes nothing returns nothing
local integer i=1
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield2 takes nothing returns nothing
local integer i=2
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield3 takes nothing returns nothing
local integer i=3
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield4 takes nothing returns nothing
local integer i=4
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield5 takes nothing returns nothing
local integer i=5
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield6 takes nothing returns nothing
local integer i=6
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield7 takes nothing returns nothing
local integer i=7
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield8 takes nothing returns nothing
local integer i=8
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield9 takes nothing returns nothing
local integer i=9
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield10 takes nothing returns nothing
local integer i=10
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield11 takes nothing returns nothing
local integer i=11
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
function Cruiser_Shield12 takes nothing returns nothing
local integer i=12
local unit a=udg_Force_Battleship[i]
if IsPlayerEnemy(GetOwningPlayer(a),GetOwningPlayer(GetTriggerUnit())) then
if IsUnitType(GetTriggerUnit(), UNIT_TYPE_TOWNHALL) == false then
set udg_TempReal = AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call SetUnitPosition( GetTriggerUnit(), GetUnitX(GetTriggerUnit())+PPX(220.0,udg_TempReal),GetUnitY(GetTriggerUnit())+PPX(220.0,udg_TempReal))
call SetUnitFacing(GetTriggerUnit(), udg_TempReal )
endif
endif
endfunction
//
//
//
//
function Cruiser_Tally takes nothing returns nothing
local real i=GetHandleReal(GetTriggerUnit(),"t"+I2S(udg_PlayersForce[GetConvertedPlayerId(GetOwningPlayer(GetEventDamageSource()))]))
call SetHandleReal(GetTriggerUnit(),"t" + I2S(udg_PlayersForce[GetConvertedPlayerId(GetOwningPlayer(GetEventDamageSource()))]),i+GetEventDamage())
endfunction
function RC_Act takes integer i, trigger t returns nothing
// =\ Lots of functions or lots of arrays? I chose functions.
if i==1 then
call TriggerAddAction(t,function Cruiser_Shield1)
elseif i==2 then
call TriggerAddAction(t,function Cruiser_Shield2)
elseif i==3 then
call TriggerAddAction(t,function Cruiser_Shield3)
elseif i==4 then
call TriggerAddAction(t,function Cruiser_Shield4)
elseif i==5 then
call TriggerAddAction(t,function Cruiser_Shield5)
elseif i==6 then
call TriggerAddAction(t,function Cruiser_Shield6)
elseif i==7 then
call TriggerAddAction(t,function Cruiser_Shield7)
elseif i==8 then
call TriggerAddAction(t,function Cruiser_Shield8)
elseif i==9 then
call TriggerAddAction(t,function Cruiser_Shield9)
elseif i==10 then
call TriggerAddAction(t,function Cruiser_Shield10)
elseif i==11 then
call TriggerAddAction(t,function Cruiser_Shield11)
elseif i==12 then
call TriggerAddAction(t,function Cruiser_Shield12)
endif
endfunction
function RegisterCruiser takes nothing returns nothing
local unit cruiser = GetLastCreatedUnit()
local trigger t=CreateTrigger()
call TriggerRegisterUnitEvent(t,cruiser,EVENT_UNIT_DAMAGED)
call TriggerAddAction(t,function Cruiser_Tally)
set udg_Cruiser_Trig[GetUnitAN(cruiser)] = t
set udg_Cruiser_ShieldTrig[GetUnitAN(cruiser)] = CreateTrigger()
call RC_Act(GetConvertedPlayerId(GetEnumPlayer()),udg_Cruiser_ShieldTrig[GetUnitAN(cruiser)])
call TriggerRegisterUnitInRangeSimple(udg_Cruiser_ShieldTrig[GetUnitAN(cruiser)],500.0,cruiser)
call TriggerRegisterUnitInRangeSimple(udg_Cruiser_ShieldTrig[GetUnitAN(cruiser)],300.0,cruiser)
call SetHandleHandle(udg_Cruiser_ShieldTrig[GetUnitAN(cruiser)],"unit",cruiser)
endfunction
function GetHost takes nothing returns player
call StoreInteger(LocalVars(), "missionKey", "key", GetPlayerId(GetLocalPlayer()) + 1)
call TriggerSyncStart()
call SyncStoredInteger(LocalVars(), "missionKey", "key")
call TriggerSyncReady()
return Player(GetStoredInteger(LocalVars(), "missionKey", "key") - 1)
endfunction
function Smasher_StopSlide takes nothing returns nothing
local unit a=GetHandleUnit(GetExpiredTimer(),"unit")
call GroupRemoveUnit(udg_SlideProj_Group,a)
call FlushHandleLocals(GetExpiredTimer())
call DestroyTimer(GetExpiredTimer())
endfunction
function Smasher_Smash takes nothing returns nothing
local unit a=GetHandleUnit(GetTriggeringTrigger(),"unit")
local real r=65
local real v=AngleBetweenCoordinates(GetUnitX(a),GetUnitY(a),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
local timer t
if GetUnitState(a,UNIT_STATE_LIFE) == 0.00 then
call DestroyTrigger(GetTriggeringTrigger())
return
endif
if GetUnitFacing(a) + 30.0 >= v and GetUnitFacing(a) - 30.0 <= v then
set r=200.0
endif
if GetUnitTypeId(GetTriggerUnit()) == 'h000' or GetUnitTypeId(GetTriggerUnit()) == 'h004' then
set r = r * .5
endif
if LogicalTarget(GetTriggerUnit(),a) then
call UnitDamageTargetBJ(a,GetTriggerUnit(),r,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL)
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl",GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit())))
call Fake3dSound("Sound\\Units\\Combat\\MetalHeavyBashStone1.wav",GetUnitX(a),GetUnitY(a),3000)
call Slide(GetTriggerUnit(),50.0,v)
set t=CreateTimer()
call SetHandleHandle(t,"unit",GetTriggerUnit())
call TimerStart(t,0.4,false,function Smasher_StopSlide)
endif
endfunction
function RegisterSmasher takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterUnitInRangeSimple(t,144.0,GetSoldUnit())
call TriggerAddAction(t,function Smasher_Smash)
call SetHandleHandle(t,"unit",GetSoldUnit())
endfunction
Name | Type | is_array | initial_value |
Array_On | integer | No | 1 |
Battlecruiser_Left | boolean | Yes | |
BlankUnit | unit | No | UnitNull |
Bool_Dead | boolean | Yes | true |
Cruiser_Force | integer | Yes | |
Cruiser_ShieldTrig | trigger | Yes | TriggerNull |
Cruiser_Trig | trigger | Yes | TriggerNull |
Distances | real | Yes | |
Droid_ForceBelongsTo | integer | Yes | |
Droid_Group | group | No | |
DroidOrder | integer | Yes | |
Force_Battleship | unit | Yes | |
Force_OriginalOwner | player | Yes | |
GameOver | boolean | No | |
handlevars | gamecache | No | |
Host | player | No | |
NewForce_On | integer | No | |
Players_Ship | unit | Yes | |
PlayersForce | integer | Yes | |
PolarProjection_X | real | Yes | |
PolarProjection_Y | real | Yes | |
Projectile_Damage | real | Yes | |
Projectile_DamageEffect | string | Yes | |
Projectile_Effect | effect | Yes | |
ProjectileSlideTimer | timer | No | |
Selector_ForceBelongsTo | integer | Yes | |
ShipSlideTimer | timer | No | |
Slide_Group | group | No | |
SlideProj_Group | group | No | |
SlideX | real | Yes | |
SlideY | real | Yes | |
TargetAngle | real | Yes | |
TempGroup | group | No | |
TempInt | integer | No | |
TempPoint | location | No | |
TempPoint2 | location | No | |
TempReal | real | No | |
TempRealArray | real | Yes | |
TempUnit | unit | No | |
TestTimer | timer | No | |
Tips | string | Yes | |
Trap_Func | string | Yes | |
Trap_Trigger | trigger | Yes | TriggerNull |
UnitAssignation | unit | Yes | |
WholeMap | region | No | RegionNull |
//TESH.scrollpos=2
//TESH.alwaysfold=0
function PolarProjectionFJ takes real x, real y, real dist, real angle returns real
set udg_TempReal = y + PPY(dist,angle)
return x + PPX(dist,angle)
endfunction
function PolarProjectionFJLoc takes real x, real y, real dist, real angle returns location
return Location(PolarProjectionFJ(x,y,dist,angle), udg_TempReal)
endfunction
function PolarProjectionFJLoc2 takes location a, real dist, real angle returns location
return Location(PolarProjectionFJ(GetLocationX(a),GetLocationY(a),dist,angle), udg_TempReal)
endfunction
//===========================================================================
function InitTrig_General_Functions takes nothing returns nothing
local integer i=0
call Init_ForGlobal()
loop
exitwhen i > 361
set udg_PolarProjection_X[i+1] = Cos(i * bj_DEGTORAD)
set udg_PolarProjection_Y[i+1] = Sin(i * bj_DEGTORAD)
set i=i+1
endloop
set udg_Distances[1] = 30544
set udg_Distances[2] = 30544
set udg_Distances[3] = 30544
set udg_Distances[4] = 30544
endfunction
//TESH.scrollpos=75
//TESH.alwaysfold=0
function EffectClean takes nothing returns nothing
local effect a = GetLastCreatedEffectBJ()
call TriggerSleepAction(10.0)
call DestroyEffect(a)
endfunction
function CleanSFX takes effect whicheffect returns nothing
set bj_lastCreatedEffect = whicheffect
call ExecuteFunc("EffectClean")
endfunction
function EffectCleantimed takes nothing returns nothing
local effect a = GetLastCreatedEffectBJ()
local real c = udg_TempReal
call TriggerSleepAction(c)
call DestroyEffect(a)
endfunction
function CleanSFXtimed takes effect whicheffect, real howlong returns nothing
set udg_TempReal = howlong
set bj_lastCreatedEffect = whicheffect
call ExecuteFunc("EffectCleantimed")
set whicheffect=null
endfunction
//=====
function AbridgedLogicalTarget takes nothing returns boolean
return LogicalTarget( GetFilterUnit(), GetLastReplacedUnitBJ())
endfunction
//======
//===
function EndTrap takes nothing returns nothing
local unit trap = GetHandleUnit( GetTriggeringTrigger(), "trap" )
if LogicalTarget( GetTriggerUnit(), trap ) then
set bj_lastCreatedUnit = trap
call ExecuteFunc(udg_Trap_Func[GetUnitAN(trap)])
endif
endfunction
function Trap takes unit whichunit, real radius, string trigfunc returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterUnitInRangeSimple( t, radius, whichunit )
call TriggerAddAction( t, function EndTrap)
call SetHandleHandle( t, "trap", whichunit )
set udg_Trap_Func[GetUnitAN(whichunit)] = trigfunc
set udg_Trap_Trigger[GetUnitAN(whichunit)] = t
set t=null
set whichunit =null
endfunction
//===
function DPDamage takes nothing returns nothing
local unit a = GetTriggerUnit()
local unit trap = GetLastCreatedUnit()
local real damage = udg_Projectile_Damage[GetUnitAN(trap)]
local string damageeffect = udg_Projectile_DamageEffect[GetUnitAN(trap)]
local location f = GetUnitLoc(a)
call UnitDamageTargetBJ( trap, a, damage, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_NORMAL )
call CleanSFXtimed( AddSpecialEffectLoc( damageeffect, f ), 10.0 )
call RemoveLocation(f)
call KillUnit(trap)
set a=null
set trap=null
set f=null
endfunction
function DPEnd takes nothing returns nothing
local unit a = GetDyingUnit()
local effect d = udg_Projectile_Effect[GetUnitAN(a)]
call DestroyTrigger(GetTriggeringTrigger())
call DestroyEffect(d)
call DestroyTrigger(udg_Trap_Trigger[GetUnitAN(a)])
call GroupRemoveUnit(udg_SlideProj_Group,a)
set a=null
endfunction
function DamagingProjectile takes real xa, real ya, real xb, real yb, real damage, string modelpath, string damageeffect, player WhoFor, real velocity, real effectradius, real scaling returns nothing
local trigger t = CreateTrigger()
local unit abs = CreateUnit( WhoFor, 'e000', xa, ya, AngleBetweenCoordinates(xa,ya,xb,yb))
local real safe = GetUnitFacing(abs)
local real r=DistanceBetweenCoordinates(xa,ya,xb,yb)/(velocity*25)
call UnitApplyTimedLife( abs, 'BNsg', r)
call NewUnitRegister(abs)
call Slide( abs, velocity*1.5, safe )
set udg_Projectile_Damage[GetUnitAN(abs)] = damage
set udg_Projectile_DamageEffect[GetUnitAN(abs)] = damageeffect
set udg_Projectile_Effect[GetUnitAN(abs)] = AddSpecialEffectTargetUnitBJ( "origin", abs, modelpath )
call Trap( abs, effectradius, "DPDamage" )
call TriggerRegisterUnitEvent( t, abs, EVENT_UNIT_DEATH )
call TriggerAddAction( t, function DPEnd )
call SetUnitScale(abs,scaling,scaling,scaling)
if r == 0 then
call KillUnit(abs)
endif
set abs=null
set t=null
endfunction
//===
//===========================================================================
function InitTrig_SpellFuncs takes nothing returns nothing
local timer t=CreateTimer()
call TimerStart(t,0.06,true,function Slide_Group)
call DestroyTimer(udg_ProjectileSlideTimer)
set udg_ProjectileSlideTimer = t
endfunction
//TESH.scrollpos=3
//TESH.alwaysfold=0
function Slide_Act takes nothing returns nothing
local real x=GetUnitMoveSpeed(GetEnumUnit())
local real y=GetUnitFacing(GetEnumUnit())
call PauseUnit(GetEnumUnit(),true)
call SetUnitPosition(GetEnumUnit(),GetUnitX(GetEnumUnit())+PPX(x,y),GetUnitY(GetEnumUnit())+PPY(x,y))
if udg_Players_Ship[GetConvertedPlayerId(GetOwningPlayer(GetEnumUnit()))] == GetEnumUnit() then
call SetUnitFacing(GetEnumUnit(), udg_TargetAngle[GetConvertedPlayerId(GetOwningPlayer(GetEnumUnit()))])
endif
call PauseUnit(GetEnumUnit(),false)
endfunction
function Trig_Ship_Slide_Actions takes nothing returns nothing
call ForGroup(udg_Slide_Group,function Slide_Act)
endfunction
//===========================================================================
function InitTrig_Ship_Slide takes nothing returns nothing
local timer t=CreateTimer()
call TimerStart(t,0.04,true,function Trig_Ship_Slide_Actions)
call DestroyTimer(udg_ShipSlideTimer)
set udg_ShipSlideTimer = t
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_AnyDeath_Actions takes nothing returns nothing
local unit a=GetDyingUnit()
call TriggerSleepAction(10.0)
set udg_UnitAssignation[GetUnitAN(a)] = udg_BlankUnit
endfunction
//===========================================================================
function InitTrig_AnyDeath takes nothing returns nothing
set gg_trg_AnyDeath = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AnyDeath, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddAction( gg_trg_AnyDeath, function Trig_AnyDeath_Actions )
endfunction
//TESH.scrollpos=7
//TESH.alwaysfold=0
function Trig_Ship_Death_Conditions takes nothing returns boolean
return IsUnitType(GetTriggerUnit(), UNIT_TYPE_MECHANICAL) and GetUnitTypeId(GetTriggerUnit()) != 'h004'
endfunction
function ShipDeathDroidCheck takes nothing returns nothing
if udg_Force_Battleship[udg_Droid_ForceBelongsTo[GetUnitAN(GetEnumUnit())]] == GetDyingUnit() then
call KillUnit(GetEnumUnit())
endif
endfunction
function Trig_Ship_Death_Actions takes nothing returns nothing
local player p=GetOwningPlayer(GetDyingUnit())
local location a
local unit b=GetDyingUnit()
if GetUnitTypeId(b) == 'h00A' then
call ForGroup(udg_Droid_Group,function ShipDeathDroidCheck)
endif
set udg_Bool_Dead[GetConvertedPlayerId(p)] = true
call SetCameraTargetControllerNoZForPlayer( p, GetDyingUnit(), 0, 0, false )
call PolledWait( 3.00 )
set a = GetUnitLoc(udg_Force_Battleship[udg_PlayersForce[GetConvertedPlayerId(p)]])
call PanCameraToTimedLocForPlayer( p, a, 0.5 )
call RemoveLocation(a)
if udg_PlayersForce[GetConvertedPlayerId(p)] == GetConvertedPlayerId(p) then
call SelectUnitForPlayerSingle( udg_Force_Battleship[udg_PlayersForce[GetConvertedPlayerId(p)]], p )
else
call CreateUnitAtLoc(p,'e008',GetUnitLoc( udg_Force_Battleship[udg_PlayersForce[GetConvertedPlayerId(p)]]), 270.0)
call SelectUnitForPlayerSingle(bj_lastCreatedUnit, p)
endif
call AdjustPlayerStateBJ( 1, p, PLAYER_STATE_RESOURCE_LUMBER )
call GroupRemoveUnit(udg_Slide_Group,b)
call GroupRemoveUnit(udg_SlideProj_Group,GetDyingUnit())
endfunction
//===========================================================================
function InitTrig_Ship_Death takes nothing returns nothing
set gg_trg_Ship_Death = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Ship_Death, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_Ship_Death, Condition( function Trig_Ship_Death_Conditions ) )
call TriggerAddAction( gg_trg_Ship_Death, function Trig_Ship_Death_Actions )
endfunction
//TESH.scrollpos=39
//TESH.alwaysfold=0
function Trig_Cruiser_Death_Conditions takes nothing returns boolean
if ( not ( GetUnitTypeId(GetDyingUnit()) == 'h000' ) ) then
return false
endif
return true
endfunction
function Trig_Cruiser_Death_Func001Func003001001002001 takes nothing returns boolean
return ( GetUnitTypeId(GetFilterUnit()) == 'h000' )
endfunction
function Trig_Cruiser_Death_Func001Func003001001002002 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_Cruiser_Death_Func001Func003001001002 takes nothing returns boolean
return GetBooleanAnd( Trig_Cruiser_Death_Func001Func003001001002001(), Trig_Cruiser_Death_Func001Func003001001002002() )
endfunction
function Trig_Cruiser_Death_Func001C takes nothing returns boolean
local boolexpr be = Condition(function Trig_Cruiser_Death_Func001Func003001001002)
local group g = GetUnitsInRectMatching(GetPlayableMapRect(), be)
local integer i=CountUnitsInGroup(g)
call DestroyGroup(g)
set g=null
call DestroyBoolExpr(be)
set be=null
return i <= 1
endfunction
function Trig_Cruiser_Death_Func003Func001Func002Func001C takes nothing returns boolean
if ( not ( udg_PlayersForce[GetForLoopIndexA()] == udg_PlayersForce[GetConvertedPlayerId(GetOwningPlayer(GetKillingUnitBJ()))] ) ) then
return false
endif
return true
endfunction
function Trig_Cruiser_Death_Func003Func001C takes nothing returns boolean
if ( not ( udg_PlayersForce[GetConvertedPlayerId(GetEnumPlayer())] == udg_Cruiser_Force[GetUnitUserData(GetDyingUnit())] ) ) then
return false
endif
return true
endfunction
function Trig_Cruiser_Death_Func003A takes nothing returns nothing
if ( Trig_Cruiser_Death_Func003Func001C() ) then
set udg_PlayersForce[GetConvertedPlayerId(GetEnumPlayer())] = udg_PlayersForce[udg_TempInt]
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = 12
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
if ( Trig_Cruiser_Death_Func003Func001Func002Func001C() ) then
call SetPlayerAllianceStateBJ( GetEnumPlayer(), ConvertedPlayer(GetForLoopIndexA()), bj_ALLIANCE_ALLIED_VISION )
call SetPlayerAllianceStateBJ( ConvertedPlayer(GetForLoopIndexA()), GetEnumPlayer(), bj_ALLIANCE_ALLIED_VISION )
else
endif
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
else
endif
endfunction
function Droid_ChangeOwner takes nothing returns nothing
if udg_Droid_ForceBelongsTo[GetUnitAN(GetEnumUnit())] == udg_Cruiser_Force[GetUnitAN(GetDyingUnit())] then
set udg_Droid_ForceBelongsTo[GetUnitAN(GetEnumUnit())] = udg_TempInt
call SetUnitOwner(GetEnumUnit(),udg_Force_OriginalOwner[udg_TempInt],true)
endif
endfunction
function Trig_Cruiser_Death_Actions takes nothing returns nothing
local integer i=1
local integer h=1
if ( Trig_Cruiser_Death_Func001C() ) then
call Win()
return
else
endif
if udg_Battlecruiser_Left[GetUnitAN(GetDyingUnit())] then
return
endif
loop
exitwhen i > 12
set udg_TempRealArray[i] = GetHandleReal(GetDyingUnit(),"t"+I2S(i))
set i=i+1
endloop
set i=1
loop
exitwhen i > 12
if udg_TempRealArray[i] > udg_TempRealArray[h] then
set h = i
endif
set i=i+1
endloop
set udg_TempInt = h
call DestroyTrigger(udg_Cruiser_Trig[GetUnitAN(GetDyingUnit())])
call DestroyTrigger(udg_Cruiser_ShieldTrig[GetUnitAN(GetDyingUnit())])
call DisplayTextToForce( GetPlayersAll(), ( "|c007EBFF1The battle cruiser originally belonging to |r" + ( GetPlayerName(udg_Force_OriginalOwner[udg_Cruiser_Force[GetUnitUserData(GetDyingUnit())]]) + "|c007EBFF1 has been destroyed! All players belonging to that force will now be transferred to the force belonging to " + GetPlayerName(udg_Force_OriginalOwner[h]) + " with " + I2S(R2I(udg_TempRealArray[h])) +" damage dealt!|r" ) ) )
call ForForce( GetPlayersAll(), function Trig_Cruiser_Death_Func003A )
call ForGroup(udg_Droid_Group, function Droid_ChangeOwner)
endfunction
//===========================================================================
function InitTrig_Cruiser_Death takes nothing returns nothing
set gg_trg_Cruiser_Death = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Cruiser_Death, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_Cruiser_Death, Condition( function Trig_Cruiser_Death_Conditions ) )
call TriggerAddAction( gg_trg_Cruiser_Death, function Trig_Cruiser_Death_Actions )
endfunction
function Trig_Ship_Repair_Actions takes nothing returns nothing
set udg_TempUnit = udg_Force_Battleship[udg_PlayersForce[GetConvertedPlayerId(GetOwningPlayer(GetSoldUnit()))]]
call SetUnitLifeBJ( udg_TempUnit, ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_TempUnit) + 1000.00 ) )
endfunction
//===========================================================================
function InitTrig_Ship_Repair takes nothing returns nothing
endfunction
function Trig_ShipSelectorRealign_Func001A takes nothing returns nothing
local unit r=udg_Force_Battleship[udg_Selector_ForceBelongsTo[GetUnitAN(GetEnumUnit())]]
call SetUnitPosition( GetEnumUnit(), GetUnitX(r),GetUnitY(r) )
endfunction
function Trig_ShipSelectorRealign_Actions takes nothing returns nothing
local group g=GetUnitsOfTypeIdAll('e004')
call ForGroupBJ( g, function Trig_ShipSelectorRealign_Func001A )
call DestroyGroup(g)
endfunction
//===========================================================================
function InitTrig_ShipSelectorRealign takes nothing returns nothing
call TimerStart(CreateTimer(),5.0,true,function Trig_ShipSelectorRealign_Actions)
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_Cam_Actions takes nothing returns nothing
call CameraSetupApplyForPlayer( true, gg_cam_HighCam, GetTriggerPlayer(), 0 )
endfunction
//===========================================================================
function InitTrig_Cam takes nothing returns nothing
local integer i=0
set gg_trg_Cam = CreateTrigger( )
loop
exitwhen i > 11
call TriggerRegisterPlayerChatEvent( gg_trg_Cam, Player(i), "-cam", true )
set i= i + 1
endloop
call TriggerAddAction( gg_trg_Cam, function Trig_Cam_Actions )
endfunction
function Trig_ESCLock_Func002C takes nothing returns boolean
if ( not ( GetLocalPlayer() != GetTriggerPlayer() ) ) then
return false
endif
return true
endfunction
function Trig_ESCLock_Actions takes nothing returns nothing
call PlaySoundBJ( gg_snd_ItemReceived )
if ( Trig_ESCLock_Func002C() ) then
call SetSoundVolume(GetLastPlayedSound(),0)
else
endif
call SetCameraTargetControllerNoZForPlayer( GetTriggerPlayer(), udg_Players_Ship[GetConvertedPlayerId(GetTriggerPlayer())], 0, 0, false )
endfunction
//===========================================================================
function InitTrig_ESCLock takes nothing returns nothing
local integer i=0
set gg_trg_ESCLock = CreateTrigger( )
loop
exitwhen i > 11
call TriggerRegisterPlayerEventEndCinematic( gg_trg_ESCLock, Player(i) )
set i=i+1
endloop
call TriggerAddAction( gg_trg_ESCLock, function Trig_ESCLock_Actions )
endfunction
function Trig_PlayerLeaves_Func005Func001C takes nothing returns boolean
if ( not ( udg_PlayersForce[GetForLoopIndexA()] == udg_PlayersForce[GetConvertedPlayerId(GetTriggerPlayer())] ) ) then
return false
endif
return true
endfunction
function Trig_PlayerLeaves_Func006Func002Func001C takes nothing returns boolean
if ( not ( udg_Droid_ForceBelongsTo[GetUnitUserData(GetEnumUnit())] == udg_PlayersForce[GetConvertedPlayerId(GetTriggerPlayer())] ) ) then
return false
endif
return true
endfunction
function Trig_PlayerLeaves_Func006Func002A takes nothing returns nothing
if ( Trig_PlayerLeaves_Func006Func002Func001C() ) then
call KillUnit( GetEnumUnit() )
else
endif
endfunction
function Trig_PlayerLeaves_Func006C takes nothing returns boolean
if ( not ( udg_TempInt == 1 ) ) then
return false
endif
return true
endfunction
function Trig_PlayerLeaves_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( ( "|c007EBFF1" + GetPlayerName(GetTriggerPlayer()) ) + "|r has left the game!" ) )
call PlaySoundBJ( gg_snd_QuestLog )
call RemoveUnit( udg_Players_Ship[GetConvertedPlayerId(GetTriggerPlayer())] )
set udg_TempInt = 0
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = 12
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
if ( Trig_PlayerLeaves_Func005Func001C() ) then
set udg_TempInt = ( udg_TempInt + 1 )
call SetPlayerAllianceStateBJ( GetEnumPlayer(), ConvertedPlayer(GetForLoopIndexA()), bj_ALLIANCE_ALLIED_ADVUNITS )
else
endif
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
if ( Trig_PlayerLeaves_Func006C() ) then
set udg_Battlecruiser_Left[GetUnitAN(udg_Force_Battleship[GetConvertedPlayerId(GetTriggerPlayer())])] = true
call KillUnit( udg_Force_Battleship[GetConvertedPlayerId(GetTriggerPlayer())] )
call ForGroupBJ( udg_Droid_Group, function Trig_PlayerLeaves_Func006Func002A )
else
endif
endfunction
//===========================================================================
function InitTrig_PlayerLeaves takes nothing returns nothing
local integer i=0
set gg_trg_PlayerLeaves = CreateTrigger( )
loop
exitwhen i > 11
call TriggerRegisterPlayerEventLeave( gg_trg_PlayerLeaves, Player(i) )
set i=i+1
endloop
call TriggerAddAction( gg_trg_PlayerLeaves, function Trig_PlayerLeaves_Actions )
endfunction
function Trig_Tips_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), ( "|c007EBFF1TIP: |r" + udg_Tips[GetRandomInt(1, 10)] ) )
endfunction
//===========================================================================
function InitTrig_Tips takes nothing returns nothing
call TimerStart(CreateTimer(),120.0,true,function Trig_Tips_Actions)
endfunction
function SquareZz takes real r returns real
return r*r
endfunction
function Trig_DroidsRealign_Func001A takes nothing returns nothing
local unit a=udg_Force_Battleship[udg_Droid_ForceBelongsTo[GetUnitAN(GetEnumUnit())]]
local integer b=udg_DroidOrder[GetUnitAN(a)]
if b == 851986 then
if SquareZz(GetUnitX(a)-GetUnitX(GetEnumUnit()))+SquareZz(GetUnitY(a)-GetUnitY(GetEnumUnit())) <= 1000000 then
call IssuePointOrderById(GetEnumUnit(),851971,GetUnitX(a),GetUnitY(a))
if GetUnitAcquireRange(GetEnumUnit()) == 1 then
call SetUnitAcquireRange(GetEnumUnit(),1500)
endif
else
call IssuePointOrderById(GetEnumUnit(),b,GetUnitX(a),GetUnitY(a))
if GetUnitAcquireRange(GetEnumUnit()) == 1500 then
call SetUnitAcquireRange(GetEnumUnit(),1)
endif
endif
else
call IssuePointOrderById(GetEnumUnit(),b,GetUnitX(a),GetUnitY(a))
if GetUnitAcquireRange(GetEnumUnit()) == 1 then
call SetUnitAcquireRange(GetEnumUnit(),1500)
endif
endif
endfunction
function Trig_DroidsRealign_Actions takes nothing returns nothing
call ForGroup( udg_Droid_Group, function Trig_DroidsRealign_Func001A )
endfunction
//===========================================================================
function InitTrig_DroidsRealign takes nothing returns nothing
set gg_trg_DroidsRealign = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_DroidsRealign, 1.00 )
call TriggerAddAction( gg_trg_DroidsRealign, function Trig_DroidsRealign_Actions )
endfunction
function Trig_DroidAttack_Actions takes nothing returns nothing
local unit b=GetAttacker()
local real x = GetUnitX(b)
local real y = GetUnitY(b)
local real v=GetUnitFacing(b)
local integer i=GetUnitTypeId(b)
if i == 'h004' then
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
call DamagingProjectile(x+PPX(200.0,v),y+PPY(200.0,v),x+PPX(1500.0,v),y+PPY(1500.0,v),45.0,"war3mapImported\\lasergreen.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(b),40.0,50.0,0.1)
elseif i == 'h009' then
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
set v=AngleBetweenCoordinates(x,y,GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()))
call DamagingProjectile(x,y,x+PPX(1200.0,v),y+PPY(1200.0,v),25.0,"war3mapImported\\laserred.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(b),30.0,50.0,0.1)
endif
endfunction
//===========================================================================
function InitTrig_DroidAttack takes nothing returns nothing
set gg_trg_DroidAttack = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_DroidAttack, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddAction( gg_trg_DroidAttack, function Trig_DroidAttack_Actions )
endfunction
function Trig_MediatorLaser_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then
return false
endif
return true
endfunction
function Trig_MediatorLaser_Actions takes nothing returns nothing
local real x = GetUnitX(GetSpellAbilityUnit())
local real y = GetUnitY(GetSpellAbilityUnit())
local real v=GetUnitFacing(GetSpellAbilityUnit())
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
call DamagingProjectile(x+PPX(100.0,v),y+PPY(100.0,v),x+PPX(1500.0,v),y+PPY(1500.0,v),90.0,"war3mapImported\\laserred.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(GetSpellAbilityUnit()),50.0,110.0,0.3)
endfunction
//===========================================================================
function InitTrig_MediatorLaser takes nothing returns nothing
set gg_trg_MediatorLaser = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_MediatorLaser, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_MediatorLaser, Condition( function Trig_MediatorLaser_Conditions ) )
call TriggerAddAction( gg_trg_MediatorLaser, function Trig_MediatorLaser_Actions )
endfunction
function Trig_ObliberatorLaser_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00M' ) ) then
return false
endif
return true
endfunction
function Trig_ObliberatorLaser_Actions takes nothing returns nothing
local real x = GetUnitX(GetSpellAbilityUnit())
local real y = GetUnitY(GetSpellAbilityUnit())
local real v=GetUnitFacing(GetSpellAbilityUnit())
call Fake3dSound("war3mapImported\\MegaCannon.wav",x,y,3000)
call DamagingProjectile(x+PPX(100.0,v),y+PPY(100.0,v),x+PPX(2500.0,v),y+PPY(2500.0,v),900.0,"war3mapImported\\laserred.mdx","war3mapImported\\SuperShinyThingy.mdl",GetOwningPlayer(GetSpellAbilityUnit()),50.0,150.0,2)
endfunction
//===========================================================================
function InitTrig_Obliberator takes nothing returns nothing
set gg_trg_Obliberator = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Obliberator, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Obliberator, Condition( function Trig_ObliberatorLaser_Conditions ) )
call TriggerAddAction( gg_trg_Obliberator, function Trig_ObliberatorLaser_Actions )
endfunction
function Trig_TriDestroyLaser_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00J' ) ) then
return false
endif
return true
endfunction
function TriDestroyLaser_NextLaser takes nothing returns nothing
local unit a=GetHandleUnit(GetExpiredTimer(),"unit")
local real x = GetUnitX(a)
local real y = GetUnitY(a)
local real v=GetUnitFacing(a)
call FlushHandleLocals(GetExpiredTimer())
call DestroyTimer(GetExpiredTimer())
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
call DamagingProjectile(x+PPX(100.0,v),y+PPY(100.0,v),x+PPX(1500.0,v),y+PPY(1500.0,v),40.0,"war3mapImported\\lasergreen.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(a),70.0,110.0,0.2)
endfunction
function Trig_TriDestroyLaser_Actions takes nothing returns nothing
local real x = GetUnitX(GetSpellAbilityUnit())
local real y = GetUnitY(GetSpellAbilityUnit())
local real v=GetUnitFacing(GetSpellAbilityUnit())
local timer t=CreateTimer()
local timer r=CreateTimer()
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
call DamagingProjectile(x+PPX(100.0,v),y+PPY(100.0,v),x+PPX(1500.0,v),y+PPY(1500.0,v),40.0,"war3mapImported\\lasergreen.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(GetSpellAbilityUnit()),70.0,110.0,0.2)
call TimerStart(t,0.2,false,function TriDestroyLaser_NextLaser)
call TimerStart(r,0.4,false,function TriDestroyLaser_NextLaser)
call SetHandleHandle(t,"unit",GetSpellAbilityUnit())
call SetHandleHandle(r,"unit",GetSpellAbilityUnit())
endfunction
//===========================================================================
function InitTrig_TriDestroyLaser takes nothing returns nothing
set gg_trg_TriDestroyLaser = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_TriDestroyLaser, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_TriDestroyLaser, Condition( function Trig_TriDestroyLaser_Conditions ) )
call TriggerAddAction( gg_trg_TriDestroyLaser, function Trig_TriDestroyLaser_Actions )
endfunction
function Trig_SwarmerLaser_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00F' ) ) then
return false
endif
return true
endfunction
function Trig_SwarmerLaser_Actions takes nothing returns nothing
local real x = GetUnitX(GetSpellAbilityUnit())
local real y = GetUnitY(GetSpellAbilityUnit())
local real v=GetUnitFacing(GetSpellAbilityUnit())
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
call DamagingProjectile(x+PPX(100.0,v),y+PPY(100.0,v),x+PPX(1500.0,v),y+PPY(1500.0,v),50.0,"war3mapImported\\laseryellow.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(GetSpellAbilityUnit()),50.0,110.0,0.3)
endfunction
//===========================================================================
function InitTrig_SwarmerLaser takes nothing returns nothing
set gg_trg_SwarmerLaser = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SwarmerLaser, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_SwarmerLaser, Condition( function Trig_SwarmerLaser_Conditions ) )
call TriggerAddAction( gg_trg_SwarmerLaser, function Trig_SwarmerLaser_Actions )
endfunction
function Trig_PredatorLaser_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A001' ) ) then
return false
endif
return true
endfunction
function Trig_PredatorLaser_Actions takes nothing returns nothing
local real x = GetUnitX(GetSpellAbilityUnit())
local real y = GetUnitY(GetSpellAbilityUnit())
local real v=GetUnitFacing(GetSpellAbilityUnit())
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
call DamagingProjectile(x+PPX(100.0,v),y+PPY(100.0,v),x+PPX(1500.0,v),y+PPY(1500.0,v),30.0,"war3mapImported\\laseryellow.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(GetSpellAbilityUnit()),70.0,130.0,0.2)
endfunction
//===========================================================================
function InitTrig_PredatorLaser takes nothing returns nothing
set gg_trg_PredatorLaser = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_PredatorLaser, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_PredatorLaser, Condition( function Trig_PredatorLaser_Conditions ) )
call TriggerAddAction( gg_trg_PredatorLaser, function Trig_PredatorLaser_Actions )
endfunction
function Trig_StormhawkLaser_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A008' ) ) then
return false
endif
return true
endfunction
function Stormhawk_Laser takes nothing returns nothing
local unit a=GetHandleUnit(GetExpiredTimer(),"unit")
local real x = GetUnitX(a)
local real y = GetUnitY(a)
local real v=AngleCheck(GetUnitFacing(a)+GetRandomReal(-20.0,20.0))
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
call DamagingProjectile(x+PPX(100.0,v),y+PPY(100.0,v),x+PPX(1500.0,v),y+PPY(1500.0,v),10.0,"war3mapImported\\laseryellow.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(a),70.0,90.0,0.1)
endfunction
function Trig_StormhawkLaser_Actions takes nothing returns nothing
local timer t=CreateTimer()
call SetHandleHandle(t,"unit",GetSpellAbilityUnit())
call TimerStart(t,0.09,true,function Stormhawk_Laser)
call PolledWait(1)
call FlushHandleLocals(t)
call DestroyTimer(t)
endfunction
//===========================================================================
function InitTrig_StormhawkLaser takes nothing returns nothing
set gg_trg_StormhawkLaser = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_StormhawkLaser, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_StormhawkLaser, Condition( function Trig_StormhawkLaser_Conditions ) )
call TriggerAddAction( gg_trg_StormhawkLaser, function Trig_StormhawkLaser_Actions )
endfunction
function Trig_GatlingGun_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00A' ) ) then
return false
endif
return true
endfunction
function Gatling_Gun takes nothing returns nothing
local unit a=GetHandleUnit(GetExpiredTimer(),"unit")
local real x = GetUnitX(a)
local real y = GetUnitY(a)
local real v=AngleCheck(GetUnitFacing(a)+GetRandomReal(-3.0,3.0))
call DamagingProjectile(x+PPX(100.0,v),y+PPY(100.0,v),x+PPX(800.0,v),y+PPY(800.0,v),5.0,"Abilities\\Weapons\\BristleBackMissile\\BristleBackMissile.mdl","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(a),80.0,110.0,0.7)
endfunction
function Trig_GatlingGun_Actions takes nothing returns nothing
local timer t=CreateTimer()
call Fake3dSound("war3mapImported\\AK47.wav",GetUnitX(GetSpellAbilityUnit()),GetUnitY(GetSpellAbilityUnit()),3000)
call SetHandleHandle(t,"unit",GetSpellAbilityUnit())
call TimerStart(t,0.06,true,function Gatling_Gun)
call PolledWait(2)
call FlushHandleLocals(t)
call DestroyTimer(t)
endfunction
//===========================================================================
function InitTrig_GatlingGun takes nothing returns nothing
set gg_trg_GatlingGun = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_GatlingGun, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_GatlingGun, Condition( function Trig_GatlingGun_Conditions ) )
call TriggerAddAction( gg_trg_GatlingGun, function Trig_GatlingGun_Actions )
endfunction
function Trig_VIXLaser_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00D' ) ) then
return false
endif
return true
endfunction
function VIX_Laser takes nothing returns nothing
local unit a=GetHandleUnit(GetExpiredTimer(),"unit")
local real x = GetUnitX(a)
local real y = GetUnitY(a)
local real v=AngleCheck(GetUnitFacing(a)+GetRandomReal(-20,20.0))
local real k2 = y+PPY(200.0,v)
local real k1 = x+PPX(200.0,v)
local real k4 = y+PPY(1500.0,v)
local real k3 = x+PPX(1500.0,v)
call DamagingProjectile(k1,k2,k3,k4,10.0,"war3mapImported\\lasergreen.mdx","Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl",GetOwningPlayer(a),70.0,90.0,0.1)
call Fake3dSound("war3mapImported\\LaserSound.wav",x,y,3000)
endfunction
function Trig_VIXLaser_Actions takes nothing returns nothing
local timer t=CreateTimer()
call SetHandleHandle(t,"unit",GetSpellAbilityUnit())
call TimerStart(t,0.08,true,function VIX_Laser)
call PolledWait(4)
call FlushHandleLocals(t)
call DestroyTimer(t)
endfunction
//===========================================================================
function InitTrig_VIXLaser takes nothing returns nothing
set gg_trg_VIXLaser = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_VIXLaser, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_VIXLaser, Condition( function Trig_VIXLaser_Conditions ) )
call TriggerAddAction( gg_trg_VIXLaser, function Trig_VIXLaser_Actions )
endfunction
function Trig_StormhawkRocket_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A009' ) ) then
return false
endif
return true
endfunction
function Trig_StormhawkRocket_Actions takes nothing returns nothing
local unit a=GetSpellAbilityUnit()
local real x = GetUnitX(a)
local real y = GetUnitY(a)
local real v=GetUnitFacing(a)
local real r= v-40
local integer i=0
loop
exitwhen i > 7
set r=AngleCheck(r+10)
call DamagingProjectile(x+PPX(100.0,r),y+PPY(100.0,r),x+PPX(1200.0,r),y+PPY(1200.0,r), 50.0,"Abilities\\Weapons\\RocketMissile\\RocketMissile.mdl","Objects\\Spawnmodels\\Other\\NeutralBuildingExplosion\\NeutralBuildingExplosion.mdl",GetOwningPlayer(a),50.0,90.0,0.4)
set i=i+1
endloop
endfunction
//===========================================================================
function InitTrig_StormhawkRockets takes nothing returns nothing
set gg_trg_StormhawkRockets = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_StormhawkRockets, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_StormhawkRockets, Condition( function Trig_StormhawkRocket_Conditions ) )
call TriggerAddAction( gg_trg_StormhawkRockets, function Trig_StormhawkRocket_Actions )
endfunction
function Trig_AnnihalatorLaser_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A005' ) ) then
return false
endif
return true
endfunction
function Trig_AnnihalatorLaser_Actions takes nothing returns nothing
local real x = GetUnitX(GetSpellAbilityUnit())
local real y = GetUnitY(GetSpellAbilityUnit())
local real v=GetUnitFacing(GetSpellAbilityUnit())
call DamagingProjectile(x+PPX(200,v),y+PPY(200.0,v),x+PPX(2500.0,v),y+PPY(2500.0,v),250,"Abilities\\Weapons\\RocketMissile\\RocketMissile.mdl","Objects\\Spawnmodels\\Other\\NeutralBuildingExplosion\\NeutralBuildingExplosion.mdl",GetOwningPlayer(GetSpellAbilityUnit()),80.0,150.0,1.9)
endfunction
//===========================================================================
function InitTrig_AnnihalatorRocket takes nothing returns nothing
set gg_trg_AnnihalatorRocket = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_AnnihalatorRocket, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_AnnihalatorRocket, Condition( function Trig_AnnihalatorLaser_Conditions ) )
call TriggerAddAction( gg_trg_AnnihalatorRocket, function Trig_AnnihalatorLaser_Actions )
endfunction
function Trig_TractorBeam_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00H' ) ) then
return false
endif
return true
endfunction
function TBM2 takes nothing returns nothing
local lightning a=bj_lastCreatedLightning
call TriggerSleepAction(0.2)
call DestroyLightning(a)
endfunction
function TractorBeam_Move takes nothing returns nothing
local real x=GetUnitX(GetEnumUnit())
local real y=GetUnitY(GetEnumUnit())
local real x2=GetUnitX(udg_TempUnit)
local real y2 = GetUnitY(udg_TempUnit)
set udg_TempReal = AngleBetweenCoordinates(x,y,x2,y2)
call SetUnitPosition(GetEnumUnit(),x+PPX(36.0,udg_TempReal),y+PPY(24.0,udg_TempReal))
set bj_lastCreatedLightning = AddLightning( "LEAS", false,x,y,x2,y2 )
call ExecuteFunc("TBM2")
endfunction
function TractorBeam_Draw takes nothing returns nothing
local unit a=GetHandleUnit(GetExpiredTimer(),"unit")
local location b=GetUnitLoc(a)
local group g
local boolexpr be = Condition(function AbridgedLogicalTarget)
set bj_lastReplacedUnit = a
set udg_TempUnit = a
set g=GetUnitsInRangeOfLocMatching(1000.0,b,be)
call DestroyBoolExpr(be)
call RemoveLocation(b)
call ForGroup(g,function TractorBeam_Move)
call DestroyGroup(g)
endfunction
function Trig_TractorBeam_Actions takes nothing returns nothing
local timer t=CreateTimer()
call SetHandleHandle(t,"unit",GetSpellAbilityUnit())
call TimerStart(t,0.21,true,function TractorBeam_Draw)
call TriggerSleepAction(4.0)
call DestroyTimer(t)
endfunction
//===========================================================================
function InitTrig_TractorBeam takes nothing returns nothing
set gg_trg_TractorBeam = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_TractorBeam, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_TractorBeam, Condition( function Trig_TractorBeam_Conditions ) )
call TriggerAddAction( gg_trg_TractorBeam, function Trig_TractorBeam_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_SmartMissile_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00B' ) ) then
return false
endif
return true
endfunction
function SM_E takes nothing returns nothing
local unit b=GetHandleUnit(GetTriggeringTrigger(),"unit")
local real x=GetUnitX(GetTriggerUnit())
local real y=GetUnitY(GetTriggerUnit())
if LogicalTarget(GetTriggerUnit(),b) == false then
return
endif
call DestroyTrigger(GetTriggeringTrigger())
call UnitDamageTargetBJ(b,GetTriggerUnit(),200.0,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL)
call KillUnit(b)
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Other\\NeutralBuildingExplosion\\NeutralBuildingExplosion.mdl",x,y))
endfunction
function Trig_SmartMissile_Actions takes nothing returns nothing
local trigger t=CreateTrigger()
set udg_TempPoint = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLoc( 1, 'h007', GetOwningPlayer(GetSpellAbilityUnit()), udg_TempPoint, GetUnitFacing(GetSpellAbilityUnit()) )
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_Slide_Group )
call RemoveLocation( udg_TempPoint )
call TriggerRegisterUnitInRangeSimple(t,144.0,GetLastCreatedUnit())
call TriggerAddAction(t,function SM_E)
call SetHandleHandle(t,"unit",GetLastCreatedUnit())
endfunction
//===========================================================================
function InitTrig_SmartMissile takes nothing returns nothing
set gg_trg_SmartMissile = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_SmartMissile, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_SmartMissile, Condition( function Trig_SmartMissile_Conditions ) )
call TriggerAddAction( gg_trg_SmartMissile, function Trig_SmartMissile_Actions )
endfunction
function Trig_HomingRockets_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00K' ) ) then
return false
endif
return true
endfunction
function SM_L takes nothing returns nothing
local unit b=GetHandleUnit(GetTriggeringTrigger(),"unit")
local real x=GetUnitX(GetTriggerUnit())
local real y=GetUnitY(GetTriggerUnit())
if LogicalTarget(GetTriggerUnit(),b) == false then
return
endif
call FlushHandleLocals(GetTriggeringTrigger())
call DestroyTrigger(GetTriggeringTrigger())
call UnitDamageTargetBJ(b,GetTriggerUnit(),50.0,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL)
call KillUnit(b)
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Other\\NeutralBuildingExplosion\\NeutralBuildingExplosion.mdl",x,y))
endfunction
function TMS takes real offset returns nothing
local location a
local trigger t=CreateTrigger()
set udg_TempPoint = GetUnitLoc(GetSpellAbilityUnit())
set a = PolarProjectionFJLoc2(udg_TempPoint,offset,GetUnitFacing(GetSpellAbilityUnit()))
call CreateNUnitsAtLoc( 1, 'h00D', GetOwningPlayer(GetSpellAbilityUnit()), a, GetUnitFacing(GetSpellAbilityUnit()) )
call GroupAddUnitSimple( GetLastCreatedUnit(), udg_Slide_Group )
call RemoveLocation( udg_TempPoint )
call RemoveLocation(a)
call TriggerRegisterUnitInRangeSimple(t,104.0,GetLastCreatedUnit())
call TriggerAddAction(t,function SM_L)
call SetHandleHandle(t,"unit",GetLastCreatedUnit())
endfunction
function Trig_HomingRockets_Actions takes nothing returns nothing
local integer i=1
local real r=100
loop
exitwhen i > 3
call TMS(r)
set i=i+1
set r = 100*i
endloop
endfunction
//===========================================================================
function InitTrig_HomingRockets takes nothing returns nothing
set gg_trg_HomingRockets = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_HomingRockets, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_HomingRockets, Condition( function Trig_HomingRockets_Conditions ) )
call TriggerAddAction( gg_trg_HomingRockets, function Trig_HomingRockets_Actions )
endfunction
function Trig_TimeBomb_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A006' ) ) then
return false
endif
return true
endfunction
function Trig_TimeBomb_Actions takes nothing returns nothing
local unit a
set udg_TempPoint = GetUnitLoc(GetSpellAbilityUnit())
call CreateNUnitsAtLoc( 1, 'e002', GetOwningPlayer(GetSpellAbilityUnit()), udg_TempPoint, bj_UNIT_FACING )
set a=bj_lastCreatedUnit
loop
exitwhen GetUnitState(a,UNIT_STATE_LIFE) == 0.00 or a==null
call TriggerSleepAction(0.25)
endloop
call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\NightElf\\NEDeathMedium\\NEDeath.mdl",GetUnitX(a),GetUnitY(a)))
call RemoveLocation( udg_TempPoint )
endfunction
//===========================================================================
function InitTrig_TimeBomb takes nothing returns nothing
set gg_trg_TimeBomb = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_TimeBomb, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_TimeBomb, Condition( function Trig_TimeBomb_Conditions ) )
call TriggerAddAction( gg_trg_TimeBomb, function Trig_TimeBomb_Actions )
endfunction
function Trig_EMPWave_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00G' ) ) then
return false
endif
return true
endfunction
function EMPWave_Enum_Timer takes nothing returns nothing
local unit a=GetHandleUnit(GetExpiredTimer(),"unit")
if GetUnitMoveSpeed(a) <= 1.00 then
call FlushHandleLocals(GetExpiredTimer())
call DestroyTimer(GetExpiredTimer())
return
endif
call SetUnitMoveSpeed(a,GetUnitMoveSpeed(a)-2.0)
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Orc\\Purge\\PurgeBuffTarget.mdl",GetUnitX(a),GetUnitY(a)))
endfunction
function EMPWave_Enum takes nothing returns nothing
local timer t=CreateTimer()
call SetHandleHandle(t,"unit",GetEnumUnit())
call TimerStart(t,0.1,true,function EMPWave_Enum_Timer)
endfunction
function EMPWave_Reset takes nothing returns nothing
call SetUnitMoveSpeed(GetEnumUnit(),GetUnitDefaultMoveSpeed(GetEnumUnit()))
endfunction
function Trig_EMPWave_Actions takes nothing returns nothing
local location a=GetUnitLoc(GetSpellAbilityUnit())
local boolexpr be = Condition(function AbridgedLogicalTarget)
local group g
local integer i=1
local real r
local real m
local unit z = GetSpellAbilityUnit()
call CreateUnit(GetOwningPlayer(z),'e003',GetUnitX(z),GetUnitY(z),270.0)
set bj_lastReplacedUnit = GetSpellAbilityUnit()
set g= GetUnitsInRangeOfLocMatching(800.0,a,be)
call ForGroup(g,function EMPWave_Enum)
call TriggerSleepAction(4.0)
call ForGroup(g,function EMPWave_Reset)
call DestroyGroup(g)
call DestroyBoolExpr(be)
call RemoveLocation(a)
endfunction
//===========================================================================
function InitTrig_EMP_Wave takes nothing returns nothing
set gg_trg_EMP_Wave = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_EMP_Wave, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_EMP_Wave, Condition( function Trig_EMPWave_Conditions ) )
call TriggerAddAction( gg_trg_EMP_Wave, function Trig_EMPWave_Actions )
endfunction
function Trig_DistortionWave_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00N' ) ) then
return false
endif
return true
endfunction
function DistortionWave_Enum takes nothing returns nothing
call UnitDamageTargetBJ(GetSpellAbilityUnit(),GetEnumUnit(),400.0,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL)
call Slide(GetEnumUnit(),17.0,AngleBetweenCoordinates(GetUnitX(GetEnumUnit()),GetUnitY(GetEnumUnit()),GetUnitX(GetSpellAbilityUnit()),GetUnitY(GetSpellAbilityUnit()))+180.0)
endfunction
function DistortionWave_Reset takes nothing returns nothing
call GroupRemoveUnit(udg_SlideProj_Group,GetEnumUnit())
endfunction
function Trig_DistortionWave_Actions takes nothing returns nothing
local location a=GetUnitLoc(GetSpellAbilityUnit())
local boolexpr be = Condition(function AbridgedLogicalTarget)
local group g
local integer i=1
local real r
local real m
local unit z = GetSpellAbilityUnit()
call PlaySoundBJ( gg_snd_SlowTarget )
call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0.10, "ReplaceableTextures\\CameraMasks\\DreamFilter_Mask.blp", 20.00, 20.00, 60.00, 0 )
call UnlockGameSpeedBJ( )
call SetGameSpeed( MAP_SPEED_SLOWEST )
call CreateUnit(GetOwningPlayer(z),'e003',GetUnitX(z),GetUnitY(z),270.0)
set bj_lastReplacedUnit = GetSpellAbilityUnit()
set g= GetUnitsInRangeOfLocMatching(1000.0,a,be)
call ForGroup(g,function DistortionWave_Enum)
call TriggerSleepAction(3.0)
call ForGroup(g,function DistortionWave_Reset)
call SetGameSpeed( MAP_SPEED_NORMAL )
call LockGameSpeedBJ( )
call DestroyGroup(g)
call DestroyBoolExpr(be)
call RemoveLocation(a)
call PlaySoundBJ( gg_snd_MarkOfChaos )
call CinematicFadeBJ( bj_CINEFADETYPE_FADEIN, 0.50, "ReplaceableTextures\\CameraMasks\\DreamFilter_Mask.blp", 20.00, 20.00, 60.00, 0 )
endfunction
//===========================================================================
function InitTrig_Distortion_Wave takes nothing returns nothing
set gg_trg_Distortion_Wave = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Distortion_Wave, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Distortion_Wave, Condition( function Trig_DistortionWave_Conditions ) )
call TriggerAddAction( gg_trg_Distortion_Wave, function Trig_DistortionWave_Actions )
endfunction
function Trig_Afterburners_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A004' ) ) then
return false
endif
return true
endfunction
function Trig_Afterburners_Actions takes nothing returns nothing
local unit a=GetSpellAbilityUnit()
call SetUnitMoveSpeed( a, ( GetUnitMoveSpeed(a) + 35.00 ) )
call PolledWait( 4.00 )
call SetUnitMoveSpeed( a, GetUnitDefaultMoveSpeed(a) )
endfunction
//===========================================================================
function InitTrig_Afterburners takes nothing returns nothing
set gg_trg_Afterburners = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Afterburners, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Afterburners, Condition( function Trig_Afterburners_Conditions ) )
call TriggerAddAction( gg_trg_Afterburners, function Trig_Afterburners_Actions )
endfunction
function Trig_HyperDrive_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00O' ) ) then
return false
endif
return true
endfunction
function HyperDriveCooldown takes nothing returns nothing
local unit a=GetHandleUnit(GetExpiredTimer(),"unit")
call FlushHandleLocals(GetExpiredTimer())
call DestroyTimer(GetExpiredTimer())
call SetHandleBoolean(a,"hpcd",false)
endfunction
function Trig_HyperDrive_Actions takes nothing returns nothing
local unit a=GetSpellAbilityUnit()
local location c=GetUnitLoc(a)
local location d=PolarProjectionBJ(c, 3000.00, GetUnitFacing(a))
local boolean x=GetHandleBoolean(a,"hpcd")
local timer t
call IssueImmediateOrder(a,"stop")
if IsLocationInRegion(udg_WholeMap,d) then
if x == true then
call DisplayTextToPlayer(GetOwningPlayer(a),0,0,"|c00FF0303Warp drives in cooldown.|r")
else
call SetHandleBoolean(a,"hpcd",true)
set t=CreateTimer()
call SetHandleHandle(t,"unit",a)
call TimerStart(t,60.0,false,function HyperDriveCooldown)
call SetUnitAnimation( a, "morph" )
call TriggerSleepAction( 2.0 )
call SetUnitMoveSpeed(a,GetUnitDefaultMoveSpeed(a))
call SetUnitPositionLoc( a, d )
call SetUnitAnimation( a, "morph alternate" )
endif
else
call DisplayTextToPlayer(GetOwningPlayer(a),0,0,"|c00FF0303Hyperdrive failed- re-entry point inaccessible.|r")
endif
call RemoveLocation(c)
call RemoveLocation(d)
endfunction
//===========================================================================
function InitTrig_HyperDrive takes nothing returns nothing
set gg_trg_HyperDrive = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_HyperDrive, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_HyperDrive, Condition( function Trig_HyperDrive_Conditions ) )
call TriggerAddAction( gg_trg_HyperDrive, function Trig_HyperDrive_Actions )
endfunction