Talons Rubiks Cube Game

By kibo on Mar 06, 2015

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)
    }
  }
}

Comments

Sign in to comment.
cptpan   -  Feb 02, 2018

How about some fucking instructions

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.