globals
force E=null
unit array X
integer array O
// this makes me think hmmm wonder what this integer array is storing, could //be > thousands of things, right?
rect array I
rect array A
integer B=0
quest C=null
integer array J
//heres another integer array, thats a possible determination of code saver
group K=null
string array M
string array P
boolean array q
group Q=null
integer array S
// code saver? ( hmm its S, but then again its randomized, by vexorian.)
integer array U
//more code savers, etc etc lets scroll down to endglobals and search through //functions from now on, actually, lets go ahead and search for -save, i will //find it right off through tlooking what integers it uses obviously anyone //knows that with a head! come on risker, here is your tutorial. or anyones! //thru a war3map.j this is fun hehe
integer array w
// wtf theres no -save? whats the exp command in this map... now i gotta //scroll through every single function main and see what is wrong, ok un //derstand? cause function main is where chat commands activate things, ie //-exp -save -saved -s -penis ok ok ok lol ok lets go to function main now //with search
integer W=0
integer Y=0
integer Z=0
location array vv
boolean array ev
group xv=null
rect array ov
integer rv=0
integer iv=0
location array av
gamecache nv=null
gamecache Vv=null
integer array Ev
integer array Xv
player Ov=null
string Rv=""
integer Iv=0
string array Av
integer array Nv
boolean array bv
item array Bv
integer cv=0
boolean Cv=false
unit dv=null
integer Dv=0
integer fv=0
boolean array Fv
boolean array gv
group Gv=null
integer array hv
integer Hv=0
sound array jv
group Jv=null
unit kv=null
group Kv=null
integer lv=0
sound array Lv
rect array mv
boolean array Mv
dialog pv=null
button Pv=null
button qv=null
button Qv=null
button sv=null
boolean Sv=false
boolean tv=false
item array Tv
boolean uv=false
boolean Uv=false
boolean wv=false
group Wv=null
integer yv=0
unit Yv=null
integer array zv
integer Zv=0
boolean ve=false
force ee=null
force xe=null
force oe=null
integer array re
multiboard ie=null
group ae=null
unit array ne
unit Ve=null
integer Ee=0
unit Xe=null
integer Oe=0
group Re=null
rect Ie=null
group Ae=null
integer Ne=0
item array be
location array Be
boolean array ce
group Ce=null
integer array de
integer array De
unit array fe
boolean array Fe
boolean array ge
integer array Ge
sound array he
group He=null
button je=null
group Je=null
group ke=null
integer Ke=0
integer le=0
integer Le=0
integer array me
integer array Me
unit pe=null
group Pe=null
group qe=null
integer Qe=0
force se=null
group Se=null
group te=null
group Te=null
real array ue
gamecache Ue=null
integer We=0
unit ye=null
unit Ye=null
real ze=0
location Ze=null
integer vx=0
integer ex=0
string array xx
group ox=null
integer array rx
integer array ax
string array Vx
integer array Ex
weathereffect Xx=null
boolean Ox=false
integer array Rx
force Ix=null
force Ax=null
integer Nx=0
integer Bx=0
integer array cx
weathereffect Cx=null
boolean Dx=false
location array Fx
location gx=null
group Gx=null
integer hx=0
rect array Hx
integer array jx
integer Jx=0
group kx=null
unit Kx=null
boolean lx=false
integer Lx=0
boolean array Mx
unit Px=null
boolean qx=false
integer Qx=0
button Sx=null
boolean Tx=false
integer array ux
integer array Ux
rect array wx
integer array Wx
integer yx=0
force array Yx
rect array zx
integer array Zx
integer array vo
integer array eo
string array xo
integer array oo
group ro=null
unit io=null
item ao=null
group no=null
group Vo=null
boolean Eo=false
boolean Xo=false
real Oo=0
boolean array Ro
real Io=0
integer array Ao
boolean No=false
sound array bo
real Bo=0
unit co=null
location Co=null
timer do=null
button Do=null
group array fo
boolean Fo=false
integer go=0
timer Go=null
unit ho=null
rect Ho=null
group jo=null
boolean Jo=false
integer ko=0
boolean Ko=false
integer lo=0
sound array Lo
sound array mo
unit Mo=null
boolean po=false
sound array Po
boolean qo=false
real Qo=0
rect so=null
boolean So=false
lightning to=null
real To=0
real uo=0
timer Uo=null
timer wo=null
boolean Wo=false
unit yo=null
unit Yo=null
integer zo=0
player array Zo
integer vr=0
real er=0
rect xr=null
real rr=0
real ir=0
integer ar=0
boolean nr=false
integer Vr=0
boolean Er=false
boolean Xr=false
boolean Rr=false
string Ir=""
quest Ar=null
boolean Nr=false
integer br=0
dialog Br=null
button Cr=null
button dr=null
button Dr=null
unit array fr
item Fr=null
integer array Gr
integer array hr
unit array Hr
timer jr=null
boolean array Jr
boolean kr=false
rect array Kr
boolean lr=false
boolean Lr=false
group mr=null
group Mr=null
unit pr=null
group array Pr
integer array qr
boolean array Qr
boolean array sr
gamecache Sr=null
integer tr=0
integer array Tr
boolean array ur
force Ur=null
timer array wr
player Wr=null
boolean yr=false
group Yr=null
rect array zr
real Zr=0
rect vi=null
rect ei=null
rect xi=null
rect oi=null
rect ri=null
rect ii=null
rect ai=null
rect ni=null
rect Vi=null
rect Ei=null
rect Xi=null
rect Oi=null
rect Ri=null
rect Ii=null
rect Ai=null
rect Ni=null
rect bi=null
rect Bi=null
rect ci=null
rect Ci=null
rect di=null
rect Di=null
rect fi=null
rect Fi=null
rect gi=null
rect Gi=null
rect hi=null
rect Hi=null
rect ji=null
rect Ji=null
rect Ki=null
rect li=null
rect Li=null
rect mi=null
rect Mi=null
rect pi=null
rect Pi=null
rect qi=null
rect Qi=null
rect si=null
rect Si=null
rect ti=null
rect Ti=null
rect ui=null
rect Ui=null
rect wi=null
rect Wi=null
rect yi=null
rect Yi=null
rect zi=null
rect Zi=null
rect va=null
rect ea=null
rect xa=null
rect oa=null
rect ra=null
rect ia=null
rect aa=null
rect na=null
rect Va=null
rect Ea=null
rect Xa=null
rect Oa=null
rect Ra=null
rect Ia=null
rect Aa=null
rect Na=null
rect ba=null
rect Ba=null
rect ca=null
rect Ca=null
rect da=null
rect Da=null
rect fa=null
rect Fa=null
rect ga=null
rect Ga=null
rect ha=null
rect Ha=null
rect ja=null
rect Ja=null
rect ka=null
rect Ka=null
rect la=null
rect La=null
rect ma=null
rect Ma=null
rect pa=null
rect Pa=null
rect qa=null
rect Qa=null
rect sa=null
rect Sa=null
rect ta=null
rect Ta=null
rect ua=null
rect Ua=null
rect Wa=null
rect ya=null
rect Ya=null
rect za=null
rect Za=null
rect vn=null
rect en=null
rect xn=null
rect on=null
rect an=null
rect nn=null
rect Vn=null
rect En=null
rect Xn=null
rect On=null
rect Rn=null
rect In=null
rect An=null
rect Nn=null
rect bn=null
rect Bn=null
rect cn=null
rect Cn=null
rect dn=null
rect Dn=null
rect fn=null
rect Fn=null
rect gn=null
rect Gn=null
rect hn=null
rect Hn=null
rect jn=null
rect Jn=null
rect kn=null
rect Kn=null
rect ln=null
rect Ln=null
rect mn=null
rect Mn=null
rect pn=null
rect Pn=null
rect qn=null
rect Qn=null
rect sn=null
rect Sn=null
rect tn=null
rect Tn=null
rect Un=null
rect wn=null
rect Wn=null
rect yn=null
rect Yn=null
rect zn=null
rect Zn=null
rect vV=null
camerasetup eV=null
camerasetup xV=null
sound oV=null
sound rV=null
sound iV=null
sound aV=null
sound nV=null
sound VV=null
sound EV=null
sound XV=null
sound OV=null
sound RV=null
sound IV=null
sound AV=null
sound NV=null
sound bV=null
sound BV=null
sound cV=null
sound CV=null
sound dV=null
sound DV=null
sound fV=null
sound FV=null
sound gV=null
sound GV=null
sound hV=null
sound HV=null
sound jV=null
sound JV=null
sound kV=null
sound KV=null
sound lV=null
sound LV=null
sound mV=null
sound MV=null
sound pV=null
sound PV=null
sound qV=null
sound QV=null
sound sV=null
sound SV=null
sound tV=null
sound TV=null
sound uV=null
sound UV=null
sound wV=null
sound WV=null
sound yV=null
sound YV=null
sound zV=null
sound ZV=null
sound vE=null
sound eE=null
sound xE=null
sound oE=null
sound rE=null
sound iE=null
sound aE=null
sound nE=null
sound VE=null
sound EE=null
sound XE=null
sound OE=null
sound RE=null
sound IE=null
sound AE=null
sound NE=null
sound bE=null
sound BE=null
sound cE=null
sound CE=null
sound dE=null
sound DE=null
sound fE=null
sound FE=null
sound gE=null
sound GE=null
sound hE=null
sound HE=null
sound jE=null
sound JE=null
sound kE=null
sound KE=null
sound lE=null
sound LE=null
sound mE=null
sound ME=null
sound pE=null
sound PE=null
sound qE=null
sound QE=null
sound sE=null
sound SE=null
sound tE=null
sound TE=null
sound uE=null
sound UE=null
sound wE=null
sound WE=null
sound yE=null
sound YE=null
sound zE=null
sound ZE=null
sound vX=null
sound eX=null
sound xX=null
sound oX=null
sound rX=null
sound iX=null
sound aX=null
sound nX=null
sound VX=null
sound EX=null
sound XX=null
sound OX=null
sound RX=null
sound IX=null
sound AX=null
sound NX=null
sound bX=null
sound BX=null
sound cX=null
sound CX=null
sound dX=null
sound DX=null
sound fX=null
sound FX=null
sound gX=null
sound GX=null
sound hX=null
sound HX=null
sound jX=null
sound JX=null
sound kX=null
sound KX=null
sound lX=null
sound LX=null
sound mX=null
sound MX=null
sound pX=null
sound PX=null
sound qX=null
trigger QX=null
trigger sX=null
trigger SX=null
trigger tX=null
trigger TX=null
trigger uX=null
trigger UX=null
trigger wX=null
trigger WX=null
trigger yX=null
trigger YX=null
trigger zX=null
trigger ZX=null
trigger vO=null
trigger eO=null
trigger xO=null
trigger oO=null
trigger rO=null
trigger iO=null
trigger aO=null
trigger nO=null
trigger VO=null
trigger EO=null
trigger XO=null
trigger OO=null
trigger RO=null
trigger IO=null
trigger AO=null
trigger NO=null
trigger bO=null
trigger BO=null
trigger cO=null
trigger CO=null
trigger dO=null
trigger DO=null
trigger fO=null
trigger FO=null
trigger gO=null
trigger GO=null
trigger hO=null
trigger HO=null
trigger jO=null
trigger JO=null
trigger kO=null
trigger KO=null
trigger lO=null
trigger LO=null
trigger mO=null
trigger MO=null
trigger pO=null
trigger PO=null
trigger qO=null
trigger QO=null
trigger sO=null
trigger SO=null
trigger tO=null
trigger TO=null
trigger uO=null
trigger UO=null
trigger wO=null
trigger WO=null
trigger yO=null
trigger YO=null
trigger zO=null
trigger ZO=null
trigger vR=null
trigger eR=null
trigger xR=null
trigger oR=null
trigger rR=null
trigger iR=null
trigger aR=null
trigger nR=null
trigger VR=null
trigger ER=null
trigger XR=null
trigger OR=null
trigger RR=null
trigger IR=null
trigger AR=null
trigger NR=null
trigger bR=null
trigger BR=null
trigger cR=null
trigger CR=null
trigger dR=null
trigger DR=null
trigger fR=null
trigger FR=null
trigger gR=null
trigger GR=null
trigger hR=null
trigger HR=null
trigger jR=null
trigger JR=null
trigger kR=null
trigger KR=null
trigger lR=null
trigger LR=null
trigger mR=null
trigger MR=null
trigger pR=null
trigger PR=null
trigger qR=null
trigger QR=null
trigger sR=null
trigger SR=null
trigger tR=null
trigger TR=null
trigger uR=null
trigger UR=null
trigger wR=null
trigger WR=null
trigger yR=null
trigger YR=null
trigger zR=null
trigger ZR=null
trigger vI=null
trigger eI=null
trigger xI=null
trigger oI=null
trigger rI=null
trigger iI=null
trigger aI=null
trigger nI=null
trigger VI=null
trigger EI=null
trigger XI=null
trigger OI=null
trigger RI=null
trigger II=null
trigger AI=null
trigger NI=null
trigger bI=null
trigger BI=null
trigger cI=null
trigger CI=null
trigger dI=null
trigger DI=null
trigger fI=null
trigger FI=null
trigger gI=null
trigger GI=null
trigger hI=null
trigger HI=null
trigger jI=null
trigger JI=null
trigger kI=null
trigger KI=null
trigger lI=null
trigger LI=null
trigger mI=null
trigger MI=null
trigger pI=null
trigger PI=null
trigger qI=null
trigger QI=null
trigger sI=null
trigger SI=null
trigger tI=null
trigger TI=null
trigger uI=null
trigger UI=null
trigger wI=null
trigger WI=null
trigger yI=null
trigger YI=null
trigger zI=null
trigger ZI=null
trigger vA=null
trigger eA=null
trigger xA=null
trigger oA=null
trigger rA=null
trigger iA=null
trigger aA=null
trigger nA=null
trigger VA=null
trigger EA=null
trigger XA=null
trigger OA=null
trigger RA=null
trigger IA=null
trigger AA=null
trigger NA=null
trigger bA=null
trigger BA=null
trigger cA=null
trigger CA=null
trigger dA=null
trigger DA=null
trigger fA=null
trigger FA=null
trigger gA=null
trigger GA=null
trigger hA=null
trigger HA=null
trigger jA=null
trigger JA=null
trigger kA=null
trigger KA=null
trigger lA=null
trigger LA=null
trigger mA=null
trigger MA=null
trigger pA=null
trigger PA=null
trigger qA=null
trigger QA=null
trigger sA=null
trigger SA=null
trigger tA=null
trigger TA=null
trigger uA=null
trigger UA=null
trigger wA=null
trigger WA=null
trigger yA=null
trigger YA=null
trigger zA=null
trigger ZA=null
trigger vN=null
trigger eN=null
trigger xN=null
trigger oN=null
trigger rN=null
trigger iN=null
trigger aN=null
trigger nN=null
trigger VN=null
trigger EN=null
trigger XN=null
trigger ON=null
trigger RN=null
trigger IN=null
trigger AN=null
trigger NN=null
trigger bN=null
trigger BN=null
trigger cN=null
trigger CN=null
trigger dN=null
trigger DN=null
trigger fN=null
trigger FN=null
trigger gN=null
trigger GN=null
trigger hN=null
trigger HN=null
trigger jN=null
trigger JN=null
trigger kN=null
trigger KN=null
trigger lN=null
trigger LN=null
trigger mN=null
trigger MN=null
trigger pN=null
trigger PN=null
trigger qN=null
trigger QN=null
trigger sN=null
trigger SN=null
trigger tN=null
trigger TN=null
trigger uN=null
trigger UN=null
trigger wN=null
trigger WN=null
trigger yN=null
trigger YN=null
trigger zN=null
trigger ZN=null
trigger vb=null
trigger eb=null
trigger xb=null
trigger ob=null
trigger rb=null
trigger ib=null
trigger ab=null
trigger nb=null
trigger Vb=null
trigger Eb=null
trigger Xb=null
trigger Ob=null
trigger Rb=null
trigger Ib=null
trigger Ab=null
trigger Nb=null
trigger bb=null
trigger Bb=null
trigger cb=null
trigger Cb=null
trigger db=null
trigger Db=null
trigger fb=null
trigger Fb=null
trigger gb=null
trigger Gb=null
trigger hb=null
trigger Hb=null
trigger jb=null
trigger Jb=null
trigger kb=null
trigger Kb=null
trigger lb=null
trigger Lb=null
trigger mb=null
trigger Mb=null
trigger pb=null
trigger Pb=null
trigger qb=null
trigger Qb=null
trigger sb=null
trigger Sb=null
trigger tb=null
trigger Tb=null
trigger ub=null
trigger Ub=null
trigger wb=null
trigger Wb=null
trigger yb=null
trigger Yb=null
trigger zb=null
trigger Zb=null
trigger vB=null
trigger eB=null
trigger xB=null
trigger oB=null
trigger rB=null
trigger iB=null
trigger aB=null
trigger nB=null
trigger VB=null
unit EB=null
unit XB=null
unit OB=null
unit RB=null
unit IB=null
unit AB=null
unit NB=null
destructable bB=null
destructable BB=null
destructable cB=null
destructable CB=null
destructable dB=null
destructable DB=null
destructable fB=null
destructable FB=null
destructable gB=null
destructable GB=null
destructable hB=null
destructable HB=null
timer jB=null
real kB=.0
real KB=.0
group lB=null
force LB=null
boolexpr mB=null
endglobals
function pB takes real PB returns nothing
local real qB
local real st=TimerGetElapsed(jB)
if st<=0 then
set jB=CreateTimer()
call TimerStart(jB,0xF4240,false,null)
endif
if(PB>0)then
loop
set qB=PB-TimerGetElapsed(jB)+st
exitwhen qB<=0
if(qB>bj_POLLED_WAIT_SKIP_THRESHOLD)then
call TriggerSleepAction(.1*qB)
else
call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
endif
endloop
endif
endfunction
function QB takes location sB,real SB,real tB returns location
return Location(GetLocationX(sB)+SB*Cos(tB*bj_DEGTORAD),GetLocationY(sB)+SB*Sin(tB*bj_DEGTORAD))
endfunction
function TB takes nothing returns boolean
local destructable d=GetFilterDestructable()
local real dx=GetDestructableX(d)-kB
local real dy=GetDestructableY(d)-KB
return(dx*dx+dy*dy<=bj_enumDestructableRadius)
endfunction
function uB takes real UB,location wB,code WB returns nothing
local rect r
if(UB>=0)then
set kB=GetLocationX(wB)
set KB=GetLocationY(wB)
set bj_enumDestructableRadius=UB*UB
set r=Rect(kB-bj_enumDestructableRadius,KB-bj_enumDestructableRadius,kB+bj_enumDestructableRadius,KB+bj_enumDestructableRadius)
call EnumDestructablesInRect(r,filterEnumDestructablesInCircleBJ,WB)
call RemoveRect(r)
set r=null
endif
endfunction
function yB takes rect r,boolexpr YB returns group
set lB=CreateGroup()
call GroupEnumUnitsInRect(lB,r,YB)
call DestroyBoolExpr(YB)
return lB
endfunction
function zB takes rect r returns group
set lB=CreateGroup()
call GroupEnumUnitsInRect(lB,r,mB)
return lB
endfunction
function ZB takes rect r,player vc returns group
set lB=CreateGroup()
set bj_groupEnumOwningPlayer=vc
call GroupEnumUnitsInRect(lB,r,filterGetUnitsInRectOfPlayer)
return lB
endfunction
function ec takes real UB,location xc,boolexpr YB returns group
set lB=CreateGroup()
call GroupEnumUnitsInRangeOfLoc(lB,xc,UB,YB)
return lB
endfunction
function oc takes real UB,location xc returns group
set lB=CreateGroup()
call GroupEnumUnitsInRangeOfLoc(lB,xc,UB,mB)
return lB
endfunction
function rc takes integer ic returns group
set lB=CreateGroup()
call GroupEnumUnitsOfType(lB,UnitId2String(ic),mB)
return lB
endfunction
function nc takes player vc,boolexpr YB returns group
set lB=CreateGroup()
call GroupEnumUnitsOfPlayer(lB,vc,YB)
call DestroyBoolExpr(YB)
return lB
endfunction
function Vc takes player vc returns group
set lB=CreateGroup()
call GroupEnumUnitsOfPlayer(lB,vc,mB)
return lB
endfunction
function Ec takes player vc,integer ic returns group
set lB=CreateGroup()
set bj_groupEnumTypeId=ic
call GroupEnumUnitsOfPlayer(lB,vc,filterGetUnitsOfPlayerAndTypeId)
return lB
endfunction
function Xc takes player vc returns force
set LB=CreateForce()
call ForceAddPlayer(LB,vc)
return LB
endfunction
function Oc takes mapcontrol Rc returns force
local integer Ic
local player Ac
set LB=CreateForce()
set Ic=0
loop
set Ac=Player(Ic)
if GetPlayerController(Ac)==Rc then
call ForceAddPlayer(LB,Ac)
endif
set Ic=Ic+1
exitwhen Ic==16
endloop
return LB
endfunction
function Nc takes player vc returns force
set LB=CreateForce()
call ForceEnumAllies(LB,vc,mB)
return LB
endfunction
function bc takes player vc returns force
set LB=CreateForce()
call ForceEnumEnemies(LB,vc,mB)
return LB
endfunction
function Bc takes boolexpr YB returns force
set LB=CreateForce()
call ForceEnumPlayers(LB,YB)
call DestroyBoolExpr(YB)
return LB
endfunction
function cc takes integer Cc,group dc returns group
set bj_randomSubGroupGroup=CreateGroup()
set bj_randomSubGroupWant=Cc
set bj_randomSubGroupTotal=CountUnitsInGroup(dc)
if(bj_randomSubGroupWant<=0 or bj_randomSubGroupTotal<=0)then
return bj_randomSubGroupGroup
endif
set bj_randomSubGroupChance=I2R(bj_randomSubGroupWant)/ I2R(bj_randomSubGroupTotal)
call ForGroup(dc,function GetRandomSubGroupEnum)
return bj_randomSubGroupGroup
endfunction
function Dc takes itemtype fc,integer Fc returns nothing
local group g
set bj_stockPickedItemType=fc
set bj_stockPickedItemLevel=Fc
set g=CreateGroup()
call GroupEnumUnitsOfType(g,"marketplace",mB)
call ForGroup(g,function UpdateEachStockBuildingEnum)
call DestroyGroup(g)
set g=null
endfunction
function Gc takes nothing returns nothing
local integer pickedItemId
local itemtype hc
local integer Hc=0
local integer jc=0
local integer Fc
set Fc=1
loop
if(bj_stockAllowedPermanent[Fc])then
set jc=jc+1
if(GetRandomInt(1,jc)==1)then
set hc=ITEM_TYPE_PERMANENT
set Hc=Fc
endif
endif
if(bj_stockAllowedCharged[Fc])then
set jc=jc+1
if(GetRandomInt(1,jc)==1)then
set hc=ITEM_TYPE_CHARGED
set Hc=Fc
endif
endif
if(bj_stockAllowedArtifact[Fc])then
set jc=jc+1
if(GetRandomInt(1,jc)==1)then
set hc=ITEM_TYPE_ARTIFACT
set Hc=Fc
endif
endif
set Fc=Fc+1
exitwhen Fc>10
endloop
if(jc==0)then
set hc=null
return
endif
call Dc(hc,Hc)
set hc=null
endfunction
function Jc takes nothing returns nothing
call Gc()
call TimerStart(bj_stockUpdateTimer,bj_STOCK_RESTOCK_INTERVAL,true,function Gc)
endfunction
function kc takes nothing returns boolean
return true
endfunction
function Kc takes nothing returns nothing
local integer i=1
local integer p
local integer array nP
local timer t=CreateTimer()
local real array dt
local real lc
local integer Lc=0
call TimerStart(t,20.,false,null)
loop
exitwhen i>7
set dt=TimerGetElapsed(t)
call StoreInteger(Sr,"Alpha","Beta",GetPlayerId(GetLocalPlayer())+1)
call TriggerSyncStart()
call SyncStoredInteger(Sr,"Alpha","Beta")
call TriggerSyncReady()
set p=GetStoredInteger(Sr,"Alpha","Beta")-1
set nP[p]=nP[p]+1
call FlushStoredMission(Sr,"Alpha")
set dt=TimerGetElapsed(t)-dt
call PauseTimer(t)
call pB(1.)
set i=i+1
endloop
set i=0
loop
exitwhen i>=12
if nP[Lc]<nPthen
set Lc=i
endif
set i=i+1
endloop
set Wr=Player(Lc)
call DestroyTimer(t)
set t=null
set lc=(dt[1]+dt[2]+dt[3]+dt[4]+dt[5])/5.
call StartSound(qE)
call DisplayTimedTextToPlayer(GetLocalPlayer(),.0,.0,10.,"Host: "+GetPlayerName(Wr))
call DisplayTimedTextToPlayer(GetLocalPlayer(),.0,.0,10.,"Latency: "+I2S(R2I(lc*1000)))
call TriggerRegisterPlayerChatEvent(sO,Wr,"-kick",false)
endfunction
function mc takes player vc,boolean b returns nothing
if vc==GetLocalPlayer()then
if(b)then
call SetTerrainFogEx(0,2300.,4500.,.25,.0,.0,.0)
call CinematicFilterGenericBJ(4.,BLEND_MODE_MODULATE_2X,"ReplaceableTextures\CameraMasks\White_mask.blp",20.,25.,20.,75.,.0,80.,.0,25.)
else
call SetTerrainFogEx(0,350.,4000.,.55,Oo*.01,Oo*.01,Oo*.01)
call CinematicFilterGenericBJ(.5,BLEND_MODE_BLEND,"ReplaceableTextures\CameraMasks\White_mask.blp",50.,'d',50.,.0,50.,100.,50.,100.)
call CinematicFilterGenericBJ(.0,BLEND_MODE_BLEND,"ReplaceableTextures\CameraMasks\Black_mask.blp",20.,20.,20.,.0,20.,20.,20.,Io)
endif
endif
endfunction
function Mc takes nothing returns string
local integer pc=1
local integer Pc
local string qc
loop
exitwhen pc>12
if(GetPlayerSlotState(Player(pc-1))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerController(Player(pc-1))==MAP_CONTROL_USER)then
set Pc=pc-1
set qc=I2S(Pc)
set pc=13
endif
set pc=pc+1
endloop
set pc=1
loop
exitwhen pc>(12-Pc)
if IsPlayerEnemy(Player(Pc),Player(pc+Pc))and IsPlayerAlly(Player(pc-1+Pc),Player(pc+Pc))==false then
set qc=qc+";"+I2S(pc+Pc)
endif
set pc=pc+1
endloop
set pc=0
set Pc=0
return qc
endfunction
function Qc takes nothing returns rect
local rect r=bj_mapInitialPlayableArea
local real sc=GetRectMaxX(r)
local real Sc=GetRectMaxY(r)
local rect qc=Rect(sc-3,Sc-3,sc,Sc)
set sc=0
set Sc=0
set r=null
return qc
endfunction
function tc takes nothing returns rect
local rect r=bj_mapInitialPlayableArea
local real Tc=GetRectMinX(r)
local real Sc=GetRectMaxY(r)
local rect qc=Rect(Tc,Sc-3,Tc+3,Sc)
set Tc=0
set Sc=0
set r=null
return qc
endfunction
function AMHS_BottomRight takes nothing returns rect
local rect r=bj_mapInitialPlayableArea
local real sc=GetRectMaxX(r)
local real uc=GetRectMinY(r)
local rect qc=Rect(sc-3,uc,sc,uc+3)
set sc=0
set uc=0
set r=null
return qc
endfunction
function AMHS_BottomLeft takes nothing returns rect
local rect r=bj_mapInitialPlayableArea
local real uc=GetRectMinY(r)
local real Tc=GetRectMinX(r)
local rect qc=Rect(Tc,uc+3,Tc+3,uc)
set Tc=0
set uc=0
set r=null
return qc
endfunction
function Uc takes player p returns real
local real qc=99999999
if GetLocalPlayer()==p then
set qc=GetCameraTargetPositionX()
endif
return qc
endfunction
function wc takes player p returns real
local real qc=99999999
if GetLocalPlayer()==p then
set qc=GetCameraTargetPositionY()
endif
return qc
endfunction
function Wc takes nothing returns boolean
local boolean qc
local integer pc=1
local real yc
local real Yc
local real x
local real y
local integer zc
set nr=false
loop
exitwhen pc>12
if GetPlayerSlotState(Player(pc-1))==PLAYER_SLOT_STATE_PLAYING and(GetPlayerController(Player(pc-1))==MAP_CONTROL_USER)then
set zc=pc-1
set pc=13
endif
set pc=pc+1
endloop
set yc=Uc(Player(zc))
set Yc=wc(Player(zc))
call PauseGame(true)
call TriggerSleepAction(0)
if yc!=99999999 and Yc!=99999999 then
call SetCameraPositionForPlayer(Player(zc),yc+1,Yc+1)
endif
call TriggerSleepAction(0)
call PauseGame(false)
set x=Uc(Player(zc))
if GetLocalPlayer()==Player(zc)then
if x==yc+1 then
set nr=false
else
set nr=true
endif
endif
if x!=99999999 then
call SetCameraPositionForPlayer(Player(zc),yc,Yc)
endif
set pc=0
set x=0
set y=0
set yc=0
set Yc=0
set zc=0
return nr
endfunction
function Zc takes nothing returns nothing
set qo=Wc()
endfunction
function vC takes nothing returns nothing
call PauseTimer(Uo)
endfunction
function eC takes nothing returns nothing
call ResumeTimer(Uo)
endfunction
function xC takes nothing returns nothing
call PauseTimer(wo)
endfunction
function AMHS_EnableInvisEngine takes nothing returns nothing
call ResumeTimer(wo)
endfunction
function InitTrig_ascii_funcs takes nothing returns nothing
endfunction
function oC takes nothing returns gamecache
call FlushGameCache(InitGameCache("arcii.vx"))
set nv=InitGameCache("arcii.vx")
return nv
endfunction
constant function rC takes nothing returns string
if(""=="")then
return"%"
endif
return""
endfunction
function iC takes string u returns integer
local string aC=" !"#$"+rC()+"&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
local string c
local integer i=0
if(u=="b")then
return 8
elseif u=="t" then
return 9
elseif u=="
" then
return 10
elseif u=="f" then
return 12
elseif u=="
" then
return 13
endif
loop
set c=SubString(aC,i,i+1)
exitwhen c==""
if c==u then
return i+32
endif
set i=i+1
endloop
return 0
endfunction
function nC takes string VC returns integer
local string k
local string u=SubString(VC,0,1)
local integer r
if(u=="")or(u==null)then
return 0
endif
if(StringCase(u,true)==u)then
set k=u
else
set k=u+"1"
endif
if HaveStoredInteger(nv,"ascii",k)then
return GetStoredInteger(nv,"ascii",k)
endif
set r=iC(u)
call StoreInteger(nv,"ascii",k,r)
return r
endfunction
function EC takes string s,integer XC returns integer
local integer OC=StringLength(s)
local integer i=0
local integer RC=0
loop
exitwhen(i>=OC)
set RC=RC+nC(SubString(s,i,i+1))
if(RC>=XC)then
set RC=RC-XC
endif
set i=i+1
endloop
return RC
endfunction
function InitTrig_Codemaker takes nothing returns nothing
endfunction
function IC takes nothing returns gamecache
call FlushGameCache(InitGameCache("codemaker"))
set Vv=InitGameCache("codemaker")
return Vv
endfunction
function AC takes integer i returns integer
return Xv
endfunction
function NC takes integer i returns integer
return Ev
endfunction
function bC takes nothing returns integer
return Xv[0]
endfunction
function BC takes nothing returns string
return I2S(GetStoredInteger(Vv,"charmaps","current"))
endfunction
function cC takes string CC,integer dC returns string
local integer i=0
local string r=""
loop
exitwhen(i>=dC)
if(SubString(CC,i,i+1)=="1")then
set r=r+"0"
else
set r=r+"1"
endif
set i=i+1
endloop
return r
endfunction
function DC takes string fC,string FC,integer n returns string
local string r=""
local string c1
local string c2
local string c3
local boolean cr=false
loop
exitwhen(n<=0)
set c1=SubString(fC,n-1,n)
set c2=SubString(FC,n-1,n)
if(c2!=c1)then
if cr then
set c3="0"
else
set c3="1"
endif
elseif(c1==c2)and(c1=="1")then
if cr then
set c3="1"
else
set c3="0"
set cr=true
endif
else
if cr then
set c3="1"
set cr=false
else
set c3="0"
endif
endif
set r=c3+r
set n=n-1
endloop
return r
endfunction
function gC takes string GC,string hC,integer dC returns string
local string r=""
local integer i=1
local integer c1=1
local integer c2=1
local integer L1=StringLength(GC)
local integer L2=StringLength(hC)
loop
exitwhen(i>dC)
if((SubString(GC,c1-1,c1)=="1")!=(SubString(hC,c2-1,c2)=="1"))then
set r=r+"1"
else
set r=r+"0"
endif
set i=i+1
set c1=c1+1
set c2=c2+1
if(c1>L1)then
set c1=1
endif
if(c2>L2)then
set c2=1
endif
endloop
return r
endfunction
function HC takes integer i,integer dC returns string
local integer jC
local string r=""
local string JC=""
if(dC<32)then
if(i<0)then
return HC(0,dC)
endif
elseif(i<0)then
set r=HC(-i,31)
set r=cC(r,31)
set r=DC(r,HC(1,31),31)
return"1"+r+JC
endif
loop
exitwhen(dC==0)
set jC=i/2
if(jC*2==i)then
set r="0"+r
else
set r="1"+r
endif
set JC="1"+JC
set i=jC
set dC=dC-1
endloop
if(i!=0)then
return JC
endif
return r
endfunction
function kC takes string CC,integer dC returns integer
local integer jC
local string ch
local integer r=0
local integer p=1
loop
exitwhen(dC<=0)
set ch=SubString(CC,dC-1,dC)
if(ch=="1")then
set r=r+p
endif
set p=p*2
set dC=dC-1
endloop
return r
endfunction
function KC takes string CC returns string
local gamecache g=Vv
local string k=BC()
local integer sz=GetStoredInteger(g,k+"bitsperchar","now")
local integer l
local integer i=0
local string ch
local string r=""
set k=k+"bin2char"
loop
set ch=SubString(CC,i,i+sz)
exitwhen(ch=="")or(ch==null)
if HaveStoredString(g,k,ch)then
set r=r+GetStoredString(g,k,ch)
else
set r=r+GetStoredString(g,k,"def")
endif
set i=i+sz
endloop
set g=null
return r
endfunction
function lC takes string LC returns string
local gamecache g=Vv
local integer i=0
local string k=BC()+"char2bin"
local string r=""
local string ch
loop
set ch=SubString(LC,i,i+1)
exitwhen(ch=="")or(ch==null)
if(StringCase(ch,true)==ch)then
set ch=ch+"1"
endif
if HaveStoredString(g,k,ch)then
set r=r+GetStoredString(g,k,ch)
else
set g=null
return""
endif
set i=i+1
endloop
set g=null
return r
endfunction
function mC takes nothing returns string
local integer n=bC()
local integer i=1
local string r=""
loop
exitwhen(i>n)
set r=r+HC(AC(i),NC(i))
set i=i+1
endloop
return r
endfunction
function MC takes string CC,integer n returns string
local integer pC=R2I(Pow(2,n))
local integer s=0
local string c
local integer i=0
loop
set c=SubString(CC,i,i+n)
exitwhen(c=="")or(c==null)
set s=ModuloInteger(s+kC(c,n),pC)
set i=i+n
endloop
return HC(s,n)
endfunction
function PC takes string CC returns string
local integer n=GetStoredInteger(Vv,BC(),"FCS")
local string qC=MC(CC,n)
return(qC+gC(CC,qC,StringLength(CC)))
endfunction
function QC takes string CC returns string
local integer sz=GetStoredInteger(Vv,BC()+"bitsperchar","now")
loop
exitwhen(ModuloInteger(StringLength(CC),sz)==0)
set CC=CC+"0"
endloop
return CC
endfunction
function sC takes string CC,player p returns string
local string in=QC(CC)
local integer i=0
local integer l=StringLength(in)
local integer tt=IMinBJ(l,31)
local string id=HC(EC(GetPlayerName(p),R2I(Pow(2,tt))),tt)
local string r=""
loop
exitwhen i>=l
if(i+tt>=l)then
set tt=l-i
endif
set r=r+gC(SubString(in,i,i+tt),id,tt)
set i=i+tt
endloop
return r
endfunction
function SC takes string CC,player p returns string
local integer i=0
local integer l=StringLength(CC)
local integer tt=IMinBJ(l,31)
local string id=HC(EC(GetPlayerName(p),R2I(Pow(2,tt))),tt)
local string r=""
loop
exitwhen i>=l
if(i+tt>=l)then
set tt=l-i
endif
set r=r+gC(SubString(CC,i,i+tt),id,tt)
set i=i+tt
endloop
return r
endfunction
function tC takes nothing returns integer
local integer i=Xv[0]
local integer r=0
loop
exitwhen(i<=0)
set r=r+Ev
set i=i-1
endloop
return r
endfunction
function TC takes nothing returns integer
local string k=BC()
local integer r=tC()+GetStoredInteger(Vv,k,"FCS")
local integer l=GetStoredInteger(Vv,k+"bitsperchar","now")
loop
exitwhen(ModuloInteger(r,l)==0)
set r=r+1
endloop
return(r/l)
endfunction
function uC takes string CC returns string
local integer n=GetStoredInteger(Vv,BC(),"FCS")
local integer T=tC()
local string UC=SubString(CC,n,n+T)
local string qC=SubString(CC,0,n)
set UC=gC(UC,qC,T)
if(MC(UC,n)!=qC)then
return""
endif
return UC
endfunction
function wC takes string CC returns integer
local integer n=bC()
local integer i=1
local integer j=0
local integer sz
local string ch
loop
exitwhen(i>n)
set sz=NC(i)
set ch=SubString(CC,j,j+sz)
if(StringLength(ch)<sz)then
return 4
endif
set Xv=kC(ch,sz)
set i=i+1
set j=j+sz
endloop
return 0
endfunction
function WC takes trigger t returns integer
return t
return 0
endfunction
function yC takes nothing returns nothing
local gamecache g=Vv
local string k=I2S(WC(GetTriggeringTrigger()))
local string YC=GetStoredString(g,k,"cmd")
local integer l=StringLength(YC)
local boolean b=false
local string zC=GetEventPlayerChatString()
local string r
if(zC==GetStoredString(g,k,"cnl"))then
call DisplayTimedTextToPlayer(GetTriggerPlayer(),0,0,2,zC)
set b=true
set r=""
elseif(SubString(zC,0,l)==YC)then
set r=SubString(zC,l,StringLength(zC))
set b=((r!=null)and(r!=""))
endif
if not(b)then
call DisplayTimedTextToPlayer(GetTriggerPlayer(),0,0,GetStoredReal(g,k,"rem"),GetStoredString(g,k,"prm"))
else
call StoreString(g,k,"result",r)
endif
set g=null
endfunction
function ZC takes nothing returns nothing
local string r
set r=mC()
set r=PC(r)
if(bj_groupEnumOwningPlayer!=null)then
set r=sC(r,bj_groupEnumOwningPlayer)
endif
set bj_lastPlayedMusic=KC(r)
endfunction
function vd takes nothing returns nothing
local player p=bj_groupEnumOwningPlayer
local string LC=bj_lastPlayedMusic
local integer T=TC()
local integer L=StringLength(LC)
set bj_groupEnumTypeId=5
if(L<T)then
set bj_groupEnumTypeId=1
else
if(L>T)then
set LC=SubString(LC,0,T)
endif
set LC=lC(LC)
if(LC=="")then
set bj_groupEnumTypeId=2
else
if(p!=null)then
set LC=SC(LC,p)
endif
set LC=uC(LC)
if(LC=="")then
set bj_groupEnumTypeId=3
else
set bj_groupEnumTypeId=wC(LC)
endif
endif
endif
set p=null
endfunction
function ed takes player p returns string
local string s=bj_lastPlayedMusic
local string r
set bj_groupEnumOwningPlayer=p
call ExecuteFunc("ZC")
set r=bj_lastPlayedMusic
set bj_lastPlayedMusic=s
return r
endfunction
function xd takes player p,string LC returns integer
local string b=bj_lastPlayedMusic
set bj_lastPlayedMusic=LC
set bj_groupEnumOwningPlayer=p
call ExecuteFunc("vd")
set bj_lastPlayedMusic=b
return bj_groupEnumTypeId
endfunction
function rd takes integer id,string ch,integer ad returns nothing
local gamecache g=Vv
local integer i=0
local integer nd=0
local integer p=1
local string c
local string k=I2S(id)
local integer Vd
local string CC
if(ad>30)then
call BJDebugMsg("|cffff0000Invalid FCS size: Must be <= 30")
call FlushGameCache(g)
set Vd=Vd
endif
call StoreBoolean(g,"charmaps",k,true)
loop
set c=SubString(ch,i,i+1)
exitwhen(c=="")
if(StringCase(c,true)==c)then
set c=c+"1"
endif
set i=i+1
if(i>p)then
set p=p*2
set nd=nd+1
endif
endloop
if(i!=p)then
call BJDebugMsg("|cffff0000Invalid charmap: Length must be a power of 2")
call FlushGameCache(g)
set Vd=Vd
endif
if(ModuloInteger(p,ad)==0)then
call BJDebugMsg("|cffff0000Invalid charmap/FCS size: FCS size can't be a multiple of the number of bits per character")
call FlushGameCache(g)
set Vd=Vd
endif
set i=0
call StoreInteger(g,k,"FCS",ad)
call StoreInteger(g,k+"bitsperchar","now",nd)
loop
exitwhen(i>=p)
set CC=HC(i,nd)
set c=SubString(ch,i,i+1)
call StoreString(g,k+"bin2char",CC,c)
if(i==0)then
call StoreString(g,k+"bin2char","def",c)
endif
if(StringCase(c,true)==c)then
set c=c+"1"
endif
call StoreString(g,k+"char2bin",c,CC)
if(i==0)then
call StoreString(g,k+"char2bin","def",CC)
endif
set i=i+1
endloop
set g=null
endfunction
function Ed takes nothing returns nothing
call rd(0,"+!*gaCBADEFGHJKLMNOPQRSTUVWXYZbcdefhjklmnopqrstuvwxzy9876543210@",7)
endfunction
function Xd takes string LC,string Od,string Rd,string Id returns string
local integer l=StringLength(LC)
local integer i=0
local string r=""
local string c
local string x
local boolean b
loop
exitwhen(i>=l)
set c=SubString(LC,i,i+1)
set x=""
loop
exitwhen(i>=l)
set b=(StringCase(c,true)==c)and(StringCase(c,false)!=c)
exitwhen not(b)
set x=x+c
set i=i+1
set c=SubString(LC,i,i+1)
endloop
if(x!="")then
set r=r+"|c"+Od+x+"|r"
endif
set x=""
loop
exitwhen(i>=l)
set b=(StringCase(c,true)!=c)and(StringCase(c,false)==c)
exitwhen not(b)
set x=x+c
set i=i+1
set c=SubString(LC,i,i+1)
endloop
if(x!="")then
set r=r+"|c"+Rd+x+"|r"
endif
set x=""
loop
exitwhen(i>=l)
set b=(StringCase(c,true)==c)and(StringCase(c,false)==c)
exitwhen not(b)
set x=x+c
set i=i+1
set c=SubString(LC,i,i+1)
endloop
if(x!="")then
set r=r+"|c"+Id+x+"|r"
endif
endloop
return r
endfunction
function Ad takes nothing returns integer
return'AInv'
endfunction
function Nd takes integer i returns real
return i
return .0
endfunction
function bd takes integer n returns integer
return ue[n]
return 0
endfunction
function Bd takes group g returns group
set bj_groupAddGroupDest=CreateGroup()
call ForGroup(g,function GroupAddGroupEnum)
return bj_groupAddGroupDest
endfunction
function Cd takes unit u,player p returns boolean
return IsUnitVisible(u,Player(13))or IsUnitVisible(u,p)
endfunction
function dd takes real x returns real
local rect r=bj_mapInitialPlayableArea
local real t=GetRectMinX(r)+50.
if(x<t)then
set x=t
else
set t=GetRectMaxX(r)-50.
if(x>t)then
set x=t
endif
endif
set r=null
return(x)
endfunction
function Dd takes real y returns real
local rect r=bj_mapInitialPlayableArea
local real t=GetRectMinY(r)+50.
if(y<t)then
set y=t
else
set t=GetRectMaxY(r)-50.
if(y>t)then
set y=t
endif
endif
set r=null
return(y)
endfunction
function fd takes unit u,real x,real y returns boolean
local rect r=bj_mapInitialPlayableArea
local real t=GetRectMinX(r)+50.
local boolean b=true
if(x<t)then
set x=t
set b=false
else
set t=GetRectMaxX(r)-50.
if(x>t)then
set b=false
set x=t
endif
endif
set t=GetRectMinY(r)+50.
if(y<t)then
set y=t
set b=false
else
set t=GetRectMaxY(r)-50.
if(y>t)then
set y=t
set b=false
endif
endif
if(b)then
call SetUnitX(u,x)
call SetUnitY(u,y)
endif
set r=null
return b
endfunction
function Fd takes nothing returns boolean
return IsUnitInRangeLoc(GetFilterUnit(),bj_enumDestructableCenter,bj_enumDestructableRadius)
endfunction
function gd takes group g,real x,real y,real Gd,boolexpr bx returns nothing
local boolexpr hd
local boolexpr Hd=Condition(function Fd)
if(bx==null)then
set hd=Hd
else
set hd=And(Hd,bx)
endif
set bj_enumDestructableCenter=Location(x,y)
set bj_enumDestructableRadius=Gd
call GroupEnumUnitsInRange(g,x,y,55.+Gd,hd)
call DestroyBoolExpr(hd)
if(bx!=null)then
call DestroyBoolExpr(Hd)
endif
call RemoveLocation(bj_enumDestructableCenter)
set Hd=null
set hd=null
endfunction
function jd takes handle h returns integer
return h
return 0
endfunction
function Jd takes nothing returns gamecache
call FlushGameCache(InitGameCache("CasterSystem.vx"))
set Ue=InitGameCache("CasterSystem.vx")
call StoreInteger(Ue,"misc","TableMaxReleasedIndex",'d')
return Ue
endfunction
function kd takes handle h,gamecache g returns integer
return GetStoredInteger(g,I2S(jd(h))+";"+GetStoredString(g,"argpass","set"),GetStoredString(g,"argpass","seti"))
endfunction
function Kd takes handle h,string ld returns integer
if(ld=="")then
return kd(h,Ue)
endif
return GetStoredInteger(Ue,I2S(jd(h)),ld)
endfunction
function pd takes handle h,string ld returns handle
return Kd(h,ld)
return null
endfunction
function Pd takes handle h,string ld returns unit
return Kd(h,ld)
return null
endfunction
function qd takes handle h,string ld returns timer
return Kd(h,ld)
return null
endfunction
function Qd takes handle h,string ld returns group
return Kd(h,ld)
return null
endfunction
function Wd takes handle h returns nothing
local gamecache g=Ue
local string k=I2S(jd(h))
local integer n=GetStoredInteger(g,k,"#totalsets")
local integer i=1
loop
exitwhen i>n
call FlushStoredMission(g,k+";"+GetStoredString(g,k,"#setName;"+I2S(i)))
set i=i+1
endloop
call FlushStoredMission(g,k)
set g=null
endfunction
function yd takes nothing returns integer
local gamecache g=Ue
local integer n=GetStoredInteger(g,"misc","FreeTableTotal")
local integer i
if(n>0)then
set i=GetStoredInteger(g,"misc","FreeTable1")
if(n>1)then
call StoreInteger(g,"misc","FreeTable1",GetStoredInteger(g,"misc","FreeTable"+I2S(n)))
call FlushStoredInteger(g,"misc","FreeTable"+I2S(n))
endif
call StoreInteger(g,"misc","FreeTableTotal",n-1)
else
set i=GetStoredInteger(g,"misc","TableMaxReleasedIndex")+1
call StoreInteger(g,"misc","TableMaxReleasedIndex",i)
endif
call StoreBoolean(g,"misc","Created"+I2S(i),true)
set g=null
return i
endfunction
function NewTable takes nothing returns string
return I2S(yd())
endfunction
function Yd takes handle h returns string
return I2S(jd(h))
endfunction
function zd takes string Zd returns nothing
local gamecache g=Ue
local integer i=S2I(Zd)
local integer n
if(i!=0)and(GetStoredBoolean(g,"misc","Created"+Zd))then
call FlushStoredBoolean(g,"misc","Created"+Zd)
set n=GetStoredInteger(g,"misc","FreeTableTotal")+1
call StoreInteger(g,"misc","FreeTableTotal",n)
call StoreInteger(g,"misc","FreeTable"+I2S(n),i)
endif
call FlushStoredMission(g,Zd)
set g=null
endfunction
function vD takes string Zd returns nothing
call FlushStoredMission(Ue,Zd)
endfunction
function eD takes string Zd,string xD,integer oD returns nothing
local gamecache g=Ue
if(oD==0)then
call FlushStoredInteger(g,Zd,xD)
else
call StoreInteger(g,Zd,xD,oD)
endif
set g=null
endfunction
function rD takes string Zd,string xD returns integer
return GetStoredInteger(Ue,Zd,xD)
endfunction
function iD takes string Zd,string xD,real oD returns nothing
local gamecache g=Ue
if(oD==0)then
call FlushStoredReal(g,Zd,xD)
else
call StoreReal(g,Zd,xD,oD)
endif
set g=null
endfunction
function aD takes string Zd,string xD returns real
return GetStoredReal(Ue,Zd,xD)
endfunction
function nD takes string Zd,string xD,boolean oD returns nothing
local gamecache g=Ue
if(not(oD))then
call FlushStoredBoolean(g,Zd,xD)
else
call StoreBoolean(g,Zd,xD,oD)
endif
set g=null
endfunction
function VD takes string Zd,string xD returns boolean
return GetStoredBoolean(Ue,Zd,xD)
endfunction
function ED takes string Zd,string xD,handle oD returns nothing
local gamecache g=Ue
if(oD==null)then
call FlushStoredInteger(g,Zd,xD)
else
call StoreInteger(g,Zd,xD,jd(oD))
endif
set g=null
endfunction
function XD takes string Zd,string xD returns widget
return GetStoredInteger(Ue,Zd,xD)
return null
endfunction
function OD takes string Zd,string xD returns unit
return GetStoredInteger(Ue,Zd,xD)
return null
endfunction
function RD takes string Zd,string xD returns effect
return GetStoredInteger(Ue,Zd,xD)
return null
endfunction
function ID takes string Zd,string xD returns trigger
return GetStoredInteger(Ue,Zd,xD)
return null
endfunction
function AD takes string Zd,string xD returns timer
return GetStoredInteger(Ue,Zd,xD)
return null
endfunction
function ND takes string Zd,string xD returns group
return GetStoredInteger(Ue,Zd,xD)
return null
endfunction
function bD takes string Zd,string xD returns triggeraction
return GetStoredInteger(Ue,Zd,xD)
return null
endfunction
function FieldData_Create takes nothing returns integer
return yd()
endfunction
function CD takes real a1,real a2,real i returns real
local real x
set a1=ModuloReal(a1,360)
set a2=ModuloReal(a2,360)
if a1>a2 then
set x=a1-360
if a1-a2>a2-x then
set a1=x
endif
else
set x=a2-360
if a2-a1>a1-x then
set a2=x
endif
endif
if a1>a2 then
set x=a1-i
if x<=a2 then
return a2
endif
return x
endif
set x=a1+i
if x>=a2 then
return a2
endif
return x
endfunction
function dD takes real DD,real x,real y returns unit
local unit m
if(x!=0)then
set x=dd(x)
endif
if(y!=0)then
set y=Dd(y)
endif
set m=CreateUnit(Player(15),'h00X',x,y,DD)
call UnitAddAbility(m,'Aloc')
call UnitAddAbility(m,'Amrf')
call UnitRemoveAbility(m,'Amrf')
set ye=m
set m=null
return ye
endfunction
function fD takes real DD returns unit
return dD(DD,0,0)
endfunction
function FD takes nothing returns unit
return dD(0,0,0)
endfunction
function gD takes timer t returns nothing
if(t!=null)then
call PauseTimer(t)
call Wd(t)
call DestroyTimer(t)
endif
endfunction
function GD takes nothing returns unit
set ye=FirstOfGroup(Te)
if ye==null then
set ye=FD()
endif
call GroupRemoveUnit(Te,ye)
call SetUnitState(ye,UNIT_STATE_MANA,1000)
return ye
endfunction
function hD takes unit HD returns nothing
if not IsUnitDeadBJ(HD)then
call ResetUnitLookAt(HD)
call SetUnitOwner(HD,Player(15),true)
call SetUnitVertexColor(HD,255,255,255,255)
call SetUnitScale(HD,1,1,1)
call SetUnitTimeScale(HD,1)
call SetUnitMoveSpeed(HD,522)
call SetUnitFlyHeight(HD,0,0)
call UnitAddAbility(HD,'Aloc')
call SetUnitTurnSpeed(HD,.6)
call GroupAddUnit(Te,HD)
endif
endfunction
function jD takes nothing returns nothing
local timer t=GetExpiredTimer()
local string k=Yd(t)
local unit c=OD(k,"c")
local integer a=rD(k,"a")
if(a!=0)then
call UnitRemoveAbility(c,a)
endif
call hD(c)
call vD(k)
call DestroyTimer(t)
set c=null
set t=null
endfunction
function JD takes unit HD,integer kD,real KD returns nothing
local timer t=CreateTimer()
local string k=Yd(t)
call ED(k,"c",HD)
if(kD!=0)then
call eD(k,"a",kD)
endif
call TimerStart(t,KD,false,function jD)
set t=null
endfunction
function lD takes nothing returns nothing
local unit HD=ye
local integer LD=We
local real KD=ue[0]
local boolean mD=(ue[1]>0)
loop
exitwhen GetUnitCurrentOrder(HD)==0
call TriggerSleepAction(0)
endloop
if(KD>0)then
if mD then
call JD(HD,LD,KD)
else
call UnitRemoveAbility(HD,LD)
call JD(HD,0,KD)
endif
else
call UnitRemoveAbility(HD,LD)
call hD(HD)
endif
set HD=null
endfunction
function MD takes unit HD,real pD,integer LD,boolean mD returns nothing
set ue[0]=pD
set ue[1]=IntegerTertiaryOp(mD,1,0)
set We=LD
set ye=HD
call ExecuteFunc("lD")
endfunction
function PD takes integer LD returns integer
local unit u=FirstOfGroup(Te)
if u==null then
set u=GD()
call UnitAddAbility(u,LD)
call UnitRemoveAbility(u,LD)
call hD(u)
else
call UnitAddAbility(u,LD)
call UnitRemoveAbility(u,LD)
endif
set u=null
return LD
endfunction
function qD takes player QD,real x,real y,real z,integer LD,integer sD,string SD,widget tD,real KD returns unit
local unit HD=GD()
local boolean TD=false
call SetUnitOwner(HD,QD,false)
call UnitAddAbility(HD,LD)
call SetUnitAbilityLevel(HD,LD,sD)
call fd(HD,x,y)
call SetUnitFlyHeight(HD,z,0)
if S2I(SD)!=0 then
set TD=IssueTargetOrderById(HD,S2I(SD),tD)
else
set TD=IssueTargetOrder(HD,SD,tD)
endif
if(KD<=0)or not(TD)then
call UnitRemoveAbility(HD,LD)
call hD(HD)
else
call MD(HD,KD,LD,true)
endif
set ye=HD
set HD=null
return ye
endfunction
function uD takes player QD,integer LD,integer sD,string SD,widget tD,boolean UD returns unit
local real x
local real y
local real d
if Ze!=null then
set x=GetLocationX(Ze)
set y=GetLocationY(Ze)
else
set x=GetWidgetX(tD)
set y=GetWidgetY(tD)
endif
if not(UD)then
set d=ze+.01
else
set d=0
endif
return qD(QD,x,y,0,LD,sD,SD,tD,d)
endfunction
function yD takes nothing returns nothing
local timer t=GetExpiredTimer()
local string k=Yd(t)
call hD(OD(k,"c"))
call vD(k)
call DestroyTimer(t)
set t=null
endfunction
function YD takes nothing returns nothing
local timer t=GetExpiredTimer()
local string k=Yd(t)
call DestroyEffect(RD(k,"fx"))
call UnitRemoveAbility(OD(k,"c"),rD(k,"a"))
call TimerStart(t,2,false,function yD)
set t=null
endfunction
function af takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(),bj_groupEnumOwningPlayer)and not(IsUnitDeadBJ(GetFilterUnit()))
endfunction
function nf takes nothing returns boolean
return IsUnitAlly(GetFilterUnit(),bj_groupEnumOwningPlayer)and not(IsUnitDeadBJ(GetFilterUnit()))
endfunction
function Of takes nothing returns nothing
call RemoveLocation(Ze)
set Ze=null
call DestroyTimer(GetExpiredTimer())
endfunction
function If takes nothing returns nothing
set ze=0
call DestroyTimer(GetExpiredTimer())
endfunction
function Af takes attacktype Nf,damagetype bf returns integer
set ue['d']=jd(Nf)
set ue['e']=jd(bf)
return 1
endfunction
function Bf takes unittype cf,real Cf returns integer
set ue['f']=jd(cf)
set ue['g']=Cf
return 2
endfunction
function df takes unittype Df returns integer
set ue['h']=jd(Df)
return 4
endfunction
function ff takes nothing returns integer
set ue['i']=0
return 64
endfunction
function Ff takes nothing returns integer
set ue['i']=1
return 64
endfunction
function DamageOnlyAllies takes nothing returns integer
set ue['i']=2
return 64
endfunction
function gf takes unittype Df returns integer
set ue['p']=jd(Df)
return 1024
endfunction
function jf takes unit u,attacktype a,damagetype d returns real
local real hp=GetWidgetLife(u)
local real Jf=GetUnitState(u,UNIT_STATE_MANA)
local real r
local unit HD=GD()
call UnitRemoveAbility(HD,'Aloc')
call fd(HD,GetUnitX(u),GetUnitY(u))
call SetUnitOwner(HD,GetOwningPlayer(u),false)
set r=hp
if(hp<1)then
call SetWidgetLife(u,1)
set r=1
endif
call UnitDamageTarget(HD,u,.01,true,false,a,d,null)
call hD(HD)
if(Jf>GetUnitState(u,UNIT_STATE_MANA))then
call SetUnitState(u,UNIT_STATE_MANA,Jf)
set r=1
else
set r=(r-GetWidgetLife(u))*'d'
endif
call SetWidgetLife(u,hp)
set HD=null
return r
endfunction
function kf takes unit u,unittype ut returns boolean
if(ut==UNIT_TYPE_GROUND)then
return not(IsUnitType(u,UNIT_TYPE_FLYING))
elseif(ut==UNIT_TYPE_RESISTANT)then
return IsUnitType(u,ut)or IsUnitType(u,UNIT_TYPE_HERO)
endif
return IsUnitType(u,ut)
endfunction
function Kf takes unit lf,unit tD,integer d returns real
local real r=1
if(d>=8192)then
set d=d-8192
elseif(d>=4096)then
if(GetWidgetLife(tD)>.405)then
return .0
endif
set d=d-4096
elseif(GetWidgetLife(tD)<=.405)then
return .0
endif
if d>=2048 then
if IsUnitAlly(tD,GetOwningPlayer(lf))then
set r=r*ue['q']
endif
set d=d-2048
endif
if d>=1024 then
if kf(tD,ConvertUnitType(R2I(ue['p'])))then
return .0
endif
set d=d-1024
endif
if d>=512 then
if GetUnitAbilityLevel(tD,bd('n'))>0 then
set r=r*ue['o']
endif
set d=d-512
endif
if d>=256 then
if GetUnitAbilityLevel(tD,bd('l'))>0 then
set r=r*ue['m']
endif
set d=d-256
endif
if d>=128 then
if GetUnitAbilityLevel(tD,bd('j'))>0 then
set r=r*ue['k']
endif
set d=d-128
endif
if d>=64 then
if(ue['i']==0)and IsUnitAlly(tD,GetOwningPlayer(lf))then
return .0
elseif(ue['i']==2)and IsUnitEnemy(tD,GetOwningPlayer(lf))then
return .0
endif
set d=d-64
endif
if d>=32 then
set d=d-32
if not Cd(tD,GetOwningPlayer(lf))then
return .0
endif
endif
if d>=16 then
set d=d-16
endif
if d>=8 then
set d=d-8
if lf==tD then
return .0
endif
endif
if d>=4 then
set d=d-4
if not kf(tD,ConvertUnitType(R2I(ue['h'])))then
return .0
endif
endif
if d>=2 then
set d=d-2
if kf(tD,ConvertUnitType(R2I(ue['f'])))then
set r=r*ue['g']
endif
endif
if d>=1 then
set d=d-1
set r=r*jf(tD,ConvertAttackType(R2I(ue['d'])),ConvertDamageType(R2I(ue['e'])))
endif
return r
endfunction
function Lf takes unit lf,unit tD,real mf,attacktype Nf,damagetype bf returns boolean
return UnitDamageTarget(lf,tD,mf,true,false,Nf,bf,null)
endfunction
function Mf takes unit lf,unit tD,real mf,integer hf returns boolean
local real f=Kf(lf,tD,hf)
if(f==0)then
return false
endif
return UnitDamageTarget(lf,tD,mf*f,true,false,null,null,null)
endfunction
function pf takes player lf,real Pf,unit qf returns boolean
local unit HD=GD()
call UnitRemoveAbility(HD,'Aloc')
call fd(HD,GetUnitX(qf),GetUnitY(qf))
call SetUnitOwner(HD,lf,false)
call Lf(HD,qf,Pf,(ATTACK_TYPE_CHAOS),(DAMAGE_TYPE_UNIVERSAL))
call hD(HD)
return GetWidgetLife(qf)<=0
endfunction
function Qf takes nothing returns nothing
local real Pf=ue[0]
local real sf=ue[2]
local effect fx=bj_lastCreatedEffect
local timer t=CreateTimer()
local unit lf=Ye
local real Sf=0
local integer i=0
local real c
local unit tD=ye
local damagetype bf=ConvertDamageType(R2I(ue[4]))
local attacktype Nf=ConvertAttackType(R2I(ue[3]))
call TimerStart(t,ue[1]-.01,false,null)
loop
if TimerGetElapsed(t)>=Sf then
exitwhen not UnitDamageTarget(lf,tD,Pf,true,false,Nf,bf,null)
exitwhen IsUnitDeadBJ(tD)
set i=i+1
set Sf=i*sf
endif
exitwhen(TimerGetRemaining(t)<=0)or IsUnitDeadBJ(tD)
call TriggerSleepAction(0)
endloop
call DestroyEffect(fx)
call DestroyTimer(t)
set t=null
set fx=null
set bf=null
set Nf=null
endfunction
function tf takes nothing returns nothing
local real Pf=ue[0]
local real sf=ue[2]
local effect fx=bj_lastCreatedEffect
local timer t=CreateTimer()
local integer id=We
local real Sf=0
local integer i=0
local real c
local unit tD=ye
call TimerStart(t,ue[1]-.01,false,null)
loop
if TimerGetElapsed(t)>=Sf then
exitwhen pf(Player(id),Pf,tD)
set i=i+1
set Sf=i*sf
endif
exitwhen(TimerGetRemaining(t)<=0)or IsUnitDeadBJ(tD)
call TriggerSleepAction(0)
endloop
call DestroyEffect(fx)
call DestroyTimer(t)
set t=null
set fx=null
endfunction
function wf takes gamecache g,integer n,integer hf returns nothing
local string Wf="DOPT"+I2S(n)
local integer d=hf
call StoreInteger(g,Wf,"value",d)
if(d>=8192)then
set d=d-8192
endif
if(d>=4096)then
set d=d-4096
endif
if d>=2048 then
call StoreReal(g,Wf,"allf",ue['q'])
set d=d-2048
endif
if d>=1024 then
call StoreInteger(g,Wf,"ign",R2I(ue['p']))
set d=d-1024
endif
if d>=512 then
call StoreInteger(g,Wf,"ab3",bd('n'))
call StoreReal(g,Wf,"fc3",ue['o'])
set d=d-512
endif
if d>=256 then
call StoreInteger(g,Wf,"ab2",bd('l'))
call StoreReal(g,Wf,"fc2",ue['m'])
set d=d-256
endif
if d>=128 then
call StoreInteger(g,Wf,"ab1",bd('j'))
call StoreReal(g,Wf,"fc1",ue['k'])
set d=d-128
endif
if d>=64 then
set d=d-64
call StoreInteger(g,Wf,"allied",R2I(ue['i']))
endif
if d>=32 then
set d=d-32
endif
if d>=16 then
set d=d-16
endif
if d>=8 then
set d=d-8
endif
if d>=4 then
call StoreInteger(g,Wf,"only",R2I(ue['h']))
set d=d-4
endif
if d>=2 then
call StoreInteger(g,Wf,"excp",R2I(ue['f']))
call StoreReal(g,Wf,"excf",ue['g'])
set d=d-2
endif
if d>=1 then
call StoreInteger(g,Wf,"attT",R2I(ue['d']))
call StoreInteger(g,Wf,"dmgT",R2I(ue['e']))
endif
endfunction
function Yf takes integer hf returns integer
local gamecache g=Ue
local integer n=GetStoredInteger(g,"misc","DOPTn")+1
call StoreInteger(g,"misc","DOPTn",n)
call wf(g,n,hf)
set g=null
return n
endfunction
function zf takes integer id returns nothing
call FlushStoredMission(Ue,"DOPT"+I2S(id))
endfunction
function Zf takes integer id returns integer
local gamecache g=Ue
local string Wf="DOPT"+I2S(id)
local integer vF=GetStoredInteger(g,Wf,"value")
local integer v=vF
if v>=8192 then
set v=v-8192
endif
if v>=4096 then
set v=v-4096
endif
if v>=2048 then
set ue['q']=GetStoredReal(g,Wf,"allf")
set v=v-2028
endif
if v>=1024 then
set ue['p']=GetStoredInteger(g,Wf,"ign")
set v=v-1024
endif
if v>=512 then
set ue['n']=Nd(GetStoredInteger(g,Wf,"ab3"))
set ue['o']=GetStoredReal(g,Wf,"fc3")
set v=v-512
endif
if v>=256 then
set ue['l']=Nd(GetStoredInteger(g,Wf,"ab2"))
set ue['m']=GetStoredReal(g,Wf,"fc2")
set v=v-256
endif
if v>=128 then
set ue['j']=Nd(GetStoredInteger(g,Wf,"ab1"))
set ue['k']=GetStoredReal(g,Wf,"fc1")
set v=v-128
endif
if v>=64 then
set v=v-64
set ue['i']=GetStoredInteger(g,Wf,"allied")
endif
if v>=32 then
set v=v-32
endif
if v>=16 then
set v=v-16
endif
if v>=8 then
set v=v-8
endif
if v>=4 then
set ue['h']=GetStoredInteger(g,Wf,"only")
set v=v-4
endif
if v>=2 then
set ue['f']=GetStoredInteger(g,Wf,"excp")
set ue['g']=GetStoredReal(g,Wf,"excf")
set v=v-2
endif
if v>=1 then
set ue['d']=GetStoredInteger(g,Wf,"attT")
set ue['e']=GetStoredInteger(g,Wf,"dmgT")
endif
set g=null
return vF
endfunction
function eF takes destructable d returns boolean
local unit c=GD()
local boolean b
local boolean i=IsDestructableInvulnerable(d)
local integer s='Aeat'
if i then
call SetDestructableInvulnerable(d,false)
endif
call UnitAddAbility(c,s)
call fd(c,GetWidgetX(d),GetWidgetY(d))
set b=(IssueTargetOrderById(c,852146,d))
call UnitRemoveAbility(c,s)
call hD(c)
set c=null
if i then
call SetDestructableInvulnerable(d,true)
endif
return b
endfunction
function xF takes destructable d returns boolean
local gamecache g=Ue
local string k=I2S(GetDestructableTypeId(d))
local boolean b
if HaveStoredBoolean(g,"trees",k)then
set b=GetStoredBoolean(g,"trees",k)
set g=null
return b
else
set b=eF(d)
call StoreBoolean(g,"trees",k,b)
endif
set g=null
return b
endfunction
function oF takes nothing returns nothing
local destructable d=GetEnumDestructable()
local unit u=ye
if(GetWidgetLife(d)>0)and not(IsDestructableInvulnerable(d))and((Pow(GetDestructableX(d)-ue[200],2)+Pow(GetDestructableY(d)-ue[201],2))<=ue[202])then
call SetWidgetLife(d,GetWidgetLife(d)-ue[203])
endif
set ye=u
set u=null
set d=null
endfunction
function rF takes real x,real y,real UB,real mf returns nothing
local rect r=Rect(x-UB,y-UB,x+UB,y+UB)
set ue[200]=x
set ue[201]=y
set ue[202]=UB*UB
set ue[203]=mf
call EnumDestructablesInRect(r,null,function oF)
call RemoveRect(r)
set r=null
endfunction
function iF takes nothing returns nothing
local destructable d=GetEnumDestructable()
if(GetWidgetLife(d)>0)and not(IsDestructableInvulnerable(d))and((Pow(GetDestructableX(d)-ue[200],2)+Pow(GetDestructableY(d)-ue[201],2))<=ue[202])and(xF(d))then
call KillDestructable(d)
endif
set d=null
endfunction
function aF takes real x,real y,real UB returns nothing
local rect r=Rect(x-UB,y-UB,x+UB,y+UB)
set ue[200]=x
set ue[201]=y
set ue[202]=UB*UB
call EnumDestructablesInRect(r,null,function iF)
call RemoveRect(r)
set r=null
endfunction
function nF takes unit lf,real Pf,group xf,integer hf returns nothing
local group of
local unit p
if bj_wantDestroyGroup then
set bj_wantDestroyGroup=false
set of=xf
else
set of=CreateGroup()
call GroupAddGroup(xf,of)
endif
loop
set p=FirstOfGroup(of)
exitwhen p==null
call Mf(lf,p,Pf,hf)
call GroupRemoveUnit(of,p)
endloop
call DestroyGroup(of)
set of=null
set p=null
endfunction
function VF takes unit lf,real Pf,real x,real y,real UB,boolean EF,integer hf returns nothing
local boolexpr b=null
local group Xf=CreateGroup()
local integer d=hf
set bj_groupEnumOwningPlayer=GetOwningPlayer(lf)
if d>=8192 then
set d=d-8192
endif
if d>=4096 then
set d=d-4096
endif
if d>=2048 then
set d=d-2048
endif
if d>=1024 then
set d=d-1024
endif
if d>=512 then
set d=d-512
endif
if d>=256 then
set d=d-256
endif
if d>=128 then
set d=d-128
endif
if d>=64 then
if(ue['i']==2)then
set b=Condition(function nf)
elseif(ue['i']==1)then
else
set b=Condition(function af)
endif
set d=d-64
elseif not(EF)then
set b=Condition(function af)
endif
if d>=32 then
set d=d-32
endif
if d>=16 then
call aF(x,y,UB)
endif
call gd(Xf,x,y,UB,b)
set bj_wantDestroyGroup=true
call nF(lf,Pf,Xf,hf)
call DestroyBoolExpr(b)
set b=null
set Xf=null
endfunction
function OF takes nothing returns nothing
local real D
local real uf=ue[0]
local real Gd=ue[2]
local real sf=ue[3]
local real RF=ue[8]
local boolean IF=(ue[4]>=1)
local boolean AF=(ue[4]==2)
local boolean NF=(ue[5]==1)
local unit lf=Ye
local unit bF=ye
local player QD=GetOwningPlayer(bF)
local timer t=CreateTimer()
local real Sf=0
local integer a=0
local group BF=CreateGroup()
local string c
local string cF=bj_lastPlayedMusic
local string CF=""
local unit dF
local boolean DF=false
local unittype fF=null
local unittype FF=null
local unittype gF=null
local attacktype Nf
local damagetype bf
local boolean GF=(ue[11]==1)
local boolean hF=(ue[12]==1)
local integer a1=0
local integer a2=0
local integer a3=0
local real f1=ue['k']
local real f2=ue['m']
local real f3=ue['o']
local real HF=ue['q']
local effect array fx
local integer jF=R2I(ue['r'])
local boolean JF=false
local integer kF=0
set fx[0]=bj_lastCreatedEffect
if f1!=1 then
set a1=bd('j')
endif
if f2!=1 then
set a2=bd('l')
endif
if f3!=1 then
set a3=bd('n')
endif
if ue['p']!=-1 then
set FF=ConvertUnitType(R2I(ue['p']))
endif
if ue[6]!=-1 then
set fF=ConvertUnitType(R2I(ue[6]))
endif
if ue[7]!=-1 then
set gF=ConvertUnitType(R2I(ue[7]))
endif
if ue[9]!=-1 then
set Nf=ConvertAttackType(R2I(ue[9]))
else
set Nf=(ATTACK_TYPE_CHAOS)
endif
if ue[10]!=-1 then
set bf=ConvertDamageType(R2I(ue[10]))
else
set bf=(DAMAGE_TYPE_UNIVERSAL)
endif
loop
set c=SubString(cF,a,a+1)
exitwhen c=="!" or c==""
set CF=CF+c
set a=a+1
endloop
set cF=SubString(cF,a+1,10000)
call TimerStart(t,ue[1]-.01,false,null)
set a=0
loop
loop
exitwhen kF<=0
call DestroyEffect(fx[kF])
set fx[kF]=null
set kF=kF-1
endloop
if IsUnitInGroup(bF,Te)then
set DF=true
call GroupRemoveUnit(Te,bF)
endif
exitwhen DF
if TimerGetElapsed(t)>=Sf then
set a=a+1
set Sf=a*sf
call gd(BF,GetUnitX(bF),GetUnitY(bF),Gd,null)
if GF then
call aF(GetUnitX(bF),GetUnitY(bF),Gd)
endif
loop
set dF=FirstOfGroup(BF)
exitwhen dF==null
if(jF==0)then
set JF=(GetWidgetLife(dF)>.405)
elseif(jF==1)then
set JF=(GetWidgetLife(dF)<=.405)
else
set JF=true
endif
if(NF or dF!=lf)and not(IsUnitDeadBJ(dF))and(((IF or AF)and IsUnitAlly(dF,QD))or(not(AF)and IsUnitEnemy(dF,QD)))and(fF==null or kf(dF,fF))and(FF==null or not(kf(dF,FF)))then
set D=uf
if(HF!=1)and IsUnitAlly(dF,QD)then
set D=D*HF
endif
if(gF!=null)and kf(dF,gF)then
set D=D*RF
endif
if hF and not(Cd(dF,QD))then
set D=0
endif
if(a1!=0)and(GetUnitAbilityLevel(dF,a1)>0)then
set D=D*f1
endif
if(a2!=0)and(GetUnitAbilityLevel(dF,a2)>0)then
set D=D*f2
endif
if(a3!=0)and(GetUnitAbilityLevel(dF,a3)>0)then
set D=D*f3
endif
if D!=0 then
call Lf(lf,dF,D,Nf,bf)
if(cF!="")and(cF!=null)then
set kF=kF+1
set fx[kF]=AddSpecialEffectTarget(cF,dF,CF)
endif
endif
endif
call GroupRemoveUnit(BF,dF)
endloop
endif
exitwhen TimerGetRemaining(t)<=0
call TriggerSleepAction(0)
endloop
call DestroyGroup(BF)
call DestroyEffect(fx[0])
call TriggerSleepAction(2)
call hD(bF)
call DestroyTimer(t)
set BF=null
set bF=null
set t=null
set QD=null
set fx[0]=null
set dF=null
set lf=null
set fF=null
set FF=null
set gF=null
set Nf=null
set bf=null
endfunction
function MF takes gamecache H,string a,string b returns unit
return GetStoredInteger(H,a,b)
return null
endfunction
function pF takes gamecache H,unit m,string k returns boolean
local boolean PF=GetStoredBoolean(H,k,"unit")
local unit tg
local real x2
local real y2
local real z2
local real x1=GetUnitX(m)
local real y1=GetUnitY(m)
local real z1=GetUnitFlyHeight(m)
local real g
local real d
local real od
local real v
local real qF
local integer n
local boolean TD=false
local effect fx
if PF then
set tg=MF(H,k,"tg")
if(GetWidgetLife(tg)<=.405)then
set PF=false
call StoreBoolean(H,k,"unit",false)
else
set x2=GetUnitX(tg)
set y2=GetUnitY(tg)
set z2=GetUnitFlyHeight(tg)+GetStoredReal(H,k,"z2o")
set n=GetStoredInteger(H,k,"N")
set n=n+1
if(n==0)then
call StoreReal(H,k,"z2",z2)
call StoreReal(H,k,"x2",x2)
call StoreReal(H,k,"y2",y2)
elseif(n==25)then
set n=0
endif
call StoreInteger(H,k,"N",n)
endif
set tg=null
endif
if not(PF)then
set z2=GetStoredReal(H,k,"z2")
set x2=GetStoredReal(H,k,"x2")
set y2=GetStoredReal(H,k,"y2")
endif
set g=Atan2(y2-y1,x2-x1)
call SetUnitFacing(m,g*bj_RADTODEG)
set v=GetStoredReal(H,k,"speed")
set d=v*.04
set od=SquareRoot(Pow(x1-x2,2)+Pow(y1-y2,2))
if(od<=d)then
call fd(m,x2,y2)
set TD=true
else
call fd(m,x1+d*Cos(g),y1+d*Sin(g))
endif
set g=GetStoredReal(H,k,"acel")
set qF=od/ v
set v=(z2-z1+.5*g*qF*qF)/qF
call SetUnitFlyHeight(m,z1+v*.04,0)
set d=(Pow(GetUnitX(m)-x2,2)+Pow(GetUnitY(m)-y2,2))
if(TD or(d<=400))then
set TD=true
call StoreBoolean(H,k,"done",true)
set fx=RD(k,"fx")
if(fx!=null)then
call DestroyEffect(fx)
set fx=null
endif
endif
return TD
endfunction
function QF takes gamecache H,unit m,string k,trigger T returns nothing
local effect fx=RD(k,"fx")
call TriggerExecute(T)
if(fx!=null)then
call DestroyEffect(fx)
set fx=null
endif
call FlushStoredInteger(H,"MOVEMENT_TABLES",Yd(m))
call FlushStoredInteger(H,"MOVEMENT_TABLES",Yd(T))
if VD(k,"new")then
call ExplodeUnitBJ(m)
else
call MD(m,4,0,true)
endif
call zd(k)
call TriggerRemoveAction(T,bD(k,"ac"))
call Wd(T)
call DestroyTrigger(T)
endfunction
function GetTriggerCollisionMissile takes nothing returns unit
return GetStoredInteger(Ue,Yd(GetTriggeringTrigger()),"m")
return null
endfunction
function sF takes gamecache g,unit m,string k returns boolean
local integer SF=GetStoredInteger(g,k,"state")
local boolean TD=(SF==2)
local real d
local real F
local real tF
local real x
local real nx
local real y
local real ny
local integer tt
local widget wd
if not(TD)then
if(SF==1)then
call TriggerRegisterUnitInRange(ID(k,"T"),m,GetStoredReal(g,k,"collision"),null)
call FlushStoredInteger(g,k,"state")
endif
set d=GetStoredReal(g,k,"speed")*.04
set F=GetStoredReal(g,k,"F")
set tF=GetStoredReal(g,k,"aspeed")
set x=GetUnitX(m)
set y=GetUnitY(m)
if(tF!=0)then
set tt=GetStoredInteger(g,k,"TType")
if(tt==1)or(tt==2)then
if(tt==1)then
set nx=GetStoredReal(g,k,"Tx")
set ny=GetStoredReal(g,k,"Ty")
else
set wd=XD(k,"Tw")
if(GetWidgetLife(wd)<=.405)then
call StoreI
// FAIL THIS ISNT EVEN A FULL FUCKING .J SCRIPT I REFUSE TO WORK ANYMORE, RISKER YOU SUCK respond asap now with full war3map.j, ill work from listchecker this is lame shit