Advertisement
Guest User

Untitled

a guest
Jun 6th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.81 KB | None | 0 0
  1. alias cube {
  2. if (!$window(@Cube)) {
  3. window -dfp @Cube -1 -1 640 480
  4. cube.init
  5. }
  6. drawrect -rnf @Cube 2105376 0 0 0 $window(@Cube).dw $window(@Cube).dh
  7.  
  8. drawtext -n @Cube 15 0 0 Hold R to rotate
  9. drawtext -n @Cube 15 0 15 Click and drag to a faces side to turn side
  10. drawtext -n @Cube 15 0 30 Right Click for scramble menu
  11.  
  12. drawtext -n @Cube 15 520 0 $+([,$iif($hget(Cube,xrot),X,$chr(32)),]) X Rotation
  13. drawtext -n @Cube 15 520 15 $+([,$iif($hget(Cube,yrot),X,$chr(32)),]) Y Rotation
  14. drawtext -n @Cube 15 520 30 $+([,$iif($hget(Cube,zrot),X,$chr(32)),]) Z Rotation
  15.  
  16. var %cx = $window(@Cube).dw / 2 , %cy = $window(@Cube).dh / 2 , %Ticks = $ticks
  17. var %3D.1 = -90 -90 -90 , %3D.2 = 90 -90 -90 , %3D.3 = 90 90 -90 , %3D.4 = -90 90 -90
  18. var %3D.5 = -90 -90 90 , %3D.6 = 90 -90 90 , %3D.7 = 90 90 90 , %3D.8 = -90 90 90
  19. 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
  20. var %xr = $iif($1,$1,0) , %yr = $iif($2,$2,0) , %zr = $iif($3,$3,0)
  21. var %x = 8
  22. while (%x) {
  23. tokenize 32 %xr %yr %zr $var($+(%,3D.,%x),1).value
  24. tokenize 32 $1-3 $4 $calc(($5 * $cos($1).deg) + ($6 * (0 - $sin($1).deg))) $calc(($5 * $sin($1).deg) + ($6 * $cos($1).deg))
  25. tokenize 32 $1-3 $calc(($4 * $cos($2).deg) + ($6 * $sin($2).deg)) $5 $calc(($4 * (0 - $sin($2).deg)) + ($6 * $cos($2).deg))
  26. tokenize 32 $calc(($4 * $cos($3).deg) + ($5 * (0 - $sin($3).deg))) $calc(($4 * $sin($3).deg) + ($5 * $cos($3).deg)) $6
  27. var %C3D. $+ %x $1-
  28. hadd -m Cube C3D. $+ %x $convert2d(%cx,%cy,$1-)
  29. dec %x
  30. }
  31. var %asdx = 6 , %show = ""
  32. while (%asdx) {
  33. var %table = $gettok(%Tables,%asdx,59) , %y = $numtok(%table,32) , %x = %y - 1
  34. 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)
  35. 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)
  36. if (%cull < 0) {
  37. %show = $addtok(%show,%asdx,32)
  38. drawline -n @Cube 1 2 $1-4
  39. drawline -n @Cube 1 2 $3-6
  40. drawline -n @Cube 1 2 $5-8
  41. drawline -n @Cube 1 2 $5-8 $1-2
  42.  
  43. hadd -m Cube $+(Face.,%asdx,.1) $var($+(%,C3D.,$gettok(%table,1,32)),1).value
  44. hadd -m Cube $+(Face.,%asdx,.4) $var($+(%,C3D.,$gettok(%table,2,32)),1).value
  45. hadd -m Cube $+(Face.,%asdx,.16) $var($+(%,C3D.,$gettok(%table,3,32)),1).value
  46. hadd -m Cube $+(Face.,%asdx,.13) $var($+(%,C3D.,$gettok(%table,4,32)),1).value
  47. hadd -m Cube $+(Face.,%asdx,.2) $get3dpoint($hget(Cube,$+(Face.,%asdx,.1)),$hget(Cube,$+(Face.,%asdx,.4)),0.333333)
  48. hadd -m Cube $+(Face.,%asdx,.3) $get3dpoint($hget(Cube,$+(Face.,%asdx,.1)),$hget(Cube,$+(Face.,%asdx,.4)),0.666666)
  49. hadd -m Cube $+(Face.,%asdx,.5) $get3dpoint($hget(Cube,$+(Face.,%asdx,.1)),$hget(Cube,$+(Face.,%asdx,.13)),0.333333)
  50. hadd -m Cube $+(Face.,%asdx,.8) $get3dpoint($hget(Cube,$+(Face.,%asdx,.4)),$hget(Cube,$+(Face.,%asdx,.16)),0.333333)
  51. hadd -m Cube $+(Face.,%asdx,.9) $get3dpoint($hget(Cube,$+(Face.,%asdx,.1)),$hget(Cube,$+(Face.,%asdx,.13)),0.666666)
  52. hadd -m Cube $+(Face.,%asdx,.12) $get3dpoint($hget(Cube,$+(Face.,%asdx,.4)),$hget(Cube,$+(Face.,%asdx,.16)),0.666666)
  53. hadd -m Cube $+(Face.,%asdx,.14) $get3dpoint($hget(Cube,$+(Face.,%asdx,.13)),$hget(Cube,$+(Face.,%asdx,.16)),0.333333)
  54. hadd -m Cube $+(Face.,%asdx,.15) $get3dpoint($hget(Cube,$+(Face.,%asdx,.13)),$hget(Cube,$+(Face.,%asdx,.16)),0.666666)
  55. hadd -m Cube $+(Face.,%asdx,.6) $get3dpoint($hget(Cube,$+(Face.,%asdx,.5)),$hget(Cube,$+(Face.,%asdx,.8)),0.333333)
  56. hadd -m Cube $+(Face.,%asdx,.7) $get3dpoint($hget(Cube,$+(Face.,%asdx,.5)),$hget(Cube,$+(Face.,%asdx,.8)),0.666666)
  57. hadd -m Cube $+(Face.,%asdx,.10) $get3dpoint($hget(Cube,$+(Face.,%asdx,.9)),$hget(Cube,$+(Face.,%asdx,.12)),0.333333)
  58. hadd -m Cube $+(Face.,%asdx,.11) $get3dpoint($hget(Cube,$+(Face.,%asdx,.9)),$hget(Cube,$+(Face.,%asdx,.12)),0.666666)
  59.  
  60. hadd -m Cube $+(2DFace.,%asdx,.1) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.1)))
  61. hadd -m Cube $+(2DFace.,%asdx,.2) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.2)))
  62. hadd -m Cube $+(2DFace.,%asdx,.3) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.3)))
  63. hadd -m Cube $+(2DFace.,%asdx,.4) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.4)))
  64. hadd -m Cube $+(2DFace.,%asdx,.5) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.5)))
  65. hadd -m Cube $+(2DFace.,%asdx,.6) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.6)))
  66. hadd -m Cube $+(2DFace.,%asdx,.7) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.7)))
  67. hadd -m Cube $+(2DFace.,%asdx,.8) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.8)))
  68. hadd -m Cube $+(2DFace.,%asdx,.9) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.9)))
  69. hadd -m Cube $+(2DFace.,%asdx,.10) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.10)))
  70. hadd -m Cube $+(2DFace.,%asdx,.11) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.11)))
  71. hadd -m Cube $+(2DFace.,%asdx,.12) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.12)))
  72. hadd -m Cube $+(2DFace.,%asdx,.13) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.13)))
  73. hadd -m Cube $+(2DFace.,%asdx,.14) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.14)))
  74. hadd -m Cube $+(2DFace.,%asdx,.15) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.15)))
  75. hadd -m Cube $+(2DFace.,%asdx,.16) $convert2d(%cx,%cy,$hget(Cube,$+(Face.,%asdx,.16)))
  76.  
  77. drawline -n @Cube 1 2 $hget(Cube,$+(2DFace.,%asdx,.2)) $hget(Cube,$+(2DFace.,%asdx,.14))
  78. drawline -n @Cube 1 2 $hget(Cube,$+(2DFace.,%asdx,.3)) $hget(Cube,$+(2DFace.,%asdx,.15))
  79. drawline -n @Cube 1 2 $hget(Cube,$+(2DFace.,%asdx,.5)) $hget(Cube,$+(2DFace.,%asdx,.8))
  80. drawline -n @Cube 1 2 $hget(Cube,$+(2DFace.,%asdx,.9)) $hget(Cube,$+(2DFace.,%asdx,.12))
  81.  
  82. fillface %asdx
  83. }
  84. dec %asdx
  85. }
  86. hadd -m Cube Show %show
  87. drawdot @Cube
  88. var %ms = $ticks - %ticks
  89. titlebar @Cube Rendered in: %ms ms $round($calc(1000 / %ms),2) FPS
  90. }
  91. on *:close:@Cube:hfree -w Cube
  92. on *:KEYDOWN:@Cube:*: {
  93. if ($keyval = 114 || $keyval = 82) { hadd -m Cube Keyval $keyval }
  94. }
  95. on *:KEYUP:@Cube:*: { hdel -w Cube Keyval }
  96. menu @Cube {
  97. sclick {
  98. if ($inrect($mouse.x,$mouse.y,520,0,120,14)) {
  99. hadd -m Cube xrot $iif($hget(Cube,xrot),$null,X)
  100. cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
  101. }
  102. if ($inrect($mouse.x,$mouse.y,520,15,120,14)) {
  103. hadd -m Cube yrot $iif($hget(Cube,yrot),$null,X)
  104. cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
  105. }
  106. if ($inrect($mouse.x,$mouse.y,520,30,120,14)) {
  107. hadd -m Cube zrot $iif($hget(Cube,zrot),$null,X)
  108. cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
  109. }
  110. 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)
  111. while (%x) {
  112. 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) }
  113. dec %x
  114. }
  115. hadd -m Cube LastX $mouse.x
  116. hadd -m Cube LastY $mouse.y
  117. }
  118. uclick {
  119. hdel -w Cube MovedSide
  120. hdel -w Cube ClickFace
  121. }
  122. mouse {
  123. if ($mouse.key & 1) && ($hget(Cube,keyval) = 82) {
  124. var %cx = $window(@Cube).dw / 2 , %cy = $window(@Cube).dh / 2
  125. var %c.x = $calc(360 * ($mouse.y - %cy) / %cy))
  126. var %c.y = $calc(-360 * (($mouse.x - %cx) / %cx))
  127. var %c.z = $calc(360 * ($mouse.y - %cy) / %cy))
  128.  
  129. if ($hget(cube,xrot)) { hadd -m Cube AngleX %c.x }
  130. if ($hget(cube,yrot)) { hadd -m Cube AngleY %c.y }
  131. if ($hget(cube,zrot)) { hadd -m Cube AngleZ %c.z }
  132.  
  133. cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
  134. }
  135. elseif ($mouse.key & 1) {
  136. if ($hget(Cube,Keyval) != 82) && ($hget(Cube,ClickFace)) {
  137. var %x = 8
  138. while (%x) {
  139. var %sides = $hget(Cube,$+(Line.,%x)) , %y = $numtok(%sides,59)
  140. while (%y) {
  141. var %side = $gettok(%sides,%y,59) , %poly = $replace($regsubex(%side,/(\d+)/g,$hget(Cube,$+(2DFace.,$hget(Cube,ClickFace),.,\t))),$chr(32),$chr(44))
  142. if ($lineintersect( [ %poly ] , $hget(Cube,LastX), $hget(Cube,LastY), $mouse.x, $mouse.y)) && (!$hget(Cube,Movedside)) {
  143. tokenize 59 $gettok($hget(Cube,$+(Moves.,$hget(Cube,ClickFace),.,$iif(%x >= 5,$calc(%x + 1),%x))),%y,59)
  144. hadd -m Cube MovedSide True
  145. cube.rotate $1-
  146. cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez)
  147. }
  148. dec %y
  149. }
  150. dec %x
  151. }
  152. }
  153. }
  154. }
  155. Load Game {
  156. var %file = $sfile($scriptdirsaves\,Select a Saved Game,Open)
  157. if ($exists(%file)) {
  158. hload Cube $qt(%file)
  159. cube
  160. }
  161. halt
  162. }
  163. Save Game {
  164. var %file = $sfile($scriptdirsaves\,Save As,Save) , %cont = 1
  165. if ($exists(%file)) { var %cont = $?!="File Exists! overwrite?" }
  166. if (%cont) { hsave Cube $qt(%file) }
  167. halt
  168. }
  169. -
  170. scramble: { Cube.scramble | cube $hget(cube,anglex) $hget(cube,angley) $hget(cube,anglez) }
  171. }
  172.  
  173. alias cube.init {
  174. hadd -m Cube xrot X
  175. hadd -m Cube yrot X
  176.  
  177. hadd -m Cube Color.1.1 4
  178. hadd -m Cube Color.1.2 4
  179. hadd -m Cube Color.1.3 4
  180. hadd -m Cube Color.1.4 4
  181. hadd -m Cube Color.1.5 4
  182. hadd -m Cube Color.1.6 4
  183. hadd -m Cube Color.1.7 4
  184. hadd -m Cube Color.1.8 4
  185. hadd -m Cube Color.1.9 4
  186.  
  187. hadd -m Cube Color.2.1 12
  188. hadd -m Cube Color.2.2 12
  189. hadd -m Cube Color.2.3 12
  190. hadd -m Cube Color.2.4 12
  191. hadd -m Cube Color.2.5 12
  192. hadd -m Cube Color.2.6 12
  193. hadd -m Cube Color.2.7 12
  194. hadd -m Cube Color.2.8 12
  195. hadd -m Cube Color.2.9 12
  196.  
  197. hadd -m Cube Color.3.1 7
  198. hadd -m Cube Color.3.2 7
  199. hadd -m Cube Color.3.3 7
  200. hadd -m Cube Color.3.4 7
  201. hadd -m Cube Color.3.5 7
  202. hadd -m Cube Color.3.6 7
  203. hadd -m Cube Color.3.7 7
  204. hadd -m Cube Color.3.8 7
  205. hadd -m Cube Color.3.9 7
  206.  
  207. hadd -m Cube Color.4.1 3
  208. hadd -m Cube Color.4.2 3
  209. hadd -m Cube Color.4.3 3
  210. hadd -m Cube Color.4.4 3
  211. hadd -m Cube Color.4.5 3
  212. hadd -m Cube Color.4.6 3
  213. hadd -m Cube Color.4.7 3
  214. hadd -m Cube Color.4.8 3
  215. hadd -m Cube Color.4.9 3
  216.  
  217. hadd -m Cube Color.5.1 0
  218. hadd -m Cube Color.5.2 0
  219. hadd -m Cube Color.5.3 0
  220. hadd -m Cube Color.5.4 0
  221. hadd -m Cube Color.5.5 0
  222. hadd -m Cube Color.5.6 0
  223. hadd -m Cube Color.5.7 0
  224. hadd -m Cube Color.5.8 0
  225. hadd -m Cube Color.5.9 0
  226.  
  227. hadd -m Cube Color.6.1 8
  228. hadd -m Cube Color.6.2 8
  229. hadd -m Cube Color.6.3 8
  230. hadd -m Cube Color.6.4 8
  231. hadd -m Cube Color.6.5 8
  232. hadd -m Cube Color.6.6 8
  233. hadd -m Cube Color.6.7 8
  234. hadd -m Cube Color.6.8 8
  235. hadd -m Cube Color.6.9 8
  236.  
  237. hadd -m Cube Line.1 1 5;1 2
  238. hadd -m Cube Line.2 2 3
  239. hadd -m Cube Line.3 4 8;3 4
  240. hadd -m Cube Line.4 5 9
  241. hadd -m Cube Line.5 8 12
  242. hadd -m Cube Line.6 9 13;13 14
  243. hadd -m Cube Line.7 14 15
  244. hadd -m Cube Line.8 12 16;15 16
  245.  
  246. hadd -m Cube Moves.1.1 y 3 1;x 1 1
  247. hadd -m Cube Moves.1.2 x 2 1
  248. hadd -m Cube Moves.1.3 y 3;x 3 1
  249. hadd -m Cube Moves.1.4 y 2 1
  250. hadd -m Cube Moves.1.5 z 3 1
  251. hadd -m Cube Moves.1.6 y 2
  252. hadd -m Cube Moves.1.7 y 1 1;x 1
  253. hadd -m Cube Moves.1.8 x 2
  254. hadd -m Cube Moves.1.9 y 1;x 3
  255.  
  256. hadd -m Cube Moves.2.1 y 3 1;z 3 1
  257. hadd -m Cube Moves.2.2 z 2 1
  258. hadd -m Cube Moves.2.3 y 3;z 1 1
  259. hadd -m Cube Moves.2.4 y 2 1
  260. hadd -m Cube Moves.2.5 x 1
  261. hadd -m Cube Moves.2.6 y 2
  262. hadd -m Cube Moves.2.7 y 1 1;z 3
  263. hadd -m Cube Moves.2.8 z 2
  264. hadd -m Cube Moves.2.9 y 1;z 1
  265.  
  266. hadd -m Cube Moves.3.1 y 3 1;x 3
  267. hadd -m Cube Moves.3.2 x 2
  268. hadd -m Cube Moves.3.3 y 3;x 1
  269. hadd -m Cube Moves.3.4 y 2 1
  270. hadd -m Cube Moves.3.5 z 1
  271. hadd -m Cube Moves.3.6 y 2
  272. hadd -m Cube Moves.3.7 y 1 1;x 3 1
  273. hadd -m Cube Moves.3.8 x 2 1
  274. hadd -m Cube Moves.3.9 y 1; x 1 1
  275.  
  276. hadd -m Cube Moves.4.1 y 3 1;z 1
  277. hadd -m Cube Moves.4.2 z 2
  278. hadd -m Cube Moves.4.3 y 3;z 3
  279. hadd -m Cube Moves.4.4 y 2 1
  280. hadd -m Cube Moves.4.5 x 3 1
  281. hadd -m Cube Moves.4.6 y 2
  282. hadd -m Cube Moves.4.7 y 1 1;z 1 1
  283. hadd -m Cube Moves.4.8 z 2 1
  284. hadd -m Cube Moves.4.9 y 1;z 3 1
  285.  
  286. hadd -m Cube Moves.5.1 z 1 1;x 1 1
  287. hadd -m Cube Moves.5.2 x 2 1
  288. hadd -m Cube Moves.5.3 z 1; x 3 1
  289. hadd -m Cube Moves.5.4 z 2 1
  290. hadd -m Cube Moves.5.5 y 3 1
  291. hadd -m Cube Moves.5.6 z 2
  292. hadd -m Cube Moves.5.7 z 3 1;x 1
  293. hadd -m Cube Moves.5.8 x 2
  294. hadd -m Cube Moves.5.9 z 3; x 3
  295.  
  296. hadd -m Cube Moves.6.1 z 3;x 1 1
  297. hadd -m Cube Moves.6.2 x 2 1
  298. hadd -m Cube Moves.6.3 z 3 1;x 3 1
  299. hadd -m Cube Moves.6.4 z 2
  300. hadd -m Cube Moves.6.5 y 1
  301. hadd -m Cube Moves.6.6 z 2 1
  302. hadd -m Cube Moves.6.7 z 1;x 1
  303. hadd -m Cube Moves.6.8 x 2
  304. hadd -m Cube Moves.6.9 z 1 1;x 3
  305.  
  306. }
  307. alias Get3DPoint {
  308. tokenize 32 $1-
  309. var %1t = 1 - $7
  310. return $calc((%1t * $1) + ($7 * $4)) $calc((%1t * $2) + ($7 * $5)) $calc((%1t * $3) + ($7 * $6))
  311. }
  312. alias convert2d {
  313. var %cx = $1 , %cy = $2
  314. tokenize 32 $3-
  315. return $round($calc(%cx + ($1 * 500) / ($3 + 500)),0) $round($calc(%cy + ($2 * 500) / ($3 + 500)),0)
  316. }
  317. alias FillFace {
  318. var %face = $1 , %y = 0 , %z = 1
  319. while (%y < 3) {
  320. var %x = 0
  321. while (%x < 3) {
  322. 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)))))
  323. var %avgx = $calc(($1 + $3 + $5 + $7) / 4) , %avgy = $calc(($2 + $4 + $6 + $8) / 4)
  324. if ($inpoly(%avgx,%avgy, [ $replace($1-,$chr(32),$chr(44)) ] )) {
  325. drawfill -n @Cube $hget(Cube,$+(Color.,%face,.,%z)) 1 %avgx %avgy
  326. }
  327. inc %x
  328. inc %z
  329. }
  330. inc %y
  331. }
  332. }
  333. alias -l checkline {
  334. var %slope = $calc(($4 - $2) / ($3 - $1))
  335. var %y1 = $calc($2 - ($1 * %slope)) , %x1 = $calc($1 - ($2 / %slope))
  336. var %y2 = $calc($6 - ($5 * %slope)) , %x2 = $calc($5 - ($6 / %slope))
  337. var %y0 = %y2 - %y1 , %x0 = %x2 - %x1
  338. 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 }
  339. }
  340. alias lineintersect {
  341. var %dy = $4 - $2 , %dx = $3 - $1 , %db = $8 - $6 , %da = $7 - $5
  342. var %c1 = $calc((%da * %dy) - (%db * %dx)) , %c2 = $calc((%db * %dx) - (%da * %dy))
  343. if (%c1 = 0) || (%c2 = 0) { return }
  344. var %s = $calc(((%dx * ($6 - $2)) + (%dy * ($1 - $5))) / %c1)
  345. var %t = $calc(((%da * ($2 - $6)) + (%db * ($5 - $1))) / %c2)
  346. if (%s isnum 0-1) && (%t isnum 0-1) { return $true }
  347. }
  348. alias -l Cube.Scramble {
  349. var %x = 26
  350. while (%x) {
  351. var %y = $r(0,1)
  352. cube.rotate $r(x,z) $r(1,3) $iif(%y,1)
  353. dec %x
  354. }
  355. }
  356. alias Face.Spin {
  357. var %y = 9
  358. while (%y) {
  359. var %Color. $+ %y $hget(Cube,$+(Color.,$1,.,%y))
  360. dec %y
  361. }
  362. hadd -m Cube $+(Color.,$1,.1) $iif(!$2,%Color.7,%Color.3)
  363. hadd -m Cube $+(Color.,$1,.2) $iif(!$2,%Color.4,%Color.6)
  364. hadd -m Cube $+(Color.,$1,.3) $iif(!$2,%Color.1,%Color.9)
  365. hadd -m Cube $+(Color.,$1,.4) $iif(!$2,%Color.8,%Color.2)
  366. hadd -m Cube $+(Color.,$1,.6) $iif(!$2,%Color.2,%Color.8)
  367. hadd -m Cube $+(Color.,$1,.7) $iif(!$2,%Color.9,%Color.1)
  368. hadd -m Cube $+(Color.,$1,.8) $iif(!$2,%Color.6,%Color.4)
  369. hadd -m Cube $+(Color.,$1,.9) $iif(!$2,%Color.3,%Color.7)
  370. }
  371. alias Cube.Rotate {
  372. var %x = 6
  373. while (%x) {
  374. var %y = 9
  375. while (%y) {
  376. var %Color. $+ $+(%x,.,%y) $hget(Cube,$+(Color.,%x,.,%y))
  377. dec %y
  378. }
  379. dec %x
  380. }
  381. if ($1 = x) {
  382. if ($2 = 1) {
  383. ;Faces Effected: 1 3 4 5 6
  384. face.spin 4 $3
  385.  
  386. hadd -m Cube Color.1.1 $iif($3,%Color.6.1,%Color.5.1)
  387. hadd -m Cube Color.1.4 $iif($3,%Color.6.4,%Color.5.4)
  388. hadd -m Cube Color.1.7 $iif($3,%Color.6.7,%Color.5.7)
  389.  
  390. hadd -m Cube Color.3.3 $iif($3,%Color.5.7,%Color.6.7)
  391. hadd -m Cube Color.3.6 $iif($3,%Color.5.4,%Color.6.4)
  392. hadd -m Cube Color.3.9 $iif($3,%Color.5.1,%Color.6.1)
  393.  
  394. hadd -m Cube Color.5.1 $iif($3,%Color.1.1,%Color.3.9)
  395. hadd -m Cube Color.5.4 $iif($3,%Color.1.4,%Color.3.6)
  396. hadd -m Cube Color.5.7 $iif($3,%Color.1.7,%Color.3.3)
  397.  
  398. hadd -m Cube Color.6.1 $iif($3,%Color.3.9,%Color.1.1)
  399. hadd -m Cube Color.6.4 $iif($3,%Color.3.6,%Color.1.4)
  400. hadd -m Cube Color.6.7 $iif($3,%Color.3.3,%Color.1.7)
  401. }
  402. if ($2 = 2) {
  403. ;Faces Effected: 1 3 5 6
  404. hadd -m Cube Color.1.2 $iif($3,%Color.6.2,%Color.5.2)
  405. hadd -m Cube Color.1.5 $iif($3,%Color.6.5,%Color.5.5)
  406. hadd -m Cube Color.1.8 $iif($3,%Color.6.8,%Color.5.8)
  407.  
  408. hadd -m Cube Color.3.2 $iif($3,%Color.5.8,%Color.6.8)
  409. hadd -m Cube Color.3.5 $iif($3,%Color.5.5,%Color.6.5)
  410. hadd -m Cube Color.3.8 $iif($3,%Color.5.2,%Color.6.2)
  411.  
  412. hadd -m Cube Color.5.2 $iif($3,%Color.1.2,%Color.3.8)
  413. hadd -m Cube Color.5.5 $iif($3,%Color.1.5,%Color.3.5)
  414. hadd -m Cube Color.5.8 $iif($3,%Color.1.8,%Color.3.2)
  415.  
  416. hadd -m Cube Color.6.2 $iif($3,%Color.3.8,%Color.1.2)
  417. hadd -m Cube Color.6.5 $iif($3,%Color.3.5,%Color.1.5)
  418. hadd -m Cube Color.6.8 $iif($3,%Color.3.2,%Color.1.8)
  419. }
  420. if ($2 = 3) {
  421. ;Faces Effected: 1 2 3 5 6
  422. face.spin 2 $iif(!$3,1)
  423.  
  424. hadd -m Cube Color.1.3 $iif($3,%Color.6.3,%Color.5.3)
  425. hadd -m Cube Color.1.6 $iif($3,%Color.6.6,%Color.5.6)
  426. hadd -m Cube Color.1.9 $iif($3,%Color.6.9,%Color.5.9)
  427.  
  428. hadd -m Cube Color.3.1 $iif($3,%Color.5.9,%Color.6.9)
  429. hadd -m Cube Color.3.4 $iif($3,%Color.5.6,%Color.6.6)
  430. hadd -m Cube Color.3.7 $iif($3,%Color.5.3,%Color.6.3)
  431.  
  432. hadd -m Cube Color.5.3 $iif($3,%Color.1.3,%Color.3.7)
  433. hadd -m Cube Color.5.6 $iif($3,%Color.1.6,%Color.3.4)
  434. hadd -m Cube Color.5.9 $iif($3,%Color.1.9,%Color.3.1)
  435.  
  436. hadd -m Cube Color.6.3 $iif($3,%Color.3.7,%Color.1.3)
  437. hadd -m Cube Color.6.6 $iif($3,%Color.3.4,%Color.1.6)
  438. hadd -m Cube Color.6.9 $iif($3,%Color.3.1,%Color.1.9)
  439. }
  440. }
  441. if ($1 = y) {
  442. if ($2 = 1) {
  443. ;Faces Effected: 1 2 3 4 6
  444. hadd -m Cube Color.1.7 $iif($3,%Color.2.7,%Color.4.7)
  445. hadd -m Cube Color.1.8 $iif($3,%Color.2.8,%Color.4.8)
  446. hadd -m Cube Color.1.9 $iif($3,%Color.2.9,%Color.4.9)
  447.  
  448. hadd -m Cube Color.2.7 $iif($3,%Color.3.7,%Color.1.7)
  449. hadd -m Cube Color.2.8 $iif($3,%Color.3.8,%Color.1.8)
  450. hadd -m Cube Color.2.9 $iif($3,%Color.3.9,%Color.1.9)
  451.  
  452. hadd -m Cube Color.3.7 $iif($3,%Color.4.7,%Color.2.7)
  453. hadd -m Cube Color.3.8 $iif($3,%Color.4.8,%Color.2.8)
  454. hadd -m Cube Color.3.9 $iif($3,%Color.4.9,%Color.2.9)
  455.  
  456. hadd -m Cube Color.4.7 $iif($3,%Color.1.7,%Color.3.7)
  457. hadd -m Cube Color.4.8 $iif($3,%Color.1.8,%Color.3.8)
  458. hadd -m Cube Color.4.9 $iif($3,%Color.1.9,%Color.3.9)
  459.  
  460. face.spin 6 $3
  461. }
  462. if ($2 = 2) {
  463. ;Faces Effected: 1 2 3 4
  464. hadd -m Cube Color.1.4 $iif($3,%Color.2.4,%Color.4.4)
  465. hadd -m Cube Color.1.5 $iif($3,%Color.2.5,%Color.4.5)
  466. hadd -m Cube Color.1.6 $iif($3,%Color.2.6,%Color.4.6)
  467.  
  468. hadd -m Cube Color.2.4 $iif($3,%Color.3.4,%Color.1.4)
  469. hadd -m Cube Color.2.5 $iif($3,%Color.3.5,%Color.1.5)
  470. hadd -m Cube Color.2.6 $iif($3,%Color.3.6,%Color.1.6)
  471.  
  472. hadd -m Cube Color.3.4 $iif($3,%Color.4.4,%Color.2.4)
  473. hadd -m Cube Color.3.5 $iif($3,%Color.4.5,%Color.2.5)
  474. hadd -m Cube Color.3.6 $iif($3,%Color.4.6,%Color.2.6)
  475.  
  476. hadd -m Cube Color.4.4 $iif($3,%Color.1.4,%Color.3.4)
  477. hadd -m Cube Color.4.5 $iif($3,%Color.1.5,%Color.3.5)
  478. hadd -m Cube Color.4.6 $iif($3,%Color.1.6,%Color.3.6)
  479. }
  480. if ($2 = 3) {
  481. ;Faces Effected: 1 2 3 4 5
  482. hadd -m Cube Color.1.1 $iif($3,%Color.2.1,%Color.4.1)
  483. hadd -m Cube Color.1.2 $iif($3,%Color.2.2,%Color.4.2)
  484. hadd -m Cube Color.1.3 $iif($3,%Color.2.3,%Color.4.3)
  485.  
  486. hadd -m Cube Color.2.1 $iif($3,%Color.3.1,%Color.1.1)
  487. hadd -m Cube Color.2.2 $iif($3,%Color.3.2,%Color.1.2)
  488. hadd -m Cube Color.2.3 $iif($3,%Color.3.3,%Color.1.3)
  489.  
  490. hadd -m Cube Color.3.1 $iif($3,%Color.4.1,%Color.2.1)
  491. hadd -m Cube Color.3.2 $iif($3,%Color.4.2,%Color.2.2)
  492. hadd -m Cube Color.3.3 $iif($3,%Color.4.3,%Color.2.3)
  493.  
  494. hadd -m Cube Color.4.1 $iif($3,%Color.1.1,%Color.3.1)
  495. hadd -m Cube Color.4.2 $iif($3,%Color.1.2,%Color.3.2)
  496. hadd -m Cube Color.4.3 $iif($3,%Color.1.3,%Color.3.3)
  497.  
  498. face.spin 5 $iif(!$3,1)
  499. }
  500. }
  501. if ($1 = z) {
  502. if ($2 = 1) {
  503. ;Faces Effected: 2 3 4 5 6
  504. hadd -m Cube Color.2.3 $iif($3,%Color.6.9,%Color.5.1)
  505. hadd -m Cube Color.2.6 $iif($3,%Color.6.8,%Color.5.2)
  506. hadd -m Cube Color.2.9 $iif($3,%Color.6.7,%Color.5.3)
  507.  
  508. face.spin 3 $iif(!$3,1)
  509.  
  510. hadd -m Cube Color.4.1 $iif($3,%Color.5.3,%Color.6.7)
  511. hadd -m Cube Color.4.4 $iif($3,%Color.5.2,%Color.6.8)
  512. hadd -m Cube Color.4.7 $iif($3,%Color.5.1,%Color.6.9)
  513.  
  514. hadd -m Cube Color.5.1 $iif($3,%Color.2.3,%Color.4.7)
  515. hadd -m Cube Color.5.2 $iif($3,%Color.2.6,%Color.4.4)
  516. hadd -m Cube Color.5.3 $iif($3,%Color.2.9,%Color.4.1)
  517.  
  518. hadd -m Cube Color.6.7 $iif($3,%Color.4.1,%Color.2.9)
  519. hadd -m Cube Color.6.8 $iif($3,%Color.4.4,%Color.2.6)
  520. hadd -m Cube Color.6.9 $iif($3,%Color.4.7,%Color.2.3)
  521. }
  522. if ($2 = 2) {
  523. ;Faces Effected: 2 4 5 6
  524. hadd -m Cube Color.2.2 $iif($3,%Color.6.6,%Color.5.4)
  525. hadd -m Cube Color.2.5 $iif($3,%Color.6.5,%Color.5.5)
  526. hadd -m Cube Color.2.8 $iif($3,%Color.6.4,%Color.5.6)
  527.  
  528. hadd -m Cube Color.4.2 $iif($3,%Color.5.6,%Color.6.4)
  529. hadd -m Cube Color.4.5 $iif($3,%Color.5.5,%Color.6.5)
  530. hadd -m Cube Color.4.8 $iif($3,%Color.5.4,%Color.6.6)
  531.  
  532. hadd -m Cube Color.5.4 $iif($3,%Color.2.2,%Color.4.8)
  533. hadd -m Cube Color.5.5 $iif($3,%Color.2.5,%Color.4.5)
  534. hadd -m Cube Color.5.6 $iif($3,%Color.2.8,%Color.4.2)
  535.  
  536. hadd -m Cube Color.6.4 $iif($3,%Color.4.2,%Color.2.8)
  537. hadd -m Cube Color.6.5 $iif($3,%Color.4.5,%Color.2.5)
  538. hadd -m Cube Color.6.6 $iif($3,%Color.4.8,%Color.2.2)
  539. }
  540. if ($2 = 3) {
  541. ;Faces Effected: 1 2 4 5 6
  542. face.spin 1 $3
  543. hadd -m Cube Color.2.1 $iif($3,%Color.6.3,%Color.5.7)
  544. hadd -m Cube Color.2.4 $iif($3,%Color.6.2,%Color.5.8)
  545. hadd -m Cube Color.2.7 $iif($3,%Color.6.1,%Color.5.9)
  546.  
  547. hadd -m Cube Color.4.3 $iif($3,%Color.5.9,%Color.6.1)
  548. hadd -m Cube Color.4.6 $iif($3,%Color.5.8,%Color.6.2)
  549. hadd -m Cube Color.4.9 $iif($3,%Color.5.7,%Color.6.3)
  550.  
  551. hadd -m Cube Color.5.7 $iif($3,%Color.2.1,%Color.4.9)
  552. hadd -m Cube Color.5.8 $iif($3,%Color.2.4,%Color.4.6)
  553. hadd -m Cube Color.5.9 $iif($3,%Color.2.7,%Color.4.3)
  554.  
  555. hadd -m Cube Color.6.1 $iif($3,%Color.4.3,%Color.2.7)
  556. hadd -m Cube Color.6.2 $iif($3,%Color.4.6,%Color.2.4)
  557. hadd -m Cube Color.6.3 $iif($3,%Color.4.9,%Color.2.1)
  558. }
  559. }
  560. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement