From 3d6fabf730cddc5a8062752a76050e3e657863c0 Mon Sep 17 00:00:00 2001 From: nhmall Date: Mon, 6 Apr 2015 10:12:10 -0400 Subject: [PATCH 1/5] nhclose Changes to be committed: modified: include/extern.h modified: src/bones.c modified: src/do.c modified: src/files.c modified: src/music.c modified: src/restore.c modified: src/save.c modified: sys/share/pcmain.c modified: sys/share/pcsys.c modified: sys/share/pcunix.c In order to get level file locking correctly again post 3.4.3 with the newer compilers for windows, I had to funnel close() calls to an intercepting routine. I had two choices: 1. Surround every close() in at least 9 source files with messy: #ifdef WIN32 nhclose(fd); #else close(fd); #endif OR 2. Replace every close() with nhclose() and deal with the special code in the nhclose() version for windows, while just calling close() for other platforms (in files.c). It is also possible, although not done in this commit, to #define nhclose(fd) close(fd) in a header file for non-windows, rather than funnel though a real nhclose() function in files.c. --- include/extern.h | 1 + src/bones.c | 8 ++--- src/do.c | 4 +-- src/files.c | 77 +++++++++++++++++++++++++--------------------- src/music.c | 2 +- src/restore.c | 8 ++--- src/save.c | 18 +++++------ sys/share/pcmain.c | 2 +- sys/share/pcsys.c | 4 +-- sys/share/pcunix.c | 4 +-- 10 files changed, 68 insertions(+), 60 deletions(-) diff --git a/include/extern.h b/include/extern.h index 971971ea8..f36f0243b 100644 --- a/include/extern.h +++ b/include/extern.h @@ -743,6 +743,7 @@ E boolean NDECL(recover_savefile); #ifdef SYSCF_FILE E void NDECL(assure_syscf_file); #endif +E int FDECL(nhclose, (int)); #ifdef HOLD_LOCKFILE_OPEN E void NDECL(really_close); #endif diff --git a/src/bones.c b/src/bones.c index f061316b4..d6c3b75e7 100644 --- a/src/bones.c +++ b/src/bones.c @@ -331,7 +331,7 @@ struct obj *corpse; clear_bypasses(); fd = open_bonesfile(&u.uz, &bonesid); if (fd >= 0) { - (void) close(fd); + (void) nhclose(fd); if (wizard) { if (yn("Bones file already exists. Replace it?") == 'y') { if (delete_bonesfile(&u.uz)) goto make_bones; @@ -504,7 +504,7 @@ struct obj *corpse; if (bytes_counted > freediskspace(bones)) { /* not enough room */ if (wizard) pline("Insufficient space to create bones file."); - (void) close(fd); + (void) nhclose(fd); cancel_bonesfile(); return; } @@ -551,7 +551,7 @@ getbones() ok = TRUE; if(wizard) { if(yn("Get bones?") == 'n') { - (void) close(fd); + (void) nhclose(fd); compress_bonesfile(); return(0); } @@ -595,7 +595,7 @@ getbones() resetobjs(level.buriedobjlist,TRUE); } } - (void) close(fd); + (void) nhclose(fd); sanitize_engravings(); u.uroleplay.numbones++; diff --git a/src/do.c b/src/do.c index acc241a90..8ba500501 100644 --- a/src/do.c +++ b/src/do.c @@ -945,7 +945,7 @@ currentlevel_rewrite() #ifdef MFLOPPY if (!savelev(fd, ledger_no(&u.uz), COUNT_SAVE)) { - (void) close(fd); + (void) nhclose(fd); delete_levelfile(ledger_no(&u.uz)); pline("NetHack is out of disk space for making levels!"); You("can save, quit, or continue playing."); @@ -1160,7 +1160,7 @@ boolean at_stairs, falling, portal; } minit(); /* ZEROCOMP */ getlev(fd, hackpid, new_ledger, FALSE); - (void) close(fd); + (void) nhclose(fd); oinit(); /* reassign level dependent obj probabilities */ } /* do this prior to level-change pline messages */ diff --git a/src/files.c b/src/files.c index f3b9eb610..b3820e361 100644 --- a/src/files.c +++ b/src/files.c @@ -641,12 +641,12 @@ really_close() lftrack.fd = -1; lftrack.oflag = 0; if (fd != -1) - (void)_close(fd); + (void)close(fd); return; } int -close(fd) +nhclose(fd) int fd; { if (lftrack.fd == fd) { @@ -655,10 +655,17 @@ int fd; lftrack.nethack_thinks_it_is_open = FALSE; return 0; } - return _close(fd); + return close(fd); +} +#else +int +nhclose(fd) +int fd; +{ + return close(fd); } #endif - + /* ---------- END LEVEL FILE HANDLING ----------- */ @@ -996,7 +1003,7 @@ restore_saved_game() if ((fd = open_savefile()) < 0) return fd; if (validate(fd, fq_save) != 0) { - (void) close(fd), fd = -1; + (void) nhclose(fd), fd = -1; (void) delete_savefile(); } return fd; @@ -1021,7 +1028,7 @@ const char* filename; get_plname_from_file(fd, tplname); result = dupstr(tplname); } - (void) close(fd); + (void) nhclose(fd); } nh_compress(SAVEF); @@ -1777,7 +1784,7 @@ const char *filename; if (unlink(lockname) < 0) HUP raw_printf("Can't unlink %s.", lockname); # ifdef NO_FILE_LINKS - (void) close(lockfd); + (void) nhclose(lockfd); # endif #endif /* UNIX || VMS */ @@ -2936,9 +2943,9 @@ const char *dir UNUSED_if_not_OS2_CODEVIEW; wait_synch(); } # endif - (void) close(fd); /* RECORD is accessible */ + (void) nhclose(fd); /* RECORD is accessible */ } else if ((fd = open(fq_record, O_CREAT|O_RDWR, FCMASK)) >= 0) { - (void) close(fd); /* RECORD newly created */ + (void) nhclose(fd); /* RECORD newly created */ # if defined(VMS) && !defined(SECURE) /* Re-protect RECORD with world:read+write+execute+delete access. */ (void) chmod(fq_record, FCMASK | 007); @@ -2978,9 +2985,9 @@ const char *dir UNUSED_if_not_OS2_CODEVIEW; raw_printf("Warning: cannot write record %s", tmp); wait_synch(); } else - (void) close(fd); + (void) nhclose(fd); } else /* open succeeded */ - (void) close(fd); + (void) nhclose(fd); #else /* MICRO || WIN32*/ # ifdef MAC @@ -3064,14 +3071,14 @@ recover_savefile() if (read(gfd, (genericptr_t) &hpid, sizeof hpid) != sizeof hpid) { raw_printf( "\nCheckpoint data incompletely written or subsequently clobbered. Recovery impossible."); - (void)close(gfd); + (void)nhclose(gfd); return FALSE; } if (read(gfd, (genericptr_t) &savelev, sizeof(savelev)) != sizeof(savelev)) { raw_printf("\nCheckpointing was not in effect for %s -- recovery impossible.\n", lock); - (void)close(gfd); + (void)nhclose(gfd); return FALSE; } if ((read(gfd, (genericptr_t) savename, sizeof savename) @@ -3085,7 +3092,7 @@ recover_savefile() (read(gfd, (genericptr_t) &tmpplbuf, pltmpsiz) != pltmpsiz)) { raw_printf("\nError reading %s -- can't recover.\n", lock); - (void)close(gfd); + (void)nhclose(gfd); return FALSE; } @@ -3101,15 +3108,15 @@ recover_savefile() sfd = create_savefile(); if (sfd < 0) { raw_printf("\nCannot recover savefile %s.\n", SAVEF); - (void)close(gfd); + (void)nhclose(gfd); return FALSE; } lfd = open_levelfile(savelev, errbuf); if (lfd < 0) { raw_printf("\n%s\n", errbuf); - (void)close(gfd); - (void)close(sfd); + (void)nhclose(gfd); + (void)nhclose(sfd); delete_savefile(); return FALSE; } @@ -3117,8 +3124,8 @@ recover_savefile() if (write(sfd, (genericptr_t) &version_data, sizeof version_data) != sizeof version_data) { raw_printf("\nError writing %s; recovery failed.", SAVEF); - (void)close(gfd); - (void)close(sfd); + (void)nhclose(gfd); + (void)nhclose(sfd); delete_savefile(); return FALSE; } @@ -3128,8 +3135,8 @@ recover_savefile() raw_printf( "\nError writing %s; recovery failed (savefile_info).\n", SAVEF); - (void)close(gfd); - (void)close(sfd); + (void)nhclose(gfd); + (void)nhclose(sfd); delete_savefile(); return FALSE; } @@ -3139,8 +3146,8 @@ recover_savefile() raw_printf( "Error writing %s; recovery failed (player name size).\n", SAVEF); - (void)close(gfd); - (void)close(sfd); + (void)nhclose(gfd); + (void)nhclose(sfd); delete_savefile(); return FALSE; } @@ -3150,28 +3157,28 @@ recover_savefile() raw_printf( "Error writing %s; recovery failed (player name).\n", SAVEF); - (void)close(gfd); - (void)close(sfd); + (void)nhclose(gfd); + (void)nhclose(sfd); delete_savefile(); return FALSE; } if (!copy_bytes(lfd, sfd)) { - (void) close(lfd); - (void) close(sfd); + (void) nhclose(lfd); + (void) nhclose(sfd); delete_savefile(); return FALSE; } - (void)close(lfd); + (void)nhclose(lfd); processed[savelev] = 1; if (!copy_bytes(gfd, sfd)) { - (void) close(lfd); - (void) close(sfd); + (void) nhclose(lfd); + (void) nhclose(sfd); delete_savefile(); return FALSE; } - (void)close(gfd); + (void)nhclose(gfd); processed[0] = 1; for (lev = 1; lev < 256; lev++) { @@ -3185,17 +3192,17 @@ recover_savefile() levc = (xchar) lev; write(sfd, (genericptr_t) &levc, sizeof(levc)); if (!copy_bytes(lfd, sfd)) { - (void) close(lfd); - (void) close(sfd); + (void) nhclose(lfd); + (void) nhclose(sfd); delete_savefile(); return FALSE; } - (void)close(lfd); + (void)nhclose(lfd); processed[lev] = 1; } } } - (void)close(sfd); + (void)nhclose(sfd); #ifdef HOLD_LOCKFILE_OPEN really_close(); diff --git a/src/music.c b/src/music.c index 0912d78cc..24a7b75bd 100644 --- a/src/music.c +++ b/src/music.c @@ -753,7 +753,7 @@ char *buf; break; } (void) write(fd, buf, strlen(buf)); - (void) close(fd); + (void) nhclose(fd); } } #endif /* UNIX386MUSIC */ diff --git a/src/restore.c b/src/restore.c index 4c4b049ce..d46adbb31 100644 --- a/src/restore.c +++ b/src/restore.c @@ -718,7 +718,7 @@ xchar ltmp; /* Remove levels and bones that may have been created. */ - (void) close(nfd); + (void) nhclose(nfd); # ifdef AMIGA clearlocks(); # else @@ -767,7 +767,7 @@ register int fd; if (!restgamestate(fd, &stuckid, &steedid)) { display_nhwindow(WIN_MESSAGE, TRUE); savelev(-1, 0, FREE_SAVE); /* discard current level */ - (void) close(fd); + (void) nhclose(fd); (void) delete_savefile(); restoring = FALSE; return(0); @@ -841,7 +841,7 @@ register int fd; get_plname_from_file(fd, plname); getlev(fd, 0, (xchar)0, FALSE); - (void) close(fd); + (void) nhclose(fd); /* Now set the restore settings to match the * settings used by the save file output routines @@ -1558,7 +1558,7 @@ register unsigned int len; } else { pline("Read %d instead of %u bytes.", rlen, len); if(restoring) { - (void) close(fd); + (void) nhclose(fd); (void) delete_savefile(); error("Error restoring old game."); } diff --git a/src/save.c b/src/save.c index 094f54042..673a37c1f 100644 --- a/src/save.c +++ b/src/save.c @@ -162,7 +162,7 @@ dosave0() nh_uncompress(fq_save); fd = open_savefile(); if (fd > 0) { - (void) close(fd); + (void) nhclose(fd); clear_nhwindow(WIN_MESSAGE); There("seems to be an old save file."); if (yn("Overwrite the old file?") == 'n') { @@ -218,7 +218,7 @@ dosave0() pline("Require %ld bytes but only have %ld.", needed, fds); } flushout(); - (void) close(fd); + (void) nhclose(fd); (void) delete_savefile(); return 0; } @@ -265,7 +265,7 @@ dosave0() ofd = open_levelfile(ltmp, whynot); if (ofd < 0) { HUP pline1(whynot); - (void) close(fd); + (void) nhclose(fd); (void) delete_savefile(); HUP Strcpy(killer.name, whynot); HUP done(TRICKED); @@ -273,7 +273,7 @@ dosave0() } minit(); /* ZEROCOMP */ getlev(ofd, hackpid, ltmp, FALSE); - (void) close(ofd); + (void) nhclose(ofd); bwrite(fd, (genericptr_t) <mp, sizeof ltmp); /* level number*/ savelev(fd, ltmp, WRITE_SAVE | FREE_SAVE); /* actual level*/ delete_levelfile(ltmp); @@ -404,7 +404,7 @@ savestateinlock() Strcpy(killer.name, whynot); done(TRICKED); } - (void) close(fd); + (void) nhclose(fd); fd = create_levelfile(0, whynot); if (fd < 0) { @@ -742,7 +742,7 @@ def_bclose(fd) bw_FILE = 0; } else #endif - (void) close(fd); + (void) nhclose(fd); return; } @@ -879,7 +879,7 @@ zerocomp_bclose(fd) int fd; { zerocomp_bufoff(fd); - (void) close(fd); + (void) nhclose(fd); return; } #endif /* ZEROCOMP */ @@ -1443,8 +1443,8 @@ char *from, *to; if (nto != nfrom) panic("Copyfile failed!"); } while (nfrom == BUFSIZ); - (void) close(fdfrom); - (void) close(fdto); + (void) nhclose(fdfrom); + (void) nhclose(fdto); # endif /* TOS */ } diff --git a/sys/share/pcmain.c b/sys/share/pcmain.c index 67ae57dba..e9b3aade0 100644 --- a/sys/share/pcmain.c +++ b/sys/share/pcmain.c @@ -405,7 +405,7 @@ char *argv[]; hackpid = 1; #endif write(fd, (genericptr_t) &hackpid, sizeof(hackpid)); - close(fd); + nhclose(fd); } #ifdef MFLOPPY level_info[0].where = ACTIVE; diff --git a/sys/share/pcsys.c b/sys/share/pcsys.c index 16d36bbb7..6aea59998 100644 --- a/sys/share/pcsys.c +++ b/sys/share/pcsys.c @@ -282,7 +282,7 @@ int start; if (sysflags.asksavedisk) { /* Don't prompt if you can find the save file */ if ((fd = open_savefile()) >= 0) { - (void) close(fd); + (void) nhclose(fd); return 1; } clear_nhwindow(WIN_MESSAGE); @@ -335,7 +335,7 @@ comspec_exists() if ((comspec = getcomspec())) if ((fd = open(comspec, O_RDONLY)) >= 0) { - (void) close(fd); + (void) nhclose(fd); return TRUE; } return FALSE; diff --git a/sys/share/pcunix.c b/sys/share/pcunix.c index 24316aac2..e5ce95e89 100644 --- a/sys/share/pcunix.c +++ b/sys/share/pcunix.c @@ -150,7 +150,7 @@ getlock() error("Cannot open %s", fq_lock); } - (void) close(fd); + (void) nhclose(fd); if(iflags.window_inited) { # ifdef SELF_RECOVER @@ -248,7 +248,7 @@ gotlock: # endif error("cannot write lock (%s)", fq_lock); } - if(close(fd) == -1) { + if(nhclose(fd) == -1) { # if defined(CHDIR) && !defined(NOCWD_ASSUMPTIONS) chdirx(orgdir, 0); # endif From f5b71c5b8fe9a4e2f26ef5b886219bc2025521da Mon Sep 17 00:00:00 2001 From: PatR Date: Tue, 7 Apr 2015 01:23:16 -0700 Subject: [PATCH 2/5] tty fix for bad curs positioning (-1,n) DEBUGFILES set to "wintty.c" reported a bad cursor positioning attempt at the end of the RIP tombstone, and when set to "questpgr.c wintty.c" reported a whole bunch right at the start of the game when enumerating all the quest messages for the chosen role. Both were triggered by this x==0 call to tty_curs() near the end of process_text_window(). if (i == cw->maxrow) { if(cw->type == NHW_TEXT){ tty_curs(BASE_WINDOW, 0, (int)ttyDisplay->cury+1); cl_eos(); } ... The x value is always decremented in tty_curs, so passing in 0 yields a bad value of -1. The bad call returns without doing anything, and when DEBUG is disabled, it does so silently. No fixes entry; it was caused by a post-3.4.3 fix for something else. --- win/tty/wintty.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/win/tty/wintty.c b/win/tty/wintty.c index 0aaf9e92d..bcf4041e0 100644 --- a/win/tty/wintty.c +++ b/win/tty/wintty.c @@ -1,4 +1,4 @@ -/* NetHack 3.5 wintty.c $NHDT-Date: 1427667623 2015/03/29 22:20:23 $ $NHDT-Branch: master $:$NHDT-Revision: 1.75 $ */ +/* NetHack 3.5 wintty.c $NHDT-Date: 1428394244 2015/04/07 08:10:44 $ $NHDT-Branch: master $:$NHDT-Revision: 1.84 $ */ /* NetHack 3.5 wintty.c $Date: 2012/01/22 06:27:09 $ $Revision: 1.66 $ */ /* Copyright (c) David Cohrs, 1991 */ /* NetHack may be freely redistributed. See license for details. */ @@ -1770,7 +1770,7 @@ struct WinDesc *cw; if (i == cw->maxrow) { #ifdef H2344_BROKEN if(cw->type == NHW_TEXT){ - tty_curs(BASE_WINDOW, 0, (int)ttyDisplay->cury+1); + tty_curs(BASE_WINDOW, 1, (int)ttyDisplay->cury+1); cl_eos(); } #endif From 1c2f2af357ecc718800ea638676942a3b9de2ccc Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Tue, 7 Apr 2015 18:18:49 +0300 Subject: [PATCH 3/5] Indicator glyph for good target positions Add a new glyph, S_goodpos, to indicate valid locations instead of reusing the camera flash beam glyph. --- include/rm.h | 39 ++++++++++++++++++++------------------- src/apply.c | 4 ++-- src/drawing.c | 2 ++ src/read.c | 2 +- win/share/other.txt | 19 +++++++++++++++++++ 5 files changed, 44 insertions(+), 22 deletions(-) diff --git a/include/rm.h b/include/rm.h index cfc399300..4e57998f1 100644 --- a/include/rm.h +++ b/include/rm.h @@ -190,34 +190,35 @@ #define S_ss3 73 #define S_ss4 74 #define S_poisoncloud 75 +#define S_goodpos 76 /* valid position for targeting */ /* The 8 swallow symbols. Do NOT separate. To change order or add, see */ /* the function swallow_to_glyph() in display.c. */ -#define S_sw_tl 76 /* swallow top left [1] */ -#define S_sw_tc 77 /* swallow top center [2] Order: */ -#define S_sw_tr 78 /* swallow top right [3] */ -#define S_sw_ml 79 /* swallow middle left [4] 1 2 3 */ -#define S_sw_mr 80 /* swallow middle right [6] 4 5 6 */ -#define S_sw_bl 81 /* swallow bottom left [7] 7 8 9 */ -#define S_sw_bc 82 /* swallow bottom center [8] */ -#define S_sw_br 83 /* swallow bottom right [9] */ +#define S_sw_tl 77 /* swallow top left [1] */ +#define S_sw_tc 78 /* swallow top center [2] Order: */ +#define S_sw_tr 79 /* swallow top right [3] */ +#define S_sw_ml 80 /* swallow middle left [4] 1 2 3 */ +#define S_sw_mr 81 /* swallow middle right [6] 4 5 6 */ +#define S_sw_bl 82 /* swallow bottom left [7] 7 8 9 */ +#define S_sw_bc 83 /* swallow bottom center [8] */ +#define S_sw_br 84 /* swallow bottom right [9] */ -#define S_explode1 84 /* explosion top left */ -#define S_explode2 85 /* explosion top center */ -#define S_explode3 86 /* explosion top right Ex. */ -#define S_explode4 87 /* explosion middle left */ -#define S_explode5 88 /* explosion middle center /-\ */ -#define S_explode6 89 /* explosion middle right |@| */ -#define S_explode7 90 /* explosion bottom left \-/ */ -#define S_explode8 91 /* explosion bottom center */ -#define S_explode9 92 /* explosion bottom right */ +#define S_explode1 85 /* explosion top left */ +#define S_explode2 86 /* explosion top center */ +#define S_explode3 87 /* explosion top right Ex. */ +#define S_explode4 88 /* explosion middle left */ +#define S_explode5 89 /* explosion middle center /-\ */ +#define S_explode6 90 /* explosion middle right |@| */ +#define S_explode7 91 /* explosion bottom left \-/ */ +#define S_explode8 92 /* explosion bottom center */ +#define S_explode9 93 /* explosion bottom right */ /* end effects */ -#define MAXPCHARS 93 /* maximum number of mapped characters */ +#define MAXPCHARS 94 /* maximum number of mapped characters */ #define MAXDCHARS 41 /* maximum of mapped dungeon characters */ #define MAXTCHARS 22 /* maximum of mapped trap characters */ -#define MAXECHARS 30 /* maximum of mapped effects characters */ +#define MAXECHARS 31 /* maximum of mapped effects characters */ #define MAXEXPCHARS 9 /* number of explosion characters */ struct symdef { diff --git a/src/apply.c b/src/apply.c index 10bfdfd23..40249be1f 100644 --- a/src/apply.c +++ b/src/apply.c @@ -1396,7 +1396,7 @@ display_jump_positions(state) int state; { if (state == 0) { - tmp_at(DISP_BEAM, cmap_to_glyph(S_flashbeam)); + tmp_at(DISP_BEAM, cmap_to_glyph(S_goodpos)); } else if (state == 1) { int x,y, dx, dy; for (dx = -4; dx <= 4; dx++) @@ -2605,7 +2605,7 @@ display_polearm_positions(state) int state; { if (state == 0) { - tmp_at(DISP_BEAM, cmap_to_glyph(S_flashbeam)); + tmp_at(DISP_BEAM, cmap_to_glyph(S_goodpos)); } else if (state == 1) { int x,y, dx,dy; for (dx = -4; dx <= 4; dx++) diff --git a/src/drawing.c b/src/drawing.c index a08a7acc5..2f538c866 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -212,6 +212,7 @@ const struct symdef defsyms[MAXPCHARS] = { {'@', "", C(HI_ZAP)}, {'*', "", C(HI_ZAP)}, {'#', "poison cloud", C(CLR_BRIGHT_GREEN)}, /* [part of] a poison cloud */ + {'?', "valid position", C(CLR_BRIGHT_GREEN)}, /* valid position for targeting */ {'/', "", C(CLR_GREEN)}, /* swallow top left */ {'-', "", C(CLR_GREEN)}, /* swallow top center */ {'\\', "", C(CLR_GREEN)}, /* swallow top right */ @@ -647,6 +648,7 @@ struct symparse loadsyms[] = { {SYM_PCHAR, S_flashbeam, "S_flashbeam"}, {SYM_PCHAR, S_boomleft, "S_boomleft"}, {SYM_PCHAR, S_boomright, "S_boomright"}, + {SYM_PCHAR, S_goodpos, "S_goodpos"}, {SYM_PCHAR, S_ss1, "S_ss1"}, {SYM_PCHAR, S_ss2, "S_ss2"}, {SYM_PCHAR, S_ss3, "S_ss3"}, diff --git a/src/read.c b/src/read.c index 8c42fcfbe..a3d522072 100644 --- a/src/read.c +++ b/src/read.c @@ -886,7 +886,7 @@ display_stinking_cloud_positions(state) int state; { if (state == 0) { - tmp_at(DISP_BEAM, cmap_to_glyph(S_flashbeam)); + tmp_at(DISP_BEAM, cmap_to_glyph(S_goodpos)); } else if (state == 1) { int x,y, dx, dy; int dist = 6; diff --git a/win/share/other.txt b/win/share/other.txt index 61258f290..f2bcd148d 100644 --- a/win/share/other.txt +++ b/win/share/other.txt @@ -1458,6 +1458,25 @@ P = (108, 145, 182) BBBBBBGGGGBBBBBB BBBBBBBBBBBBBBBB } +# tile 76 (valid position) +{ + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMGGGGMMMMMMM + MMMMGGGGGGMMMMMM + MMMGGFFFFGGMMMMM + MMMGGFMMMGGFMMMM + MMMMFFMMMGGFMMMM + MMMMMMMMGGFFMMMM + MMMMMMMGGFFMMMMM + MMMMMMGGFFMMMMMM + MMMMMMGGFMMMMMMM + MMMMMMMFFMMMMMMM + MMMMMMGGMMMMMMMM + MMMMMMGGFMMMMMMM + MMMMMMMFFMMMMMMM + MMMMMMMMMMMMMMMM +} # tile 75 (cmap 75) { AAAAAAADDDDDDAAA From c967dabc0b147249b3b779783ec274e79343deb4 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Tue, 7 Apr 2015 20:12:53 +0300 Subject: [PATCH 4/5] Clive Crous' Dark Room patch This patch adds a new glyph that represents dark parts of room, splitting the dual functionality of the "unexplored/dark area" glyph. --- doc/Guidebook.mn | 2 + doc/Guidebook.tex | 3 + doc/fixes35.0 | 1 + include/flag.h | 1 + include/rm.h | 155 ++++++++++++++++++++++---------------------- src/display.c | 4 +- src/do_name.c | 1 + src/drawing.c | 31 ++++----- src/mapglyph.c | 2 +- src/options.c | 40 +++++++++++- src/pager.c | 6 +- win/share/other.txt | 19 ++++++ 12 files changed, 166 insertions(+), 99 deletions(-) diff --git a/doc/Guidebook.mn b/doc/Guidebook.mn index 5b6cd229e..06db99247 100644 --- a/doc/Guidebook.mn +++ b/doc/Guidebook.mn @@ -1952,6 +1952,8 @@ new players if it detects some anticipated mistakes (default on). .lp "confirm " Have user confirm attacks on pets, shopkeepers, and other peaceable creatures (default on). +.lp dark_room +Show out-of-sight areas of lit rooms (default off). .lp disclose Controls what information the program reveals when the game ends. Value is a space separated list of prompting/category pairs diff --git a/doc/Guidebook.tex b/doc/Guidebook.tex index 4073ab71b..427d720a0 100644 --- a/doc/Guidebook.tex +++ b/doc/Guidebook.tex @@ -2363,6 +2363,9 @@ players if it detects some anticipated mistakes (default on). Have user confirm attacks on pets, shopkeepers, and other peaceable creatures (default on). %.lp +%.lp +\item[\ib{dark\_room}] +Show out-of-sight areas of lit rooms (default off). \item[\ib{disclose}] Controls what information the program reveals when the game ends. Value is a space separated list of prompting/category pairs diff --git a/doc/fixes35.0 b/doc/fixes35.0 index 4e81689ee..96dc67f9d 100644 --- a/doc/fixes35.0 +++ b/doc/fixes35.0 @@ -1151,6 +1151,7 @@ adopt/adapt/improve the Paranoid_Quit patch; default is paranoid_confirm:pray adopt/adapt/improve Dungeon Overview Aardvark Joe's Extended Logfile Michael Deutschmann's use_darkgray +Clive Crous' dark_room Code Cleanup and Reorganization diff --git a/include/flag.h b/include/flag.h index 072fb4a30..734806b38 100644 --- a/include/flag.h +++ b/include/flag.h @@ -23,6 +23,7 @@ struct flag { boolean biff; /* enable checking for mail */ boolean bones; /* allow saving/loading bones */ boolean confirm; /* confirm before hitting tame monsters */ + boolean dark_room; /* show shadows in lit rooms */ boolean debug; /* in debugging mode */ #define wizard flags.debug boolean end_own; /* list all own scores */ diff --git a/include/rm.h b/include/rm.h index 4e57998f1..86474c9ca 100644 --- a/include/rm.h +++ b/include/rm.h @@ -128,99 +128,102 @@ #define S_bars 17 /* KMH -- iron bars */ #define S_tree 18 /* KMH */ #define S_room 19 -#define S_corr 20 -#define S_litcorr 21 -#define S_upstair 22 -#define S_dnstair 23 -#define S_upladder 24 -#define S_dnladder 25 -#define S_altar 26 -#define S_grave 27 -#define S_throne 28 -#define S_sink 29 -#define S_fountain 30 -#define S_pool 31 -#define S_ice 32 -#define S_lava 33 -#define S_vodbridge 34 -#define S_hodbridge 35 -#define S_vcdbridge 36 /* closed drawbridge, vertical wall */ -#define S_hcdbridge 37 /* closed drawbridge, horizontal wall */ -#define S_air 38 -#define S_cloud 39 -#define S_water 40 +#define S_darkroom 20 +#define S_corr 21 +#define S_litcorr 22 +#define S_upstair 23 +#define S_dnstair 24 +#define S_upladder 25 +#define S_dnladder 26 +#define S_altar 27 +#define S_grave 28 +#define S_throne 29 +#define S_sink 30 +#define S_fountain 31 +#define S_pool 32 +#define S_ice 33 +#define S_lava 34 +#define S_vodbridge 35 +#define S_hodbridge 36 +#define S_vcdbridge 37 /* closed drawbridge, vertical wall */ +#define S_hcdbridge 38 /* closed drawbridge, horizontal wall */ +#define S_air 39 +#define S_cloud 40 +#define S_water 41 /* end dungeon characters, begin traps */ -#define S_arrow_trap 41 -#define S_dart_trap 42 -#define S_falling_rock_trap 43 -#define S_squeaky_board 44 -#define S_bear_trap 45 -#define S_land_mine 46 -#define S_rolling_boulder_trap 47 -#define S_sleeping_gas_trap 48 -#define S_rust_trap 49 -#define S_fire_trap 50 -#define S_pit 51 -#define S_spiked_pit 52 -#define S_hole 53 -#define S_trap_door 54 -#define S_teleportation_trap 55 -#define S_level_teleporter 56 -#define S_magic_portal 57 -#define S_web 58 -#define S_statue_trap 59 -#define S_magic_trap 60 -#define S_anti_magic_trap 61 -#define S_polymorph_trap 62 +#define S_arrow_trap 42 +#define S_dart_trap 43 +#define S_falling_rock_trap 44 +#define S_squeaky_board 45 +#define S_bear_trap 46 +#define S_land_mine 47 +#define S_rolling_boulder_trap 48 +#define S_sleeping_gas_trap 49 +#define S_rust_trap 50 +#define S_fire_trap 51 +#define S_pit 52 +#define S_spiked_pit 53 +#define S_hole 54 +#define S_trap_door 55 +#define S_teleportation_trap 56 +#define S_level_teleporter 57 +#define S_magic_portal 58 +#define S_web 59 +#define S_statue_trap 60 +#define S_magic_trap 61 +#define S_anti_magic_trap 62 +#define S_polymorph_trap 63 /* end traps, begin special effects */ -#define S_vbeam 63 /* The 4 zap beam symbols. Do NOT separate. */ -#define S_hbeam 64 /* To change order or add, see function */ -#define S_lslant 65 /* zapdir_to_glyph() in display.c. */ -#define S_rslant 66 -#define S_digbeam 67 /* dig beam symbol */ -#define S_flashbeam 68 /* camera flash symbol */ -#define S_boomleft 69 /* thrown boomerang, open left, e.g ')' */ -#define S_boomright 70 /* thrown boomerand, open right, e.g. '(' */ -#define S_ss1 71 /* 4 magic shield glyphs */ -#define S_ss2 72 -#define S_ss3 73 -#define S_ss4 74 -#define S_poisoncloud 75 -#define S_goodpos 76 /* valid position for targeting */ +#define S_vbeam 64 /* The 4 zap beam symbols. Do NOT separate. */ +#define S_hbeam 65 /* To change order or add, see function */ +#define S_lslant 66 /* zapdir_to_glyph() in display.c. */ +#define S_rslant 67 +#define S_digbeam 68 /* dig beam symbol */ +#define S_flashbeam 69 /* camera flash symbol */ +#define S_boomleft 70 /* thrown boomerang, open left, e.g ')' */ +#define S_boomright 71 /* thrown boomerand, open right, e.g. '(' */ +#define S_ss1 72 /* 4 magic shield glyphs */ +#define S_ss2 73 +#define S_ss3 74 +#define S_ss4 75 +#define S_poisoncloud 76 +#define S_goodpos 77 /* valid position for targeting */ /* The 8 swallow symbols. Do NOT separate. To change order or add, see */ /* the function swallow_to_glyph() in display.c. */ -#define S_sw_tl 77 /* swallow top left [1] */ -#define S_sw_tc 78 /* swallow top center [2] Order: */ -#define S_sw_tr 79 /* swallow top right [3] */ -#define S_sw_ml 80 /* swallow middle left [4] 1 2 3 */ -#define S_sw_mr 81 /* swallow middle right [6] 4 5 6 */ -#define S_sw_bl 82 /* swallow bottom left [7] 7 8 9 */ -#define S_sw_bc 83 /* swallow bottom center [8] */ -#define S_sw_br 84 /* swallow bottom right [9] */ +#define S_sw_tl 78 /* swallow top left [1] */ +#define S_sw_tc 79 /* swallow top center [2] Order: */ +#define S_sw_tr 80 /* swallow top right [3] */ +#define S_sw_ml 81 /* swallow middle left [4] 1 2 3 */ +#define S_sw_mr 82 /* swallow middle right [6] 4 5 6 */ +#define S_sw_bl 83 /* swallow bottom left [7] 7 8 9 */ +#define S_sw_bc 84 /* swallow bottom center [8] */ +#define S_sw_br 85 /* swallow bottom right [9] */ -#define S_explode1 85 /* explosion top left */ -#define S_explode2 86 /* explosion top center */ -#define S_explode3 87 /* explosion top right Ex. */ -#define S_explode4 88 /* explosion middle left */ -#define S_explode5 89 /* explosion middle center /-\ */ -#define S_explode6 90 /* explosion middle right |@| */ -#define S_explode7 91 /* explosion bottom left \-/ */ -#define S_explode8 92 /* explosion bottom center */ -#define S_explode9 93 /* explosion bottom right */ +#define S_explode1 86 /* explosion top left */ +#define S_explode2 87 /* explosion top center */ +#define S_explode3 88 /* explosion top right Ex. */ +#define S_explode4 89 /* explosion middle left */ +#define S_explode5 90 /* explosion middle center /-\ */ +#define S_explode6 91 /* explosion middle right |@| */ +#define S_explode7 92 /* explosion bottom left \-/ */ +#define S_explode8 93 /* explosion bottom center */ +#define S_explode9 94 /* explosion bottom right */ /* end effects */ -#define MAXPCHARS 94 /* maximum number of mapped characters */ -#define MAXDCHARS 41 /* maximum of mapped dungeon characters */ +#define MAXPCHARS 95 /* maximum number of mapped characters */ +#define MAXDCHARS 42 /* maximum of mapped dungeon characters */ #define MAXTCHARS 22 /* maximum of mapped trap characters */ #define MAXECHARS 31 /* maximum of mapped effects characters */ #define MAXEXPCHARS 9 /* number of explosion characters */ +#define DARKROOMSYM (Is_rogue_level(&u.uz) ? S_stone : S_darkroom) + struct symdef { uchar sym; const char *explanation; diff --git a/src/display.c b/src/display.c index da5c194e7..75af16442 100644 --- a/src/display.c +++ b/src/display.c @@ -764,11 +764,11 @@ newsym(x,y) * These checks and changes must be here and not in back_to_glyph(). * They are dependent on the position being out of sight. */ - else if (!lev->waslit) { + else if (!lev->waslit || (flags.dark_room && iflags.use_color)) { if (lev->glyph == cmap_to_glyph(S_litcorr) && lev->typ == CORR) show_glyph(x, y, lev->glyph = cmap_to_glyph(S_corr)); else if (lev->glyph == cmap_to_glyph(S_room) && lev->typ == ROOM) - show_glyph(x, y, lev->glyph = cmap_to_glyph(S_stone)); + show_glyph(x, y, lev->glyph = cmap_to_glyph(DARKROOMSYM)); else goto show_mem; } else { diff --git a/src/do_name.c b/src/do_name.c index b5c2bb711..1437680e7 100644 --- a/src/do_name.c +++ b/src/do_name.c @@ -238,6 +238,7 @@ const char *goal; if (glyph_is_cmap(k) && (IS_DOOR(levl[tx][ty].typ) || glyph_to_cmap(k) == S_room || + glyph_to_cmap(k) == S_darkroom || glyph_to_cmap(k) == S_corr || glyph_to_cmap(k) == S_litcorr)) { /* what the hero remembers to be at tx,ty */ diff --git a/src/drawing.c b/src/drawing.c index 2f538c866..d78668e0a 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -156,7 +156,8 @@ const struct symdef defsyms[MAXPCHARS] = { {'#', "iron bars", C(HI_METAL)}, /* bars */ {'#', "tree", C(CLR_GREEN)}, /* tree */ {'.', "floor of a room",C(CLR_GRAY)}, /* room */ -/*20*/ {'#', "corridor", C(CLR_GRAY)}, /* dark corr */ +/*20*/ {'.', "dark part of a room",C(CLR_BLACK)}, /* dark room */ + {'#', "corridor", C(CLR_GRAY)}, /* dark corr */ {'#', "lit corridor", C(CLR_GRAY)}, /* lit corr (see mapglyph.c) */ {'<', "staircase up", C(CLR_GRAY)}, /* upstair */ {'>', "staircase down", C(CLR_GRAY)}, /* dnstair */ @@ -165,8 +166,8 @@ const struct symdef defsyms[MAXPCHARS] = { {'_', "altar", C(CLR_GRAY)}, /* altar */ {'|', "grave", C(CLR_GRAY)}, /* grave */ {'\\', "opulent throne",C(HI_GOLD)}, /* throne */ - {'#', "sink", C(CLR_GRAY)}, /* sink */ -/*30*/ {'{', "fountain", C(CLR_BLUE)}, /* fountain */ +/*30*/ {'#', "sink", C(CLR_GRAY)}, /* sink */ + {'{', "fountain", C(CLR_BLUE)}, /* fountain */ {'}', "water", C(CLR_BLUE)}, /* pool */ {'.', "ice", C(CLR_CYAN)}, /* ice */ {'}', "molten lava", C(CLR_RED)}, /* lava */ @@ -175,8 +176,8 @@ const struct symdef defsyms[MAXPCHARS] = { {'#', "raised drawbridge",C(CLR_BROWN)}, /* vcdbridge */ {'#', "raised drawbridge",C(CLR_BROWN)}, /* hcdbridge */ {' ', "air", C(CLR_CYAN)}, /* open air */ - {'#', "cloud", C(CLR_GRAY)}, /* [part of] a cloud */ -/*40*/ {'}', "water", C(CLR_BLUE)}, /* under water */ +/*40*/ {'#', "cloud", C(CLR_GRAY)}, /* [part of] a cloud */ + {'}', "water", C(CLR_BLUE)}, /* under water */ {'^', "arrow trap", C(HI_METAL)}, /* trap */ {'^', "dart trap", C(HI_METAL)}, /* trap */ {'^', "falling rock trap",C(CLR_GRAY)}, /* trap */ @@ -185,8 +186,8 @@ const struct symdef defsyms[MAXPCHARS] = { {'^', "land mine", C(CLR_RED)}, /* trap */ {'^', "rolling boulder trap", C(CLR_GRAY)}, /* trap */ {'^', "sleeping gas trap",C(HI_ZAP)}, /* trap */ - {'^', "rust trap", C(CLR_BLUE)}, /* trap */ -/*50*/ {'^', "fire trap", C(CLR_ORANGE)}, /* trap */ +/*50*/ {'^', "rust trap", C(CLR_BLUE)}, /* trap */ + {'^', "fire trap", C(CLR_ORANGE)}, /* trap */ {'^', "pit", C(CLR_BLACK)}, /* trap */ {'^', "spiked pit", C(CLR_BLACK)}, /* trap */ {'^', "hole", C(CLR_BROWN)}, /* trap */ @@ -195,8 +196,8 @@ const struct symdef defsyms[MAXPCHARS] = { {'^', "level teleporter", C(CLR_MAGENTA)}, /* trap */ {'^', "magic portal", C(CLR_BRIGHT_MAGENTA)}, /* trap */ {'"', "web", C(CLR_GRAY)}, /* web */ - {'^', "statue trap", C(CLR_GRAY)}, /* trap */ -/*60*/ {'^', "magic trap", C(HI_ZAP)}, /* trap */ +/*60*/ {'^', "statue trap", C(CLR_GRAY)}, /* trap */ + {'^', "magic trap", C(HI_ZAP)}, /* trap */ {'^', "anti-magic field", C(HI_ZAP)}, /* trap */ {'^', "polymorph trap", C(CLR_BRIGHT_GREEN)}, /* trap */ {'|', "wall", C(CLR_GRAY)}, /* vbeam */ @@ -205,8 +206,8 @@ const struct symdef defsyms[MAXPCHARS] = { {'/', "wall", C(CLR_GRAY)}, /* rslant */ {'*', "", C(CLR_WHITE)}, /* dig beam */ {'!', "", C(CLR_WHITE)}, /* camera flash beam */ - {')', "", C(HI_WOOD)}, /* boomerang open left */ -/*70*/ {'(', "", C(HI_WOOD)}, /* boomerang open right */ +/*70*/ {')', "", C(HI_WOOD)}, /* boomerang open left */ + {'(', "", C(HI_WOOD)}, /* boomerang open right */ {'0', "", C(HI_ZAP)}, /* 4 magic shield symbols */ {'#', "", C(HI_ZAP)}, {'@', "", C(HI_ZAP)}, @@ -215,20 +216,20 @@ const struct symdef defsyms[MAXPCHARS] = { {'?', "valid position", C(CLR_BRIGHT_GREEN)}, /* valid position for targeting */ {'/', "", C(CLR_GREEN)}, /* swallow top left */ {'-', "", C(CLR_GREEN)}, /* swallow top center */ - {'\\', "", C(CLR_GREEN)}, /* swallow top right */ +/*80*/ {'\\', "", C(CLR_GREEN)}, /* swallow top right */ {'|', "", C(CLR_GREEN)}, /* swallow middle left */ {'|', "", C(CLR_GREEN)}, /* swallow middle right */ -/*80*/ {'\\', "", C(CLR_GREEN)}, /* swallow bottom left */ + {'\\', "", C(CLR_GREEN)}, /* swallow bottom left */ {'-', "", C(CLR_GREEN)}, /* swallow bottom center*/ {'/', "", C(CLR_GREEN)}, /* swallow bottom right */ {'/', "", C(CLR_ORANGE)}, /* explosion top left */ {'-', "", C(CLR_ORANGE)}, /* explosion top center */ {'\\', "", C(CLR_ORANGE)}, /* explosion top right */ {'|', "", C(CLR_ORANGE)}, /* explosion middle left */ - {' ', "", C(CLR_ORANGE)}, /* explosion middle center*/ +/*90*/ {' ', "", C(CLR_ORANGE)}, /* explosion middle center*/ {'|', "", C(CLR_ORANGE)}, /* explosion middle right */ {'\\', "", C(CLR_ORANGE)}, /* explosion bottom left */ -/*90*/ {'-', "", C(CLR_ORANGE)}, /* explosion bottom center*/ + {'-', "", C(CLR_ORANGE)}, /* explosion bottom center*/ {'/', "", C(CLR_ORANGE)}, /* explosion bottom right */ }; diff --git a/src/mapglyph.c b/src/mapglyph.c index e44265d3a..08b6240f3 100644 --- a/src/mapglyph.c +++ b/src/mapglyph.c @@ -116,7 +116,7 @@ unsigned *ospecial; color = CLR_MAGENTA; else if (offset == S_corr || offset == S_litcorr) color = CLR_GRAY; - else if (offset >= S_room && offset <= S_water) + else if (offset >= S_room && offset <= S_water && offset != S_darkroom) color = CLR_GREEN; else color = NO_COLOR; diff --git a/src/options.c b/src/options.c index 54e0471e8..1b834e616 100644 --- a/src/options.c +++ b/src/options.c @@ -105,6 +105,7 @@ static struct Bool_Opt {"color", &iflags.wc_color, FALSE, SET_IN_GAME}, /*WC*/ # endif {"confirm",&flags.confirm, TRUE, SET_IN_GAME}, + {"dark_room", &flags.dark_room, TRUE, SET_IN_GAME}, {"eight_bit_tty", &iflags.wc_eight_bit_input, FALSE, SET_IN_GAME}, /*WC*/ #ifdef TTY_GRAPHICS {"extmenu", &iflags.extmenu, FALSE, SET_IN_GAME}, @@ -496,6 +497,35 @@ STATIC_OVL boolean FDECL(wc2_supported, (const char *)); STATIC_DCL void FDECL(remove_autopickup_exception, (struct autopickup_exception *)); STATIC_OVL int FDECL(count_ape_maps, (int *, int *)); + +void +reglyph_darkroom() +{ + xchar x,y; + for (x = 0; x < COLNO; x++) + for (y = 0; y < ROWNO; y++) { + struct rm *lev = &levl[x][y]; + if (!flags.dark_room) { + if (lev->glyph == cmap_to_glyph(S_darkroom)) + lev->glyph = lev->waslit ? cmap_to_glyph(S_room) : cmap_to_glyph(S_stone); + } else { + if (lev->glyph == cmap_to_glyph(S_room) && + lev->seenv && + lev->waslit && !cansee(x,y)) + lev->glyph = cmap_to_glyph(S_darkroom); + else if (lev->glyph == cmap_to_glyph(S_stone) && + lev->typ == ROOM && + lev->seenv && + !cansee(x,y)) + lev->glyph = cmap_to_glyph(S_darkroom); + } + } + if (flags.dark_room && iflags.use_color) + showsyms[S_darkroom]=showsyms[S_room]; + else + showsyms[S_darkroom]=showsyms[S_stone]; +} + /* check whether a user-supplied option string is a proper leading substring of a particular option name; option string might have a colon or equals sign and arbitrary value appended to it */ @@ -704,6 +734,8 @@ initoptions_finish() /* result in the player's preferred fruit [better than "\033"]. */ obj_descr[SLIME_MOLD].oc_name = "fruit"; + reglyph_darkroom(); + return; } @@ -2810,7 +2842,8 @@ goodfruit: else if ((boolopt[i].addr) == &flags.invlet_constant) { if (flags.invlet_constant) reassign(); } - else if ((boolopt[i].addr) == &flags.lit_corridor) { + else if (((boolopt[i].addr) == &flags.lit_corridor) || + ((boolopt[i].addr) == &flags.dark_room)) { /* * All corridor squares seen via night vision or * candles & lamps change. Update them by calling @@ -2820,6 +2853,7 @@ goodfruit: */ vision_recalc(2); /* shut down vision */ vision_full_recalc = 1; /* delayed recalc */ + if (iflags.use_color) need_redraw = TRUE; /* darkroom refresh */ } else if ((boolopt[i].addr) == &iflags.use_inverse || (boolopt[i].addr) == &flags.showrace || @@ -3149,8 +3183,10 @@ doset() } destroy_nhwindow(tmpwin); - if (need_redraw) + if (need_redraw) { + reglyph_darkroom(); (void) doredraw(); + } return 0; } diff --git a/src/pager.c b/src/pager.c index 4c0f69d17..280cf0a05 100644 --- a/src/pager.c +++ b/src/pager.c @@ -250,7 +250,7 @@ lookat(x, y, buf, monbuf) int tnum = what_trap(glyph_to_trap(glyph)); Strcpy(buf, defsyms[trap_to_defsym(tnum)].explanation); } else if(!glyph_is_cmap(glyph)) { - Strcpy(buf,"dark part of a room"); + Strcpy(buf,"unexplored area"); } else switch(glyph_to_cmap(glyph)) { case S_altar: Sprintf(buf, "%s %saltar", @@ -557,8 +557,8 @@ const char **firstmatch; x_str = defsyms[i].explanation; if (sym == ((looked) ? showsyms[i] : defsyms[i].sym) && *x_str) { - /* avoid "an air", "a water", or "a floor of a room" */ - int article = (i == S_room) ? 2 : /* 2=>"the" */ + /* avoid "an air", "a water", "a floor of a room", "a dark part of a room" */ + int article = ((i == S_room)||(i == S_darkroom)) ? 2 : /* 2=>"the" */ !(strcmp(x_str, "air") == 0 || /* 1=>"an" */ strcmp(x_str, "water") == 0); /* 0=>(none)*/ diff --git a/win/share/other.txt b/win/share/other.txt index f2bcd148d..f6ecc3a9c 100644 --- a/win/share/other.txt +++ b/win/share/other.txt @@ -394,6 +394,25 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } +# tile 20 (dark part of a room) +{ + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAPPMAMAMAM + MAMAMAMPPAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM + MAMAMAMAMAMAMAMA + AMAMAMAMAMAMAMAM +} # tile 20 (corridor) { MMMMMMMMMMMMMMMM From 3979e012f713e3b47e95d09737f10cf8b83821b4 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Tue, 7 Apr 2015 21:34:57 +0300 Subject: [PATCH 5/5] Renumber other.txt tiles --- win/share/other.txt | 454 ++++++++++++++++++++++---------------------- 1 file changed, 227 insertions(+), 227 deletions(-) diff --git a/win/share/other.txt b/win/share/other.txt index f6ecc3a9c..292295085 100644 --- a/win/share/other.txt +++ b/win/share/other.txt @@ -413,7 +413,7 @@ P = (108, 145, 182) MAMAMAMAMAMAMAMA AMAMAMAMAMAMAMAM } -# tile 20 (corridor) +# tile 21 (corridor) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -432,7 +432,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 21 (lit corridor) +# tile 22 (lit corridor) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -451,7 +451,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 22 (staircase up) +# tile 23 (staircase up) { AAAAAAAAAAAAAAMA AADJJJJJJJJJDAMA @@ -470,7 +470,7 @@ P = (108, 145, 182) AAAAAAAAAAAAAAMA AAAAAAAAAAAAAAAA } -# tile 23 (staircase down) +# tile 24 (staircase down) { AAAAAAAAAAAAAAMA AADJJJJJJJJJDAMA @@ -489,7 +489,7 @@ P = (108, 145, 182) AAAAAAAAAAAAAAMA AAAAAAAAAAAAAAAA } -# tile 24 (ladder up) +# tile 25 (ladder up) { ADAAAAAAAAAAADMA AADAAAANAAAADAMA @@ -508,7 +508,7 @@ P = (108, 145, 182) AAAAAAAAAAAAAAMA AAAAAAAAAAAAAAAA } -# tile 25 (ladder down) +# tile 26 (ladder down) { ADAAAAAAAAAAADMA AADAAAANAAAADAMA @@ -527,7 +527,7 @@ P = (108, 145, 182) AAAAAAAAAAAAAAMA AAAAAAAAAAAAAAAA } -# tile 26 (altar) +# tile 27 (altar) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -546,7 +546,7 @@ P = (108, 145, 182) MMMAAAAAAAAAAAMM MMMMMMMMMMMMMMMM } -# tile 27 (grave) +# tile 28 (grave) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -565,7 +565,7 @@ P = (108, 145, 182) FFFFFFFFFFFFFFFM MMMMMMMMMMMMMMMM } -# tile 28 (opulent throne) +# tile 29 (opulent throne) { MMMMMMMMMMMMMMMM MMMMMHHHHHMMMMMM @@ -584,7 +584,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 29 (sink) +# tile 30 (sink) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -603,7 +603,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 30 (fountain) +# tile 31 (fountain) { MMMMEMMMMEMMMMMM MMEEEEMMEEEMMMMM @@ -622,7 +622,7 @@ P = (108, 145, 182) MMMMAAAAAAAAAMMM MMMMMMMMMMMMMMMM } -# tile 31 (water) +# tile 32 (water) { MMMMMMMMMMNNNMMM MEEEEMMMMNEMENMM @@ -641,7 +641,7 @@ P = (108, 145, 182) MEMMEEMMMEMMEEEM EEMMMMEEEMMMMMEE } -# tile 32 (ice) +# tile 33 (ice) { NNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNN @@ -660,7 +660,7 @@ P = (108, 145, 182) NNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNN } -# tile 33 (molten lava) +# tile 34 (molten lava) { DDDDDDCDDDDDDDDD DDDDDCDKDDDDDDDD @@ -679,7 +679,7 @@ P = (108, 145, 182) DDDDKKDDDDCDDDDD DDDDDDDDDDDKDDDD } -# tile 34 (lowered drawbridge) +# tile 35 (lowered drawbridge) { EKKAKKKKKKKAKKAE EJKKKKKKKKKKKJAA @@ -698,7 +698,7 @@ P = (108, 145, 182) EEJJJJJJJJJJJAAA EJKKKKKKKKKKKJAA } -# tile 35 (lowered drawbridge) +# tile 36 (lowered drawbridge) { EEEEEEEEEEEEEEEE JEJKJEJKJEJKJEJK @@ -717,7 +717,7 @@ P = (108, 145, 182) AAAAAAAAAAAAAAAA AAAEAAAEAAAEAAAE } -# tile 36 (raised drawbridge) +# tile 37 (raised drawbridge) { MMMMMMMMMMMMMMMM MMJKJMJKJMJKJMMM @@ -736,7 +736,7 @@ P = (108, 145, 182) MMMAAAMAAAMAAAMM MMMMMMMMMMMMMMMM } -# tile 37 (raised drawbridge) +# tile 38 (raised drawbridge) { MMMMMMMMMMMMMMMM MMJJJJJJJJJJJMMM @@ -755,7 +755,7 @@ P = (108, 145, 182) MMMAAAAAAAAAAAMM MMMMMMMMMMMMMMMM } -# tile 38 (air) +# tile 39 (air) { BBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBB @@ -774,7 +774,7 @@ P = (108, 145, 182) BBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBB } -# tile 39 (cloud) +# tile 40 (cloud) { BBBBBBBBBBBBBBBB BBBBBNNNNNNNBBBB @@ -793,7 +793,7 @@ P = (108, 145, 182) BBBBBBOOOOBBBBBB BBBBBBBBBBBBBBBB } -# tile 40 (water) +# tile 41 (water) { EEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEE @@ -812,7 +812,7 @@ P = (108, 145, 182) EEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEE } -# tile 41 (arrow trap) +# tile 42 (arrow trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -831,7 +831,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 42 (dart trap) +# tile 43 (dart trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -850,7 +850,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 43 (falling rock trap) +# tile 44 (falling rock trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -869,7 +869,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 44 (squeaky board) +# tile 45 (squeaky board) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -888,7 +888,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 45 (bear trap) +# tile 46 (bear trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -907,7 +907,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 46 (land mine) +# tile 47 (land mine) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -926,7 +926,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 47 (rolling boulder trap) +# tile 48 (rolling boulder trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -945,7 +945,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 48 (sleeping gas trap) +# tile 49 (sleeping gas trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -964,7 +964,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 49 (rust trap) +# tile 50 (rust trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -983,7 +983,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 50 (fire trap) +# tile 51 (fire trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -1002,7 +1002,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 51 (pit) +# tile 52 (pit) { AAAAAAAAAAAAAAAA AMAAAAAAAAAAAABA @@ -1021,7 +1021,7 @@ P = (108, 145, 182) AMPPPPPPPPPPPPPA AAAAAAAAAAAAAAAA } -# tile 52 (spiked pit) +# tile 53 (spiked pit) { AAAAAAAAAAAAAAAA AMAAAAAAAAAAAABA @@ -1040,7 +1040,7 @@ P = (108, 145, 182) AMPPPPPPPPPPPPPA AAAAAAAAAAAAAAAA } -# tile 53 (hole) +# tile 54 (hole) { MMMMMMMMMMMMMMMM MMMMMMAAAAMMMMMM @@ -1059,7 +1059,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 54 (trap door) +# tile 55 (trap door) { AAAAAAAAAAAAAAAA AMAAAAAAAAAAAABA @@ -1078,7 +1078,7 @@ P = (108, 145, 182) AMPPPPPPPPPPPPPA AAAAAAAAAAAAAAAA } -# tile 55 (teleportation trap) +# tile 56 (teleportation trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -1097,7 +1097,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 56 (level teleporter) +# tile 57 (level teleporter) { MMMMMMMMMMMMMMMM MMMMMDDADDMMMMMM @@ -1116,7 +1116,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 57 (magic portal) +# tile 58 (magic portal) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -1135,7 +1135,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 58 (web) +# tile 59 (web) { OAOAMOAMMMOMMMMO MOMNNNNMNOAMMOOA @@ -1154,7 +1154,7 @@ P = (108, 145, 182) MOAMMMMMMMMMMMMM OAMMMMMMMMMMMMMM } -# tile 59 (statue trap) +# tile 60 (statue trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -1173,7 +1173,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 60 (magic trap) +# tile 61 (magic trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -1192,7 +1192,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 61 (anti-magic field) +# tile 62 (anti-magic field) { MMMMMMMMMMMMMMMM MMMMMMDDDDDMMMMM @@ -1211,7 +1211,7 @@ P = (108, 145, 182) MMMMMAAAAAMMMMMM MMMMMMMMMMMMMMMM } -# tile 62 (polymorph trap) +# tile 63 (polymorph trap) { MMMMMMMMMMMMMMMM MMMMMDDDDDMMMMMM @@ -1230,7 +1230,7 @@ P = (108, 145, 182) MMMMMMAAAAAMMMMM MMMMMMMMMMMMMMMM } -# tile 63 (wall) +# tile 64 (wall) { MMMMMMMNNMMMMMMM MMMMMMNNMMMMMMMM @@ -1249,7 +1249,7 @@ P = (108, 145, 182) MMMMMMMMMNNMMMMM MMMMMMMMNNMMMMMM } -# tile 64 (wall) +# tile 65 (wall) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1268,26 +1268,26 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 65 (wall) -{ - NNNNNMMMMMMMMMMM - MMMMNMMMMMMMMMMM - MMMMNMMMMMMMMMMM - MMMMNMMMMMMMMMMM - MMMMNMMMMMMMMMMM - MMMMNMMMMMMMMMMM - MMMMNMMMMMMMMMMM - MMMMNMMMMMMMMMMM - MMMMNNNNNNNNNMMM - MMMMMMMMMMMMNMMM - MMMMMMMMMMMMNMMM - MMMMMMMMMMMMNMMM - MMMMMMMMMMMMNMMM - MMMMMMMMMMMMNMMM - MMMMMMMMMMMMNMMM - MMMMMMMMMMMMNNNN -} # tile 66 (wall) +{ + NNNNNMMMMMMMMMMM + MMMMNMMMMMMMMMMM + MMMMNMMMMMMMMMMM + MMMMNMMMMMMMMMMM + MMMMNMMMMMMMMMMM + MMMMNMMMMMMMMMMM + MMMMNMMMMMMMMMMM + MMMMNMMMMMMMMMMM + MMMMNNNNNNNNNMMM + MMMMMMMMMMMMNMMM + MMMMMMMMMMMMNMMM + MMMMMMMMMMMMNMMM + MMMMMMMMMMMMNMMM + MMMMMMMMMMMMNMMM + MMMMMMMMMMMMNMMM + MMMMMMMMMMMMNNNN +} +# tile 67 (wall) { MMMMMMMMMMMMNNNN MMMMMMMMMMMMNMMM @@ -1306,7 +1306,7 @@ P = (108, 145, 182) MMMMNMMMMMMMMMMM NNNNNMMMMMMMMMMM } -# tile 67 (cmap 67) +# tile 68 (cmap 68) { MMMMAAAAMMMMMMMM MMAMMMMAAMMAAMMM @@ -1325,7 +1325,7 @@ P = (108, 145, 182) MMMMAAMMMMAAAMMM MMMMMMMMMMMMMMMM } -# tile 68 (cmap 68) +# tile 69 (cmap 69) { MMMMMMMMMMMMMMMM MMMMMNNNNNNMMMMM @@ -1344,7 +1344,7 @@ P = (108, 145, 182) MMMMMNNNNNNMMMMM MMMMMMMMMMMMMMMM } -# tile 69 (cmap 69) +# tile 70 (cmap 70) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1363,7 +1363,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 70 (cmap 70) +# tile 71 (cmap 71) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1382,7 +1382,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 71 (cmap 71) +# tile 72 (cmap 72) { MMMMMMMMMMMMMMMM MMMMMIMMMMIMMMMM @@ -1401,7 +1401,7 @@ P = (108, 145, 182) MMMMMIMMMMIMMMMM MMMMMMMMMMMMMMMM } -# tile 72 (cmap 72) +# tile 73 (cmap 73) { MMMMMMMMMMMMMMMM MCCCCCCCCCCCCCCC @@ -1420,7 +1420,7 @@ P = (108, 145, 182) MCCCCCCCCCCCCCCM MMMMMMMMMMMMMMMM } -# tile 73 (cmap 73) +# tile 74 (cmap 74) { MMMMMMMHHMMMMMMM MMMMMMMHHMMMMMMM @@ -1439,7 +1439,7 @@ P = (108, 145, 182) MMMMMMMHHMMMMMMM MMMMMMMHHMMMMMMM } -# tile 74 (cmap 74) +# tile 75 (cmap 75) { MMMMMMMMMMMMMMMM MMMMMMNNNNNMMMMM @@ -1458,7 +1458,7 @@ P = (108, 145, 182) MMMMMNNNNNMMMMMM MMMMMMMMMMMMMMMM } -# tile 75 (poison cloud) +# tile 76 (poison cloud) { BBBBBBBBBBBBBBBB BBBBBFFFFFFFBBBB @@ -1477,7 +1477,7 @@ P = (108, 145, 182) BBBBBBGGGGBBBBBB BBBBBBBBBBBBBBBB } -# tile 76 (valid position) +# tile 77 (valid position) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1496,7 +1496,7 @@ P = (108, 145, 182) MMMMMMMFFMMMMMMM MMMMMMMMMMMMMMMM } -# tile 75 (cmap 75) +# tile 78 (cmap 78) { AAAAAAADDDDDDAAA AAAAADDDDDDDDDDD @@ -1515,7 +1515,7 @@ P = (108, 145, 182) AAAADDDDDDMMMMMM AAAADDDDDDMMMMMM } -# tile 76 (cmap 76) +# tile 79 (cmap 79) { AAAAAAAAAAAAAAAA DDAAAAAAAAAAAAAA @@ -1534,7 +1534,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 77 (cmap 77) +# tile 80 (cmap 80) { AAAAAAAAAAAAAAAA AAADDDDDAAAAAAAA @@ -1553,7 +1553,7 @@ P = (108, 145, 182) MMMMDDDDDDDDDDDD MMMMDDDDDDDDDDDA } -# tile 78 (cmap 78) +# tile 81 (cmap 81) { AAAADDDDDDMMMMMM AAAADDDDDDDMMMMM @@ -1572,7 +1572,7 @@ P = (108, 145, 182) DDDDDDDMMMMMMMMM DDCCDDDMMMMMMMMM } -# tile 79 (cmap 79) +# tile 82 (cmap 82) { MMMMDDDDDDDDDDDA MMMMDDDDDDDDDDDA @@ -1591,7 +1591,7 @@ P = (108, 145, 182) MMMMMMDDDDDDDDAA MMMMMMMDDDDDDDAA } -# tile 80 (cmap 80) +# tile 83 (cmap 83) { DDDCDDDMMMMMMMMM DDDCDDDMMMMMMMMM @@ -1610,7 +1610,7 @@ P = (108, 145, 182) AAAAAAAAAAAADDDD AAAAAAAAAAAAAADD } -# tile 81 (cmap 81) +# tile 84 (cmap 84) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1629,7 +1629,7 @@ P = (108, 145, 182) DDDDDDDDDDDDDDDD DDDDDDDDDDDDDDAA } -# tile 82 (cmap 82) +# tile 85 (cmap 85) { MMMMMMDDDDDDDDAA MMMMMMDDDDDDDDDA @@ -1648,7 +1648,7 @@ P = (108, 145, 182) DDAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA } -# tile 83 (explosion dark 0) +# tile 86 (explosion dark 0) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1667,7 +1667,7 @@ P = (108, 145, 182) MMAAAAMMAAAAMMMM MMAAAMMAAAAAMMMM } -# tile 84 (explosion dark 1) +# tile 87 (explosion dark 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1686,7 +1686,7 @@ P = (108, 145, 182) MMMMMMMMAMAMAPAA MPAMMMAPAAAAAAAA } -# tile 85 (explosion dark 2) +# tile 88 (explosion dark 2) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1705,7 +1705,7 @@ P = (108, 145, 182) AAMAMMAMAAAAMMMM AMAAMMAMAAAAAMMM } -# tile 86 (explosion dark 3) +# tile 89 (explosion dark 3) { MMAAAMAMAAAMMMMM MMAAAMAAAAAMAPMM @@ -1724,7 +1724,7 @@ P = (108, 145, 182) MMAMAMMMAAPMMMPA MMMMAMMMMMMMMMPA } -# tile 87 (explosion dark 4) +# tile 90 (explosion dark 4) { APAAAMMPPAPAAAAA MAPAMMAMAAAPAAAM @@ -1743,7 +1743,7 @@ P = (108, 145, 182) AAAAAAAAAAAAAMAA AAAAAAAAAAAMHHMM } -# tile 88 (explosion dark 5) +# tile 91 (explosion dark 5) { MMAAAMAMAMAAAAMM MMAAAAAMAMAAAAMM @@ -1762,7 +1762,7 @@ P = (108, 145, 182) AAAMMMAAAAAAAMMM MMMMPPAAAAAAAAMM } -# tile 89 (explosion dark 6) +# tile 92 (explosion dark 6) { MMMMAMMMMMMMAMMP MMMMAMMMMMMMAAMM @@ -1781,7 +1781,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 90 (explosion dark 7) +# tile 93 (explosion dark 7) { PPPAAAAAPAAAMAMM AAPPAAPPPPAMAMMM @@ -1800,7 +1800,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 91 (explosion dark 8) +# tile 94 (explosion dark 8) { MMMMPMMAAAAAAAMM MMAMMAMAAMAMAAMM @@ -1819,7 +1819,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 92 (explosion noxious 0) +# tile 95 (explosion noxious 0) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1838,7 +1838,7 @@ P = (108, 145, 182) MMFFFFMMFFFFMMMM MMFFFMMFFFFFMMMM } -# tile 93 (explosion noxious 1) +# tile 96 (explosion noxious 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1857,7 +1857,7 @@ P = (108, 145, 182) MMMMMMMMFMFMFGFF MGHMMMHGHHFFFFFF } -# tile 94 (explosion noxious 2) +# tile 97 (explosion noxious 2) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -1876,7 +1876,7 @@ P = (108, 145, 182) FFMFMMFMFFFFMMMM FMFFMMFMFFFFFMMM } -# tile 95 (explosion noxious 3) +# tile 98 (explosion noxious 3) { MMFFFMFMFFFMMMMM MMFFFMFFFFFMFGMM @@ -1895,7 +1895,7 @@ P = (108, 145, 182) MMFMFMMMFHGMMMGH MMMMFMMMMMMMMMGH } -# tile 96 (explosion noxious 4) +# tile 99 (explosion noxious 4) { FGHFFMMGGFGHFFFF MHGHMMFMFFHGFHFM @@ -1914,7 +1914,7 @@ P = (108, 145, 182) HHHHNHNHNMGGGMGF GGGGNHHHGGGMHHMM } -# tile 97 (explosion noxious 5) +# tile 100 (explosion noxious 5) { MMFFFMFMFMFFFFMM MMFFFFFMFMFFFFMM @@ -1933,7 +1933,7 @@ P = (108, 145, 182) HFHMMMFFFFFFFMMM MMMMGGFFFFFFFFMM } -# tile 98 (explosion noxious 6) +# tile 101 (explosion noxious 6) { MMMMFMMMMMMMHMMG MMMMFMMMMMMMFHMM @@ -1952,7 +1952,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 99 (explosion noxious 7) +# tile 102 (explosion noxious 7) { GGGHHHHHGHHHMHMM HHGGHHGGGGHMFMMM @@ -1971,7 +1971,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 100 (explosion noxious 8) +# tile 103 (explosion noxious 8) { MMMMGMMFFFFFFFMM MMFMMFMFFMFMFFMM @@ -1990,7 +1990,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 101 (explosion muddy 0) +# tile 104 (explosion muddy 0) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2009,7 +2009,7 @@ P = (108, 145, 182) MMJJJJKKJJJJKKKK MMJJJKKJJJJJKKKK } -# tile 102 (explosion muddy 1) +# tile 105 (explosion muddy 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2028,7 +2028,7 @@ P = (108, 145, 182) KKKKKKKKJKJKJCJJ KCLKKKLCLLJJJJJJ } -# tile 103 (explosion muddy 2) +# tile 106 (explosion muddy 2) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2047,7 +2047,7 @@ P = (108, 145, 182) JJKJKKJKJJJJMMMM JKJJKKJKJJJJJMMM } -# tile 104 (explosion muddy 3) +# tile 107 (explosion muddy 3) { MMJJJKJKJJJKKKKK MMJJJKJJJJJKJCKK @@ -2066,7 +2066,7 @@ P = (108, 145, 182) MMJMJKKKJLCKKKCL MMMMJKKKKKKKKKCL } -# tile 105 (explosion muddy 4) +# tile 108 (explosion muddy 4) { JCLJJKKCCJCLJJJJ KLCLKKJKJJLCJLJK @@ -2085,7 +2085,7 @@ P = (108, 145, 182) LLLLCLCLCKCCCKCJ CCCCCLLLCCCKLLKK } -# tile 106 (explosion muddy 5) +# tile 109 (explosion muddy 5) { KKJJJKJKJKJJJJMM KKJJJJJKJKJJJJMM @@ -2104,7 +2104,7 @@ P = (108, 145, 182) LJLKKKJJJJJJJMMM KKKKCCJJJJJJJJMM } -# tile 107 (explosion muddy 6) +# tile 110 (explosion muddy 6) { MMMMJKKKKKKKLKKC MMMMJKKKKKKKJLKK @@ -2123,7 +2123,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 108 (explosion muddy 7) +# tile 111 (explosion muddy 7) { CCCLLLLLCLLLKLKK LLCCLLCCCCLKJKKK @@ -2142,7 +2142,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 109 (explosion muddy 8) +# tile 112 (explosion muddy 8) { KKKKCKKJJJJJJJMM KKJKKJKJJKJKJJMM @@ -2161,7 +2161,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 110 (explosion wet 0) +# tile 113 (explosion wet 0) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2180,7 +2180,7 @@ P = (108, 145, 182) MMEEEEPPEEEEPPPP MMEEEPPEEEEEPPPP } -# tile 111 (explosion wet 1) +# tile 114 (explosion wet 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2199,7 +2199,7 @@ P = (108, 145, 182) PPPPPPPPEPEPEBEE PBNPPPNBEEEEEEEE } -# tile 112 (explosion wet 2) +# tile 115 (explosion wet 2) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2218,7 +2218,7 @@ P = (108, 145, 182) EEPEPPEPEEEEMMMM EPEEPPEPEEEEEMMM } -# tile 113 (explosion wet 3) +# tile 116 (explosion wet 3) { MMEEEPEPEEEPPPPP MMEEEPEEEEEPEBPP @@ -2237,7 +2237,7 @@ P = (108, 145, 182) MMEMEPPPENBPPPBE MMMMEPPPPPPPPPBE } -# tile 114 (explosion wet 4) +# tile 117 (explosion wet 4) { EBNEEPPBBEBNEEEE PNBNPPEPEEEBENEP @@ -2256,7 +2256,7 @@ P = (108, 145, 182) EEEEEEEEEPBBBPBE BBBBEEEEBBBPNNPP } -# tile 115 (explosion wet 5) +# tile 118 (explosion wet 5) { PPEEEPEPEPEEEEMM PPEEEEEPEPEEEEMM @@ -2275,7 +2275,7 @@ P = (108, 145, 182) NENPPPEEEEEEEMMM PPPPBBEEEEEEEEMM } -# tile 116 (explosion wet 6) +# tile 119 (explosion wet 6) { MMMMEPPPPPPPNPPB MMMMEPPPPPPPENPP @@ -2294,7 +2294,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 117 (explosion wet 7) +# tile 120 (explosion wet 7) { BBBEEEEEBEEEPEPP EEBBEEBBBBEPEPPP @@ -2313,7 +2313,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 118 (explosion wet 8) +# tile 121 (explosion wet 8) { PPPPBPPEEEEEEEMM PPEPPEPEEPEPEEMM @@ -2332,7 +2332,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 119 (explosion magical 0) +# tile 122 (explosion magical 0) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2351,7 +2351,7 @@ P = (108, 145, 182) MMEEEEIIEEEEIIII MMEEEIIEEEEEIIII } -# tile 120 (explosion magical 1) +# tile 123 (explosion magical 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2370,7 +2370,7 @@ P = (108, 145, 182) IIIIIIIIEIEIELEE ILHIIIHLHHEEEEEE } -# tile 121 (explosion magical 2) +# tile 124 (explosion magical 2) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2389,7 +2389,7 @@ P = (108, 145, 182) EEIEIIEIEEEEMMMM EIEEIIEIEEEEEMMM } -# tile 122 (explosion magical 3) +# tile 125 (explosion magical 3) { MMEEEIEIEEEIIIII MMEEEIEEEEEIEIII @@ -2408,7 +2408,7 @@ P = (108, 145, 182) MMEMEIIIENIIIIIN MMMMEIIIIIIIIIIN } -# tile 123 (explosion magical 4) +# tile 126 (explosion magical 4) { EINEEIIIIEINEEEE ININIIEIEENIENEI @@ -2427,7 +2427,7 @@ P = (108, 145, 182) NNNNNNNNNIIIIIIE IIIINNNNIIIINNII } -# tile 124 (explosion magical 5) +# tile 127 (explosion magical 5) { IIEEEIEIEIEEEEMM IIEEEEEIEIEEEEMM @@ -2446,7 +2446,7 @@ P = (108, 145, 182) NENIIIEEEEEEEMMM IIIIIIEEEEEEEEMM } -# tile 125 (explosion magical 6) +# tile 128 (explosion magical 6) { MMMMEIIIIIIIHIII MMMMEIIIIIIIEHII @@ -2465,7 +2465,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 126 (explosion magical 7) +# tile 129 (explosion magical 7) { IIINNNNNINNNINII NNIINNIIIINIEIII @@ -2484,7 +2484,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 127 (explosion magical 8) +# tile 130 (explosion magical 8) { IIIIIIIEEEEEEEMM IIEIIEIEEIEIEEMM @@ -2503,7 +2503,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 128 (explosion fiery 0) +# tile 131 (explosion fiery 0) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2522,7 +2522,7 @@ P = (108, 145, 182) MMDDDDCCDDDDCCCC MMDDDCCDDDDDCCCC } -# tile 129 (explosion fiery 1) +# tile 132 (explosion fiery 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2541,7 +2541,7 @@ P = (108, 145, 182) CCCCCCCCDCDCDLDD CLHCCCHLHHDDDDDD } -# tile 130 (explosion fiery 2) +# tile 133 (explosion fiery 2) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2560,7 +2560,7 @@ P = (108, 145, 182) DDCDCCDCDDDDMMMM DCDDCCDCDDDDDMMM } -# tile 131 (explosion fiery 3) +# tile 134 (explosion fiery 3) { MMDDDCDCDDDCCCCC MMDDDCDDDDDCDLCC @@ -2579,7 +2579,7 @@ P = (108, 145, 182) MMDMDCCCDHLCCCLH MMMMDCCCCCCCCCLH } -# tile 132 (explosion fiery 4) +# tile 135 (explosion fiery 4) { DLHDDCCLLDLHDDDD CHLHCCDCDDHLDHDC @@ -2598,7 +2598,7 @@ P = (108, 145, 182) HHHHNHNHNCLLLCLD LLLLNHHHLLLCHHCC } -# tile 133 (explosion fiery 5) +# tile 136 (explosion fiery 5) { CCDDDCDCDCDDDDMM CCDDDDDCDCDDDDMM @@ -2617,7 +2617,7 @@ P = (108, 145, 182) HDHCCCDDDDDDDMMM CCCCLLDDDDDDDDMM } -# tile 134 (explosion fiery 6) +# tile 137 (explosion fiery 6) { MMMMDCCCCCCCHCCL MMMMDCCCCCCCDHCC @@ -2636,7 +2636,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 135 (explosion fiery 7) +# tile 138 (explosion fiery 7) { LLLHHHHHLHHHCHCC HHLLHHLLLLHCDCCC @@ -2655,7 +2655,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 136 (explosion fiery 8) +# tile 139 (explosion fiery 8) { CCCCLCCDDDDDDDMM CCDCCDCDDCDCDDMM @@ -2674,7 +2674,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 137 (explosion frosty 0) +# tile 140 (explosion frosty 0) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2693,7 +2693,7 @@ P = (108, 145, 182) MMEEEEPPNBEEPPPP MMEEEPPEEEEEPPPP } -# tile 138 (explosion frosty 1) +# tile 141 (explosion frosty 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2712,7 +2712,7 @@ P = (108, 145, 182) PPPPPPPPEPEPEBEE PBNPPPNBNNEEEEEE } -# tile 139 (explosion frosty 2) +# tile 142 (explosion frosty 2) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2731,7 +2731,7 @@ P = (108, 145, 182) EEPEPPEPEEEEMMMM EPEEPPEPEEEEEMMM } -# tile 140 (explosion frosty 3) +# tile 143 (explosion frosty 3) { MMEEEPEPEEEPPPPP MMEEEPEEEEEPEBPP @@ -2750,7 +2750,7 @@ P = (108, 145, 182) MMEMEPPPENBPPPBN MMMMEPPPPPPPPPBN } -# tile 141 (explosion frosty 4) +# tile 144 (explosion frosty 4) { EBNEEPPBBEBNEEEE PNBNPPEPEENBENEP @@ -2769,7 +2769,7 @@ P = (108, 145, 182) NNNNNNNNNPBBBPBE BBBBNNNNBBBPNNPP } -# tile 142 (explosion frosty 5) +# tile 145 (explosion frosty 5) { PPEEEPEPEPEEEEMM PPEEEEEPEPEEEEMM @@ -2788,7 +2788,7 @@ P = (108, 145, 182) NENPPPEEEEEEEMMM PPPPBBEEEEEEEEMM } -# tile 143 (explosion frosty 6) +# tile 146 (explosion frosty 6) { MMMMEPPPPPPPNPPB MMMMEPPPPPPPENPP @@ -2807,7 +2807,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 144 (explosion frosty 7) +# tile 147 (explosion frosty 7) { BBBNNNNNBNNNPNPP NNBBNNBBBBNPEPPP @@ -2826,7 +2826,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 145 (explosion frosty 8) +# tile 148 (explosion frosty 8) { PPPPBPPEEEEEEEMM PPEPPEPEEPEPEEMM @@ -2845,7 +2845,7 @@ P = (108, 145, 182) MMMMMMMMMMMNMMMM MMMMMMMMMMMMMMMM } -# tile 146 (zap 0 0) +# tile 149 (zap 0 0) { MMMMMMMIIMMMMMMM MMMMMMIIIIMMMMMM @@ -2864,7 +2864,7 @@ P = (108, 145, 182) MMMMMMIIIIMMMMMM MMMMMMMIIMMMMMMM } -# tile 147 (zap 0 1) +# tile 150 (zap 0 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2883,7 +2883,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 148 (zap 0 2) +# tile 151 (zap 0 2) { IIIMMMMMMMMMMMMM IIIIMMMMMMMMMMMM @@ -2902,7 +2902,7 @@ P = (108, 145, 182) MMMMMMMMMMMMIIII MMMMMMMMMMMMMIII } -# tile 149 (zap 0 3) +# tile 152 (zap 0 3) { MMMMMMMMMMMMMIII MMMMMMMMMMMMIIII @@ -2921,7 +2921,7 @@ P = (108, 145, 182) IIIIMMMMMMMMMMMM IIIMMMMMMMMMMMMM } -# tile 150 (zap 1 0) +# tile 153 (zap 1 0) { MMMMMMMCCMMMMMMM MMMMMMCCCCMMMMMM @@ -2940,7 +2940,7 @@ P = (108, 145, 182) MMMMMMCCCCMMMMMM MMMMMMMCCMMMMMMM } -# tile 151 (zap 1 1) +# tile 154 (zap 1 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -2959,7 +2959,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 152 (zap 1 2) +# tile 155 (zap 1 2) { CCCMMMMMMMMMMMMM CCCCMMMMMMMMMMMM @@ -2978,7 +2978,7 @@ P = (108, 145, 182) MMMMMMMMMMMMCCCC MMMMMMMMMMMMMCCC } -# tile 153 (zap 1 3) +# tile 156 (zap 1 3) { MMMMMMMMMMMMMCCC MMMMMMMMMMMMCCCC @@ -2997,7 +2997,7 @@ P = (108, 145, 182) CCCCMMMMMMMMMMMM CCCMMMMMMMMMMMMM } -# tile 154 (zap 2 0) +# tile 157 (zap 2 0) { MMMMMMMNNMMMMMMM MMMMMMNNNNMMMMMM @@ -3016,7 +3016,7 @@ P = (108, 145, 182) MMMMMMNNNNMMMMMM MMMMMMMNNMMMMMMM } -# tile 155 (zap 2 1) +# tile 158 (zap 2 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3035,7 +3035,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 156 (zap 2 2) +# tile 159 (zap 2 2) { NNNMMMMMMMMMMMMM NNNNMMMMMMMMMMMM @@ -3054,7 +3054,7 @@ P = (108, 145, 182) MMMMMMMMMMMMNNNN MMMMMMMMMMMMMNNN } -# tile 157 (zap 2 3) +# tile 160 (zap 2 3) { MMMMMMMMMMMMMNNN MMMMMMMMMMMMNNNN @@ -3073,7 +3073,7 @@ P = (108, 145, 182) NNNNMMMMMMMMMMMM NNNMMMMMMMMMMMMM } -# tile 158 (zap 3 0) +# tile 161 (zap 3 0) { MMMMMMMBBMMMMMMM MMMMMMBBBBMMMMMM @@ -3092,7 +3092,7 @@ P = (108, 145, 182) MMMMMMBBBBMMMMMM MMMMMMMBBMMMMMMM } -# tile 159 (zap 3 1) +# tile 162 (zap 3 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3111,7 +3111,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 160 (zap 3 2) +# tile 163 (zap 3 2) { BBBMMMMMMMMMMMMM BBBBMMMMMMMMMMMM @@ -3130,7 +3130,7 @@ P = (108, 145, 182) MMMMMMMMMMMMBBBB MMMMMMMMMMMMMBBB } -# tile 161 (zap 3 3) +# tile 164 (zap 3 3) { MMMMMMMMMMMMMBBB MMMMMMMMMMMMBBBB @@ -3149,7 +3149,7 @@ P = (108, 145, 182) BBBBMMMMMMMMMMMM BBBMMMMMMMMMMMMM } -# tile 162 (zap 4 0) +# tile 165 (zap 4 0) { MMMMMMMAAMMMMMMM MMMMMMAAAAMMMMMM @@ -3168,7 +3168,7 @@ P = (108, 145, 182) MMMMMMAAAAMMMMMM MMMMMMMAAMMMMMMM } -# tile 163 (zap 4 1) +# tile 166 (zap 4 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3187,7 +3187,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 164 (zap 4 2) +# tile 167 (zap 4 2) { AAAMMMMMMMMMMMMM AAAAMMMMMMMMMMMM @@ -3206,7 +3206,7 @@ P = (108, 145, 182) MMMMMMMMMMMMAAAA MMMMMMMMMMMMMAAA } -# tile 165 (zap 4 3) +# tile 168 (zap 4 3) { MMMMMMMMMMMMMAAA MMMMMMMMMMMMAAAA @@ -3225,7 +3225,7 @@ P = (108, 145, 182) AAAAMMMMMMMMMMMM AAAMMMMMMMMMMMMM } -# tile 166 (zap 5 0) +# tile 169 (zap 5 0) { MMMMMMMNNMMMMMMM MMMMMMNNNNMMMMMM @@ -3244,7 +3244,7 @@ P = (108, 145, 182) MMMMMMNNNNMMMMMM MMMMMMMNNMMMMMMM } -# tile 167 (zap 5 1) +# tile 170 (zap 5 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3263,7 +3263,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 168 (zap 5 2) +# tile 171 (zap 5 2) { NNNMMMMMMMMMMMMM NNNNMMMMMMMMMMMM @@ -3282,7 +3282,7 @@ P = (108, 145, 182) MMMMMMMMMMMMNNNN MMMMMMMMMMMMMNNN } -# tile 169 (zap 5 3) +# tile 172 (zap 5 3) { MMMMMMMMMMMMMNNN MMMMMMMMMMMMNNNN @@ -3301,7 +3301,7 @@ P = (108, 145, 182) NNNNMMMMMMMMMMMM NNNMMMMMMMMMMMMM } -# tile 170 (zap 6 0) +# tile 173 (zap 6 0) { MMMMMMMFFMMMMMMM MMMMMMFFFFMMMMMM @@ -3320,7 +3320,7 @@ P = (108, 145, 182) MMMMMMFFFFMMMMMM MMMMMMMFFMMMMMMM } -# tile 171 (zap 6 1) +# tile 174 (zap 6 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3339,7 +3339,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 172 (zap 6 2) +# tile 175 (zap 6 2) { FFFMMMMMMMMMMMMM FFFFMMMMMMMMMMMM @@ -3358,7 +3358,7 @@ P = (108, 145, 182) MMMMMMMMMMMMFFFF MMMMMMMMMMMMMFFF } -# tile 173 (zap 6 3) +# tile 176 (zap 6 3) { MMMMMMMMMMMMMFFF MMMMMMMMMMMMFFFF @@ -3377,7 +3377,7 @@ P = (108, 145, 182) FFFFMMMMMMMMMMMM FFFMMMMMMMMMMMMM } -# tile 174 (zap 7 0) +# tile 177 (zap 7 0) { MMMMMMMGGMMMMMMM MMMMMMGGGGMMMMMM @@ -3396,7 +3396,7 @@ P = (108, 145, 182) MMMMMMGGGGMMMMMM MMMMMMMGGMMMMMMM } -# tile 175 (zap 7 1) +# tile 178 (zap 7 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3415,7 +3415,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 176 (zap 7 2) +# tile 179 (zap 7 2) { GGGMMMMMMMMMMMMM GGGGMMMMMMMMMMMM @@ -3434,7 +3434,7 @@ P = (108, 145, 182) MMMMMMMMMMMMGGGG MMMMMMMMMMMMMGGG } -# tile 177 (zap 7 3) +# tile 180 (zap 7 3) { MMMMMMMMMMMMMGGG MMMMMMMMMMMMGGGG @@ -3453,7 +3453,7 @@ P = (108, 145, 182) GGGGMMMMMMMMMMMM GGGMMMMMMMMMMMMM } -# tile 178 (warning 0) +# tile 181 (warning 0) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3472,7 +3472,7 @@ P = (108, 145, 182) MMMMMMMAAMMMMMMM MMMMMMMMMMMMMMMM } -# tile 179 (warning 1) +# tile 182 (warning 1) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3491,7 +3491,7 @@ P = (108, 145, 182) MMMMMMMAAMMMMMMM MMMMMMMMMMMMMMMM } -# tile 180 (warning 2) +# tile 183 (warning 2) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3510,7 +3510,7 @@ P = (108, 145, 182) MMMMMMMAAMMMMMMM MMMMMMMMMMMMMMMM } -# tile 181 (warning 3) +# tile 184 (warning 3) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3529,7 +3529,7 @@ P = (108, 145, 182) MMMMMMMAAMMMMMMM MMMMMMMMMMMMMMMM } -# tile 182 (warning 4) +# tile 185 (warning 4) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3548,7 +3548,7 @@ P = (108, 145, 182) MMMMMMMAAMMMMMMM MMMMMMMMMMMMMMMM } -# tile 183 (warning 5) +# tile 186 (warning 5) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -3567,7 +3567,7 @@ P = (108, 145, 182) MMMMMMMAAMMMMMMM MMMMMMMMMMMMMMMM } -# tile 184 (sub mine walls 0) +# tile 187 (sub mine walls 0) { AJJKKKACJAAJJJAA AJKKKACLJJAJJJJA @@ -3586,7 +3586,7 @@ P = (108, 145, 182) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 185 (sub mine walls 1) +# tile 188 (sub mine walls 1) { AJAAAAAAJJAAAJAA JJJAAAJJJJJAAAAJ @@ -3605,7 +3605,7 @@ P = (108, 145, 182) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 186 (sub mine walls 2) +# tile 189 (sub mine walls 2) { AAAAAAKCCKKJAAAA AAAAKKCLCJKJJAAA @@ -3624,7 +3624,7 @@ P = (108, 145, 182) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 187 (sub mine walls 3) +# tile 190 (sub mine walls 3) { AAAAAAKCCKKJAAAA AAAAKKCLCJKJJAAA @@ -3643,7 +3643,7 @@ P = (108, 145, 182) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 188 (sub mine walls 4) +# tile 191 (sub mine walls 4) { AKKKAAKKKKAAJJJA AKKAAKCCCJJJAAJA @@ -3662,7 +3662,7 @@ P = (108, 145, 182) AJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 189 (sub mine walls 5) +# tile 192 (sub mine walls 5) { AKKAAAKKAAAAJJJA AKAAKKLCKAAAAAJA @@ -3681,7 +3681,7 @@ P = (108, 145, 182) JJJJJJJJJJJJJJJA AAAAAAAAAAAAAAAA } -# tile 190 (sub mine walls 6) +# tile 193 (sub mine walls 6) { AAAAAAKCCKKJAAAA AAAAKCCLCJKJJAAA @@ -3700,7 +3700,7 @@ P = (108, 145, 182) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 191 (sub mine walls 7) +# tile 194 (sub mine walls 7) { AKKAAAKKKKAAJJJA AKAAKKLCCJJJAAJA @@ -3719,7 +3719,7 @@ P = (108, 145, 182) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 192 (sub mine walls 8) +# tile 195 (sub mine walls 8) { AAAAAAKCCKKJAAAA AAAAKCCLCJKJJAAA @@ -3738,7 +3738,7 @@ P = (108, 145, 182) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 193 (sub mine walls 9) +# tile 196 (sub mine walls 9) { AKKAACKCCKKJAJJA AKACKKKLLJKJJAJA @@ -3757,7 +3757,7 @@ P = (108, 145, 182) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 194 (sub mine walls 10) +# tile 197 (sub mine walls 10) { AKKAACKCCKKJAJJA AKACKKCLCJKJJAJA @@ -3776,7 +3776,7 @@ P = (108, 145, 182) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 195 (sub gehennom walls 0) +# tile 198 (sub gehennom walls 0) { ALLDAJMMMMMJLLDA ADDDAJMJMMJJDDDA @@ -3795,7 +3795,7 @@ P = (108, 145, 182) AJJJAJJMMMMJJJJA ADMMAJJMMMMJDMJA } -# tile 196 (sub gehennom walls 1) +# tile 199 (sub gehennom walls 1) { AAALDDAAAAALDDAA DDDLDDAJDDDLDDAJ @@ -3814,7 +3814,7 @@ P = (108, 145, 182) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 197 (sub gehennom walls 2) +# tile 200 (sub gehennom walls 2) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3833,7 +3833,7 @@ P = (108, 145, 182) AJJJAJJMMMMJJJJA ADMMAJJMMMMJDMJA } -# tile 198 (sub gehennom walls 3) +# tile 201 (sub gehennom walls 3) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3852,7 +3852,7 @@ P = (108, 145, 182) AJJJAJJMMMMJJJJA ADMMAJJMMMMJDMJA } -# tile 199 (sub gehennom walls 4) +# tile 202 (sub gehennom walls 4) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3871,7 +3871,7 @@ P = (108, 145, 182) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 200 (sub gehennom walls 5) +# tile 203 (sub gehennom walls 5) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3890,7 +3890,7 @@ P = (108, 145, 182) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 201 (sub gehennom walls 6) +# tile 204 (sub gehennom walls 6) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3909,7 +3909,7 @@ P = (108, 145, 182) AJJJAJJMMMMJJJJA ADMMAJJMMMMJDMJA } -# tile 202 (sub gehennom walls 7) +# tile 205 (sub gehennom walls 7) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3928,7 +3928,7 @@ P = (108, 145, 182) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 203 (sub gehennom walls 8) +# tile 206 (sub gehennom walls 8) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3947,7 +3947,7 @@ P = (108, 145, 182) AJJJAJJMMMMJJJJA ADMMAJJMMMMJDMJA } -# tile 204 (sub gehennom walls 9) +# tile 207 (sub gehennom walls 9) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3966,7 +3966,7 @@ P = (108, 145, 182) AJJJAJJMMMMJJJJA ADMMAJJMMMMJDMJA } -# tile 205 (sub gehennom walls 10) +# tile 208 (sub gehennom walls 10) { AAALLLLDDDDDDAAA LLLLAAJJMMMMDJJJ @@ -3985,7 +3985,7 @@ P = (108, 145, 182) AJJJAJJMMMMJJJJA ADMMAJJMMMMJDMJA } -# tile 206 (sub knox walls 0) +# tile 209 (sub knox walls 0) { AJJJAAACJAAAJJJA AJJJAACLJJAAJJJA @@ -4004,7 +4004,7 @@ P = (108, 145, 182) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 207 (sub knox walls 1) +# tile 210 (sub knox walls 1) { AJAAAJAAAJAAAJAA JJJAAAJAJJJAAAJA @@ -4023,7 +4023,7 @@ P = (108, 145, 182) KJJACJJAKJJACJJA AAAAAAAAAAAAAAAA } -# tile 208 (sub knox walls 2) +# tile 211 (sub knox walls 2) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4042,7 +4042,7 @@ P = (108, 145, 182) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 209 (sub knox walls 3) +# tile 212 (sub knox walls 3) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4061,7 +4061,7 @@ P = (108, 145, 182) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 210 (sub knox walls 4) +# tile 213 (sub knox walls 4) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4080,7 +4080,7 @@ P = (108, 145, 182) KJJACJJAKJJACJJA AAAAAAAAAAAAAAAA } -# tile 211 (sub knox walls 5) +# tile 214 (sub knox walls 5) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4099,7 +4099,7 @@ P = (108, 145, 182) KJJACJJAKJJACJJA AAAAAAAAAAAAAAAA } -# tile 212 (sub knox walls 6) +# tile 215 (sub knox walls 6) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4118,7 +4118,7 @@ P = (108, 145, 182) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 213 (sub knox walls 7) +# tile 216 (sub knox walls 7) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4137,7 +4137,7 @@ P = (108, 145, 182) KJJACJJAKJJACJJA AAAAAAAAAAAAAAAA } -# tile 214 (sub knox walls 8) +# tile 217 (sub knox walls 8) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4156,7 +4156,7 @@ P = (108, 145, 182) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 215 (sub knox walls 9) +# tile 218 (sub knox walls 9) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4175,7 +4175,7 @@ P = (108, 145, 182) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 216 (sub knox walls 10) +# tile 219 (sub knox walls 10) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4194,7 +4194,7 @@ P = (108, 145, 182) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 217 (sub sokoban walls 0) +# tile 220 (sub sokoban walls 0) { ANNBAMEEEEEMNNBA ABBBAMEMEEMMBBBA @@ -4213,7 +4213,7 @@ P = (108, 145, 182) AMMMAMMEEEEMMMMA ABEEAMMEEEEMBEMA } -# tile 218 (sub sokoban walls 1) +# tile 221 (sub sokoban walls 1) { AAANBBAAAAANBBAA BBBNBBAMBBBNBBAM @@ -4232,7 +4232,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM AAAAAAAAAAAAAAAA } -# tile 219 (sub sokoban walls 2) +# tile 222 (sub sokoban walls 2) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM @@ -4251,7 +4251,7 @@ P = (108, 145, 182) AMMMAMMEEEEMMMMA ABEEAMMEEEEMBEMA } -# tile 220 (sub sokoban walls 3) +# tile 223 (sub sokoban walls 3) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM @@ -4270,7 +4270,7 @@ P = (108, 145, 182) AMMMAMMEEEEMMMMA ABEEAMMEEEEMBEMA } -# tile 221 (sub sokoban walls 4) +# tile 224 (sub sokoban walls 4) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM @@ -4289,7 +4289,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM AAAAAAAAAAAAAAAA } -# tile 222 (sub sokoban walls 5) +# tile 225 (sub sokoban walls 5) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM @@ -4308,7 +4308,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM AAAAAAAAAAAAAAAA } -# tile 223 (sub sokoban walls 6) +# tile 226 (sub sokoban walls 6) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM @@ -4327,7 +4327,7 @@ P = (108, 145, 182) AMMMAMMEEEEMMMMA ABEEAMMEEEEMBEMA } -# tile 224 (sub sokoban walls 7) +# tile 227 (sub sokoban walls 7) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM @@ -4346,7 +4346,7 @@ P = (108, 145, 182) MMMMMMMMMMMMMMMM AAAAAAAAAAAAAAAA } -# tile 225 (sub sokoban walls 8) +# tile 228 (sub sokoban walls 8) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM @@ -4365,7 +4365,7 @@ P = (108, 145, 182) AMMMAMMEEEEMMMMA ABEEAMMEEEEMBEMA } -# tile 226 (sub sokoban walls 9) +# tile 229 (sub sokoban walls 9) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM @@ -4384,7 +4384,7 @@ P = (108, 145, 182) AMMMAMMEEEEMMMMA ABEEAMMEEEEMBEMA } -# tile 227 (sub sokoban walls 10) +# tile 230 (sub sokoban walls 10) { AAANNNNBBBBBBAAA NNNNAAMMEEEEBMMM