Name | Type | is_array | initial_value |
//TESH.scrollpos=0
//TESH.alwaysfold=0
library ballPhysics
globals
private constant real COMPETITORHEIGHT=110
private constant real RADENUM=60
private timer time=CreateTimer()
private group grp=CreateGroup()
private sound snd=CreateSound("Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissileHit1.wav",false,false,false,0,0,"")
private sound snd2=CreateSound("Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissileHit2.wav",false,false,false,0,0,"")
private effect fx
endglobals
private function f takes nothing returns boolean
local real theta
local real incidence
local real distance
local real dx
local real dy
local unit fU=GetFilterUnit()
if GetUnitFlyHeight(gBall)<COMPETITORHEIGHT+GetUnitFlyHeight(fU) and liveZcPrime<0 and GetUnitState(fU,UNIT_STATE_LIFE)>=1 then
set dx=GetUnitX(gBall)-GetUnitX(fU)
set dy=GetUnitY(gBall)-GetUnitY(fU)
set distance=SquareRoot(dx*dx+dy*dy)
set incidence=Tan(distance/GetUnitFlyHeight(gBall))
set theta=Atan2(GetUnitY(gBall)-GetUnitY(fU),GetUnitX(gBall)-GetUnitX(fU))
set liveXc=startPow*Cos(theta)*Sin(incidence)
set liveYc=startPow*Sin(theta)*Sin(incidence)
call SetUnitTimeScale(gBall,Sin(incidence))
set liveZcPrime=startPow*Cos(incidence)
call StartSound(snd)
call SetSoundVolume(snd,120)
if GetOwningPlayer(fU)==Player(0) or GetOwningPlayer(fU)==Player(1) then
set aScore=aScore+1
elseif GetOwningPlayer(fU)==Player(2) or GetOwningPlayer(fU)==Player(3) then
set bScore=bScore+1
endif
endif
set fU=null
return false
endfunction
private function p takes nothing returns nothing
call SetUnitX(gBall,GetUnitX(gBall)+liveXc)
call SetUnitY(gBall,GetUnitY(gBall)+liveYc)
call SetUnitFlyHeight(gBall,GetUnitFlyHeight(gBall)+liveZcPrime,0)
set liveZcPrime=liveZcPrime+GRAVITY
call GroupEnumUnitsInRange(grp,GetUnitX(gBall),GetUnitY(gBall),RADENUM,Filter(function f))
if GetUnitFlyHeight(gBall)<15 then
set inPlay=false
call PauseTimer(time)
call SetUnitX(gSpotter,0)
call SetUnitY(gSpotter,0)
call StartSound(snd2)
call SetSoundVolume(snd2,120)
set fx=AddSpecialEffect("Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl",GetUnitX(gBall),GetUnitY(gBall))
call DestroyEffect(fx)
endif
endfunction
function startPhys takes nothing returns nothing
set inPlay=true
set countdown=false
call MoveLightningEx(light,false,0,0,0,0,0,0)
call TimerStart(time,.03,true,function p)
endfunction
endlibrary
//TESH.scrollpos=0
//TESH.alwaysfold=0
library launchBall requires ballPhysics
globals
timer timeTilLaunch=CreateTimer()
endglobals
private function s takes nothing returns nothing
local real theta=Atan(GetUnitY(gBall)/GetUnitX(gBall))
set theta=theta+bj_PI/4
call PauseTimer(timeTilLaunch)
set liveXc=startPow*Cos(theta)*Sin(startArc)
set liveYc=startPow*Sin(theta)*Sin(startArc)
set liveZcPrime=startPow*Cos(startArc)
call SetUnitTimeScale(gBall,Sin(startArc))
call startPhys()
endfunction
function launch takes nothing returns nothing
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"The |cff999999potato|r will launch in |cff9999995|r seconds!")
set startHeight=GetRandomReal(150,350)
set startArc=GetRandomReal(8,12)*bj_DEGTORAD
set startPow=GetRandomReal(4,6)*1.25
set rotSpeed=GetRandomReal(5,10)*bj_DEGTORAD
call SetUnitFlyHeight(gBall,startHeight,0)
call SetUnitX(gBall,startHeight*Tan(startArc))
call SetUnitTimeScale(gBall,2)
call SetUnitFacing(gBall,GetRandomReal(0,360))
call TimerStart(timeTilLaunch,5,false,function s)
set countdown=true
endfunction
endlibrary
//TESH.scrollpos=13
//TESH.alwaysfold=0
library throwUnit
private struct throwDat
unit u
real xV
real yV
real pow
endstruct
globals
private throwDat array throwDB
private timer time=CreateTimer()
private integer dbIndex=-1
endglobals
private function p takes nothing returns nothing
local integer index=0
local effect fx
local throwDat tempDat
loop
exitwhen index>dbIndex
set tempDat=throwDB[index]
call SetUnitX(tempDat.u,GetUnitX(tempDat.u)+tempDat.pow*tempDat.xV)
call SetUnitY(tempDat.u,GetUnitY(tempDat.u)+tempDat.pow*tempDat.yV)
set tempDat.pow=tempDat.pow-.5
if tempDat.pow>7 then
set fx=AddSpecialEffect("Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl",GetUnitX(tempDat.u),GetUnitY(tempDat.u))
call DestroyEffect(fx)
endif
if tempDat.pow<0 then
set throwDB[index]=throwDB[dbIndex]
set dbIndex=dbIndex-1
if dbIndex==-1 then
call PauseTimer(time)
endif
endif
set index=index+1
endloop
endfunction
function throwUnit takes unit u, real direction, real power returns nothing
local throwDat tempDat=throwDat.create()
set tempDat.u=u
set tempDat.xV=Cos(direction)
set tempDat.yV=Sin(direction)
set tempDat.pow=power
set dbIndex=dbIndex+1
set throwDB[dbIndex]=tempDat
if dbIndex==0 then
call TimerStart(time,.03,true,function p)
endif
endfunction
endlibrary
//TESH.scrollpos=45
//TESH.alwaysfold=0
scope init initializer i
globals
constant real GRAVITY=-.98*.03*1.5
private constant integer LAUNCHERID='e002'
private constant integer BALLID='e000'
private constant integer SPOTTERID='e001'
private constant integer SPOTTER2ID='e005'
private constant integer COMPETITOR='h001'
integer roundNum=1
integer theMins=0
integer totRounds=3
boolean inPlay=false
boolean countdown=true
unit array competitor
unit gBall
unit gSpotter
unit gSpotter2
real liveXc=0
real liveYc=0
real liveZcPrime=0
real startHeight
real startArc
real startPow
real rotSpeed
real theTime=0
endglobals
private function c takes nothing returns boolean
local integer index=0
loop
exitwhen index>3
if GetLocalPlayer()==Player(index) then
call SelectUnit(competitor[index],true)
endif
set index=index+1
endloop
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
local unit u=CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE),LAUNCHERID,0,0,270)
local integer index=0
call TriggerRegisterTimerEvent(t,.5,false)
call TriggerAddCondition(t,Condition(function c))
loop
exitwhen index>3
if GetPlayerSlotState(Player(index))==PLAYER_SLOT_STATE_PLAYING then
set competitor[index]=CreateUnit(Player(index),COMPETITOR,256*(index+1)-640,0,270)
endif
set index=index+1
endloop
call EnableDragSelect(false,false)
call EnablePreSelect(false,false)
call UnitAddAbility(u,'Aloc')
call SetUnitPathing(u,false)
call PauseUnit(u,true)
call SetUnitInvulnerable(u,true)
set gBall=CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE),BALLID,0,0,270)
call UnitAddAbility(gBall,'Aloc')
call SetUnitPathing(gBall,false)
call SetUnitInvulnerable(gBall,true)
call PauseUnit(gBall,true)
call UnitAddAbility(gBall,'Arav')
call SetUnitFlyHeight(gBall,400,0)
set gSpotter=CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE),SPOTTERID,0,0,270)
call UnitAddAbility(gSpotter,'Aloc')
call SetUnitPathing(gSpotter,false)
set gSpotter2=CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE),SPOTTER2ID,0,0,270)
call UnitAddAbility(gSpotter2,'Aloc')
call SetUnitPathing(gSpotter,false)
call launch()
call FogEnable(false)
call FogMaskEnable(false)
call SetUnitX(u,0)
call SetUnitY(u,0)
call SetFloatGameState(GAME_STATE_TIME_OF_DAY,15)
call SetTimeOfDayScale(0)
set t=null
set u=null
endfunction
endscope
//TESH.scrollpos=12
//TESH.alwaysfold=0
scope jump initializer i
private struct jumpDat
unit u
real power
real xV=0
real yV=0
endstruct
globals
private integer dbIndex=-1
private jumpDat array jumpDB
private timer time=CreateTimer()
endglobals
private function p takes nothing returns nothing
local jumpDat tempDat
local integer index=0
loop
exitwhen index>dbIndex
set tempDat=jumpDB[index]
call SetUnitFlyHeight(tempDat.u,GetUnitFlyHeight(tempDat.u)+tempDat.power,0)
set tempDat.power=tempDat.power-.7 //LALALALA
if tempDat.power<0 and GetUnitFlyHeight(tempDat.u)<1 then
call SetUnitMoveSpeed(tempDat.u,270)
call SetUnitTimeScale(tempDat.u,1)
call UnitRemoveAbility(tempDat.u,'Arav')
set jumpDB[index]=jumpDB[dbIndex]
set dbIndex=dbIndex-1
if dbIndex==-1 then
call PauseTimer(time)
endif
endif
set index=index+1
endloop
endfunction
private function c takes nothing returns boolean
local jumpDat tempDat
if GetSpellAbilityId()=='A002' then
set tempDat=jumpDat.create()
set tempDat.u=GetSpellAbilityUnit()
set tempDat.power=12
call UnitAddAbility(tempDat.u,'Arav')
call UnitRemoveAbility(tempDat.u,'Arav')
call SetUnitState(tempDat.u,UNIT_STATE_MANA,0)
call SetUnitMoveSpeed(tempDat.u,135)
call SetUnitTimeScale(tempDat.u,.5)
set dbIndex=dbIndex+1
set jumpDB[dbIndex]=tempDat
if dbIndex==0 then
call TimerStart(time,.03,true,function p)
endif
endif
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_CAST)
call TriggerAddCondition(t,Condition(function c))
endfunction
endscope
//TESH.scrollpos=3
//TESH.alwaysfold=0
scope forcefield initializer i
globals
private group grp=CreateGroup()
private unit tempUnit
endglobals
private function f takes nothing returns boolean
local real dir
if GetUnitTypeId(GetFilterUnit())!='e003' then
set dir=Atan2(GetUnitY(GetFilterUnit())-GetUnitY(tempUnit),GetUnitX(GetFilterUnit())-GetUnitX(tempUnit))
call throwUnit(GetFilterUnit(),dir,10)
endif
return false
endfunction
private function c takes nothing returns boolean
local location loc
local unit ff
if GetSpellAbilityId()=='A000' then
set loc=GetSpellTargetLoc()
call SetUnitState(GetTriggerUnit(),UNIT_STATE_MANA,0)
set ff=CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE),'e003',GetLocationX(loc),GetLocationY(loc),GetRandomReal(0,360))
set tempUnit=ff
call GroupEnumUnitsInRange(grp,GetUnitX(ff),GetUnitY(ff),140,Filter(function f))
call SetUnitX(ff,GetLocationX(loc))
call SetUnitY(ff,GetLocationY(loc))
call SetUnitVertexColor(ff,0,0,0,155)
call UnitApplyTimedLife(ff,'BTLF',10)
set loc=null
endif
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_CAST)
call TriggerAddCondition(t,Condition(function c))
set t=null
endfunction
endscope
//TESH.scrollpos=6
//TESH.alwaysfold=0
scope fireball initializer i
private struct fireDat
unit ball
real steps=0
real xV
real yV
player owner
endstruct
globals
private timer time=CreateTimer()
private fireDat array fireDB
private integer dbIndex=-1
private group grp=CreateGroup()
private unit tempBall
private player tempOwner
private boolean tempHit=false
endglobals
private function f takes nothing returns boolean
local real dir
local unit fU=GetFilterUnit()
if (IsUnitEnemy(fU,tempOwner) or GetUnitTypeId(fU)=='e003') and GetUnitFlyHeight(fU)<70 and GetUnitTypeId(fU)!='e004' and GetUnitState(fU,UNIT_STATE_LIFE)>=0 then
set tempHit=true
set dir=Atan2(GetUnitY(fU)-GetUnitY(tempBall),GetUnitX(fU)-GetUnitX(tempBall))
if GetUnitTypeId(fU)=='h001' then
call throwUnit(fU,dir,20)
endif
endif
set fU=null
return false
endfunction
private function p takes nothing returns nothing
local integer index=0
local fireDat tempDat
loop
exitwhen index>dbIndex
set tempDat=fireDB[index]
call SetUnitX(tempDat.ball,GetUnitX(tempDat.ball)+tempDat.xV)
call SetUnitY(tempDat.ball,GetUnitY(tempDat.ball)+tempDat.yV)
set tempDat.steps=tempDat.steps+1
set index=index+1
set tempOwner=tempDat.owner
set tempBall=tempDat.ball
call GroupEnumUnitsInRange(grp,GetUnitX(tempDat.ball),GetUnitY(tempDat.ball),60,Filter(function f))
if (tempDat.steps>100 or tempHit or IsTerrainPathable(GetUnitX(tempDat.ball),GetUnitY(tempDat.ball),PATHING_TYPE_WALKABILITY)) and GetUnitState(tempDat.ball,UNIT_STATE_LIFE)>1 then
set tempHit=false
call KillUnit(tempDat.ball)
set fireDB[index]=fireDB[dbIndex]
set dbIndex=dbIndex-1
endif
endloop
if dbIndex==-1 then
call PauseTimer(time)
endif
endfunction
private function c takes nothing returns boolean
local unit tU
local fireDat tempDat
if GetSpellAbilityId()=='A001' then
set tU=GetTriggerUnit()
set tempDat=fireDat.create()
set tempDat.ball=CreateUnit(GetOwningPlayer(tU),'e004',GetUnitX(tU),GetUnitY(tU),GetUnitFacing(tU))
call UnitAddAbility(tempDat.ball,'Aloc')
set tempDat.owner=GetOwningPlayer(tU)
set tempDat.xV=10*Cos(GetUnitFacing(tU)*bj_DEGTORAD)
set tempDat.yV=10*Sin(GetUnitFacing(tU)*bj_DEGTORAD)
set dbIndex=dbIndex+1
set fireDB[dbIndex]=tempDat
if dbIndex==0 then
call TimerStart(time,.03,true,function p)
endif
endif
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t,Condition(function c))
endfunction
endscope
//TESH.scrollpos=0
//TESH.alwaysfold=0
scope reset initializer i
globals
private boolean gameIsOver=false
endglobals
private function c takes nothing returns boolean
if inPlay==false and countdown==false then
if roundNum<totRounds then
call launch()
set roundNum=roundNum+1
elseif gameIsOver==false then
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,9999,"|c00FFFFFFG|r|c00E4E6F2a|r|c00CACDE6m|r|c00AFB3D9e|r|c00959ACD |r|c007A81C0O|r|c006068B4v|r|c00454EA7e|r|c002B359Br|r|c00101C8E!")
set gameIsOver=true
call SetUnitTimeScale(gBall,0)
call SetCameraTargetController(gBall,0,0,true)
call SetCameraField(CAMERA_FIELD_TARGET_DISTANCE,600,0)
call PauseGame(true)
if aScore>bScore then
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"|c00FFFFFFT|r|c00EACCCCe|r|c00D69999a|r|c00C16666m|r|c00AD3333 |r|c00980000A|r has won the game!")
elseif bScore>aScore then
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"|c00FFFFFFT|r|c00D1E8CCe|r|c00A3D199a|r|c0074BA66m|r|c0046A333 |r|c00188C00B|r has won the game!")
else
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"The Game was a tie! (The |cff999999potato|r won)")
endif
endif
endif
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterTimerEvent(t,.5,true)
call TriggerAddCondition(t,Condition(function c))
set t=null
endfunction
endscope
//TESH.scrollpos=0
//TESH.alwaysfold=0
scope rotInCountdown initializer i
globals
private constant real LAUNCHERHEIGHT=100
lightning light=AddLightningEx("LEAS",false,0,0,LAUNCHERHEIGHT,0,0,500)
endglobals
private function c takes nothing returns boolean
local real theta
local real modifier
local multiboarditem mbi=MultiboardGetItem(mb,1,0)
call SetUnitX(gSpotter,GetUnitX(gBall)+GetUnitFlyHeight(gBall)*.5-45.5)
call SetUnitY(gSpotter,GetUnitY(gBall)-45.5)
call SetUnitX(gSpotter2,GetUnitX(gBall)+GetUnitFlyHeight(gBall)*.5)
call SetUnitY(gSpotter2,GetUnitY(gBall))
set theTime=theTime+.03
if theTime>=60. then
set theTime=theTime-60.
set theMins=theMins+1
endif
call MultiboardSetItemValue(mbi,I2S(theMins)+"' "+R2S(theTime)+"''")
set mbi=MultiboardGetItem(mb,1,3)
call MultiboardSetItemValue(mbi,R2S(liveZcPrime))
if countdown==true then
set theta=Atan2(GetUnitY(gBall),GetUnitX(gBall))
set theta=theta+rotSpeed
call SetUnitX(gBall,startHeight*Tan(startArc)*Cos(theta))
call SetUnitY(gBall,startHeight*Tan(startArc)*Sin(theta))
call MoveLightningEx(light,true,0,0,LAUNCHERHEIGHT,GetUnitX(gBall)-16,GetUnitY(gBall)-16,GetUnitFlyHeight(gBall)-16)
set modifier=TimerGetRemaining(timeTilLaunch)
set modifier=modifier/5
call SetLightningColor(light,1,modifier,modifier,1)
endif
call MultiboardReleaseItem(mbi)
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterTimerEvent(t,.03,true)
call TriggerAddCondition(t,Condition(function c))
endfunction
endscope
//TESH.scrollpos=3
//TESH.alwaysfold=0
scope dialogStart initializer i
globals
private dialog diag=DialogCreate()
private button aThree=DialogAddButton(diag,"Three",0)
private button aFive=DialogAddButton(diag,"Five",0)
private button aSeven=DialogAddButton(diag,"Seven",0)
endglobals
private function d takes nothing returns boolean
if GetClickedButton()==aThree then
set totRounds=3
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"Rounds: |cff9999993|r")
elseif GetClickedButton()==aFive then
set totRounds=5
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"Rounds: |cff9999995|r")
elseif GetClickedButton()==aSeven then
set totRounds=7
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"Rounds: |cff9999997|r")
endif
call PauseGame(false)
return false
endfunction
private function c takes nothing returns boolean
local trigger t=CreateTrigger()
call TriggerRegisterDialogEvent(t,diag)
call TriggerAddCondition(t,Condition(function d))
call PauseGame(true)
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"|cffFF0000"+GetPlayerName(Player(0))+"|r will now choose the number of rounds.")
call DialogDisplay(Player(0),diag,true)
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterTimerEvent(t,.01,false)
call TriggerAddCondition(t,Condition(function c))
endfunction
endscope
//TESH.scrollpos=0
//TESH.alwaysfold=0
scope playerLeaves initializer i
private function c takes nothing returns boolean
call DisplayTextToPlayer(GetLocalPlayer(),0,0,GetPlayerName(GetTriggerPlayer())+"|c00FFFFFF |r|c07F1F1F1h|r|c0EE3E3E3a|r|c15D4D4D4s|r|c1BC6C6C6 |r|c22B8B8B8l|r|c29AAAAAAe|r|c309C9C9Cf|r|c378E8E8Et|r|c3E7F7F7F |r|c44717171t|r|c4B636363h|r|c52555555e|r|c59474747 |r|c60393939g|r|c672A2A2Aa|r|c6D1C1C1Cm|r|c740E0E0Ee|r|c7B000000.|r")
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
local integer index=0
loop
exitwhen index>3
call TriggerRegisterPlayerEvent(t,Player(index),EVENT_PLAYER_LEAVE)
set index=index+1
endloop
call TriggerAddCondition(t,Condition(function c))
endfunction
endscope
//TESH.scrollpos=0
//TESH.alwaysfold=0
scope mbCreate initializer i
globals
multiboard mb
integer aScore=0
integer bScore=0
endglobals
private function c takes nothing returns boolean
local multiboarditem mbi
set mb=CreateMultiboard()
call MultiboardSetColumnCount(mb,4)
call MultiboardSetRowCount(mb,2)
call MultiboardSetItemsStyle(mb,true,false)
call MultiboardSetTitleText(mb,"Score: "+I2S(aScore)+":"+I2S(bScore))
set mbi=MultiboardGetItem(mb,0,0)
call MultiboardSetItemValue(mbi,"|cff999999Time:|r")
set mbi=MultiboardGetItem(mb,0,1)
call MultiboardSetItemValue(mbi,"|cff999999Ball xVel:|r")
set mbi=MultiboardGetItem(mb,0,2)
call MultiboardSetItemValue(mbi,"|cff999999Ball yVel:|r")
set mbi=MultiboardGetItem(mb,0,3)
call MultiboardSetItemValue(mbi,"|cff999999Ball zVel:|r")
call MultiboardReleaseItem(mbi)
call MultiboardSetItemWidthBJ(mb,1,0,6)
call MultiboardSetItemWidthBJ(mb,2,0,5)
call MultiboardSetItemWidthBJ(mb,3,0,5)
call MultiboardSetItemWidthBJ(mb,4,0,5)
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterTimerEvent(t,.01,false)
call TriggerAddCondition(t,Condition(function c))
endfunction
endscope
//TESH.scrollpos=0
//TESH.alwaysfold=0
scope mBshow initializer i
private function c takes nothing returns boolean
call MultiboardDisplay(mb,true)
call MultiboardMinimize(mb,true)
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterTimerEvent(t,1,false)
call TriggerAddCondition(t,Condition(function c))
endfunction
endscope
//TESH.scrollpos=0
//TESH.alwaysfold=0
scope mbWork initializer i
private function c takes nothing returns boolean
local multiboarditem mbi
call MultiboardSetTitleText(mb,"|cffffffffScore|r: |cff990000"+I2S(aScore)+"|r:|cff009900"+I2S(bScore)+"|r; |cffffffffRound|r: "+I2S(roundNum)+"/"+I2S(totRounds))
set mbi=MultiboardGetItem(mb,1,1)
call MultiboardSetItemValue(mbi,R2S(liveXc))
set mbi=MultiboardGetItem(mb,1,2)
call MultiboardSetItemValue(mbi,R2S(liveYc))
return false
endfunction
private function i takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterTimerEvent(t,.25,true)
call TriggerAddCondition(t,Condition(function c))
endfunction
endscope