alias cube {
if (!$window(@Cube)) {
window -dfp @Cube -1 -1 640 480
cube.init
}
drawrect -rnf @Cube 2105376 0 0 0 $window(@Cube).dw $window(@Cube).dh
drawtext -n @Cube 15 0 0 Hold R to rotate
drawtext -n @Cube 15 0 15 Click and drag to a faces side to turn side
drawtext -n @Cube 15 0 30 Right Click for scramble menu
drawtext -n @Cube 15 520 0 $+([,$iif($hget(Cube,xrot),X,$chr(32)),]) X Rotation
drawtext -n @Cube 15 520 15 $+([,$iif($hget(Cube,yrot),X,$chr(32)),]) Y Rotation
drawtext -n @Cube 15 520 30 $+([,$iif($hget(Cube,zrot),X,$chr(32)),]) Z Rotation
var %cx = $window(@Cube).dw / 2 , %cy = $window(@Cube).dh / 2 , %Ticks = $ticks
var %3D.1 = -90 -90 -90 , %3D.2 = 90 -90 -90 , %3D.3 = 90 90 -90 , %3D.4 = -90 90 -90
var %3D.5 = -90 -90 90 , %3D.6 = 90 -90 90 , %3D.7 = 90 90 90 , %3D.8 = -90 90 90
var %Tables = 1 2 3 4 1;2 6 7 3 2;6 5 8 7 6;5 1 4 8 5;5 6 2 1 5;4 3 7 8 4
var %xr = $iif($1,$1,0) , %yr = $iif($2,$2,0) , %zr = $iif($3,$3,0)
var %x = 8
while (%x) {
tokenize 32 %xr %yr %zr $var($+(%,3D.,%x),1).value
tokenize 32 $1-3 $4 $calc(($5 * $cos($1).deg) + ($6 * (0 - $sin($1).deg))) $calc(($5 * $sin($1).deg) + ($6 * $cos($1).deg))
tokenize 32 $1-3 $calc(($4 * $cos($2).deg) + ($6 * $sin($2).deg)) $5 $calc(($4 * (0 - $sin($2).deg)) + ($6 * $cos($2).deg))
tokenize 32 $calc(($4 * $cos($3).deg) + ($5 * (0 - $sin($3).deg))) $calc(($4 * $sin($3).deg) + ($5 * $cos($3).deg)) $6
var %C3D. $+ %x $1-
hadd -m Cube C3D. $+ %x $convert2d(%cx,%cy,$1-)
dec %x
}
var %asdx = 6 , %show = ""
while (%asdx) {
var %table = $gettok(%Tables,%asdx,59) , %y = $numtok(%table,32) , %x = %y - 1
tokenize 32 $convert2d(%cx,%cy,$var($+(%,C3D.,$gettok(%table,1,32)),1).value) $convert2d(%cx,%cy,$var($+(%,C3D.,$gettok(%table,2,32)),1).value) $convert2d(%cx,%cy,$var($+(%,C3D.,$gettok(%table,3,32)),1).value) $convert2d(%cx,%cy,$var($+(%,C3D.,$gettok(%table,4,32)),1).value)
var %cull = $calc(($1 - $3) * ($6 - $4) - ($2 - $4) * ($5 - $3)) , %avgx = $calc(($1 + $3 + $5 + $7) / 4) , %avgy = $calc(($2 + $4 + $6 + $8) / 4)
if (%cull < 0) {
%show = $addtok(%show,%asdx,32)
drawline -n @Cube 1 2 $1-4
drawline -n @Cube 1 2 $3-6
drawline -n @Cube 1 2 $5-8
drawline -n @Cube 1 2 $5-8 $1-2
hadd -m Cube $+(Face.,%asdx,.1) $var($+(%,C3D.,$gettok(%table,1,32)),1).value
hadd -m Cube $+(Face.,%asdx,.4) $var($+(%,C3D.,$gettok(%table,2,32)),1).value
hadd -m Cube $+(Face.,%asdx,.16) $var($+(%,C3D.,$gettok(%table,3,32)),1).value
hadd -m Cube $+(Face.,%asdx,.13) $var($+(%,C3D.,$gettok(%table,4,32)),1).value
hadd -m Cube $+(Face.,%asdx,.2) $get3dpoint($hget(Cube,$+(Face.,%asdx,.1)),$hget(Cube,$+(Face.,%asdx,.4)),0.333333)
hadd -m Cube $+(Face.,%asdx,.3) $get3dpoint($hget(Cube,$+(Face.,%asdx,.1)),$hget(Cube,$+(Face.,%asdx,.4)),0.666666)
hadd -m Cube $+(Face.,%asdx,.5) $get3dpoint($hget(Cube,$+(Face.,%asdx,.1)),$hget(Cube,$+(Face.,%asdx,.13)),0.333333)
hadd -m Cube $+(Face.,%asdx,.8) $get3dpoint($hget(Cube,$+(Face.,%asdx,.4)),$hget(Cube,$+(Face.,%asdx,.16)),0.333333)
hadd -m Cube $+(Face.,%asdx,.9) $get3dpoint($hget(Cube,$+(Face.,%asdx,.1)),$hget(Cube,$+(Face.,%asdx,.13)),0.666666)
hadd -m Cube $+(Face.,%asdx,.12) $get3dpoint($hget(Cube,$+(Face.,%asdx,.4)),$hget(Cube,$+(Face.,%asdx,.16)),0.666666)
hadd -m Cube $+(Face.,%asdx,.14) $get3dpoint($hget(Cube,$+(Face.,%asdx,.13)),$hget(Cube,$+(Face.,%asdx,.16)),0.333333)
hadd -m Cube $+(Face.,%asdx,.15) $get3dpoint($hget(Cube,$+(Face.,%asdx,.13)),$hget(Cube,$+(Face.,%asdx,.16)),0.666666)
hadd -m Cube $+(Face.,%asdx,.6) $get3dpoint($hget(Cube,$+(Face.,%asdx,.5)),$hget(Cube,$+(Face.,%asdx,.8)),0.333333)
hadd -m Cube $+(Face.,%asdx,.7) $get3dpoint($hget(Cube,$+(Face.,%asdx,.5)),$hget(Cube,$+(Face.,%asdx,.8)),0.666666)
hadd -m Cube $+(Face.,%asdx,.10) $get3dpoint($hget(Cube,$+(Face.,%asdx,.9)),$hget(Cube,$+(Face.,%asdx,.12)),0.333333)
hadd -m Cube $+(Face.,%asdx,.11) $get3dpoint($hget(Cube,$+(Face.,%asdx,.9)),$hget(Cube,$+(Face.,%asdx,.12)),0.666666)
hadd -m Cube $+(2DFace.,%asdx,.1) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.1)))
hadd -m Cube $+(2DFace.,%asdx,.2) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.2)))
hadd -m Cube $+(2DFace.,%asdx,.3) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.3)))
hadd -m Cube $+(2DFace.,%asdx,.4) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.4)))
hadd -m Cube $+(2DFace.,%asdx,.5) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.5)))
hadd -m Cube $+(2DFace.,%asdx,.6) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.6)))
hadd -m Cube $+(2DFace.,%asdx,.7) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.7)))
hadd -m Cube $+(2DFace.,%asdx,.8) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.8)))
hadd -m Cube $+(2DFace.,%asdx,.9) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.9)))
hadd -m Cube $+(2DFace.,%asdx,.10) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.10)))
hadd -m Cube $+(2DFace.,%asdx,.11) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.11)))
hadd -m Cube $+(2DFace.,%asdx,.12) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.12)))
hadd -m Cube $+(2DFace.,%asdx,.13) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.13)))
hadd -m Cube $+(2DFace.,%asdx,.14) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.14)))
hadd -m Cube $+(2DFace.,%asdx,.15) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.15)))
hadd -m Cube $+(2DFace.,%asdx,.16) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.16)))
drawline -n @Cube 1 2 $hget(Cube,$+(2DFace.,%asdx,.2)) $hget(Cube,$+(2DFace.,%asdx,.14))
drawline -n @Cube 1 2 $hget(Cube,$+(2DFace.,%asdx,.3)) $hget(Cube,$+(2DFace.,%asdx,.15))
drawline -n @Cube 1 2 $hget(Cube,$+(2DFace.,%asdx,.5)) $hget(Cube,$+(2DFace.,%asdx,.8))
drawline -n @Cube 1 2 $hget(Cube,$+(2DFace.,%asdx,.9)) $hget(Cube,$+(2DFace.,%asdx,.12))
fillface %asdx
}
dec %asdx
}
hadd -m Cube Show %show
drawdot @Cube
var %ms = $ticks - %ticks
titlebar @Cube Rendered in: %ms ms $round($calc(1000 / %ms),2) FPS
}
on *:close:@Cube:hfree -w Cube
on *:KEYDOWN:@Cube:*: {
if ($keyval = 114 || $keyval = 82) { hadd -m Cube Keyval $keyval }
}
on *:KEYUP:@Cube:*: { hdel -w Cube Keyval }
menu @Cube {
sclick {
if ($inrect($mouse.x,$mouse.y,520,0,120,14)) {
hadd -m Cube xrot $iif($hget(Cube,xrot),$null,X)
cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
}
if ($inrect($mouse.x,$mouse.y,520,15,120,14)) {
hadd -m Cube yrot $iif($hget(Cube,yrot),$null,X)
cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
}
if ($inrect($mouse.x,$mouse.y,520,30,120,14)) {
hadd -m Cube zrot $iif($hget(Cube,zrot),$null,X)
cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
}
var %Tables = 1 2 3 4 1;2 6 7 3 2;6 5 8 7 6;5 1 4 8 5;5 6 2 1 5;4 3 7 8 4 , %x = $numtok($hget(Cube,Show),32)
while (%x) {
if ($inpoly($mouse.x,$mouse.y, [ $replace($regsubex($gettok(%tables,$gettok($hget(Cube,Show),%x,32),59),/(\d+)/g,$hget(Cube,$+(C3D.,\t))),$chr(32),$chr(44)) ] )) { hadd -m Cube ClickFace $gettok($hget(Cube,Show),%x,32) }
dec %x
}
hadd -m Cube LastX $mouse.x
hadd -m Cube LastY $mouse.y
}
uclick {
hdel -w Cube MovedSide
hdel -w Cube ClickFace
}
mouse {
if ($mouse.key & 1) && ($hget(Cube,keyval) = 82) {
var %cx = $window(@Cube).dw / 2 , %cy = $window(@Cube).dh / 2
var %c.x = $calc(360 * ($mouse.y - %cy) / %cy))
var %c.y = $calc(-360 * (($mouse.x - %cx) / %cx))
var %c.z = $calc(360 * ($mouse.y - %cy) / %cy))
if ($hget(cube,xrot)) { hadd -m Cube AngleX %c.x }
if ($hget(cube,yrot)) { hadd -m Cube AngleY %c.y }
if ($hget(cube,zrot)) { hadd -m Cube AngleZ %c.z }
cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
}
elseif ($mouse.key & 1) {
if ($hget(Cube,Keyval) != 82) && ($hget(Cube,ClickFace)) {
var %x = 8
while (%x) {
var %sides = $hget(Cube,$+(Line.,%x)) , %y = $numtok(%sides,59)
while (%y) {
var %side = $gettok(%sides,%y,59) , %poly = $replace($regsubex(%side,/(\d+)/g,$hget(Cube,$+(2DFace.,$hget(Cube,ClickFace),.,\t))),$chr(32),$chr(44))
if ($lineintersect( [ %poly ] , $hget(Cube,LastX), $hget(Cube,LastY), $mouse.x, $mouse.y)) && (!$hget(Cube,Movedside)) {
tokenize 59 $gettok($hget(Cube,$+(Moves.,$hget(Cube,ClickFace),.,$iif(%x >= 5,$calc(%x + 1),%x))),%y,59)
hadd -m Cube MovedSide True
cube.rotate $1-
cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
}
dec %y
}
dec %x
}
}
}
}
Load Game {
var %file = $sfile($scriptdirsaves\,Select a Saved Game,Open)
if ($exists(%file)) {
hload Cube $qt(%file)
cube
}
halt
}
Save Game {
var %file = $sfile($scriptdirsaves\,Save As,Save) , %cont = 1
if ($exists(%file)) { var %cont = $?!="File Exists! overwrite?" }
if (%cont) { hsave Cube $qt(%file) }
halt
}
-
scramble: { Cube.scramble | cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez) }
}
alias cube.init {
hadd -m Cube xrot X
hadd -m Cube yrot X
hadd -m Cube Color.1.1 4
hadd -m Cube Color.1.2 4
hadd -m Cube Color.1.3 4
hadd -m Cube Color.1.4 4
hadd -m Cube Color.1.5 4
hadd -m Cube Color.1.6 4
hadd -m Cube Color.1.7 4
hadd -m Cube Color.1.8 4
hadd -m Cube Color.1.9 4
hadd -m Cube Color.2.1 12
hadd -m Cube Color.2.2 12
hadd -m Cube Color.2.3 12
hadd -m Cube Color.2.4 12
hadd -m Cube Color.2.5 12
hadd -m Cube Color.2.6 12
hadd -m Cube Color.2.7 12
hadd -m Cube Color.2.8 12
hadd -m Cube Color.2.9 12
hadd -m Cube Color.3.1 7
hadd -m Cube Color.3.2 7
hadd -m Cube Color.3.3 7
hadd -m Cube Color.3.4 7
hadd -m Cube Color.3.5 7
hadd -m Cube Color.3.6 7
hadd -m Cube Color.3.7 7
hadd -m Cube Color.3.8 7
hadd -m Cube Color.3.9 7
hadd -m Cube Color.4.1 3
hadd -m Cube Color.4.2 3
hadd -m Cube Color.4.3 3
hadd -m Cube Color.4.4 3
hadd -m Cube Color.4.5 3
hadd -m Cube Color.4.6 3
hadd -m Cube Color.4.7 3
hadd -m Cube Color.4.8 3
hadd -m Cube Color.4.9 3
hadd -m Cube Color.5.1 0
hadd -m Cube Color.5.2 0
hadd -m Cube Color.5.3 0
hadd -m Cube Color.5.4 0
hadd -m Cube Color.5.5 0
hadd -m Cube Color.5.6 0
hadd -m Cube Color.5.7 0
hadd -m Cube Color.5.8 0
hadd -m Cube Color.5.9 0
hadd -m Cube Color.6.1 8
hadd -m Cube Color.6.2 8
hadd -m Cube Color.6.3 8
hadd -m Cube Color.6.4 8
hadd -m Cube Color.6.5 8
hadd -m Cube Color.6.6 8
hadd -m Cube Color.6.7 8
hadd -m Cube Color.6.8 8
hadd -m Cube Color.6.9 8
hadd -m Cube Line.1 1 5;1 2
hadd -m Cube Line.2 2 3
hadd -m Cube Line.3 4 8;3 4
hadd -m Cube Line.4 5 9
hadd -m Cube Line.5 8 12
hadd -m Cube Line.6 9 13;13 14
hadd -m Cube Line.7 14 15
hadd -m Cube Line.8 12 16;15 16
hadd -m Cube Moves.1.1 y 3 1;x 1 1
hadd -m Cube Moves.1.2 x 2 1
hadd -m Cube Moves.1.3 y 3;x 3 1
hadd -m Cube Moves.1.4 y 2 1
hadd -m Cube Moves.1.5 z 3 1
hadd -m Cube Moves.1.6 y 2
hadd -m Cube Moves.1.7 y 1 1;x 1
hadd -m Cube Moves.1.8 x 2
hadd -m Cube Moves.1.9 y 1;x 3
hadd -m Cube Moves.2.1 y 3 1;z 3 1
hadd -m Cube Moves.2.2 z 2 1
hadd -m Cube Moves.2.3 y 3;z 1 1
hadd -m Cube Moves.2.4 y 2 1
hadd -m Cube Moves.2.5 x 1
hadd -m Cube Moves.2.6 y 2
hadd -m Cube Moves.2.7 y 1 1;z 3
hadd -m Cube Moves.2.8 z 2
hadd -m Cube Moves.2.9 y 1;z 1
hadd -m Cube Moves.3.1 y 3 1;x 3
hadd -m Cube Moves.3.2 x 2
hadd -m Cube Moves.3.3 y 3;x 1
hadd -m Cube Moves.3.4 y 2 1
hadd -m Cube Moves.3.5 z 1
hadd -m Cube Moves.3.6 y 2
hadd -m Cube Moves.3.7 y 1 1;x 3 1
hadd -m Cube Moves.3.8 x 2 1
hadd -m Cube Moves.3.9 y 1; x 1 1
hadd -m Cube Moves.4.1 y 3 1;z 1
hadd -m Cube Moves.4.2 z 2
hadd -m Cube Moves.4.3 y 3;z 3
hadd -m Cube Moves.4.4 y 2 1
hadd -m Cube Moves.4.5 x 3 1
hadd -m Cube Moves.4.6 y 2
hadd -m Cube Moves.4.7 y 1 1;z 1 1
hadd -m Cube Moves.4.8 z 2 1
hadd -m Cube Moves.4.9 y 1;z 3 1
hadd -m Cube Moves.5.1 z 1 1;x 1 1
hadd -m Cube Moves.5.2 x 2 1
hadd -m Cube Moves.5.3 z 1; x 3 1
hadd -m Cube Moves.5.4 z 2 1
hadd -m Cube Moves.5.5 y 3 1
hadd -m Cube Moves.5.6 z 2
hadd -m Cube Moves.5.7 z 3 1;x 1
hadd -m Cube Moves.5.8 x 2
hadd -m Cube Moves.5.9 z 3; x 3
hadd -m Cube Moves.6.1 z 3;x 1 1
hadd -m Cube Moves.6.2 x 2 1
hadd -m Cube Moves.6.3 z 3 1;x 3 1
hadd -m Cube Moves.6.4 z 2
hadd -m Cube Moves.6.5 y 1
hadd -m Cube Moves.6.6 z 2 1
hadd -m Cube Moves.6.7 z 1;x 1
hadd -m Cube Moves.6.8 x 2
hadd -m Cube Moves.6.9 z 1 1;x 3
}
alias Get3DPoint {
tokenize 32 $1-
var %1t = 1 - $7
return $calc((%1t * $1) + ($7 * $4)) $calc((%1t * $2) + ($7 * $5)) $calc((%1t * $3) + ($7 * $6))
}
alias convert2d {
var %cx = $1 , %cy = $2
tokenize 32 $3-
return $round($calc(%cx + ($1 * 500) / ($3 + 500)),0) $round($calc(%cy + ($2 * 500) / ($3 + 500)),0)
}
alias FillFace {
var %face = $1 , %y = 0 , %z = 1
while (%y < 3) {
var %x = 0
while (%x < 3) {
tokenize 32 $hget(Cube,$+(2DFace.,%face,.,$calc(1 + %x + (%y * 4)))) $hget(Cube,$+(2DFace.,%face,.,$calc(2 + %x + (%y * 4)))) $hget(Cube,$+(2DFace.,%face,.,$calc(6 + %x + (%y * 4)))) $hget(Cube,$+(2DFace.,%face,.,$calc(5 + %x + (%y * 4)))))
var %avgx = $calc(($1 + $3 + $5 + $7) / 4) , %avgy = $calc(($2 + $4 + $6 + $8) / 4)
if ($inpoly(%avgx,%avgy, [ $replace($1-,$chr(32),$chr(44)) ] )) {
drawfill -n @Cube $hget(Cube,$+(Color.,%face,.,%z)) 1 %avgx %avgy
}
inc %x
inc %z
}
inc %y
}
}
alias -l checkline {
var %slope = $calc(($4 - $2) / ($3 - $1))
var %y1 = $calc($2 - ($1 * %slope)) , %x1 = $calc($1 - ($2 / %slope))
var %y2 = $calc($6 - ($5 * %slope)) , %x2 = $calc($5 - ($6 / %slope))
var %y0 = %y2 - %y1 , %x0 = %x2 - %x1
if ((!$round(%x0,0)) || (!$round(%y0,0))) && ($5 isnum $+($iif($1 > $3,$3,$1),-,$iif($1 > $3,$1,$3))) && ($6 isnum $+($iif($2 > $4,$4,$2),-,$iif($2 > $4,$2,$4))) { return $true }
}
alias lineintersect {
var %dy = $4 - $2 , %dx = $3 - $1 , %db = $8 - $6 , %da = $7 - $5
var %c1 = $calc((%da * %dy) - (%db * %dx)) , %c2 = $calc((%db * %dx) - (%da * %dy))
if (%c1 = 0) || (%c2 = 0) { return }
var %s = $calc(((%dx * ($6 - $2)) + (%dy * ($1 - $5))) / %c1)
var %t = $calc(((%da * ($2 - $6)) + (%db * ($5 - $1))) / %c2)
if (%s isnum 0-1) && (%t isnum 0-1) { return $true }
}
alias -l Cube.Scramble {
var %x = 26
while (%x) {
var %y = $r(0,1)
cube.rotate $r(x,z) $r(1,3) $iif(%y,1)
dec %x
}
}
alias Face.Spin {
var %y = 9
while (%y) {
var %Color. $+ %y $hget(Cube,$+(Color.,$1,.,%y))
dec %y
}
hadd -m Cube $+(Color.,$1,.1) $iif(!$2,%Color.7,%Color.3)
hadd -m Cube $+(Color.,$1,.2) $iif(!$2,%Color.4,%Color.6)
hadd -m Cube $+(Color.,$1,.3) $iif(!$2,%Color.1,%Color.9)
hadd -m Cube $+(Color.,$1,.4) $iif(!$2,%Color.8,%Color.2)
hadd -m Cube $+(Color.,$1,.6) $iif(!$2,%Color.2,%Color.8)
hadd -m Cube $+(Color.,$1,.7) $iif(!$2,%Color.9,%Color.1)
hadd -m Cube $+(Color.,$1,.8) $iif(!$2,%Color.6,%Color.4)
hadd -m Cube $+(Color.,$1,.9) $iif(!$2,%Color.3,%Color.7)
}
alias Cube.Rotate {
var %x = 6
while (%x) {
var %y = 9
while (%y) {
var %Color. $+ $+(%x,.,%y) $hget(Cube,$+(Color.,%x,.,%y))
dec %y
}
dec %x
}
if ($1 = x) {
if ($2 = 1) {
;Faces Effected: 1 3 4 5 6
face.spin 4 $3
hadd -m Cube Color.1.1 $iif($3,%Color.6.1,%Color.5.1)
hadd -m Cube Color.1.4 $iif($3,%Color.6.4,%Color.5.4)
hadd -m Cube Color.1.7 $iif($3,%Color.6.7,%Color.5.7)
hadd -m Cube Color.3.3 $iif($3,%Color.5.7,%Color.6.7)
hadd -m Cube Color.3.6 $iif($3,%Color.5.4,%Color.6.4)
hadd -m Cube Color.3.9 $iif($3,%Color.5.1,%Color.6.1)
hadd -m Cube Color.5.1 $iif($3,%Color.1.1,%Color.3.9)
hadd -m Cube Color.5.4 $iif($3,%Color.1.4,%Color.3.6)
hadd -m Cube Color.5.7 $iif($3,%Color.1.7,%Color.3.3)
hadd -m Cube Color.6.1 $iif($3,%Color.3.9,%Color.1.1)
hadd -m Cube Color.6.4 $iif($3,%Color.3.6,%Color.1.4)
hadd -m Cube Color.6.7 $iif($3,%Color.3.3,%Color.1.7)
}
if ($2 = 2) {
;Faces Effected: 1 3 5 6
hadd -m Cube Color.1.2 $iif($3,%Color.6.2,%Color.5.2)
hadd -m Cube Color.1.5 $iif($3,%Color.6.5,%Color.5.5)
hadd -m Cube Color.1.8 $iif($3,%Color.6.8,%Color.5.8)
hadd -m Cube Color.3.2 $iif($3,%Color.5.8,%Color.6.8)
hadd -m Cube Color.3.5 $iif($3,%Color.5.5,%Color.6.5)
hadd -m Cube Color.3.8 $iif($3,%Color.5.2,%Color.6.2)
hadd -m Cube Color.5.2 $iif($3,%Color.1.2,%Color.3.8)
hadd -m Cube Color.5.5 $iif($3,%Color.1.5,%Color.3.5)
hadd -m Cube Color.5.8 $iif($3,%Color.1.8,%Color.3.2)
hadd -m Cube Color.6.2 $iif($3,%Color.3.8,%Color.1.2)
hadd -m Cube Color.6.5 $iif($3,%Color.3.5,%Color.1.5)
hadd -m Cube Color.6.8 $iif($3,%Color.3.2,%Color.1.8)
}
if ($2 = 3) {
;Faces Effected: 1 2 3 5 6
face.spin 2 $iif(!$3,1)
hadd -m Cube Color.1.3 $iif($3,%Color.6.3,%Color.5.3)
hadd -m Cube Color.1.6 $iif($3,%Color.6.6,%Color.5.6)
hadd -m Cube Color.1.9 $iif($3,%Color.6.9,%Color.5.9)
hadd -m Cube Color.3.1 $iif($3,%Color.5.9,%Color.6.9)
hadd -m Cube Color.3.4 $iif($3,%Color.5.6,%Color.6.6)
hadd -m Cube Color.3.7 $iif($3,%Color.5.3,%Color.6.3)
hadd -m Cube Color.5.3 $iif($3,%Color.1.3,%Color.3.7)
hadd -m Cube Color.5.6 $iif($3,%Color.1.6,%Color.3.4)
hadd -m Cube Color.5.9 $iif($3,%Color.1.9,%Color.3.1)
hadd -m Cube Color.6.3 $iif($3,%Color.3.7,%Color.1.3)
hadd -m Cube Color.6.6 $iif($3,%Color.3.4,%Color.1.6)
hadd -m Cube Color.6.9 $iif($3,%Color.3.1,%Color.1.9)
}
}
if ($1 = y) {
if ($2 = 1) {
;Faces Effected: 1 2 3 4 6
hadd -m Cube Color.1.7 $iif($3,%Color.2.7,%Color.4.7)
hadd -m Cube Color.1.8 $iif($3,%Color.2.8,%Color.4.8)
hadd -m Cube Color.1.9 $iif($3,%Color.2.9,%Color.4.9)
hadd -m Cube Color.2.7 $iif($3,%Color.3.7,%Color.1.7)
hadd -m Cube Color.2.8 $iif($3,%Color.3.8,%Color.1.8)
hadd -m Cube Color.2.9 $iif($3,%Color.3.9,%Color.1.9)
hadd -m Cube Color.3.7 $iif($3,%Color.4.7,%Color.2.7)
hadd -m Cube Color.3.8 $iif($3,%Color.4.8,%Color.2.8)
hadd -m Cube Color.3.9 $iif($3,%Color.4.9,%Color.2.9)
hadd -m Cube Color.4.7 $iif($3,%Color.1.7,%Color.3.7)
hadd -m Cube Color.4.8 $iif($3,%Color.1.8,%Color.3.8)
hadd -m Cube Color.4.9 $iif($3,%Color.1.9,%Color.3.9)
face.spin 6 $3
}
if ($2 = 2) {
;Faces Effected: 1 2 3 4
hadd -m Cube Color.1.4 $iif($3,%Color.2.4,%Color.4.4)
hadd -m Cube Color.1.5 $iif($3,%Color.2.5,%Color.4.5)
hadd -m Cube Color.1.6 $iif($3,%Color.2.6,%Color.4.6)
hadd -m Cube Color.2.4 $iif($3,%Color.3.4,%Color.1.4)
hadd -m Cube Color.2.5 $iif($3,%Color.3.5,%Color.1.5)
hadd -m Cube Color.2.6 $iif($3,%Color.3.6,%Color.1.6)
hadd -m Cube Color.3.4 $iif($3,%Color.4.4,%Color.2.4)
hadd -m Cube Color.3.5 $iif($3,%Color.4.5,%Color.2.5)
hadd -m Cube Color.3.6 $iif($3,%Color.4.6,%Color.2.6)
hadd -m Cube Color.4.4 $iif($3,%Color.1.4,%Color.3.4)
hadd -m Cube Color.4.5 $iif($3,%Color.1.5,%Color.3.5)
hadd -m Cube Color.4.6 $iif($3,%Color.1.6,%Color.3.6)
}
if ($2 = 3) {
;Faces Effected: 1 2 3 4 5
hadd -m Cube Color.1.1 $iif($3,%Color.2.1,%Color.4.1)
hadd -m Cube Color.1.2 $iif($3,%Color.2.2,%Color.4.2)
hadd -m Cube Color.1.3 $iif($3,%Color.2.3,%Color.4.3)
hadd -m Cube Color.2.1 $iif($3,%Color.3.1,%Color.1.1)
hadd -m Cube Color.2.2 $iif($3,%Color.3.2,%Color.1.2)
hadd -m Cube Color.2.3 $iif($3,%Color.3.3,%Color.1.3)
hadd -m Cube Color.3.1 $iif($3,%Color.4.1,%Color.2.1)
hadd -m Cube Color.3.2 $iif($3,%Color.4.2,%Color.2.2)
hadd -m Cube Color.3.3 $iif($3,%Color.4.3,%Color.2.3)
hadd -m Cube Color.4.1 $iif($3,%Color.1.1,%Color.3.1)
hadd -m Cube Color.4.2 $iif($3,%Color.1.2,%Color.3.2)
hadd -m Cube Color.4.3 $iif($3,%Color.1.3,%Color.3.3)
face.spin 5 $iif(!$3,1)
}
}
if ($1 = z) {
if ($2 = 1) {
;Faces Effected: 2 3 4 5 6
hadd -m Cube Color.2.3 $iif($3,%Color.6.9,%Color.5.1)
hadd -m Cube Color.2.6 $iif($3,%Color.6.8,%Color.5.2)
hadd -m Cube Color.2.9 $iif($3,%Color.6.7,%Color.5.3)
face.spin 3 $iif(!$3,1)
hadd -m Cube Color.4.1 $iif($3,%Color.5.3,%Color.6.7)
hadd -m Cube Color.4.4 $iif($3,%Color.5.2,%Color.6.8)
hadd -m Cube Color.4.7 $iif($3,%Color.5.1,%Color.6.9)
hadd -m Cube Color.5.1 $iif($3,%Color.2.3,%Color.4.7)
hadd -m Cube Color.5.2 $iif($3,%Color.2.6,%Color.4.4)
hadd -m Cube Color.5.3 $iif($3,%Color.2.9,%Color.4.1)
hadd -m Cube Color.6.7 $iif($3,%Color.4.1,%Color.2.9)
hadd -m Cube Color.6.8 $iif($3,%Color.4.4,%Color.2.6)
hadd -m Cube Color.6.9 $iif($3,%Color.4.7,%Color.2.3)
}
if ($2 = 2) {
;Faces Effected: 2 4 5 6
hadd -m Cube Color.2.2 $iif($3,%Color.6.6,%Color.5.4)
hadd -m Cube Color.2.5 $iif($3,%Color.6.5,%Color.5.5)
hadd -m Cube Color.2.8 $iif($3,%Color.6.4,%Color.5.6)
hadd -m Cube Color.4.2 $iif($3,%Color.5.6,%Color.6.4)
hadd -m Cube Color.4.5 $iif($3,%Color.5.5,%Color.6.5)
hadd -m Cube Color.4.8 $iif($3,%Color.5.4,%Color.6.6)
hadd -m Cube Color.5.4 $iif($3,%Color.2.2,%Color.4.8)
hadd -m Cube Color.5.5 $iif($3,%Color.2.5,%Color.4.5)
hadd -m Cube Color.5.6 $iif($3,%Color.2.8,%Color.4.2)
hadd -m Cube Color.6.4 $iif($3,%Color.4.2,%Color.2.8)
hadd -m Cube Color.6.5 $iif($3,%Color.4.5,%Color.2.5)
hadd -m Cube Color.6.6 $iif($3,%Color.4.8,%Color.2.2)
}
if ($2 = 3) {
;Faces Effected: 1 2 4 5 6
face.spin 1 $3
hadd -m Cube Color.2.1 $iif($3,%Color.6.3,%Color.5.7)
hadd -m Cube Color.2.4 $iif($3,%Color.6.2,%Color.5.8)
hadd -m Cube Color.2.7 $iif($3,%Color.6.1,%Color.5.9)
hadd -m Cube Color.4.3 $iif($3,%Color.5.9,%Color.6.1)
hadd -m Cube Color.4.6 $iif($3,%Color.5.8,%Color.6.2)
hadd -m Cube Color.4.9 $iif($3,%Color.5.7,%Color.6.3)
hadd -m Cube Color.5.7 $iif($3,%Color.2.1,%Color.4.9)
hadd -m Cube Color.5.8 $iif($3,%Color.2.4,%Color.4.6)
hadd -m Cube Color.5.9 $iif($3,%Color.2.7,%Color.4.3)
hadd -m Cube Color.6.1 $iif($3,%Color.4.3,%Color.2.7)
hadd -m Cube Color.6.2 $iif($3,%Color.4.6,%Color.2.4)
hadd -m Cube Color.6.3 $iif($3,%Color.4.9,%Color.2.1)
}
}
}