From 63efbfb8074537d849698a403244b9f8ca4639b1 Mon Sep 17 00:00:00 2001 From: Aeva Palecek Date: Tue, 13 Dec 2016 01:41:56 -0600 Subject: [PATCH] Checked in some reference levels. This relates to issue #12. I've assembled some reference levels that can be used to verify the parser (at least for tile data). This should also help for adding support for the older ".graal" format. --- reference_levels/blank.graal | Bin 0 -> 226 bytes reference_levels/blank2.graal | Bin 0 -> 226 bytes reference_levels/castlewarp.graal | Bin 0 -> 3727 bytes reference_levels/castlewarp.nw | 161 +++++++++++++++++++++++++++++ reference_levels/castlewarp2.graal | Bin 0 -> 3729 bytes reference_levels/test.graal | Bin 0 -> 6674 bytes reference_levels/test.nw | 65 ++++++++++++ 7 files changed, 226 insertions(+) create mode 100644 reference_levels/blank.graal create mode 100644 reference_levels/blank2.graal create mode 100644 reference_levels/castlewarp.graal create mode 100644 reference_levels/castlewarp.nw create mode 100644 reference_levels/castlewarp2.graal create mode 100644 reference_levels/test.graal create mode 100644 reference_levels/test.nw diff --git a/reference_levels/blank.graal b/reference_levels/blank.graal new file mode 100644 index 0000000000000000000000000000000000000000..ccfd69c16916c5ef717ab3c0494c344592187d30 GIT binary patch literal 226 ncmZ<{(hW1zGca}#U|?`$U|?Zn5MW^#1{`Is|NsAUDFYz@nK}>+ literal 0 HcmV?d00001 diff --git a/reference_levels/blank2.graal b/reference_levels/blank2.graal new file mode 100644 index 0000000000000000000000000000000000000000..006bf4552a65a0f7ed8b119b307f3080103a743a GIT binary patch literal 226 ncmZ<{(hW1zGca}#;9zi6U|?xv5MW^%1{`Is|NsAUDFYz@O;sAL literal 0 HcmV?d00001 diff --git a/reference_levels/castlewarp.graal b/reference_levels/castlewarp.graal new file mode 100644 index 0000000000000000000000000000000000000000..d396235fa2d9b3b23005941773526400b36d1393 GIT binary patch literal 3727 zcmb_eYfM|$9lthi1Z?gIq^ip1^Z*9iJRHATz<_56V4Kp*BP5+t5pls6d=)>ieGT>+ zCbvU0=@3b3x)9A?Q%YmeFO4ETHTl2-YDH)(9@7+6L!zNnO`1(fH%*oHA^V?u{lZw) zBGm?=bI$*q-|K(w#nfGOLakJ3jd>kJW4%E1NR+o+@I-^Z2p)+#HNhT*{3~O9<8-i~ zt*zz5?9!*Av&%wQDGv7JNIrO9V18$CMh2(>)u}UCK^RWuxP{ zZ78oJuXI~SR23L*o3hq4U%h|EdU-rl+}3*g>_M??b^QGI>%>C)5Ax^5#??dNxAL=> z3z}C{0-3;e`G@t^!r&jzJ@1gh;853#8?BRO;$+$H7A_vRLfrMS+>ZyM6f{a<_Nx-qb`NUB~ATiagOM2&e+2Ff3CYVWR^-Mz9EkWGHlX>DBDaJ{#4(lFxHr&NQz>&zPq4PD} zCgJP;H{?0SB{n=6S}X}}d{HAdGSv^i-SmCfkwT}AO!yX8Dx*w<_iguW%Ppl$j3tN; z3#Uhx$S*&y6Zli|aaaFiTp|pQ6m$R`uy>*tl!~yUJJzshn=0qqMPQqmh`94dUhMCwDD(#f!{nID32HPySC=YT_n#n!b}4iR*Tx55Qgx3HI({rBfluXGsb9K=e}~ zcT=h%g(Lr-Cr-(Bbi_v?_s8U?7UEQt8jajPM&|oBoZDc$HT>Y9>AsokUQDN#Ore97 z!XD_5YLE^2U>wBL_zKr64A{`>7=@eME}uaBJV5Ixk3Z)Eu+ z_e1XMreDpMz-f)sqAL_`vAYUvl?YqKbrpCp86xW2TW~ASN(pi3<^Tk2s4{-XzMC|D zNfgQ6ru$7lV~A5_BMTSuE)wmQb7v)0a{~Y6JL^rw!AlCggu61Lt~bc19%`PO`@N1h z5^B_&XUt$oyY<4;8^q1_1NYD~i>rqs+|}${Ax@P3fxUR3@A!4|vlim}_Y7aZS-H_t z7(BjG+$+uc%{#OCPx^RDKGKZFdcj~n#o9bBmqR(^p(s1js*z5IG)Rp!)yfx;t~S@p zQiFr)C@YQn1E@aW@_C$;gEmB&K_nlx zQvupTJ6YP}RiM|R2;muI^-x1DCqpS6jI|CXy)@fT4V)eZCd15tSFId&4%J1+at*&u zKfm4Q9Hvk+b%JpYF#90N%8Kl`pq~av7iD!Y@Mo0v@X&yQGA?rzfR+kl78QGG&j{^t z4i6}Yn87C_5Yy;mVK;KRSR3OU!lzWim_Js@`q@fIH5FpE^p}Pdi+Yc>_}8NgQ^94=O9; zvEx++wPNo?d>hBmug1gL#MyogjCH!iIDpqR+T@s9*CfW?VVbr=iAtHQiE)EOp}U4X z42zj^BM#Eza}KzCxGiBCnndoQoK}}Zu2xm*R0;)z5{-hNuYgLh33*xH;2@Vl+>W?H zjMLDdf&>t*Z)|_bLYe@Rw>g0vy9oTav_?_EndYQN{eaKc`cVa+#jE@naw*sJqH^9i zP9qirdjg3)flPZU)cbd(iLR=`N8!x4g?LO24UiKjq`Q%9?syq$QmT@k8L(b%5&DDn zvRDMCr2?tp@sLRe#={?6j`?#kDv%~aE%1+5V}>p#(6h@qoJwxHB8eV18q9)2V=lv> zLZc|<8YqT}TQegdRldkY&Xk`gzgLgCVh>}DLQ$TSh(TkJ88X$xGHq{Z?di6d%sm`MT$sQrYEa`ln=;lak|SWk zT`aWM8ooN+7=AY07L1mJgFeG>{`v;a89#I#JkCv0HqnUPr z>*0aVu}quC?ZLfc9JJR<4Z*v8|NC +if (playerenters) { + play dragonia.mid; + setbackpal pics1.png; +} +NPCEND +NPC - 30 31 +// NPC made by Lunpa DaVinci +if (playerenters&&!lunpabeentoadmintower) { + set lunpabeentoadmintower; + say 0; +} +NPCEND +NPC servernpc.gif 1 2 +// NPC made by Lunpa DaVinci +if (playerenters) { + putnpc nothing.gif,npcserver.txt,x,y; + hide; +} +NPCEND +NPC - 19 23 +// NPC made by *Lunpa (DaVinci) +if (playerenters || wasthrown) { + // Initialize the this. variables + noplayerkilling; + dirgo = {0,-1,-1,0,0,1,1,0}; + timeout = 0.05; + this.walkmode = 1; + if (wasthrown && this.walkmode>1) this.walkmode = 1; + this.x1 = 19; + this.x2 = 44; + this.y1 = 23; + this.y2 = 42; + this.speed = 0.3; + this.mode = 0; + sprite = 0; + this.runcounter = int(random(10,40)); +} + +// Walking stuff +if (timeout && this.mode==0) { // WALKING + playersprite = (playersprite%8)+1; + newx = playerx + dirgo[playerdir*2] * this.speed; + newy = playery + dirgo[playerdir*2+1] * this.speed; + this.runcounter--; + if (this.walkmode==1) { // RANDOM + if (this.runcounter>0) { + testx = newx + 1.5 + dirgo[playerdir*2]; + testy = newy + 2+ dirgo[playerdir*2+1]; + if (onwall(testx,testy)) { + playerdir = (playerdir+2)%4; + this.runcounter = int(random(0,60)); + } else { + playerx = newx; + playery = newy; + } + } else { + this.runcounter = int(random(10,40)); + playerdir = (playerdir+1+int(random(0,2))*2)%4; + } + } else if (this.walkmode==2) { // LEFTRIGHT + if (playerdir!=1 && playerdir!=3) playerdir = 3; + else { + playerx = newx; + playery = newy; + if ((playerdir==1 && x<=this.x1) || (playerdir==3 && x>=this.x2)) + playerdir = (playerdir+2)%4; + } + } else if (this.walkmode==3) { // UPDOWN + if (playerdir!=0 && playerdir!=2) playerdir = 2; + else { + playerx = newx; + playery = newy; + if ((playerdir==0 && playery<=this.y1) || (playerdir==2 && playery>=this.y2)) + playerdir = (playerdir+2)%4; + } + } else if (this.walkmode==4) { // RECTANGLE + playerx = newx; + playery = newy; + if ((playerdir==0 && playery<=this.y1) || (playerdir==1 && playerx<=this.x1) || + (playerdir==2 && playery>=this.y2) || (playerdir==3 && playerx>=this.x2)) + playerdir = (playerdir+3)%4; + } + if (this.walkmode>1 && this.runcounter<=0) + this.runcounter = 20; + message; + timeout = 0.05; +} +NPCEND diff --git a/reference_levels/castlewarp2.graal b/reference_levels/castlewarp2.graal new file mode 100644 index 0000000000000000000000000000000000000000..9b5aa9acb79e03d870f731f3f49aa9632b49146f GIT binary patch literal 3729 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