I optimised it to 1491 bytes for the output file, using Axe 1.1.2, but that was by removing all the multiplications, changing the nested For() loops, and changing the way bounds are tested for (x,y)
:.LIGHTOUT
:ClrDrawrr
:DrawInv
:DrawInv r
:Fix 5
:Fix 3
:Fix 1
:Text(64,0,"SHUT
:Text(64,8,"DOWN
:Fix 0
:Text(64,16,"DELUXE
:Text(58,32,"LIGHTS:
:[00C0F0FCFEFEFFFF→Pic1
:0→C
:Repeat C
:1→A
:For(6)
:1→B
:For(6)
:Pt-Off(A,B,Pic1)r
:If rand^2
:C++
:Else
:rref(A,B,8,8
:End
:B+9→B
:End
:A+9→A
:End
:End
:1→X→Y
:Repeat C=0 or getKey(15)
:Text(85,32,"
:Text(85,32,C►Dec
:getKey→A
:If A=B
:0→A
:Else
:A→B
:End
:sub(BOX
:DispGraphrr
:sub(BOX
:Y→D
:X→C
:If B=1
:Y+9→D
:End
:If B=2
:X-9→C
:End
:If B=3
:X+9→C
:End
:If B=4
:Y-9→D
:End
:If D<55
:D→Y
:End
:If C<55
:C→X
:End
:If B=9
:rref(X,Y,8,8
:If X>1
:rref(X-9,Y,8,8
:End
:If X<46
:rref(X+9,Y,8,8
:End
:If Y>1
:rref(X,Y-9,8,8
:End
:If Y<46
:rref(X,Y+9,8,8
:End
:End
:0→C
:2→D
:For(6)
:2→E
:For(6)
:If pxl-Test(D,E
:C++
:End
:E+9→E
:End
:D+9→D
:End
:Text(85,32,"
:End
:ClrDrawrr
:DispGraph
:Fix 0
:Fix 2
:Fix 4
:ClrHome
:
:Lbl BOX
:rref(X-1,Y-1,10,10
:rref(X-1,Y-1,10,10)r
:rref(X,Y,8,8
:rref(X,Y,8,8)r
:Return