#!/bin/sh # MetaCard 2.1 stack # The following is not ASCII text, # so now would be a good time to q out of more exec mc $0 "$@"  rabbitronp!on arrowkey direction if direction is "up" then set vscroll of grp 1 to (vscroll of grp 1 - 15) else if direction is "down" then set vscroll of grp 1 to (vscroll of grp 1 + 15) else if direction is "left" then set hscroll of grp 1 to (hscroll of grp 1 - 15) else if direction is "right" then set hscroll of grp 1 to (hscroll of grp 1 + 15) if not within(grc 2,loc of image 1) then send "niave direction" to grc 2 repeat with ahab = 6 to 9 if intersect (image 1,btn ahab) and hilite of btn ahab is false then set hilite of btn ahab to true repeat with ahab = 1 to 4 if hilite of btn ahab is false then set hilite of btn ahab to true exit repeat end if end repeat end if end repeat if hilite of btn 4 is true then send preopencard to cd 1 end arrowkey wffffffwhite darkgraykmaze3F114,54 552,54 552,426 96,426 96,336 216,336 216,144 456,144 456,336 360,336 360,222 300,222 300,324 486,330 468,228 468,132 330,150 204,126 162,240 102,192 96,54 126,54 126,54 END 270,72,330,126 150,348,216,408 486,222,546,266 372,228,438,272 318,60,420,126 474,318,546,408 366,246,438,324 252,354,402,408 480,138,546,210 1205maze4k90,36 288,36 198,354 462,354 186,138 186,360 480,360 480,240 264,240 264,174 408,174 522,42 300,42 396,180 516,132 516,72 594,132 594,432 126,432 90,36 END 264,288,318,342 372,72,438,132 522,318,582,362 114,240,180,284 420,30,528,102 246,162,366,270 168,90,270,150 126,12,180,126 342,270,426,354 522,318,576,420 486,96,582,198 378,108,426,204 252,372,408,414 1206maze5c84,24 582,90 138,228 486,318 96,378 96,66 222,174 438,108 192,54 192,366 108,396 576,414 576,264 390,228 582,168 90,96 84,24 END 420,48,480,132 492,264,558,324 234,204,294,248 300,354,366,398 186,348,276,408 480,342,594,402 102,204,216,252 300,228,366,300 270,102,390,156 144,288,204,384 270,156,390,204 210,228,336,318 126,18,186,120 486,162,576,270 1208maze1186,66 186,126 246,90 486,90 486,162 336,162 336,228 564,228 564,312 264,312 264,216 168,390 72,390 72,300 222,186 90,186 90,54 186,66 END 378,84,438,168 120,270,186,330 366,246,426,290 126,138,192,182 282,108,354,150 282,234,342,318 330,378,390,426 1196maze2X222,60 114,60 114,396 306,396 360,312 504,312 504,198 546,198 546,144 372,144 372,114 492,114 492,60 258,60 258,150 312,150 312,192 342,204 420,204 420,240 288,240 246,324 252,168 192,168 192,138 276,138 276,72 222,72 222,60 END 372,66,432,120 114,210,180,270 444,228,504,272 258,318,324,362 120,270,174,312 258,222,318,306 366,150,444,198 1194 rabbitronUClean UCleanUCleanUCleanWCleanWCleanWtimesW helveticaW helveticaW helveticaWcleanWcleanWcleanWcleanWcleanWcleanW HelveticaWGenevaWLucidaTypewriterU HelveticaUCleanWClean U HelveticaPon preopencard which global rounds set lockscreen to true set hscroll of grp 1 to 0 set vscroll of grp 1 to 0 repeat with ahab = 1 to 9 set hilite of btn ahab to false end repeat if there is a btn 8 of grp 1 then repeat (number of btns of grp 1 - 7) delete last btn of grp 1 end repeat end if if which is empty then add 1 to rounds try do "get createmaze(the"&&line rounds of the customkeys of stack rabbitron&&"of stack rabbitron)" catch errornumber end try end if end preopencard on closestack remove script of grc "copyright" from back cancel item 1 of the pendingmessages end closestack P't game levelHvon openbackground if editbkgnd is false then repeat with ahab = 10 to number of last btn if intersect(image 1,btn ahab) then move btn ahab to (topright of image 1) in 13 ticks without messages repeat with ahab = 4 down to 1 if hilite of btn (5 + ahab) is true then set hilite of btn (5 + ahab) to false if hilite of btn ahab is true then set hilite of btn ahab to false exit repeat end if end repeat exit repeat end if end repeat end if send openbackground to me in 1.5 seconds end openbackground on niave chick if chick is "up" then arrowkey down else if chick is "down" then arrowkey up else if chick is "right" then arrowkey "left" else if chick is "left" then arrowkey "right" end niave on preopenstack insert script of grc "copyright" into back end preopenstack vscrool0# @D B XB~ZZPP4488HH,ZZ6B$ New Button `zT<Tbhab ts fuck2   New ButtonB `xB<  New ButtonB `n<,  New ButtonB `~B,  New ButtonB `lH*  New ButtonC<T  New ButtonCJz<0 'rabby@rB$(GIF89a$(f3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3wUD"wUD"wUD"ݻwwwUUUDDD"""!,$(H*\ȰÇ#* GQBY<ƍ=VQH&1$J"_(érss'L9 sῡ=EJ(¥HuʔѪL1\!TgTG. 'V`خ 6֫ULl +ҷl?pXbLEB:T?BDEGIKPTPPGB@<952015:@N`MD><>@AAB@=:63/0..11238=CKKZXPKI>BCETTSD@JT]@BIRUR=8321-36;@GUUMKL:9689::=KR]`ZZ\]Xd "H|J:+_ Xj/Sv9Y /Za `"e#B %e &G)bd 0X鑃F4l+"%vM8 &p!#GAX ^յd"=}Ei8sd0$B8p3rt Y })bK=xؑ Y54P 6)VtѥdY @~ !\v &C(i30 XgFT`R,aD$8LB`4l;tePI<| @iЂ 2BQZ"mA=DPFԈD"Vp)P .Z0DP5E  4CM\bVbR`U,`4$VՅM0 ," 1`CA$W"P@╹`!5]AeNY0D/Id4č%RRO|PCfV\qC rDM ɰb"#-AcD0*@ˏWpAL,jC$Hb[ͮ /\0hp 3UP 2 g'^.Ń8ʰ~\0䦷(x :P>5d W!<8`Ѯ d-0B ҃YuֱC"(D@E+˅]Pr -r?PO@YPE 0ɳ٣g<*C 1ЀV]PAv 'i`4\Ӱ MlMO\pKB<F!!C @9XHq8/@ɰCvPxQl/QB`΀a;GtlE}qY@@fC Hsg(G_F_@ RsN2)D$X$yB` B1- h"Og+Y>mUdh6ר0 0C?:(HA Tp$b|whPfKPp NhV*xADqu#1B( e<0Bp% X XQZ`D#)6KB EU*AzV`/$\(Ht !(=IPB;ŔT$3/)'@&b$Qrt`b#|[3PÃn"3?x ˉ [S* t;XEon)⃅- QA " 9%sDVT:8! B/E)&~k,$-$ @ uL`(8"f􅮈-zI|r` @{g C< (ez2yM3j8##uKZ PN[$`68و1bŠD(*mocz(>~=J.0eW|#@$A`U$D0PN'hb$@tQ8O2`DLن!juQ8C`x ӗx,& NB , BسU&PK4)(FnrXt T C=Vgf=&/mnǝ._gL N8[H (@7@,mo@X:|LXp@GIBNp`pWw| d5~ $+#NP` -9W ]P2` w'gӕ_~r' "!H$A*C 7bU=#1Btpmt6p>rV 45J '7C @q%]2T1P PMGHxbqd{7z5P7R6x$W$_T.}It g 7|'9S`0HeU4Q[ B! iWwPGp{7u$/0QxCn $=J(CA8c'qfinxbJypK@ Q@n@:ʅSNPB kBPr1vwrsO! Ms@|2A*#@PJD mHZ#7`l*Pd&WubT7U^&8CWH625s[Io'%1o'vwUu 0 HK`1aS_?)`$p.0!pV k "'n P' @V7p@9.M%NvP$]&'*pdgFihY}v X++1!`>R0)pT&t]/UvQ0X)p4$8Жfv7~+P6$,SM,)lUyVU_/RK& ;IpX|])73i"s"ap3@A5 `0咟?`-P'&` GoFugIVLAP`6Z ~V=Bဗ+V 0; tex1.GIF@H@@GIF89a@@ZZք11{kJ1JB1Μ1筄R)cBέJ΄ƄR{kZքk)csB{Zބ{քkZƄRބcƄބ{ބ΄Ƅքք֌΄ބ{Όޔ{΄{ք电Ɣkք{Z΄ޭΥƄR{BZεR9J9!sR1s)s1s!kRsRBJ1Rks)1ބ11BkkZZsZB11)JBRJ)RsJ19))1s9{sR1RkBc)RRs{Rk{B{)JR{sZJ1{!{ssZZ11JBJsZ1s1ssZJs1sZJ1{!ZkBZsBRZ{BB1{BZ1Z!s1Js!R!1s{)JR{,@@d1 W, K@ fpBcHBX`&M^&N*&ҹzDQHP8igzR@c*URHM"aӬrcĄ^1PAXQ!2%蒲r0Wɔ`JO4I xP(X `iJ ȕ=n0eQAοT"I v#W^1b`Hf4ayj&JaS"t<ԠZjhPWcU%Ȓ #p@_(.M;pT'%D))_?dd$Y #+ N%p0E -0&%t҉0+ TL!;0#[00\`@Ya 8ň&T#LDPb4?8Ũt#E+0RF"^Jxxvkxˀ0#DvaF:^@La#hp 2C*BH<„! ( =8XP !$YxLE2"00"1PM")x@ Қ2JEN "7pJ^82N:Rh2*8XÍ"&z UT2Ȥx#8Bx2+X:i1h“3 TL"N|]i,\" J 7=Lx4 Cμ+M$ 7Ҙ!ĥE4 +<P (%T|$S?8Q.@ClXJƄ7?30. *7ɠ(-#,Os$f<J<@0*L 9U =9$']<{4C!@5` e P  @E*8dVCՆB1Wfgq?,@! 51jpC@C MPS4=048* -W$pxF2уh;ppBRA&"}9D hB` VEWC?X&RP# @Dn`Dtp( b pT,#|$\Wb+ 4+2QeL?4B h$C0yCM_Qj(f%„F 3!3O&2QBa2G̚Yb9}tʑqh`5^J>&F(E',TcB ^,7! jPA14) r- &&Ұ 0 `-p ~Tfr$a!0WL` f<)Nrt T2UZ;(9A\ʰ @NeUP1,G+m@ +``~jP`  N@nC!L0 ʠb]4QA*14,* 0"  f_^π.;;)P2 rT4 Vv#ɰ`%[@' @'l|T S #ְ  9Ep|PV0B`BY"tN0+ 0 3" Ƹ rJP @1/T:V6Bcg'1X8MAV7  kM0 SvEp66L 0 lA?%  p` 2 Ԑf0@[P~d AG ˀ|3P;#A1q ՐS  `pC )U8p | GKba3 @  aqp k|C1B@ ֠_N0= Pk +fT' :QN{ː[ByD #0! o  "_@&rVf4F Op#b x%P ^ Ln$X*Q^ q+0CP P1`  - ~p9ra"(z 0!?l*&(i)V|sb1~VJu P F*]F8' H*6R# y b `fD'+j@2voj#& 7 0   Jj4xD+~v'!1 x PpkEG 19HũNJypw%` 0=0RPJؘF%aj&P1) DPm:+FcQrTHE10 wwj ! -VZ$s&!pp'J1+rxz`` jDs!:qFV`G|_9 ֜fVP$VN>s  aĀ2鵬Pk, 5:Ff`@yiqH#{Yf\Gb湏jgg>i9w(yf~pvf,θ(Di,l8.bf'b Y"9-is'#\x)s 6I sF X v܋EPڞf Z j{^bv`JFp@0 [u8.iv 'Ә,?A XEl>hn Qlk |2f $ =}- U(B@tle A94Q\XAL4B@ LũapnY#M .l`ʠ20y財)DXla&5$ACP5f,!Z).0YJUm0oB(EZ= (`F~AeMK^nbbpT CC&H(nw;d(oT*7wYX 1[$|I²4 ]p f0U(0pB N%} ߃F%~\^%  t"*E2Q<(ĝ}L֐HKH!IҒՋlJ/.OT&#=KMu9SA;%t98:4agӮya0(U\JTu$Ta 0A; New ButtonC `H6 tHELPJX ,on mouseUp palette aboutgame end mouseUp F5 CopyrightKfunction createmaze x set points of grc 2 to (line 1 to lineoffset("end",x) -1 of x) put line lineoffset("end",x) + 1 to -2 of x into ahab put 6 into chab repeat for each line sam in ahab if there is not a btn chab then clone btn (13 - random(3)) set rect of btn chab to sam add 1 to chab end repeat set backgroundpattern of grc 1 to line -1 of x end createmaze (Tuviah Snyder,1998.All rights reservedgeditor pon closestack global rounds set lockscreen to true if label of btn 1 is not empty then put lineoffset(label of btn 1,the customkeys of stack "rabbitron") into rounds if there is a grc 3 of stack rabbitron then delete grc 3 of stack rabbitron go stack rabbitron set rect of stack rabbitron to 187,107,463,385 show grc 2 do "get createmaze(the "&line rounds of the customkeys of stack rabbitron&" of stack rabbitron)" choose browse tool end closestack on preOpenStack end preOpenStack }6EditStack Properties...geditorW HelveticaW HelveticaW Arial BlackWChicago W HelveticaW HelveticaU HelveticaU Helvetica @}6 New Button`)m0~*5select level to load,or delete.Rename level to save.maze1maze1 maze2 maze3 maze4 maze5  SAVE`Exon mouseUp if there is a grc 3 of stack rabbitron then set the defaultstack to rabbitron put the points of grc 3 into bhab if (label of btn 1 of stack geditor) is in customkeys of stack "rabbitron" then ask "Name your maze.." else get label of btn 1 of stack geditor repeat with ahab = 6 to number of last btn put rect of btn ahab&return after theenemies end repeat put bhab&return&"END"&RETURN&theenemies&backgroundpattern of grc 1 into bhab do "set the "&word 1 of it&" of stack rabbitron to bhab" set label of btn 1 of stack geditor to word 1 of it close stack geditor end if end mouseUp 0~*SAVE current level ion mouseup switch short name of target case "MAZE" if number of last grc of stack rabbitron is not 2 then delete grc 3 of stack rabbitron set style of the templategraphic to polygon set linesize of the templategraphic to 2 choose graphic tool break case "Characters" choose pointer tool select last btn of stack rabbitron break case "Duplicate" clone last btn of stack rabbitron break end switch end mouseup &MAZE`Eh0*~*create new maze  Characters`Eh0T~*move around characters ERASE`Exon mouseUp put label of btn 1 into ahab answer "delete maze "&ahab with "yes" or "no" if it is "yes" and character 1 to 4 of ahab is not "maze" then put the customkeys of stack rabbitron into zd delete line lineoffset(ahab,zd) of zd set the customkeys of stack rabbitron to zd put customkeys of stack rabbitron into btn 1 sort lines of btn 1 by word 1 of each end if end mouseUp 0~*DELETE selected level  Duplicate`Eh0~~*make more bugs  PATTERNSKXpon mouseUp pulldown stack textures end mouseUp on mousedoubleUp go stack "texture maker" end mousedoubleup <" textures pon mouseup set the brushpattern of grc patterns of stack geditor to icon of btn (the hilitedbutton of grp 1) set the brushpattern of grc 1 of stack rabbitron to icon of btn (the hilitedbutton of grp 1) end mouseup on preOpenStack end preOpenStack !ZEditStack Properties...  @ ! egypt.GIF@`.@@ GIF89a@@c11c1cc1ΜcccΜ11c11cc1!!!!11BBBc111Μc1111c1ccΜcΜ1sssRRRRccBB!Μ1c1cccc1c11c1cc111cc1cs,@@( $00 (A  AL cCPP 4pE,s!A?GdA)W6@¿PEEq60 ,T8 ɢG3EiԧN]iN |_p4H$I)@@Co7'W8HA j6ц nVUdl7@ 0B& )HR90q" (J Ҭ Hp @L˳ O#<8]F@iDj@k<S]PPu-` 0d<5f!) Vp~|&ך$l_)PBlEptR dk.P^ ($_>AHa!b UkOGd /`_ AWEV4&jAPpRUB ٕ }QꗥGWFA|g TN#а hU$@fwS8J3Bl*&6? jR C dp!cy*D5.5P;A ` APuYaA5Qy @@ 8E#P 6+qadח]YZJz]@A@`V,!vF@3dpN_˖%vU_`? cT` POSTWY 3PC 45Y@E6H4ނ}sid^gxS L lpBnD %P2y% `) @7oGIA+# +d?s`R,}5n@A@ Ms.pȉDuU= J*'+O}8blGa`7 P!XQZRTe R?)I AD9DB\$K `}0v$KӒG.BmPu(qc|9 >PX'` }(f!}ǂLw(V`^&Z9 ۨ@c$/ZgXBOp ȨS *Ɂ:rHL Zx{]HIL 56Oe) (P׺ Jb-Zp#/9Bڥ{ @OϜr&jgC4$Yi4@| @Anȁي#fN: f`'hoPqo}.;f1.@ 3 (8 ۚ),]<0ndQnV9肄) L4WDtaa-PWSm#cMjA3QpEpࠕ@G&mDp7ߠ!W³ռKbOvq7;m2HҴ A}+0KJp(GtVs@Ǎ wUkfE>.ALG7;G#EH [ cA , '8 $ ; flowers.GIF@`.@@GIF89a@@cc1cc11c1ΜcBBBΜΜ1c11cccRRRssscΜΜc޽Όcc!111cccc1111!!!!RcccΜ11cΜΜc1c1111c1ccB111cBccc111cc1cRcc1cc11c11c11c11ccc,@@@`@$PÇ.`@<(0"00`@Dt` Tƕ1dP"2$ Jnx0Ј8PTOq.?u` `!ot`"ds.< Qcf[BPfP XFA EO pbߕ: 졄5@b)6P@ @@g N> gn.b..p0tM0, LB|S xC - -GCTpfg -XlAg|%|v7B"X# #xY`` @h Ex‹XU#kP } aU$| `@& -P% P kTB 4 E@ȵ!c~5I&8bE#\, k0p1 0Cb5@ PPA:gQ0A|jk+$b]tlP]q0X 4Aɶ ,0DGtfC4T .D@xPqu H$@VPi0t[cv,!)P0d9 ~}0~eSqHP,*p]@C | 0t @ P $pX"6PQM TJCE,@:[Z⅀Cv6LRZ(+@ P 0n0Q"^A%jgB~l@ :n·C`5] q Z(L@m 8|MPPz ~9c) "$%CHE(M4C i@FlaDiT[ 'K `PLP $|-~z75 %aNI9l@(d Ӗ,ʙ(!<F):A<,P(p( KZRelAHF ĠJM9h 6.xkN|Aq;(UFt}*KR" ȭ.kԷ ` |`$Ѐ#C(`dy@v vrw+@ytEFB}{vL;hP~(@ @8"xl*?A'HaCB@"js{<@!X 35A ,`6RЄ !pn@᭛Al' BHqo!MP ?HB=`M a@9:ALX2o"}9GPx xVށy@9ٞ[ Aֈ#LxxE`GgBO0)}%B@CB\Hi;gQp]yG8\kWvG"v5pW;`Jy0@|<`|7Pg?w"xK}߆0{Gv'~zDsR8Osi=]'$P9zQ<i!ho"th j0y0t%vL`tk^C .+orPcqBxN[?Bow7gGvCLS7tV9p.%\|GLpE6th'Hi;#L`~;ml#03!E w~'}sVlDvDw7 7y1~ZMp?!cfM0T!hIv(v\s^^ @_ir.EbMsB`7y׀ags׀C"0!Ѐġ;P..l uyqN0PNH}ߖa׀D !nA);Y(DNo 7OY  )ov?"4< nYGvz;0{HvxhKRqb&O@ƶG"K)ZVMyl2>mH3f4}`p7ec4;F"MHhOfz`P\)p&]9bQxDXLFjF!hsȨ\'lhd%g(e})rqNkFvm?}a$qt,@nA-)Ҕ;rXJNYYoD1tMYfb /M{D>RMT1Bq RIeA[g„z7iUiIZ0VwqLWy)':p+'hVKUӂEYV V Em`ArM g:hkuAv$Spv_ͮ%GpC#Q4}vU0oiCP.:J mW #Ǖ!E="";>7fN*2v :˖km-1'"#ޅLoRFVYzTErm.u3p)&\on@3+YTeer c|i@c.QlOU V0 >W( xW)ZGKi~*1j  ,HjVQpUF&br2WU8cm ;sky.GIF@`.@@GIF89a@@Z9))!ss)Bkcks)!k!)1!,@@1VjJ؉!ivI^ sKr$ a/F@,\0h:p#2 `xD`i׫`\ .(~myomb]}f{sM k[nQsazygvjYfR_YAz[^eF O 89??@E), .(+-$). "/&  *ߘG H8pp0C;eHD,10zSC'A /C'W[Hsa r@g9;y)yJ O.eC&т5ϤPeT4\ A?DXq2IT/u5pB[)y%:ZT G֞+gٯ35sA:@(urr$'~@@AJ n`9rD@'O4hG88Z`7\(^u2XwM/~n*xNXT}Ŗ/xBu+x 8+1/MhuMX4B/ v83"}| &v N$Q\W-J^{Ti%A$b,>XhAO UQzi!aVdhiaT vH18 fkDB&HyAVy"˞E[P?F[x-07 L6Sj'K+xP,I$p1tҬfn€Ptd4ȞFm)?!7y R2^@) 8$8mlt J7"i"`ןˌ$ %CͿNn-q p|iL PX6W[I"$fD J2RcAEkcMp #Tv׍Mj[5QX`G7T$0'ФP% ܵ#aN>Ynu{e΍6 GDckEYqW w}&<פ=j҇<ĻHx}Я/??S9* Ox803ghdy@7 HNP| ! Ϋ DH>pxhMK'8ġпZwL*yG>&z3bn0$zK B?QbaSPp*,oPgrDU) f)RPX5[FgqF; space.GIF@`.@@ GIF89a@@c11!!!!!csssccBBB1cc11cc1111cΜcΜΜcRRR1!B111ν1c1R1cc1cc1cc111ccccccc1ccc1c1c1Μcc1c1Μc1cΜ11ccccΜccc111cc1Μ11sBcޜΜcc1c1c1cΜ1c11ccc,@@0 @  4@`< @B dP !eHL #A *Xg 6ppœ#_,&AtЁ͒ N8Bą`Ѣ] `13R ##ǚMI^&r@ *d̠qC)P``AѴ9~h&A7pȡc<>T2|L,1X!R09R#M2gC) AȀ_L ' FVHlU|Ez;p*8V=p u#)`6fj% $JB|/A}~GTP@L0&Rx48h\T`r] (Aaa11(Qma6 zNi%FLnI D <WG؟X@GS`xBaN|)rL!, D"`BYyTSn 34p+T|YB0e9B (pHqA0@k'dA=`: 9A ?hc*Ax<Bڂo`H;a-0zAer[8p@S`TtoqD USa9xVG!mt?!_Ĕt@EHDDV!9p𐱼'I6[%?uqJDP@IDl9ŧ$<(n`T*434p<@ÔA4HZU]jq3W*PJݕӇsS#dtL@i Lij@Dyg,ʝFq'Lm4GP7s,(ףy_Ky H\(.ܱteZje@F bfIQf(?VY wB)"ρ >$ P)GQM nFvxSNz "xxHPa;ʞ ?T`0#$r HWb&ŹH"Cp@8IX\0,6pHB̄~@X` \YM,@ YpALpESsk*]8M ܂$-l\h Fʑ@ G:a͏.K M3(j  i@!%) c<6)@ C@E9QZ .hcDtpKT) BEa*ω\h'Ŏ1,Bk@iV(,!Xx4`8TBY51SeY7IZy8AZJ,Kַ c(5=@ Yb>EIp gP^ ͷ`974r7%9[?2>Y64~ⶾ44XޒX@ h8Cp4a7÷'`Q |f(V~ 9^xOp$bIU6pvd> 110+!5H3csI*Yir=`T9@!@_|&( P1xe- qmP.I=!,aI0gDkpa2K 8z!Xhndog.lk%b1VIM@$ I9;e+kP (Sy^pIM&9D P0.L. Xlx\>g ے\/?DL L?# PV? UV:]? ^^l= $))%*5&&*54/!V' :>]?da\| *+*+5&(ĺtϴD֊x`\P%hF\ENL萤 \nmIrC[@B˒$_Z0ɔ% ړѣB}zSMbO7=(ER8pk+*eU{ R[&hu[Im+ `ARWu'QV$B>&Qg!|ӱ4*~xhRG h-X1#k"v)L*Z(48>};PEm? @rV>l鸮9LIEMIO (uwŗL04 6B`3qx_H@%CD0%^!_8 ,T9Std29|مZ \BNHW5m"wa b+13Fj"$"p:'cU(W ~h YYąjj,nKPwស~#sRdXӦ*n@Nx(4QòY`-U =PٲkhR+$A7 ]&lNf g^1M5Y| 7p/&>6{9 PTL`@ Zw7#w\6*" 0"f&d!8 92o吴A/"=1 2RPIpVxs>#lc y+ƕlas"\HnV  nllť9Z-P5W]j\$L)?f]>hLy|:k.:yƪlvWvAx J٫wMCKU}.89NYrrLճaPCUrHc V9|As ǂÞ"F0y EO3=!r{X Sem@K*9$uC3j踾;2xD!ګMkS ~L0Y`>D`:uXge*'"Ax / $*8$ 6 bH?;a}[BZdЀ!Be檎WX#K:dPREˢ|`k)B;Y/ B'ܐs 3[|UCtjv)V) kUx (p2U!}%]qIݖA V}0GE#+P7~wSO?"hMLG2K%P]}@"h?UB)(+$ EV3 pFVl~jq2h0"1* (' q/hd.A &$k6`On.b* p-B;! New ButtonB$@@4   New ButtonB$@@@4   New ButtonB$@@4   New ButtonB$@@4   New ButtonB$@4@4   New ButtonB$@@4@4   New ButtonB$@4@4   New ButtonB$@4@4   New ButtonB$@h@4   New ButtonB$@@h@4   New ButtonB$@hH4   New ButtonB$@h@4   texture maker pAon closeStack end closeStack on preOpenStack end preOpenStack 33_xEditStack Properties...texture makerW HelveticauImage `x\\ImportLxon mouseUp global tbone put field 1 into fname set the defaultstack to textures import paint from file fname hide last image set icon of btn (hilitedbutton of grp 1) to (id of last image) close stack "texture maker" end mouseUp 33UJ uCancelDp+on mouseUp close this stack end mouseUp TL u Select...Dpon mouseUp answer file "Select image to import:" if the result is not "Cancel" then put it into field "File Name" end mouseUp l$T  u  File Namei`$^  /MacOS/programming/wand.GIF* aboutgamep@on closestack end closestack on preOpenStack end preOpenStack +EditStack Properties...about this game...MULucidaULucida BrightULucida BrightWLucida BrightWLucida BrightWLucida BrightWLucida BrightULucida BrightULucida BrightWLucida BrightWLucida BrightULucida BrightULucida BrightULucida BrightUTimesUTimesULucidaULucidaU LucidaBrightULucidaTypewriterULucidaTypewriterU LucidaBrightU HelveticaW HelveticaU LucidaBrightU LucidaBrightUTimesU HelveticaU HelveticaU LucidaBrightULucida BrightULucida BrightULucida Bright ULucida BrightULucida BrightWLucida BrightWLucida Bright@ULucida BrightDULucida BrightULucida BrightULucida BrightUCleanUCourierULucidaTypewriterUSymbolUTimesULucidaU LucidaBrightUNew Century SchoolbookUNew Century SchoolbookU HelveticaU HelveticaU HelveticaU HelveticaU HelveticaU HelveticaU HelveticaW HelveticaW HelveticaW HelveticaW HelveticaW HelveticaU LucidaBrightU LucidaBrightW LucidaBrightW LucidaBrightW LucidaBrightUCharterUCharter U HelveticaUArialUArial ULucida Bright UArialWLucida BrightWLucida BrightWLucida Bright @ @ @! @External Editor! $b $(" 'Command to run external script editor: external editorp^on closeField set the preferences["external editor"] of stack "Home" to me end closeField $J  %/usr/bin/X11/xterm -geom 80x30 -e viuse external editor@eon mouseUp set the preferences["use external editor"] of stack "Home" to the hilite of me if the hilite of me then set the preferences["external editor"] of stack "Home" to field "external editor" end mouseUp &rGo directly to external editor Proxiesa4D  @8 HTTP proxy host:  @\ HTTP proxy port: httpproxyhostipon closeField if me is empty then put empty into field "httpproxyport" setprop "httpProxy", empty else setprop "httpProxy", me & colon & field "httpproxyport" end closeField 8 httpproxyportipon closeField if me is empty then setprop "httpproxy", empty else if me is not an integer then answer "Proxy port must be an integer" else setprop "httpproxy", field "httpproxyhost" & colon & me end if end closeField \4Look and Feela,`XsystemFileSelector@eIon mouseUp setprop "systemFileSelector", the hilite of me end mouseUp 0Use system file selector  pointerFocus@eCon mouseUp setprop "pointerFocus", the hilite of me end mouseUp 0Accept pointer focus raisePalettes@eDon mouseUp setprop "raisePalettes", the hilite of me end mouseUp LRaise palettes above windows lnfMon mouseUp setprop "lookAndFeel", the hilitedButtonName of me end mouseUp 8t<Motif`D<l  Windows 95`DXl  raiseMenus@eDon mouseUp setprop "raisePalettes", the hilite of me end mouseUp hRaise menu windows i# Preferences$+uDon menupick which go to cd (lineoffset(which,btn 1)) end menupick 333,game overview startup rabbitron game editor $ h||||||((((((3333ff444444̙J   GAME OVERVIEW @Black @ Black @ Black 0 Once upon a time Happyland was a place of fun. @Black @Black. 7That is until the wretched space bugs infected all its @Black6 5inhabitants with sadness. Luckily there is hope for @Black4 1Happyland. Rabbitron a hero from the nearby town @Black0 3of carrotville, has found a cure, and sets out to @Black2 8break all the citizens of happyland out of their great @Black7 .depression. Can you help Rabbitron avoid the @Black- 2space bugs and return happyland back to the place @Black1 of happiness it once was? @Black 1 You move rabbitron through various mazes. Sad @Black0 1faces turn happy as rabbitron approaches. If our @Black0 /fuzzy hero comes in contact with a bug then a @Black. -happy face becomes sad again. To complete a @Black, 0maze cure all 4 happy faces in a maze. 4 icons @Black/ .found at the bottom of the window track your @Black- 3progress. A question mark "?" means a face is sad, @Black2 2while an exclamation mark "!" means one is happy. @Black1  @Black + This stack helps you examine the scripts @Black* +of this game, and shows you how easy it is @Black* &to make games with MetaCard. However @Black% $the scripts and the game Rabbitron @Black @ Black (is copyrighted and may not be copied in @Black' -any way. You may e-mail me with suggestions, @Black, /offers, or bug reports at Diskot123@juno.com. @Black. 0 All of these scripts have been made with the @Black/ .free MetaCard Starter Kit. The tab "startup" @Black- /explains the scripts neccessary to set-up the @Black. .game. The remaining tabs explain the scripts @Black- ,used to execute those specific games. Each @Black+ ,explanation contains the script, along with @Black+ comments on that script. @Black  @Black Global variables @;Black /rounds- used to load levels sequentially upon @9Black @Black( completion. @Black   startup scripts @ Black @ Black ' This script loads the desired level. @Black& Script of card 1: @$Black on preopencard which @Blue ---When a maze is edited the game uses places @Red, 4#a number into variable "which" to tell MetaCard to @Red3 3#use certain parts of this script but not others. @Red2  global rounds @Blue  set lockscreen to true @Blue  set hscroll of group 1 to 0 @Blue  set vscroll of group 1 to 0 @Blue 3--scrolls the playfield(group) to default position @Red2  repeat with ahab = 1 to 9 @Blue ' set hilite of button ahab to false @Blue& end repeat @Blue ---reverts all happy faces back to sad faces. @Red, & if there is a btn 8 of group 1 then @Blue% + repeat (number of btns of group 1 - 7) @Blue* $ delete last button of group 1 @Blue#  end repeat @Blue end if @Blue 3--delete all unnessary bugs.This makes it possible @Red2 9# to have multiple levels each with their own number of @Red8 # of characters. @Red  if which is not empty then @Blue $--If the game editor is not on then @Red#  set editbkgnd to false @Blue #stop manipulating maze @Red  add 1 to rounds @Blue #add 1 to level count @Red  try @Blue @FBlue g do "get createmaze(the"&&line rounds of the customkeys of stack rabbitron&&"of stack rabbitron)" @FBluef  catch errornumber @FBlue end try @FBlue 8#builds new maze with saved data in a custom property. @Red7 7#Try control structure used to catch any errors which @Red6 &#may occur if loading corrupted data. @Red% end if @Red @Blue end preopencard @Blue  @Blue Script of group 1(playfield): @$Black (This script tells a bug(button) to move @Black' /at rabbiton if rabbitron is within it's range. @Black. on openbackground @Blue if editbkgnd is false then @Blue ,--avoid possible problems editing playfield @Red+ 1 repeat with ahab = 10 to number of last button @Blue0 ( if intersect(image 1,btn ahab) then @Blue' 0--if rabbitron is within the rect of a bug then @Red/ K move button ahab to (topright of image 1) in 13 ticks without messages @RedJ 8--tell bug to charge into rabbitron at a fraction of a @Red7 #second. @Red % repeat with ahab = 4 down to 1 @Blue$ ] if hilite of button (5 + ahab) is true then set hilite of button (5 + ahab) to false @Blue\ 3--if there is a happy face then make it sad again. @Red2 . if hilite of button ahab is true then @Blue- - set hilite of button ahab to false @Blue, 3--change exclamation mark icon back to a question @Red2 #mark @Red  exit repeat @Blue  end if @Blue  end repeat @Blue  exit repeat @Blue end if @Blue end repeat @Blue end if @Blue + send openbackground to me in 1.3 seconds @Blue* (--repeat this script in another second. @Red' end openbackground @Blue  @$Black )Inserts custom function used for loading @Black( $mazes into message passing hierachy @Black# 'Script of group 1 of stack "rabbitron: @$Black& on preopenstack @FBlue - insert script of grc "copyright" into back @FBlue, end preopenstack @FBlue  @FBlue Script of stack "rabbitron": @$Black (cancels pending bug attacks and removes @Black' 'custom function used for loading mazes @Black& from message passing hierachy @Black on closestack @Blue - remove script of grc "copyright" from back  @FBlue+ ) cancel (item 1 of the pendingmessages) @Blue( end closestack @Blue !  game editor @ Black @ Black 4 Rabbitron is unique in that it has a game editor. @Black3 0By simply clicking you can customize a maze to @Black/ your liking. @Black . Pressing the "Edit" button in a game brings @Black- +up the "geditor" palette and prepares the @Black* -playfield for editing. You design a maze by @Black, )clicking buttons in the geditor palette. @Black( &Script of group 1 of stack "geditor": @$Black% on mouseup @Blue  switch short name of target @Blue 0--execute commands based on the button clicked @Red/ in the group . @Red 0 Pressing the "maze" button chooses the polygon @ Black/ 2tool and lets you define a path for rabbitron by @ Black1 0dragging the mouse around the playfield. Please @ Black/ 2remember that rabbitron is always on the far left @ Black1 -when editing, and be sure that rabbitron is @ Black, 1in the path or a runaway script may result when @ Black0 pressing an arrowkey. @ Black  case "MAZE" @Blue c if number of last graphic of stack rabbitron is not 2 then delete graphic 3 of stack rabbitron @Blueb --erases any other maze @Red 0 set style of the templategraphic to polygon @Blue/ - set linesize of the templategraphic to 2 @Blue,  choose graphic tool @Blue --choose polygon tool @Red break @Blue 0Clicking on button "characters" changes cursor @ Black/ *to an arrow and lets you drag around any @ Black) 3objects selected within the playfield. By resizing @ Black2 2an object you may extend it's range in the game. @ Black1  case "Characters" @Blue  choose pointer tool @Blue , select last button of stack "Rabbitron" @Blue+ break @Blue 0clone bugs by clicking on "duplicate". The bugs @ Black/ 1that will actually appear in game in their place @ Black0 'will be determined when maze is saved. @ Black&  case "Duplicate" @Blue ) clone last button of stack rabbitron @Blue( break @Blue end switch @Blue end mouseup @Blue .Clicking on the Erase button deletes the maze @ Black- /shown in the combo box. You may not erase any @ Black. 2maze where the first word of it's name is "maze". @ Black1 -Script of button "Erase" of stack "geditor": @$Black, on mouseUp @Blue @FBlue " put label of button 1 into ahab @FBlue! 0 answer "delete maze "&ahab with "yes" or "no" @FBlue/  if it is "yes" then @FBlue 2 put the customkeys of stack rabbitron into zd @FBlue1 6--Puts the custom properties of the stack "Rabbitron" @FRed5 #a variable. @FRed * delete line lineoffset(ahab,zd) of zd @FBlue) 0 set the customkeys of stack rabbitron to zd @FBlue/ 6--Deletes the line of the variable where the maze is @FRed5 8#found, then resets the customkeys of stack "Rabbitron" @FRed7 /#so that it only includes the remaining mazes. @FRed. 4 put customkeys of stack rabbitron into button 1 @FBlue3 - sort lines of button 1 by word 1 of each @FBlue, end if @FBlue end mouseUp @FBlue  @Blue , Click on the button patterns to bring up @Black+ 2a pulldown menu of textures. Click on the pattern @ Black1 1you want used in the playfield. Import a texture @ Black0 3to replace the selected pattern by double clicking @ Black2 button "patterns". @ Black 1 Finally, click the button "save" to save your @ Black0 1maze. If the name displayed in the combo box is @ Black0 0already taken you will be asked to used another @ Black/ name. @ Black . Your maze is saved as a custom property in @ Black- *stack "Rabbitron" with the points of the @ Black) +polygon(maze),and the rect of the objects @ Black* ,listed in it. You may manipulate your maze @ Black+ /at a later time using the "custom properties" @ Black. dialog. @ Black ,Script of button "Save" of stack "geditor": @$Black+ on mouseUp @FBlue 2 if there is a graphic 3 of stack rabbitron then @FBlue1 /--Checks if there really is a new maze to save @FRed. & set the defaultstack to rabbitron @FBlue% * put the points of graphic 3 into bhab @FBlue) 9--puts the coordinates of your maze into variable "bhab" @FRed8 for later use @FRed k if (label of btn 1 of stack geditor) is in customkeys of stack "rabbitron" then ask "Name your maze.." @FBluej 0 else get label of button 1 of stack geditor @FBlue/ 3--Checks if the name displayed in the combobox is @FRed2 1#already taken, if it is this tells metacard to @FRed0 "#prompt the user for another one. @FRed! 2 repeat with ahab = 6 to number of last button @FBlue1 6 put rect of button ahab&return after theenemies @FBlue5  end repeat @FBlue =--Puts return delimited list of all characters into variable @FRed< "theenemies" @FRed U put bhab&return&"END"&RETURN&theenemies&backgroundpattern of graphic 1 into bhab @FBlueT ;--Combines all previous information into a single variable @FRed: @ do "set the "&word 1 of it&" of stack rabbitron to bhab" @FBlue? 8--saves maze as a custom property of stack "rabbitron". @FRed7 1#Because a custom property can only be a single @FRed0 5#continous string(no spaces) only the first word of @FRed4 #any name is used. @FRed ; set label of button 1 of stack geditor to word 1 of it @FBlue:  close stack geditor @FBlue #--Exits editing and loads new maze @FRed" end if @FBlue end mouseUp @FBlue (Load a maze at any time by opening the @ Black' *editor, selecting it from the combo box, @ Black) #and closing the "geditor" palette. @ Black" Script of stack "geditor": @$Black on closestack @FBlue  global rounds @FBlue  set lockscreen to true @FBlue u if label of btn 1 is not empty then put lineoffset(label of btn 1,the customkeys of stack "rabbitron") into rounds @FBluet 6--put the order in which the name of the maze appears @FRed5 <#in the custom properties of the stack "rabbitron" into the @FRed; #round count @FRed M if there is a grc 3 of stack rabbitron then delete grc 3 of stack rabbitron @FBlueL 2--Delete polygon used as a template for new mazes @FRed1  go stack rabbitron @FBlue 1 set rect of stack rabbitron to 187,107,463,385 @FBlue0  show graphic 2 @FBlue --Ends editing of playfield @FRed c do "get createmaze(the "&line rounds of the customkeys of stack rabbitron&" of stack rabbitron)" @FBlueb 6--Uses custom function found in a backscript to load @FRed5 6#maze using the information of a custom property. Do @FRed5 1#command used for extra evaluation of statement. @FRed0  choose browse tool @FBlue end closestack @FBlue  @FBlue 4Script of graphic "copyright" of stack "rabbitron": @$Black3 NOTE:Used as Backscript @LBlack @JBlack function createmaze x @FBlue 4--The value of the custom property which holds the @FRed3 6#data of the maze being currently loading is put into @FRed5 #variable "x" @FRed E set points of graphic 2 to (line 1 to lineoffset("end",x) -1 of x) @FBlueD 5--Creates maze using points found in first few dozen @FRed4 #lines of x @FRed 8 put line lineoffset("end",x) + 1 to -2 of x into ahab @FBlue7 5--Maze characters information are found in the last @FRed4 =#few lines of x, and put into variable "ahab" for later use. @FRed<  put 6 into chab @FBlue # repeat for each line sam in ahab @FBlue" E if there is not a button chab then clone button (13 - random(3)) @FBlueD # set rect of button chab to sam @FBlue"  add 1 to chab @FBlue :--Positions Maze characters using data found in variable @FRed9 :#"ahab". If the character(button) which "ahab" refers to @FRed9 9#does not exist it is created through random cloning of @FRed8 #existing characters. @FRed end repeat @FBlue 5 set backgroundpattern of graphic 1 to line -1 of x @FBlue4 ;--Background pattern of a maze are found in last line of x @FRed: end createmaze @FBlue   Rabbitron @ Black @ Black , This script scrolls the playfield when an @Black @Black @Black) arrowkey is pressed. @Black Script of stack "rabbitron": @$Black on arrowkey direction @Blue Q if direction is "up" then set vscroll of group 1 to (vscroll of group 1 - 15) @BlueP W else if direction is "down" then set vscroll of group 1 to (vscroll of group 1 + 15) @BlueV W else if direction is "left" then set hscroll of group 1 to (hscroll of group 1 - 15) @BlueV X else if direction is "right" then set hscroll of group 1 to (hscroll of group 1 + 15) @BlueW 9--scroll playfield in the direction of the arrowkey that @Red8 #was pressed. @Red R if not within(graphic 2,loc of image 1) then send "niave direction" to grphic 2 @BlueQ ;--if rabbitron is not within his path(blue),and therefore @Red: 2#crosses the walls of a maze he is directed back @Red1 #to his path. @Red  repeat with ahab = 6 to 9 @Blue O if intersect (image 1,button ahab) and hilite of button ahab is false then @BlueN 7-- if rabbitron is within the range of a sad face then @Red6 & set hilite of button ahab to true @Blue% -#make it happy by showing it's hilited icon. @Red,  repeat with ahab = 1 to 4 @Blue - if hilite of button ahab is false then @Blue, * set hilite of button ahab to true @Blue)  exit repeat @Blue 1#mark the users progress by changing a question @Red0 #mark into an exclamation mark. @Red end if @Blue  end repeat @Blue end if @Blue end repeat @Blue @ if hilite of button 4 is true then send preopencard to card 1 @Blue? 6-- if all 4 icons are exclamation marks,there are no @Red5 3#sad faces within a maze,then load the next level. @Red2 end arrowkey @Blue  @$Black 'Script of group 1 of stack "rabbitron: @$Black& . If rabbitron's leaves his path to intersect @Black- %the walls of the maze he is directed @Black$ back on path. @Black on niave chick @Blue 4--variable "chick" contains the direction that the @Red3 %#playfield was recently scrolled to. @Red$ & if chick is "up" then arrowkey down @Blue% + else if chick is "down" then arrowkey up @Blue* 0 else if chick is "right" then arrowkey "left" @Blue/ 0 else if chick is "left" then arrowkey "right" @Blue/ 7--scroll playfield in the opposite direction of chick. @Red6 end niave @Blue % `7& aR' Diskotek.GIF p&on mousedown show fld "promo" with visual barn door open end mousedown on mouseup hide fld promo with visual barn door close end mouseup on mouserelease hide fld promo with visual barn door close end mouserelease On mouseleave hide fld promo with visual barn door close end mouseleave ic* gGIF89ac*Z9k9cc1{ZνkBkZ9!!!9!kc)Z1{kcRB9{Rk)眥甌RB99Z1!޽JޜޜޔsZ!R9RRޥ֥Bkֵ֌{kcB9R!){!R1)ƜƜ)9RRεZZk1sJcZBޥksJ眜91!k9J1Z9ބ{Rc)B{{9{{Rsssssksksc1scscssBkZkBk1kkk!kkBcRcJJZZkZZZZcRRRRRRJ9J9Jc1JJ!JJBZcB9R9k919c999Z1R1c1R1Z111!1)11B)k))9)J)B)Bc)1)1)!!!1!19!!Rk))19)sks)kRkc9JJJBZ9)Rs9RZ9Rsss!kJZRB99!)J1kR!;,c*wH*\ȰÇ=@HE&XǏ=8E paRh8&CH`a zÃʖ /3ͧ!h` 8p3ipA J8`NBh# IXIB@J5/҂YLy:N!aۼ{I{hUuCԛ͝h­x MaCR[/_;m`l98]#8Np:-a98NB Tdw7 `v=MJ-#^duwyl4w]M!Q0L4<2@ $Ԋr,CY3~Wfp#6k@!B5A&2I ,'K-dYA͸4uASR(K6iTYOsn? QDv@p$w&}b&C}\N B>ͽQwͧP`*r0 \Prrg;3xpB LH&;mbͧ4BL4`M11dUm4V0GR@\ >*sfHS)6@!A$|4Pc05ƒat4ϵL%cc(`tT=Qa>ʜ٣)B 8p#,u#u-;l ˍKD#8&Y-@P O5 PFrŜ! se[%x3M'H|h0p@ 2 2de?ZpufA@ce6kY b /dtwxcsȗd6 b6F+l<.&9 AI`,| (/Gu Ѧ' ̽s w\s(\0l@<,ODk N|Fٌ҅q,A O mE08B8pb9Ll 2Q4jaUrBuA H!rwN}<8 >`?nN(2V c{0y c n)[N I8P92v<#0F\;M.`:$3OBE5($" qg6.px P5 MTԀbxA\f@^`ke3)h3yQC5,/ۘ@ @~">7xjүk(H5caC7xCr~'0-A,S`a:,X99,f RPXL6gөSBC_`7,+F]N|M"1 ă䐁:* -pP