From 5cb0753985b775012c08fab9fd8949ece45a1687 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 4 Oct 2023 09:36:56 +0200 Subject: [PATCH 01/82] Port ShambleStick (from SpliceHack). --- include/artilist.h | 5 ++++ src/artifact.c | 63 ++++++++++++++++++++++++++++++++++++++++------ src/objects.c | 4 +-- 3 files changed, 63 insertions(+), 9 deletions(-) diff --git a/include/artilist.h b/include/artilist.h index 1fe24d247..9e158e823 100644 --- a/include/artilist.h +++ b/include/artilist.h @@ -332,6 +332,11 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { PHYS(5, 5), NO_DFNS, NO_CARY, 0, A_CHAOTIC, PM_CONVICT, NON_PM, 3000L, NO_COLOR, METAL), + A("Shamblestick", QUARTERSTAFF, + (SPFX_RESTR | SPFX_ATTK | SPFX_DEFN), 0, 0, + PHYS(0, 0), NO_DFNS, NO_CARY, 0, + A_NONE, NON_PM, PM_DOPPELGANGER, 500L, CLR_MAGENTA, DEFAULT_MAT), + /* * This bizarre weapon acts as a cursed luckstone regardless of its * BCU status. It gets bonuses to hit and damage based on the opposite diff --git a/src/artifact.c b/src/artifact.c index 01086e78c..a4d4b80e3 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -64,6 +64,7 @@ hack_artifacts() { struct artifact *art; int alignmnt = aligns[flags.initalign].value; + int i; /* Fix up the alignments of "gift" artifacts */ for (art = artilist + 1; art->otyp; art++) @@ -90,6 +91,40 @@ hack_artifacts() artilist[urole.questarti].alignment = alignmnt; artilist[urole.questarti].role = Role_switch; } + + /* Shamblestick is random, because what NetHack clearly needs is more randomness. */ + artilist[ART_SHAMBLESTICK].otyp = CLUB + rn2(BASEBALL_BAT - CLUB); + + /* Random alignment */ + artilist[ART_SHAMBLESTICK].alignment = rn2(3) - 1; + + /* Random role preference */ + artilist[ART_SHAMBLESTICK].role = + rn2(2) ? NON_PM + : (PM_ARCHEOLOGIST + rn2(PM_WIZARD - PM_ARCHEOLOGIST)); + + /* Random color */ + artilist[ART_SHAMBLESTICK].acolor = rn2(CLR_MAX); + + /* Random wield effects */ + for (i = 0; i < rnd(7); i++) { + artilist[ART_SHAMBLESTICK].spfx |= (1 << rn2(32)); + } + + /* Random carry effects */ + for (i = 0; i < rnd(3); i++) { + artilist[ART_SHAMBLESTICK].cspfx |= (1 << rn2(32)); + } + + /* Random attack type */ + /* TODO: Add support for more/all AD_TYPES */ + artilist[ART_SHAMBLESTICK].attk.adtyp = rn2(AD_DRLI); + + /* Random damage to-hit/bonus, up to d12 seems about right. */ + artilist[ART_SHAMBLESTICK].attk.damn = rnd(12); + artilist[ART_SHAMBLESTICK].attk.damd = rnd(12); + + return; } @@ -1620,11 +1655,12 @@ char *hittee; /* target's name: "you" or mon_nam(mdef) */ verb = mb_verb[!!Hallucination][attack_indx]; if (youattack || youdefend || vis) { result = TRUE; - if (mb->oartifact == ART_MAGICBANE) - pline_The("magic-absorbing staff %s %s!", + if (mb->oartifact == ART_BUTCHER) + pline_The("massive triple-headed flail %s %s!", vtense((const char *) 0, verb), hittee); else - pline_The("massive triple-headed flail %s %s!", + pline_The("magic-absorbing %s %s %s!", + is_blade(mb) ? "blade" : "weapon", vtense((const char *) 0, verb), hittee); /* assume probing has some sort of noticeable feedback even if it is being done by one monster to another */ @@ -2195,7 +2231,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ : "burns", hittee, !spec_dbon_applies ? '.' : '!'); } else if (otmp->oclass == WEAPON_CLASS - && (otmp->oprops & ITEM_ACID)) { + || (otmp->oprops & ITEM_ACID)) { pline_The("acidic %s %s %s%c", distant_name(otmp, xname), !spec_dbon_applies ? "hits" @@ -2442,7 +2478,15 @@ int dieroll; /* needed for Magicbane and vorpal blades */ } return realizes_damage; } - + if (attacks(AD_PSYC, otmp)) { + if (realizes_damage) + pline_The("iridescent %s %s %s%c", + is_blade(otmp) ? "blade" : "weapon", + !spec_dbon_applies ? "hits" : "psiblasts", hittee, + !spec_dbon_applies ? '.' : '!'); + return realizes_damage; + } + if (attacks(AD_STUN, otmp) && dieroll <= MB_MAX_DIEROLL) { if (dieroll <= MB_MAX_DIEROLL) /* Magicbane's special attacks (possibly modifies hittee[]) */ @@ -2939,7 +2983,8 @@ int dieroll; /* needed for Magicbane and vorpal blades */ if (otmp->oartifact == ART_SERPENT_S_TONGUE) { otmp->dknown = TRUE; - pline_The("twisted blade poisons %s!", + pline_The("twisted %s poisons %s!", + is_blade(otmp) ? "blade" : "weapon", youdefend ? "you" : mon_nam(mdef)); if (youdefend ? Poison_resistance : resists_poison(mdef)) { if (youdefend) @@ -5044,7 +5089,7 @@ boolean defend; case AD_STON: return "petrification"; case AD_PLYS: - return defend ? "paralyze" : "free action"; + return defend ? "free action" : "paralyze"; case AD_LOUD: return "sonic"; case AD_PHYS: @@ -5061,6 +5106,10 @@ boolean defend; return "withering"; case AD_WIND: return "wind"; + case AD_PSYC: + return "psychic"; + case AD_WATR: + return "deluge"; default: impossible("Bad AD_TYPE!"); } diff --git a/src/objects.c b/src/objects.c index a8829ca5b..dd3df3483 100644 --- a/src/objects.c +++ b/src/objects.c @@ -326,10 +326,10 @@ WEAPON("war hammer", None, /* +1 small */ WEAPON("heavy war hammer", None, /* EvilHack */ 1, 0, 0, 0, 10, 60, 10, 8, 10, 0, B, P_HAMMER, IRON, HI_METAL), -WEAPON("club", None, - 1, 0, 0, 0, 12, 30, 3, 6, 3, 0, B, P_CLUB, WOOD, HI_WOOD), WEAPON("rubber hose", None, 1, 0, 0, 0, 0, 20, 3, 4, 3, 0, B, P_WHIP, PLASTIC, CLR_BROWN), +WEAPON("club", None, + 1, 0, 0, 0, 12, 30, 3, 6, 3, 0, B, P_CLUB, WOOD, HI_WOOD), WEAPON("quarterstaff", "staff", 0, 0, 0, 1, 11, 40, 5, 6, 6, 0, B, P_QUARTERSTAFF, WOOD, HI_WOOD), WEAPON("silver capped staff", None, From 873a9e698edcb523aba4434bb252d2d12313186e Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Tue, 7 Nov 2023 10:09:57 +0100 Subject: [PATCH 02/82] Don't randomize Shamblestick's alignment. This could make it unusable which is quite undesirable. --- src/artifact.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/artifact.c b/src/artifact.c index fe97a22a3..0be2dcb2b 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -103,9 +103,10 @@ hack_artifacts() /* Shamblestick is random, because what NetHack clearly needs is more randomness. */ artilist[ART_SHAMBLESTICK].otyp = CLUB + rn2(BASEBALL_BAT - CLUB); +#if 0 /* Random alignment */ artilist[ART_SHAMBLESTICK].alignment = rn2(3) - 1; - +#endif /* Random role preference */ artilist[ART_SHAMBLESTICK].role = rn2(2) ? NON_PM From 7c562d793f8cb9fa44bd7caa8b0599e5e5070d75 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Tue, 7 Nov 2023 10:16:45 +0100 Subject: [PATCH 03/82] Shamblestick attack fixes and tweaks. This sets up the main attack set (AD_PHYS to AD_PLYS). I plan on having more attacks mixed in - similar to how the shambling horror is implemented - but let's get the basics working first. --- include/artifact.h | 6 +- include/artilist.h | 10 +- include/extern.h | 1 + src/artifact.c | 281 ++++++++++++++++++++++++++++++++------------- src/zap.c | 86 +++++++------- 5 files changed, 257 insertions(+), 127 deletions(-) diff --git a/include/artifact.h b/include/artifact.h index 6b11ecfcc..7bf7559a6 100644 --- a/include/artifact.h +++ b/include/artifact.h @@ -37,9 +37,9 @@ #define SPFX_REFLECT 0x04000000L /* Reflection */ #define SPFX_PROTECT 0x08000000L /* Protection */ #define SPFX_BREATHE 0x10000000L /* Magical breathing */ -#define SPFX_BLIND 0x20000000L /* Weapon blinds on hit */ -#define SPFX_NOWISH 0x40000000L /* cannot be wished for */ -#define SPFX_DIG 0x80000000L /* can be used to dig like a pickaxe */ +#define SPFX_DIG 0x20000000L /* can be used to dig like a pickaxe */ +#define SPFX_NOWISH 0x40000000L /* cannot be wished for */ + struct artifact { short otyp; diff --git a/include/artilist.h b/include/artilist.h index 733e50505..d6965b429 100644 --- a/include/artilist.h +++ b/include/artilist.h @@ -45,6 +45,7 @@ static const char *artifact_names[] = { #define LOUD(a,b) {0,AD_LOUD,a,b} /* Sonic attack */ #define WTHR(a,b) {0,AD_WTHR,a,b} /* Withering attack */ #define MAST(a,b) {0,AD_MAGM,a,b} /* magic missile attack */ +#define BLND(a,b) {0,AD_BLND,a,b} /* blinding attack */ #define DEFAULT_MAT 0 /* use base object's default material */ /* clang-format on */ @@ -515,8 +516,8 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { /* Blinding mace. */ A("Sunspot", MACE, - (SPFX_RESTR | SPFX_BLIND | SPFX_DEFN), 0, 0, - PHYS(5, 5), DFNS(AD_BLND), NO_CARY, 0, + (SPFX_RESTR | SPFX_DEFN), 0, 0, + BLND(5, 5), DFNS(AD_BLND), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 2000L, NO_COLOR, DEFAULT_MAT), A("Thiefbane", LONG_SWORD, @@ -835,7 +836,9 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { #ifndef MAKEDEFS_C #undef NO_ATTK #undef NO_DFNS +#undef NO_CARY #undef DFNS +#undef CARY #undef PHYS #undef DRLI #undef COLD @@ -851,8 +854,11 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { #undef DETH #undef DISN #undef PLYS +#undef SLEE #undef LOUD #undef WTHR +#undef MAST +#undef BLND #endif /*artilist.h*/ diff --git a/include/extern.h b/include/extern.h index 18e9194d2..25ab258fc 100644 --- a/include/extern.h +++ b/include/extern.h @@ -3417,6 +3417,7 @@ E void FDECL(wandfear, (struct obj *)); E int FDECL(freeze_tile, (struct rm *, int, int, int)); E boolean destroyable_oclass(char); E int FDECL(delugehitsm, (struct monst *, int)); +E int FDECL(delugehitsu, (int)); E void FDECL(scatter_chains, (int, int)); #endif /* !MAKEDEFS_C && !LEV_LEX_C */ diff --git a/src/artifact.c b/src/artifact.c index 0be2dcb2b..6ac684436 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -35,6 +35,7 @@ STATIC_DCL int FDECL(count_surround_traps, (int, int)); STATIC_DCL boolean FDECL(can_we_zap, (int, int, int)); STATIC_DCL boolean FDECL(forbidden_artifact, (struct obj *)); STATIC_DCL boolean FDECL(is_redundant_prop, (struct obj *, int)); +STATIC_DCL boolean FDECL(ok_spfx, (long)); /* The amount added to the victim's total hit points to insure that the victim will be killed even after damage bonus/penalty adjustments. @@ -66,6 +67,7 @@ hack_artifacts() struct artifact *art; int alignmnt = aligns[flags.initalign].value; int i; + long r; /* Fix up the alignments of "gift" artifacts */ for (art = artilist + 1; art->otyp; art++) @@ -103,40 +105,85 @@ hack_artifacts() /* Shamblestick is random, because what NetHack clearly needs is more randomness. */ artilist[ART_SHAMBLESTICK].otyp = CLUB + rn2(BASEBALL_BAT - CLUB); -#if 0 - /* Random alignment */ - artilist[ART_SHAMBLESTICK].alignment = rn2(3) - 1; -#endif /* Random role preference */ artilist[ART_SHAMBLESTICK].role = - rn2(2) ? NON_PM + rn2(13) ? NON_PM : (PM_ARCHEOLOGIST + rn2(PM_WIZARD - PM_ARCHEOLOGIST)); /* Random color */ artilist[ART_SHAMBLESTICK].acolor = rn2(CLR_MAX); + /* Random material */ + /* Random wield effects */ for (i = 0; i < rnd(7); i++) { - artilist[ART_SHAMBLESTICK].spfx |= (1 << rn2(32)); + r = (1 << rn2(32)); + if (!ok_spfx(r)) + continue; + artilist[ART_SHAMBLESTICK].spfx |= r; } /* Random carry effects */ for (i = 0; i < rnd(3); i++) { - artilist[ART_SHAMBLESTICK].cspfx |= (1 << rn2(32)); + r = (1 << rn2(32)); + if (!ok_spfx(r)) + continue; + artilist[ART_SHAMBLESTICK].cspfx |= r; } + /* Random defensive (DFNS and CARY) */ + + /* Random invoke effect */ + /* Random attack type */ - /* TODO: Add support for more/all AD_TYPES */ + /* TODO: Also enable support for: + * AD_DREN + * AD_SITM + * AD_TLPT + * AD_CONF + * AD_DRIN + * AD_DISE + * AD_SLIM + * AD_ENCH + * AD_BHED - goes with spfx flag + * AD_CLOB + * AD_POLY + * AD_WTHR + * AD_WEBS + * AD_CALM + */ artilist[ART_SHAMBLESTICK].attk.adtyp = rn2(AD_DRLI); - + /* Random damage to-hit/bonus, up to d12 seems about right. */ artilist[ART_SHAMBLESTICK].attk.damn = rnd(12); artilist[ART_SHAMBLESTICK].attk.damd = rnd(12); - - return; } +/* Filter out spfx flags for Shamblestick */ +STATIC_OVL boolean +ok_spfx(long spfx) +{ + if (spfx == SPFX_NONE + || spfx == SPFX_NOGEN + || spfx == SPFX_RESTR /* Added in artilist.h */ + || spfx == SPFX_INTEL /* Intelligence makes it less usable */ + || spfx == SPFX_FORGED + || spfx == SPFX_ATTK /* Added in artilist.h */ + || spfx == SPFX_DEFN /* Added in artilist.h */ + || spfx == SPFX_DRLI /* Handled in attack init */ + || spfx == SPFX_BEHEAD /* Handled in attack init */ + /* Skip hated monsters for now */ + || spfx == SPFX_DMONS + || spfx == SPFX_DCLAS + || spfx == SPFX_DFLAG1 + || spfx == SPFX_DFLAGH + || spfx == SPFX_DBONUS + || spfx == SPFX_NOWISH) + return FALSE; + return TRUE; +} + /* zero out the artifact existence list */ void init_artifacts() @@ -1397,8 +1444,16 @@ struct monst *mtmp; return !(yours ? Death_resistance : immune_death_magic(ptr)); case AD_DISN: return !(yours ? Disint_resistance : resists_disint(mtmp)); + case AD_PSYC: + return !(yours ? Psychic_resistance : resists_psychic(mtmp)); + case AD_PLYS: + return !(yours ? Free_action : has_free_action(mtmp)); case AD_WTHR: return !(nonliving(mtmp->data) && is_vampshifter(mtmp)); + case AD_BLND: + case AD_SLOW: + case AD_WATR: + /* We'll handle this when the hit procs */ case AD_PHYS: /* Only case that uses this is slinging from David's Sling. */ return TRUE; @@ -1455,27 +1510,31 @@ int tmp; || (uarms && otmp == uarms))) { /* until we know otherwise... */ if ((attacks(adtype = AD_FIRE, otmp) - && ((yours) ? !(Fire_resistance || Underwater) - : !(resists_fire(mon) || mon_underwater(mon)))) - || (attacks(adtype = AD_COLD, otmp) - && ((yours) ? (!Cold_resistance) : (!resists_cold(mon)))) - || (attacks(adtype = AD_ELEC, otmp) - && ((yours) ? (!Shock_resistance) : (!resists_elec(mon)))) - || (attacks(adtype = AD_DRST, otmp) - && ((yours) ? (!Poison_resistance) : (!resists_poison(mon)))) - || (attacks(adtype = AD_SLEE, otmp) - && ((yours) ? (!Sleep_resistance) : (!resists_sleep(mon)))) - || (attacks(adtype = AD_ACID, otmp) - && ((yours) ? !(Acid_resistance || Underwater) - : !(resists_acid(mon) || mon_underwater(mon)))) - || (attacks(adtype = AD_LOUD, otmp) - && ((yours) ? (!Sonic_resistance) : (!resists_sonic(mon)))) - || (attacks(adtype = AD_DISE, otmp) - && ((yours) ? (!Sick_resistance) : (!resists_sick(mon)))) - || (attacks(adtype = AD_DETH, otmp) - && ((yours) ? (!Death_resistance) : (!immune_death_magic(mon->data)))) - || (attacks(adtype = AD_DISN, otmp) - && ((yours) ? (!Disint_resistance) : (!resists_disint(mon))))) { + && ((yours) ? !(Fire_resistance || Underwater) + : !(resists_fire(mon) || mon_underwater(mon)))) + || (attacks(adtype = AD_COLD, otmp) + && ((yours) ? (!Cold_resistance) : (!resists_cold(mon)))) + || (attacks(adtype = AD_ELEC, otmp) + && ((yours) ? (!Shock_resistance) : (!resists_elec(mon)))) + || (attacks(adtype = AD_DRST, otmp) + && ((yours) ? (!Poison_resistance) : (!resists_poison(mon)))) + || (attacks(adtype = AD_SLEE, otmp) + && ((yours) ? (!Sleep_resistance) : (!resists_sleep(mon)))) + || (attacks(adtype = AD_ACID, otmp) + && ((yours) ? !(Acid_resistance || Underwater) + : !(resists_acid(mon) || mon_underwater(mon)))) + || (attacks(adtype = AD_LOUD, otmp) + && ((yours) ? (!Sonic_resistance) : (!resists_sonic(mon)))) + || (attacks(adtype = AD_PSYC, otmp) + && ((yours) ? (!Psychic_resistance) : (!resists_psychic(mon)))) + || (attacks(adtype = AD_DISE, otmp) + && ((yours) ? (!Sick_resistance) : (!resists_sick(mon)))) + || (attacks(adtype = AD_DETH, otmp) + && ((yours) ? (!Death_resistance) : (!immune_death_magic(mon->data)))) + || (attacks(adtype = AD_PLYS, otmp) + && ((yours) ? (!Free_action) : (!has_free_action(mon)))) + || (attacks(adtype = AD_DISN, otmp) + && ((yours) ? (!Disint_resistance) : (!resists_disint(mon))))) { spec_dbon_applies = TRUE; /* majority of ITEM_VENOM damage @@ -1914,8 +1973,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ : can_vaporize(mdef->data) ? "vaporizes part of" : "burns", hittee, !spec_dbon_applies ? '.' : '!'); - } else if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_FIRE) { + } else if (otmp->oclass == WEAPON_CLASS || otmp == uarms) { pline_The("%s %s %s%c", makesingular(distant_name(otmp, xname)), !spec_dbon_applies ? "hits" : can_vaporize(mdef->data) ? "vaporizes part of" @@ -1991,8 +2049,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ ? "freezes part of" : "freezes", hittee, !spec_dbon_applies ? '.' : '!'); - } else if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_FROST) { + } else if (otmp->oclass == WEAPON_CLASS || otmp == uarms) { pline_The("%s %s %s%c", makesingular(distant_name(otmp, xname)), !spec_dbon_applies @@ -2027,8 +2084,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ ? "" : "! Lightning strikes", hittee, !spec_dbon_applies ? '.' : '!'); - } else if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_SHOCK) { + } else if (otmp->oclass == WEAPON_CLASS || otmp == uarms) { pline_The("%s %s %s%c", makesingular(distant_name(otmp, xname)), !spec_dbon_applies @@ -2072,8 +2128,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ magr->my, mdx, mdy, TRUE); } } - } else if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_SCREAM) { + } else if (otmp->oclass == WEAPON_CLASS || otmp == uarms) { if (!youattack && magr && cansee(magr->mx, magr->my)) { if (!spec_dbon_applies) { if (!youdefend) @@ -2133,16 +2188,17 @@ int dieroll; /* needed for Magicbane and vorpal blades */ *dmgptr += rnd(2) * 6; } } else if (spec_dbon_applies && !rn2(10)) { - pline_The("Master Sword hits %s. A hail of magic missiles strikes!", hittee); + pline("%s hits %s. A hail of magic missiles strikes!", + artiname(otmp->oartifact), hittee); *dmgptr += rnd(2) * 6; } else { - pline_The("Master Sword hits %s.", hittee); + pline("%s hits %s.", artiname(otmp->oartifact), hittee); } /* Occasionally shoot out a magic missile * Must be at full health: 3/4 chance of ray. * 2d6 - same as a wand. */ - if (rn2(4)) { + if (otmp->oartifact == ART_MASTER_SWORD && rn2(4)) { if (youattack && (u.uhp == u.uhpmax) && can_we_zap(u.dx, u.dy, 13)) { dobuzz((int) ZT_SPELL(ZT_MAGIC_MISSILE), 2, u.ux, u.uy, u.dx, u.dy, TRUE); @@ -2272,8 +2328,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ : mon_underwater(mdef) ? "hits" : "burns", hittee, !spec_dbon_applies ? '.' : '!'); - } else if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_SIZZLE) { + } else if (otmp->oclass == WEAPON_CLASS || otmp == uarms) { pline_The("acidic %s %s %s%c", makesingular(distant_name(otmp, xname)), !spec_dbon_applies ? "hits" @@ -2296,8 +2351,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ /* Sixth basic attack - poison */ if (attacks(AD_DRST, otmp)) { if (realizes_damage) { - if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_VENOM) { + if (otmp->oclass == WEAPON_CLASS || otmp == uarms) { pline_The("%s %s %s%c", makesingular(distant_name(otmp, xname)), (resists_poison(mdef) || defended(mdef, AD_DRST)) ? "hits" @@ -2393,7 +2447,8 @@ int dieroll; /* needed for Magicbane and vorpal blades */ if (!rn2(12) && !resistant) { /* instant disintegration. */ if (show_instakill) - pline_The("deadly blade disintegrates %s!", hittee); + pline_The("deadly %s disintegrates %s!", + is_blade(otmp) ? "blade" : "weapon", hittee); if (youdefend) { u.ugrave_arise = (NON_PM - 2); /* no corpse */ killer.format = NO_KILLER_PREFIX; @@ -2434,7 +2489,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ if (realizes_damage) { /* currently the only object that uses this is the Sword of Annihilation artifact */ - pline_The("deadly blade %s %s!", + pline_The("deadly %s %s %s!", is_blade(otmp) ? "blade" : "weapon", resistant ? "hits" : "partially disintegrates", hittee); } @@ -2500,8 +2555,8 @@ int dieroll; /* needed for Magicbane and vorpal blades */ pline_The("staff sprays a %s %s at %s!", rndcolor(), (rn2(2) ? "gas" : "mist"), hittee); } - } else if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_SLEEP) { + } else if ((youdefend || mdef->mcanmove) && + (otmp->oclass == WEAPON_CLASS || otmp == uarms)) { pline_The("%s %s %s%c", distant_name(otmp, xname), (resists_sleep(mdef) || defended(mdef, AD_SLEE)) ? "hits" @@ -2551,12 +2606,73 @@ int dieroll; /* needed for Magicbane and vorpal blades */ } return realizes_damage; } + + if (attacks(AD_WATR, otmp)) { + if (realizes_damage) { + pline_The("wet %s %s %s%c", + is_blade(otmp) ? "blade" : "weapon", + !spec_dbon_applies ? "hits" : "splashes", hittee, + !spec_dbon_applies ? '.' : '!'); + if (youdefend) + *dmgptr += delugehitsu(4); + else + *dmgptr += delugehitsm(mdef, 4); + } + return realizes_damage; + } + if (attacks(AD_PSYC, otmp)) { - if (realizes_damage) + if (realizes_damage) { pline_The("iridescent %s %s %s%c", is_blade(otmp) ? "blade" : "weapon", !spec_dbon_applies ? "hits" : "psiblasts", hittee, !spec_dbon_applies ? '.' : '!'); + if (youdefend) { + if (mindless(youmonst.data)) { + You("are unaffected by the psionic energy!"); + *dmgptr = 0; + } else if (Blind_telepat || Unblind_telepat) { + *dmgptr *= 2; /* You are more sensitive */ + pline("%s locks on to your telepathic mind!", Monnam(magr)); + } + if (*dmgptr && !rn2(4)) { + make_confused(HConfusion + d(3, 4), FALSE); + } + } else { + if (mindless(mdef->data)) { + *dmgptr = 0; + pline("%s is immune to the psychic blast.", + Monnam(mdef)); + } else if (has_telepathy(mdef)) { + *dmgptr *= 2; + if (!Deaf) + pline("%s cries out in anguish!", Monnam(mdef)); + } + if (*dmgptr > 6) + mdef->mconf = 1; + } + } + return realizes_damage; + } + + if (attacks(AD_SLOW, otmp)) { + if (realizes_damage && !rn2(3)) { + pline_The("lethargic %s %s %s%c", + is_blade(otmp) ? "blade" : "weapon", + !spec_dbon_applies ? "hits" : "slows", hittee, + !spec_dbon_applies ? '.' : '!'); + + if (youdefend) { + if (!Slow && !defended(&youmonst, AD_SLOW) + && !resists_slow(youmonst.data)) + u_slow_down(); + stop_occupation(); + } else { + if (mdef->mspeed != MSLOW) { + mon_adjust_speed(mdef, -1, (struct obj *) 0); + } + } + } return realizes_damage; } @@ -2987,7 +3103,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ } } - if (spec_ability(otmp, SPFX_BLIND) && !rn2(3)) { + if (attacks(AD_BLND, otmp) && !rn2(3)) { if (!youdefend) { if (mdef->mcansee) { pline("%s blinds %s!", The(distant_name(otmp, xname)), @@ -3115,8 +3231,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ else if (otmp->oartifact == ART_LIFESTEALER) pline_The("massive sword draws the %s from %s!", life, mon_nam(mdef)); - else if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_DECAY) + else if (otmp->oclass == WEAPON_CLASS || otmp == uarms) pline_The("deadly %s draws the %s from %s!", distant_name(otmp, xname), life, mon_nam(mdef)); @@ -3160,8 +3275,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ pline_The("%s blade drains your %s!", hcolor(NH_BLACK), life); else if (otmp->oartifact == ART_LIFESTEALER) pline_The("massive sword drains your %s!", life); - else if ((otmp->oclass == WEAPON_CLASS || otmp == uarms) - && otmp->oprops & ITEM_DECAY) + else if (otmp->oclass == WEAPON_CLASS || otmp == uarms) pline_The("deadly %s drains your %s!", distant_name(otmp, xname), life); /* The Staff of Aesculapius */ @@ -3185,16 +3299,18 @@ int dieroll; /* needed for Magicbane and vorpal blades */ /* Chains of Malcanthet */ if (attacks(AD_PLYS, otmp) && !rn2(5)) { if (realizes_damage) { - pline_The("slithering chains bind %s!", hittee); - } - if (youdefend && Free_action) { - pline_The("slithering chains cannot seem to keep a hold on you."); - } else if (youdefend) { - nomul(-4); - multi_reason = "bound by the Chains of Malcanthet"; - nomovemsg = You_can_move_again; - } else if (mdef->mcanmove && !has_free_action(mdef)) { - paralyze_monst(mdef, rnd(4)); + if (otmp->oartifact == ART_CHAINS_OF_MALCANTHET) + pline_The("slithering chains bind %s!", hittee); + else + pline_The("%s paralyzes %s!", artiname(otmp->oartifact), hittee); + + if (youdefend) { + nomul(-4); + multi_reason = "bound by a paralyzing weapon"; + nomovemsg = You_can_move_again; + } else if (mdef->mcanmove && !has_free_action(mdef)) { + paralyze_monst(mdef, rnd(4)); + } } return realizes_damage; } @@ -4343,21 +4459,22 @@ long *abil; long *abil; uchar adtyp; } abil2adtyp[] = { - { &EFire_resistance, AD_FIRE }, - { &ECold_resistance, AD_COLD }, - { &EShock_resistance, AD_ELEC }, - { &EAntimagic, AD_MAGM }, - { &EDisint_resistance, AD_DISN }, - { &EPoison_resistance, AD_DRST }, - { &ESleep_resistance, AD_SLEE }, - { &EDrain_resistance, AD_DRLI }, - { &EStable, AD_CLOB }, - { &EAcid_resistance, AD_ACID }, - { &EStone_resistance, AD_STON }, - { &ESick_resistance, AD_DISE }, - { &EDeath_resistance, AD_DETH }, - { &ESonic_resistance, AD_LOUD }, - { &EStun_resistance, AD_STUN }, + { &EFire_resistance, AD_FIRE }, + { &ECold_resistance, AD_COLD }, + { &EShock_resistance, AD_ELEC }, + { &EAntimagic, AD_MAGM }, + { &EDisint_resistance, AD_DISN }, + { &EPoison_resistance, AD_DRST }, + { &ESleep_resistance, AD_SLEE }, + { &EDrain_resistance, AD_DRLI }, + { &EStable, AD_CLOB }, + { &EAcid_resistance, AD_ACID }, + { &EStone_resistance, AD_STON }, + { &ESick_resistance, AD_DISE }, + { &EDeath_resistance, AD_DETH }, + { &ESonic_resistance, AD_LOUD }, + { &EPsychic_resistance, AD_PSYC }, + { &EStun_resistance, AD_STUN }, /* AD_WTHR has no Withering Resistance */ }; int k; diff --git a/src/zap.c b/src/zap.c index 4f051016b..6f5aaf84e 100644 --- a/src/zap.c +++ b/src/zap.c @@ -5408,46 +5408,7 @@ xchar sx, sy; destroy_item(WAND_CLASS, AD_LOUD); break; case ZT_WATER: - dam = d(nd, 8); - if (Half_physical_damage) - dam = (dam + 1) / 2; - if (u.umonnum == PM_BABY_SEA_DRAGON || u.umonnum == PM_SEA_DRAGON) { - You("%sabsorb the blast of water into your body.", - Reflecting ? "partially " : ""); - dam = 0; - break; - } else if (u.umonnum == PM_WATER_ELEMENTAL) { - You_feel("better!"); - healup(d(6, 6), 0, FALSE, FALSE); - dam = 0; - break; - } else if (u.umonnum == PM_EARTH_ELEMENTAL) { - if (!Unchanging) { - polymon(PM_MUD_ELEMENTAL); - dam = 0; - } - break; - } else if (u.umonnum == PM_IRON_GOLEM) { - You("rust!"); - rehumanize(); - dam = 0; /* Prevent more damage after rehumanize */ - break; - } else if (likes_fire(youmonst.data)) { - You("are being extinguished!"); - dam += d(6, 6); - } else if (amphibious(youmonst.data)) { - You("don't mind the water."); - dam = 0; - } - if (!Reflecting) { - /* using two weapons at once makes both of them more vulnerable */ - if (!rn2(u.twoweap ? 3 : 6)) - water_damage(uwep, 0, TRUE, u.ux, u.uy); - if (u.twoweap && !rn2(3)) - water_damage(uswapwep, 0, TRUE, u.ux, u.uy); - if (!rn2(6)) - erode_armor(&youmonst, ERODE_RUST); - } + dam = delugehitsu(nd); break; } @@ -5459,6 +5420,7 @@ xchar sx, sy; return; } + /* * burn objects (such as scrolls and spellbooks) on floor * at position x,y; return the number of objects burned @@ -7742,6 +7704,50 @@ int tmp; return tmp; } +/* Hits you with a ray of water (sea dragon, wand of deluge) + * returns the amount of damage dealt */ +int +delugehitsu(nd) +int nd; +{ + int dam = d(nd, 8); + if (Half_physical_damage) + dam = (dam + 1) / 2; + + if (u.umonnum == PM_BABY_SEA_DRAGON || u.umonnum == PM_SEA_DRAGON) { + You("%sabsorb the blast of water into your body.", + Reflecting ? "partially " : ""); + dam = 0; + } else if (u.umonnum == PM_WATER_ELEMENTAL) { + You_feel("better!"); + healup(d(6, 6), 0, FALSE, FALSE); + } else if (u.umonnum == PM_EARTH_ELEMENTAL) { + if (!Unchanging) { + polymon(PM_MUD_ELEMENTAL); + dam = 0; + } + } else if (u.umonnum == PM_IRON_GOLEM) { + You("rust!"); + rehumanize(); + dam = 0; /* Prevent more damage after rehumanize */ + } else if (likes_fire(youmonst.data)) { + You("are being extinguished!"); + dam += d(6, 6); + } else if (amphibious(youmonst.data)) { + You("don't mind the water."); + dam = 0; + } + if (!Reflecting) { + /* using two weapons at once makes both of them more vulnerable */ + if (!rn2(u.twoweap ? 3 : 6)) + water_damage(uwep, 0, TRUE, u.ux, u.uy); + if (u.twoweap && !rn2(3)) + water_damage(uswapwep, 0, TRUE, u.ux, u.uy); + if (!rn2(6)) + erode_armor(&youmonst, ERODE_RUST); + } + return dam; +} void scatter_chains(x, y) From bbc3a5e508009d2e22b8ba1520df147998f71be7 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Tue, 7 Nov 2023 22:47:12 +0100 Subject: [PATCH 04/82] Fix reflection granted by Shamblestick. It will only be available via wielding. Allowing it as a carried ability is just more work than it's worth. --- src/artifact.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/artifact.c b/src/artifact.c index 6ac684436..1861ebd09 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -128,6 +128,9 @@ hack_artifacts() r = (1 << rn2(32)); if (!ok_spfx(r)) continue; + /* Only allow reflection for wielding, avoids complications */ + if (r == SPFX_REFLECT) + continue; artilist[ART_SHAMBLESTICK].cspfx |= r; } @@ -1205,6 +1208,7 @@ long wp_mask; || otmp->oartifact == ART_CROSSBOW_OF_CARL || otmp->oartifact == ART_NIGHTHORN || otmp->oartifact == ART_DRAGONBANE + || otmp->oartifact == ART_SHAMBLESTICK || otmp->oartifact == ART_LIGHTSABER_PROTOTYPE) && (wp_mask & W_WEP)) { /* wielding various reflecting artifacts */ if (on) From f5de9580da399483168727a034e523d30f2d5411 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Tue, 7 Nov 2023 22:53:45 +0100 Subject: [PATCH 05/82] Shamblestick: To-hit and damage bonuses make up for not getting special abilities. Shamblestick also won't get a duplicated ability in both the wielded and carried spfx slots, it's either one or the other. --- src/artifact.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/artifact.c b/src/artifact.c index 1861ebd09..30dc6f145 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -66,7 +66,7 @@ hack_artifacts() { struct artifact *art; int alignmnt = aligns[flags.initalign].value; - int i; + int i, sgranted = 0; long r; /* Fix up the alignments of "gift" artifacts */ @@ -121,6 +121,7 @@ hack_artifacts() if (!ok_spfx(r)) continue; artilist[ART_SHAMBLESTICK].spfx |= r; + sgranted++; } /* Random carry effects */ @@ -131,7 +132,20 @@ hack_artifacts() /* Only allow reflection for wielding, avoids complications */ if (r == SPFX_REFLECT) continue; + /* Was this already granted in the spfx fields? + * We'll either keep the wielded slot, or move it to the carried. + * */ + if (artilist[ART_SHAMBLESTICK].spfx & r) { + if (!rn2(2)) { + continue; + } else { + artilist[ART_SHAMBLESTICK].spfx &= ~r; + sgranted--; + } + } + artilist[ART_SHAMBLESTICK].cspfx |= r; + sgranted++; } /* Random defensive (DFNS and CARY) */ @@ -157,9 +171,12 @@ hack_artifacts() */ artilist[ART_SHAMBLESTICK].attk.adtyp = rn2(AD_DRLI); - /* Random damage to-hit/bonus, up to d12 seems about right. */ - artilist[ART_SHAMBLESTICK].attk.damn = rnd(12); - artilist[ART_SHAMBLESTICK].attk.damd = rnd(12); + /* Random damage to-hit/bonus. + * This scales with how many abilities bonuses were granted. + * */ + sgranted = 10 - sgranted * 2; + artilist[ART_SHAMBLESTICK].attk.damn = rnd(10) + sgranted; + artilist[ART_SHAMBLESTICK].attk.damd = rnd(10) + sgranted; return; } From df9a1a5f8233e4ee78ebe51bae1ca8dbfc18c9cc Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Tue, 7 Nov 2023 23:43:06 +0100 Subject: [PATCH 06/82] Shamblestick can also grant wielded and carried resistances. Before it was only selecting from the pool of spfx abilities. Now it can offer the standard artifact resistances as well. --- src/artifact.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/artifact.c b/src/artifact.c index 30dc6f145..c21aa4628 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -66,7 +66,7 @@ hack_artifacts() { struct artifact *art; int alignmnt = aligns[flags.initalign].value; - int i, sgranted = 0; + int i, defn, sgranted = 0; long r; /* Fix up the alignments of "gift" artifacts */ @@ -143,12 +143,37 @@ hack_artifacts() sgranted--; } } - artilist[ART_SHAMBLESTICK].cspfx |= r; sgranted++; } /* Random defensive (DFNS and CARY) */ + int res_types [] = + { AD_MAGM, AD_FIRE, AD_COLD, AD_SLEE, AD_DISN, + AD_ELEC, AD_DRST, AD_ACID, AD_LOUD, AD_PSYC, + AD_BLND, AD_STUN, AD_PLYS, AD_DRLI, AD_STON, + AD_WERE, AD_DISE, AD_CLOB, AD_WTHR + }; + for (i = 0; i < rnd(4); i++) { + if (!rn2(3)) { + artilist[ART_SHAMBLESTICK].defn.adtyp = + res_types[rn2(SIZE(res_types))]; + sgranted++; + break; + } + } + for (i = 0; i < rnd(4); i++) { + if (!rn2(3)) { + defn = res_types[rn2(SIZE(res_types))]; + /* Don't double up */ + if (artilist[ART_SHAMBLESTICK].defn.adtyp == defn) + continue; + artilist[ART_SHAMBLESTICK].cary.adtyp = defn; + sgranted++; + break; + } + } + /* Random invoke effect */ @@ -177,6 +202,8 @@ hack_artifacts() sgranted = 10 - sgranted * 2; artilist[ART_SHAMBLESTICK].attk.damn = rnd(10) + sgranted; artilist[ART_SHAMBLESTICK].attk.damd = rnd(10) + sgranted; + + return; } From 292d0a8ab50665b35d3514ac33a920c0d58c917d Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 00:13:26 +0100 Subject: [PATCH 07/82] Shamblestick is able to receive a random invoke ability. I limited this to 1 in 3 so it's not all Shamblesticks. I also cleaned up a couple #invoke info bits in the object lookup. --- src/artifact.c | 52 +++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/artifact.c b/src/artifact.c index c21aa4628..4c177d3a7 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -174,9 +174,18 @@ hack_artifacts() } } - /* Random invoke effect */ - + if (!rn2(2)) { + do { + artilist[ART_SHAMBLESTICK].inv_prop = + TAMING + (rn2(SMOKE_CLOUD - TAMING)); + /* SEFFECT could also branch out into random scroll + * effects, but... not now */ + } while (artilist[ART_SHAMBLESTICK].inv_prop == SEFFECT); + + sgranted++; + } + /* Random attack type */ /* TODO: Also enable support for: * AD_DREN @@ -200,8 +209,10 @@ hack_artifacts() * This scales with how many abilities bonuses were granted. * */ sgranted = 10 - sgranted * 2; + if (sgranted < 0) + sgranted = 0; artilist[ART_SHAMBLESTICK].attk.damn = rnd(10) + sgranted; - artilist[ART_SHAMBLESTICK].attk.damd = rnd(10) + sgranted; + artilist[ART_SHAMBLESTICK].attk.damd = rn2(11) + sgranted; return; @@ -5242,35 +5253,36 @@ artifact_info(int anum) case UNTRAP: art_info.invoke = "Untrap"; break; case CHARGE_OBJ: art_info.invoke = "Charge Object"; break; case LEV_TELE: art_info.invoke = "Level Teleport"; break; - case LIGHT_AREA: art_info.invoke = "Light Area"; break; case CREATE_PORTAL: art_info.invoke = "Branchport"; break; case ENLIGHTENING: art_info.invoke = "Enlightenment"; break; - case SUMMON_FIRE_ELEMENTAL: art_info.invoke = "Summon Fire Elemental"; break; - case SUMMON_WATER_ELEMENTAL: art_info.invoke = "Summon Storm Pet"; break; - case LIGHTNING_BOLT: art_info.invoke = "Lightning Bolt"; break; case CREATE_AMMO: art_info.invoke = "Create Ammo"; break; + case FEAR: art_info.invoke = "Cause fear"; break; case PHASING: art_info.invoke = "Phasing"; break; case CHANNEL: art_info.invoke = "Channel"; break; case DEATH_GAZE: art_info.invoke = "Death Gaze"; break; case SUMMON_UNDEAD: art_info.invoke = "Summon Undead"; break; + case LIGHT_AREA: art_info.invoke = "Light Area"; break; + case SUMMON_FIRE_ELEMENTAL: art_info.invoke = "Summon Fire Elemental"; break; + case SUMMON_WATER_ELEMENTAL: art_info.invoke = "Summon Storm Pet"; break; + case LIGHTNING_BOLT: art_info.invoke = "Lightning Bolt"; break; + case SEFFECT: + switch (anum) { + case ART_IMHULLU: + art_info.invoke = "Scroll of Air"; break; + case ART_DEEP_FREEZE: + art_info.invoke = "Scroll of Ice + Freeze Sphere"; break; + case ART_FIREWALL: + art_info.invoke = "Flame Sphere"; break; + } + break; + case OBJECT_DET: art_info.invoke = "Object Detection"; break; + case SMOKE_CLOUD: art_info.invoke = "Smoke Cloud"; break; case CONFLICT: art_info.invoke = "Conflict"; break; case LEVITATION: art_info.invoke = "Levitation"; break; case INVIS: art_info.invoke = "Invisibility"; break; case FLYING: art_info.invoke = "Flying"; break; case WWALKING: art_info.invoke = "Water Walking"; break; - case OBJECT_DET: art_info.invoke = "Object Detection"; break; - /*Invoke for water-walking and an earthquake. */ - - case SEFFECT: - switch (anum) { - case ART_IMHULLU: - art_info.invoke = "Scroll of Air"; break; - case ART_DEEP_FREEZE: - art_info.invoke = "Scroll of Ice + Freeze Sphere"; break; - case ART_FIREWALL: - art_info.invoke = "Flame Sphere"; break; - } - break; + default: art_info.invoke = "None"; break; } From cfabfbb1a1b5a5b57072629fd721053c9155aa35 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 08:52:19 +0100 Subject: [PATCH 08/82] Shamblestick can be initialized as a bane, hating and warning of monsters - possibly multiple. It also has a chance of attacking different alignments. --- src/artifact.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/artifact.c b/src/artifact.c index 4c177d3a7..c935739a7 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -112,8 +112,6 @@ hack_artifacts() /* Random color */ artilist[ART_SHAMBLESTICK].acolor = rn2(CLR_MAX); - - /* Random material */ /* Random wield effects */ for (i = 0; i < rnd(7); i++) { @@ -147,13 +145,15 @@ hack_artifacts() sgranted++; } - /* Random defensive (DFNS and CARY) */ + int res_types [] = { AD_MAGM, AD_FIRE, AD_COLD, AD_SLEE, AD_DISN, AD_ELEC, AD_DRST, AD_ACID, AD_LOUD, AD_PSYC, AD_BLND, AD_STUN, AD_PLYS, AD_DRLI, AD_STON, AD_WERE, AD_DISE, AD_CLOB, AD_WTHR }; + + /* Random defensive wield/wear resistance */ for (i = 0; i < rnd(4); i++) { if (!rn2(3)) { artilist[ART_SHAMBLESTICK].defn.adtyp = @@ -162,6 +162,8 @@ hack_artifacts() break; } } + + /* Random defensive carry resistance */ for (i = 0; i < rnd(4); i++) { if (!rn2(3)) { defn = res_types[rn2(SIZE(res_types))]; @@ -205,9 +207,24 @@ hack_artifacts() */ artilist[ART_SHAMBLESTICK].attk.adtyp = rn2(AD_DRLI); + /* Random bane(s) via SPFX_DFLAGH */ + if (!rn2(4)) { + artilist[ART_SHAMBLESTICK].spfx |= SPFX_DALIGN; + } else if (!rn2(3)) { + for (i = 0; i < rnd(3); i++) { + r = (1 << rn2(23)); + artilist[ART_SHAMBLESTICK].mtype |= r; + /* Bane flags */ + artilist[ART_SHAMBLESTICK].spfx |= SPFX_DFLAGH; + artilist[ART_SHAMBLESTICK].spfx |= SPFX_WARN; + if (rn2(2)) + break; /* Don't stack them too easily now! */ + } + } + /* Random damage to-hit/bonus. - * This scales with how many abilities bonuses were granted. - * */ + * This scales with how many abilities bonuses were granted. + * */ sgranted = 10 - sgranted * 2; if (sgranted < 0) sgranted = 0; @@ -236,6 +253,7 @@ ok_spfx(long spfx) || spfx == SPFX_DCLAS || spfx == SPFX_DFLAG1 || spfx == SPFX_DFLAGH + || spfx == SPFX_DALIGN /* Handled in attack init */ || spfx == SPFX_DBONUS || spfx == SPFX_NOWISH) return FALSE; From 1ae140c5d290bf87058b39892acf18a2f2a96d43 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 09:20:35 +0100 Subject: [PATCH 09/82] Prevent object lookup for Shamblestick until it has been generated. This follows in the footsteps of shambling horrors, but it probably more important for Shamblestick so that player's can't peek at the abilities and get an easy wish. --- include/you.h | 1 + src/artifact.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/you.h b/include/you.h index 36f197055..4d72029a2 100644 --- a/include/you.h +++ b/include/you.h @@ -45,6 +45,7 @@ struct u_event { Bitfield(qcompleted, 1); /* successfully completed Quest task */ Bitfield(uheard_tune, 2); /* 1=know about, 2=heard passtune */ Bitfield(know_horror, 1); /* know about shambling horror */ + Bitfield(know_stick, 1); /* know about shamblestick */ Bitfield(entered_the_blackmarket, 1); /* entered the Blackmarket */ Bitfield(uopened_dbridge, 1); /* opened the drawbridge */ diff --git a/src/artifact.c b/src/artifact.c index c935739a7..cb7ac66de 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -190,6 +190,7 @@ hack_artifacts() /* Random attack type */ /* TODO: Also enable support for: + * AD_DRLI - goes with spfx flag * AD_DREN * AD_SITM * AD_TLPT @@ -204,6 +205,7 @@ hack_artifacts() * AD_WTHR * AD_WEBS * AD_CALM + * AD_FEAR */ artilist[ART_SHAMBLESTICK].attk.adtyp = rn2(AD_DRLI); @@ -326,6 +328,9 @@ const char *name; if (!strncmpi(aname, "the ", 4)) aname += 4; if (!strcmpi(name, aname)) { + /* Like shambling horrors, hide Shamblestick info */ + if (index == ART_SHAMBLESTICK && !u.uevent.know_stick) + continue; obj = mksobj(a->otyp, TRUE, FALSE); obj->otyp = a->otyp; obj->oartifact = index; @@ -339,7 +344,7 @@ const char *name; } index++; } - + return obj; } @@ -529,6 +534,7 @@ aligntyp alignment; /* target alignment, or A_NONE */ } else if (otmp) { otmp = create_oprop(otmp, FALSE); } + return otmp; } @@ -762,6 +768,8 @@ boolean mod; fix_artifact(otmp); break; } + if (otmp->oartifact == ART_SHAMBLESTICK) + u.uevent.know_stick = 1; return; } From 2c306407ffa8eddc6fb5a2fd23943ef39d6b1f09 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 09:25:31 +0100 Subject: [PATCH 10/82] Fix: 'free action resistance' in obj lookup. --- src/artifact.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/artifact.c b/src/artifact.c index cb7ac66de..fa1fadd80 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -5190,7 +5190,11 @@ artifact_info(int anum) /* Granted while wielded. */ if (artilist[anum].defn.adtyp) { - Sprintf(buf, "%s resistance", adtyp_str(artilist[anum].defn.adtyp, TRUE)); + /* TODO: Refactor this */ + if (artilist[anum].defn.adtyp == AD_PLYS) + Sprintf(buf, "free action"); + else + Sprintf(buf, "%s resistance", adtyp_str(artilist[anum].defn.adtyp, TRUE)); art_info.wield_res = malloc(100); strcpy(art_info.wield_res, buf); } From 74e392f8f6f942801eb75979cb0c33eecc1a4403 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 09:27:19 +0100 Subject: [PATCH 11/82] Shamblestick reverts to it's base form in bones. I don't even want to think about the can of worms involved with keeping multiple Shamblesticks separate through bones games... --- src/bones.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bones.c b/src/bones.c index 6911ac202..4f6ce1951 100644 --- a/src/bones.c +++ b/src/bones.c @@ -245,6 +245,7 @@ boolean restore; curse(otmp); } else if (otmp->oartifact == ART_THIEFBANE || otmp->oartifact == ART_MASTER_SWORD + || otmp->oartifact == ART_SHAMBLESTICK || otmp->oartifact == ART_KEY_OF_LAW || otmp->oartifact == ART_KEY_OF_NEUTRALITY || otmp->oartifact == ART_KEY_OF_CHAOS From 9947f507bcb19079643a2d76fc0c079810f9e931 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 09:32:12 +0100 Subject: [PATCH 12/82] Fix: Delay highlighting tame pets from artifact some invokes. --- src/artifact.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/artifact.c b/src/artifact.c index fa1fadd80..2c07299fb 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -3907,6 +3907,7 @@ struct obj *obj; initedog(mtmp); u.uconduct.pets++; mtmp->msleeping = 0; + newsym(mtmp->mx, mtmp->my); break; case SUMMON_WATER_ELEMENTAL: switch (rnd(10)) { @@ -3927,6 +3928,7 @@ struct obj *obj; initedog(mtmp); u.uconduct.pets++; mtmp->msleeping = 0; + newsym(mtmp->mx, mtmp->my); break; case LIGHTNING_BOLT: { struct obj* pseudo = mksobj(WAN_LIGHTNING, FALSE, FALSE); @@ -5433,8 +5435,6 @@ artifact_info(int anum) return art_info; } - - const char * adtyp_str(adtyp, defend) int adtyp; From c77b853b75aad92defe30c56fd6fad0b9e4a81ab Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 09:33:30 +0100 Subject: [PATCH 13/82] Fix incorrect check for withering in spec_applies. --- src/artifact.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/artifact.c b/src/artifact.c index 2c07299fb..374de947c 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -1534,7 +1534,7 @@ struct monst *mtmp; case AD_PLYS: return !(yours ? Free_action : has_free_action(mtmp)); case AD_WTHR: - return !(nonliving(mtmp->data) && is_vampshifter(mtmp)); + return !(nonliving(mtmp->data) || is_vampshifter(mtmp)); case AD_BLND: case AD_SLOW: case AD_WATR: From 17f0bccb3b91fb50f60f15745f6d889064cd2da8 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 09:40:39 +0100 Subject: [PATCH 14/82] Revert "Long worms only drop a worm tooth 5% of the time now when killed." This reverts commit a8f14407109f2eec674b94c8c6f3711f1f82eb28. --- src/mon.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/mon.c b/src/mon.c index 297537c69..026707020 100644 --- a/src/mon.c +++ b/src/mon.c @@ -649,10 +649,7 @@ unsigned corpseflags; } goto default_1; case PM_LONG_WORM: - /* Crysknives remain the same, just much smaller chance of getting - * a worm tooth from a long worm. */ - if (!rn2(20 - Luck)) - (void) mksobj_at(WORM_TOOTH, x, y, TRUE, FALSE); + (void) mksobj_at(WORM_TOOTH, x, y, TRUE, FALSE); goto default_1; case PM_KILLER_TRIPE_RATION: obj = mksobj_at(TRIPE_RATION, x, y, TRUE, FALSE); From 0d376c2bc79626d9ac3d170cea5949707c1acbdf Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 09:41:07 +0100 Subject: [PATCH 15/82] Revert "Upp'ed crysknives to d20/d30 damage." This reverts commit da21eea16474b41be86ba211ad3ffd79bf3f7c29. --- src/objects.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/objects.c b/src/objects.c index d7a1a4b9b..e06355767 100644 --- a/src/objects.c +++ b/src/objects.c @@ -197,7 +197,7 @@ WEAPON("stiletto", None, WEAPON("worm tooth", None, 1, 1, 0, 0, 0, 20, 2, 2, 2, 0, P, P_KNIFE, BONE, CLR_WHITE), WEAPON("crysknife", None, - 1, 1, 0, 0, 0, 20, 100, 20, 30, 3, P, P_KNIFE, BONE, CLR_WHITE), + 1, 1, 0, 0, 0, 20, 100, 10, 10, 3, P, P_KNIFE, BONE, CLR_WHITE), /* axes */ WEAPON("axe", None, From 9a3809fb72c0201197c2b300b4eb98d5ac3c43a5 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 11:23:29 +0100 Subject: [PATCH 16/82] Introducing two artifact crysknives, Arvon and Krelln. Both are #nameable so the player can #name a crysknife to create either. Both have a bonus attack of +d14 physical damage. Arvon is neutral and Krelln is lawful, and both are intelligent. Both are also made of mineral and weigh roughly double the weight of a bone crysknife. These are designed to replace the SLASH'EM style crysknives which dealt 1d20 vs small and 1d30 vs large. I felt that although SLASH'EM cryknives were fun, they were just too powerful and were kind of a nobrainer-goto-weapon in SLASH'EM if you had any knife skill or sometimes even if you didn't. Also - with the addition of more powerful object properties, crysknives could be even better, or inflict full flat damage with the rage property. My first solution was to make worm teeth appear much more rarely from long worms, but this didn't feel very elegant and kind of ruined the normal crysknife strategy players might have from vanilla NetHack. Players could also still just easily wish for a worm tooth or crysknife. I think this solution will preserve both the vanilla behavior of crysknives and offer a suitable alternative to the SLASH'EM crysknives. The cryknive's standard damage plus the +d14 damage bonus equals the average of 1d20 and 1d30. Since Arvon and Krelln are both artifacts, they cannot have properties added to them and will not carry properties over when named. Both are also attuned to elves (since we don't have fremen, I used elves as a rough substitute). If you don't match their alignment you will get blasted. When #naming one of these, you also might summon a group of elves similar to naming Sting. The obvious group that is going to be affected by this is chaotic players. That is by design, but a chaotic rogue should still be able to two-weapon Arvon and Krelln, they will just have to deal with the blasting damage. --- include/artilist.h | 14 +++++++++++++- src/bones.c | 2 ++ src/do_name.c | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/include/artilist.h b/include/artilist.h index d6965b429..f02001f01 100644 --- a/include/artilist.h +++ b/include/artilist.h @@ -114,6 +114,12 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { PHYS(1, 1), NO_DFNS, NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM, 300L, NO_COLOR, DEFAULT_MAT), + A("Krelln", CRYSKNIFE, + (SPFX_NOWISH | SPFX_INTEL), 0, 0, + PHYS(0, 14), NO_DFNS, NO_CARY, 0, + /* We don't have Fremen; using elves as a close alternative. */ + A_LAWFUL, NON_PM, PM_ELF, 500L, NO_COLOR, MINERAL), + /* Original idea by Spicy. Prevents all monster regen. */ A("Mortality Dial", EXECUTIONER_S_MACE, (SPFX_RESTR | SPFX_REGEN), 0, 0, @@ -189,6 +195,12 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { /*** Neutral artifacts ***/ + A("Arvon", CRYSKNIFE, + (SPFX_NOWISH | SPFX_INTEL), 0, 0, + PHYS(0, 14), NO_DFNS, NO_CARY, 0, + /* We don't have Fremen; using elves as a close alternative. */ + A_NEUTRAL, NON_PM, PM_ELF, 500L, NO_COLOR, MINERAL), + /* This lance does a lot of damage, and also occasionally stuns */ A("Bradamante\'s Fury", LANCE, (SPFX_RESTR), 0, 0, @@ -454,7 +466,7 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { A_CHAOTIC, NON_PM, NON_PM, 6000L, NO_COLOR, BONE), /*** Unaligned artifacts ***/ - + /* The quasi-evil twin of Demonbane, Angelslayer is an unholy trident * geared towards the destruction of all angelic beings */ A("Angelslayer", TRIDENT, diff --git a/src/bones.c b/src/bones.c index 4f6ce1951..24060bd6a 100644 --- a/src/bones.c +++ b/src/bones.c @@ -246,6 +246,8 @@ boolean restore; } else if (otmp->oartifact == ART_THIEFBANE || otmp->oartifact == ART_MASTER_SWORD || otmp->oartifact == ART_SHAMBLESTICK + || otmp->oartifact == ART_ARVON + || otmp->oartifact == ART_KRELLN || otmp->oartifact == ART_KEY_OF_LAW || otmp->oartifact == ART_KEY_OF_NEUTRALITY || otmp->oartifact == ART_KEY_OF_CHAOS diff --git a/src/do_name.c b/src/do_name.c index cbada0251..3098cb116 100644 --- a/src/do_name.c +++ b/src/do_name.c @@ -1381,6 +1381,11 @@ const char *name; (void) makemon(&mons[PM_GREEN_ELF], u.ux, u.uy, MM_ADJACENTOK | MM_ANGRY); if (rn2(3)) (void) makemon(&mons[PM_GREEN_ELF], u.ux, u.uy, MM_ADJACENTOK | MM_ANGRY); + if (rn2(3) && (obj->oartifact == ART_ARVON || obj->oartifact == ART_KRELLN)) + (void) makemon(&mons[PM_ELVEN_ROYAL], u.ux, u.uy, MM_ADJACENTOK | MM_ANGRY); + if (rn2(3) && (obj->oartifact == ART_ARVON || obj->oartifact == ART_KRELLN)) + (void) makemon(&mons[PM_ELVEN_ROYAL], u.ux, u.uy, MM_ADJACENTOK | MM_ANGRY); + mtmp->msleeping = 0; m_dowear(mtmp, TRUE); mon_wield_item(mtmp); From d4bf2bccfe5d0a8aff87b491d85936173fb70a72 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 12:42:34 +0100 Subject: [PATCH 17/82] Artifact cryknives don't deal special damage when in worm tooth form. --- src/artifact.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/artifact.c b/src/artifact.c index 374de947c..5260b5b61 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -1462,7 +1462,7 @@ struct monst *mtmp; { struct permonst *ptr; boolean yours; - + if (!(weap->spfx & (SPFX_DBONUS | SPFX_ATTK))) return (weap->attk.adtyp == AD_PHYS); @@ -1589,7 +1589,10 @@ int tmp; boolean yours = (mon == &youmonst); int dbon = 0, adtype; spec_dbon_applies = FALSE; - + + if (weap->otyp == CRYSKNIFE && otmp->otyp != CRYSKNIFE) + return 0; + if (!weap && otmp->oprops && (otmp->oclass == WEAPON_CLASS || is_weptool(otmp) || (uarms && otmp == uarms))) { From 3379ea5153b82c1270bdd922d2e4a7cdae2a53b4 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 12:45:24 +0100 Subject: [PATCH 18/82] Dropped artifact cryknives don't lose erodeproof status or change their material. --- src/do.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/do.c b/src/do.c index 9959f2459..5d9bc26b8 100644 --- a/src/do.c +++ b/src/do.c @@ -1174,8 +1174,10 @@ struct obj *obj; if (!context.mon_moving && !program_state.gameover) costly_alteration(obj, COST_DEGRD); obj->otyp = WORM_TOOTH; - obj->oerodeproof = 0; - set_material(obj, objects[WORM_TOOTH].oc_material); + if (!obj->oartifact) { + obj->oerodeproof = 0; + set_material(obj, objects[WORM_TOOTH].oc_material); + } } break; } From 7fecb7a5f914e2a3a8c9867bef719a13cce97330 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 13:25:57 +0100 Subject: [PATCH 19/82] Artifact crysknives: allow stone material when wishing. Also correctly handled material when reverting to worm tooth. Erodeproof status is treated the same as normal crysknifes/worm teeth. --- src/do.c | 2 +- src/mkobj.c | 9 ++++++++- src/objnam.c | 2 +- src/wield.c | 8 ++++++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/do.c b/src/do.c index 5d9bc26b8..590e03930 100644 --- a/src/do.c +++ b/src/do.c @@ -1174,8 +1174,8 @@ struct obj *obj; if (!context.mon_moving && !program_state.gameover) costly_alteration(obj, COST_DEGRD); obj->otyp = WORM_TOOTH; + obj->oerodeproof = 0; if (!obj->oartifact) { - obj->oerodeproof = 0; set_material(obj, objects[WORM_TOOTH].oc_material); } } diff --git a/src/mkobj.c b/src/mkobj.c index ee28c3193..1dd12c702 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -3687,6 +3687,12 @@ static const struct icp unihorn_materials[] = { { 5, SILVER}, }; +static const struct icp crysknife_materials[] = { + {100, 0}, /* use base material */ + {0, MINERAL}, +}; + + static const struct icp sling_bullet_materials[] = { {65, IRON}, {15, METAL}, @@ -3717,7 +3723,6 @@ struct obj* obj; case BULLWHIP: case FLAMING_LASH: case WORM_TOOTH: - case CRYSKNIFE: case PENCIL: case STAFF_OF_DIVINATION: case STAFF_OF_HEALING: @@ -3826,6 +3831,8 @@ struct obj* obj; return shiny_materials; case UNICORN_HORN: return unihorn_materials; + case CRYSKNIFE: + return crysknife_materials; default: break; } diff --git a/src/objnam.c b/src/objnam.c index e76ce305c..79b22d49d 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -2076,7 +2076,7 @@ struct obj *obj; /* bypass object twiddling for artifacts */ if (obj->oartifact) - return bare_artifactname(obj); + return bare_artifactname(obj); /* remember original settings for core of the object; oextra structs other than oname don't matter here--since they diff --git a/src/wield.c b/src/wield.c index 78ba585ef..ca6eb9efa 100644 --- a/src/wield.c +++ b/src/wield.c @@ -1229,7 +1229,9 @@ register int amount; multiple ? "fuse, and become" : "is"); uwep->otyp = CRYSKNIFE; uwep->oerodeproof = 0; - set_material(uwep, objects[CRYSKNIFE].oc_material); + if (!uwep->oartifact) { + set_material(uwep, objects[CRYSKNIFE].oc_material); + } if (multiple) { uwep->quan = 1L; uwep->owt = weight(uwep); @@ -1252,7 +1254,9 @@ register int amount; costly_alteration(uwep, COST_DEGRD); /* DECHNT? other? */ uwep->otyp = WORM_TOOTH; uwep->oerodeproof = 0; - set_material(uwep, objects[WORM_TOOTH].oc_material); + if (!uwep->oartifact) { + set_material(uwep, objects[WORM_TOOTH].oc_material); + } if (multiple) { uwep->quan = 1L; uwep->owt = weight(uwep); From 890160b994c0907f47ec6f99e344369da6d5ac81 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 13:33:47 +0100 Subject: [PATCH 20/82] Worm teeth cannot be named Arvon or Krelln. --- src/artifact.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/artifact.c b/src/artifact.c index 5260b5b61..d386513b9 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -887,6 +887,10 @@ const char *name; if (!strncmpi(name, "the ", 4)) name += 4; + if (otmp->otyp == WORM_TOOTH && + (!strcmpi(name, "arvon") || !strcmpi(name, "krelln"))) + return TRUE; + /* decide what types of objects are the same as otyp; if it's been discovered, then only itself matches; otherwise, include all other undiscovered objects From 9bf66ca278bd03f76cd89d7c9f499ad4245e2f97 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 13:37:56 +0100 Subject: [PATCH 21/82] Arvon and Krelln always show their object types in inventory. Otherwise, if fully identified, they just display the proper name, leaving it ambiguous if it's currently a worm tooth or a crysknife. --- src/objnam.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/objnam.c b/src/objnam.c index 79b22d49d..fd379c5eb 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -1920,7 +1920,8 @@ struct obj *otmp; return TRUE; if (((otmp->oprops_known & otmp->oprops) & ITEM_PROP_MASK) != otmp->oprops) return TRUE; - if (otmp->oartifact && undiscovered_artifact(otmp->oartifact)) + if (otmp->oartifact && (undiscovered_artifact(otmp->oartifact) + || otmp->otyp == WORM_TOOTH || otmp->otyp == CRYSKNIFE)) return TRUE; /* otmp->rknown is the only item of interest if we reach here */ /* From af31152ae1fcc569e9eb67427e68ec1da6d3ae03 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 14:30:36 +0100 Subject: [PATCH 22/82] Cave trolls usually only generate in cave levels or hell. --- include/decl.h | 4 +++- include/extern.h | 2 ++ src/artifact.c | 1 + src/dungeon.c | 8 ++++++++ src/makemon.c | 7 +++++++ 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/include/decl.h b/include/decl.h index b2eadc57e..88139c55c 100644 --- a/include/decl.h +++ b/include/decl.h @@ -73,6 +73,7 @@ E struct dgn_topology { /* special dungeon levels for speed */ xchar d_mines_dnum, d_quest_dnum; xchar d_caves_dnum; xchar d_spiders_dnum; + xchar d_giants_dnum; d_level d_qstart_level, d_qlocate_level, d_nemesis_level; d_level d_knox_level; d_level d_mineend_level; @@ -114,7 +115,8 @@ E struct dgn_topology { /* special dungeon levels for speed */ #define qlocate_level (dungeon_topology.d_qlocate_level) #define nemesis_level (dungeon_topology.d_nemesis_level) #define knox_level (dungeon_topology.d_knox_level) -#define spiders_dnum (dungeon_topology.d_spiders_dnum) +#define spiders_dnum (dungeon_topology.d_spiders_dnum) +#define giants_dnum (dungeon_topology.d_giants_dnum) #define mineend_level (dungeon_topology.d_mineend_level) #define caveend_level (dungeon_topology.d_caveend_level) #define minetn_level (dungeon_topology.d_minetn_level) diff --git a/include/extern.h b/include/extern.h index 25ab258fc..bc48b8b8d 100644 --- a/include/extern.h +++ b/include/extern.h @@ -726,6 +726,8 @@ E boolean FDECL(Can_rise_up, (int, int, d_level *)); E boolean FDECL(has_ceiling, (d_level *)); E boolean FDECL(In_quest, (d_level *)); E boolean FDECL(In_mines, (d_level *)); +E boolean FDECL(In_giants, (d_level *)); +E boolean FDECL(In_spiders, (d_level *)); E boolean FDECL(In_caves, (d_level *)); E boolean FDECL(In_vecna_branch, (d_level *)); E branch *FDECL(dungeon_branch, (const char *)); diff --git a/src/artifact.c b/src/artifact.c index d386513b9..8e434e550 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -3429,6 +3429,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ if (u_teleport_mon(mdef, FALSE) && u_saw_mon && !(canseemon(mdef) || (u.uswallow && u.ustuck == mdef))) pline("%s suddenly disappears!", nambuf); + if (*dmgptr >= mdef->mhp) { /* see hitmu(mhitu.c) */ if (mdef->mhp == 1) ++mdef->mhp; diff --git a/src/dungeon.c b/src/dungeon.c index 0b6463af4..e5baf68aa 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -970,6 +970,7 @@ init_dungeons() mines_dnum = dname_to_dnum("The Gnomish Mines"); caves_dnum = dname_to_dnum("The Wyrm Caves"); spiders_dnum = dname_to_dnum("The Spider Caves"); + giants_dnum = dname_to_dnum("The Giant Caverns"); tower_dnum = dname_to_dnum("Vlad's Tower"); /* one special fixup for dummy surface level */ @@ -1449,6 +1450,13 @@ d_level *lev; return((boolean) (lev->dnum == spiders_dnum)); } +boolean +In_giants(lev) /* are you in the giant caverns? */ +d_level *lev; +{ + return((boolean) (lev->dnum == giants_dnum)); +} + /* are you in Vecna's branch? */ boolean In_vecna_branch(lev) diff --git a/src/makemon.c b/src/makemon.c index 253ec2ddd..31c186055 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -3882,6 +3882,13 @@ int mndx, mvflagsmask, genomask; || ptr == &mons[PM_DEEPEST_ONE] || ptr == &mons[PM_BANSHEE])) return FALSE; + if (ptr == &mons[PM_CAVE_TROLL] + && !In_mines(&u.uz) + && !In_hell(&u.uz) + && !In_caves(&u.uz) + && !In_giants(&u.uz) + && !In_spiders(&u.uz)) + return FALSE; #ifdef MAIL /* special levels might ask for random demon type; reject this one */ From a977689a2079fc86d1c1104f8e69a7717d64fc49 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 17:04:16 +0100 Subject: [PATCH 23/82] New monster: dread eye I noticed that the ranged gaze drain life attack that I originally intended for Nabassu wasn't being used. The other day the idea for this monster came to me because most eyes are not nearly as fast as a nabassu, and there was a bit of a void left from removing beholders. This dreadful thing also has a potent passive acid attack. --- src/monst.c | 24 ++++++++++++++++++------ src/uhitm.c | 2 ++ win/share/monsters.txt | 20 +++++++++++++++++++- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/monst.c b/src/monst.c index 1ec04ed01..f26024228 100644 --- a/src/monst.c +++ b/src/monst.c @@ -829,18 +829,30 @@ NEARDATA struct permonst mons[] = { M1_FLY | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_TPORT, M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE | M3_SKITTISH, 0, 0, 10, CLR_CYAN), MON("magical eye", S_EYE, /* EvilHack */ - LVL(8, 6, 0, 90, -10), (2), - A(ATTK(AT_GAZE, AD_SLOW, 0, 0), + LVL(8, 6, 0, 90, -10), (2), + A(ATTK(AT_GAZE, AD_SLOW, 0, 0), ATTK(AT_GAZE, AD_SLEE, 2, 6), - ATTK(AT_GAZE, AD_STUN, 0, 0), + ATTK(AT_GAZE, AD_STUN, 0, 0), ATTK(AT_GAZE, AD_FIRE, 4, 6), - ATTK(AT_GAZE, AD_COLD, 2, 4), + ATTK(AT_GAZE, AD_COLD, 2, 4), ATTK(AT_GAZE, AD_LUCK, 0, 0)), SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD | MR_FIRE | MR_ELEC, 0, M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD, M2_NOPOLY | M2_HOSTILE | M2_NEUTER | M2_NASTY, - M3_SKITTISH | M3_INFRAVISIBLE | M3_INFRAVISION | M3_NOTAME, 0, 0, 12, HI_LORD), - + M3_SKITTISH | M3_INFRAVISIBLE | M3_INFRAVISION | M3_NOTAME, 0, + 0, 12, HI_LORD), + MON("dread eye", S_EYE, /* EvilHack */ + LVL(10, 8, 0, 50, -13), (2), + A(ATTK(AT_GAZE, AD_DRLI, 0, 0), + ATTK(AT_NONE, AD_ACID, 0, 4), + NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), + SIZ(10, 10, MS_SILENT, MZ_SMALL), + MR_POISON | MR_DRAIN | MR_ACID, MR_POISON, + M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD + | M1_MINDLESS | M1_THICK_HIDE | M1_ACID, + M2_NOPOLY | M2_HOSTILE | M2_NEUTER | M2_NASTY, + M3_SKITTISH | M3_INFRAVISIBLE | M3_INFRAVISION | M3_NOTAME, 0, + 0, 14, CLR_BLACK), /* * felines */ diff --git a/src/uhitm.c b/src/uhitm.c index c7bb6b001..932144f2a 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -4890,6 +4890,8 @@ boolean wep_was_destroyed; break; case AD_DRLI: if (mhit && !mon->mcan) { + You_feel("weaker as you make contact with %s!", + canseemon(mon) ? mon_nam(mon) : "something"); if (Drain_resistance) { shieldeff(u.ux, u.uy); monstseesu(M_SEEN_DRAIN); diff --git a/win/share/monsters.txt b/win/share/monsters.txt index 6792edfee..6cfdf5205 100644 --- a/win/share/monsters.txt +++ b/win/share/monsters.txt @@ -1662,7 +1662,25 @@ Z = (195, 195, 195) ................ ................ } - +# tile 58 (dread eye) +{ + ................ + ................ + ......RSSSR..... + ....QSSSSSSSQ... + ....SSSSSSSSS... + ...RSSSSSSSSSR.. + ...SSSSRRSSSSS.. + ...SSSRDARSSSS.. + ...RSSRAARSSSR.. + ....SSSRRSSSS... + ....QSSSSSSSQAA. + ......RSSSRAAAA. + ......AAAAAAAAA. + .......AAAAAAA.. + ................ + ................ +} # tile 86 (serval) { ................ From 00ffddb53a2d49f279487d395f72569833be6610 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 18:53:27 +0100 Subject: [PATCH 24/82] Dynamically generate names for random dungeon levels (from SpliceHack). --- include/extern.h | 1 + src/do.c | 2 +- src/dungeon.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++ src/mklev.c | 3 ++ 4 files changed, 109 insertions(+), 1 deletion(-) diff --git a/include/extern.h b/include/extern.h index bc48b8b8d..19f59852c 100644 --- a/include/extern.h +++ b/include/extern.h @@ -758,6 +758,7 @@ E void FDECL(recbranch_mapseen, (d_level *, d_level *)); E void FDECL(overview_stats, (winid, const char *, long *, long *)); E void FDECL(remdun_mapseen, (int)); E const char *FDECL(endgamelevelname, (char *, int)); +E int dynamic_levname(void); E void forget_mapseen(int); /* ### eat.c ### */ diff --git a/src/do.c b/src/do.c index 590e03930..513812e68 100644 --- a/src/do.c +++ b/src/do.c @@ -2243,7 +2243,7 @@ boolean at_stairs, falling, portal; #endif if ((annotation = get_annotation(&u.uz)) != 0) - You("remember this level as %s.", annotation); + You(new ? "are in the %s." : "return to the %s.", annotation); /* assume this will always return TRUE when changing level */ (void) in_out_region(u.ux, u.uy); diff --git a/src/dungeon.c b/src/dungeon.c index e5baf68aa..e6193294d 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -3238,4 +3238,108 @@ forget_mapseen(ledger_num) bp->bonesknown = FALSE; } } + + +/* Dynamic level naming code. */ +static const char *const ownernames[] = { + "Yendorian", "Pilgrim", "Ancient", + "Giant", "Seeker", "Adventurer", + "Coward", "Goblin", "Liar", + "Sinner", "Traveller", "Explorer", + "Hero", "Horde", "Demon", + "Beast" +}; + +static const char *const lev_adj[] = { + "Ancient", "Ruined", "Abandoned", + "Whispering", "Silent", "Forgotten", + "Mysterious", "Weeping", "Collapsed", + "Broken", "Remote" +}; + +static const char *const fountnames[] = { + "Fonts", "Pools", "Haven", "Oasis", + "Respite", "Rest" +}; + +static const char *const forgenames[] = { + "Foundry", "Smithy", "Hammer", "Metalworks", + "Forge", "Furnace", "Workshop" +}; + +static const char *const standardnames[] = { + "Way", "Road", "Path", + "Lookout", "Hideout", "Sorrow", + "Cairn", "Peak", "Cave", + "Pass", "Point", "Tunnel", + "Den", "Folly", "Causeway", + "Court", "Run", "Temple", + "Reliquary", "Cathedral", "Chapel" +}; + +static const char *const bigrm_names[] = { + "Chamber", "Hall", "Treasury", + "Vault", "Arena", "Antechamber", + "Cell", "Hollow" +}; + +int +dynamic_levname(void) { + char buf[BUFSZ]; + mapseen * mptr; + + if (!(mptr = find_mapseen(&u.uz))) + return 0; + + if (Is_special(&u.uz)) { + if (Is_oracle_level(&u.uz)) { + Sprintf(buf, "Delphi"); + mptr->custom = dupstr(buf); + return 1; + } else if (Is_stronghold(&u.uz)) { + Sprintf(buf, "The Castle"); + mptr->custom = dupstr(buf); + return 1; + } else if (Is_bigroom(&u.uz)) { + Sprintf(buf, "%s of the %s", + bigrm_names[rn2(SIZE(bigrm_names))], + ownernames[rn2(SIZE(ownernames))]); + mptr->custom = dupstr(buf); + return 1; + } + } + if (u.uz.dnum != 0) + return 0; + + if (level.flags.nforges && !rn2(3)) { + Sprintf(buf, "%s's %s", + ownernames[rn2(SIZE(ownernames))], + forgenames[rn2(SIZE(forgenames))]); + } else if (level.flags.nfountains && !rn2(3)) { + Sprintf(buf, "%s's %s", + ownernames[rn2(SIZE(ownernames))], + fountnames[rn2(SIZE(fountnames))]); + } else { + switch (rn2(3)) { + case 0: + Sprintf(buf, "%s of the %s", + standardnames[rn2(SIZE(standardnames))], + ownernames[rn2(SIZE(ownernames))]); + break; + case 1: + Sprintf(buf, "%s %s", + lev_adj[rn2(SIZE(lev_adj))], + standardnames[rn2(SIZE(standardnames))]); + break; + case 2: + Sprintf(buf, "%s's %s", + ownernames[rn2(SIZE(ownernames))], + standardnames[rn2(SIZE(standardnames))]); + break; + } + } + mptr->custom = dupstr(buf); + return 1; +} + /*dungeon.c*/ diff --git a/src/mklev.c b/src/mklev.c index 887b39bce..a0a5ee801 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -1265,6 +1265,9 @@ makelevel() } } } + + /* Dynamically name the level depending on the contents. */ + dynamic_levname(); } /* From 1fef7371bba710707d665ed0d71d9d3baba2c0ef Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 18:59:51 +0100 Subject: [PATCH 25/82] Revamp dynamic level names (from SpliceHack) --- src/do.c | 2 +- src/dungeon.c | 91 +++++++++++++++++++++++++++++++++++---------------- 2 files changed, 64 insertions(+), 29 deletions(-) diff --git a/src/do.c b/src/do.c index 513812e68..fc6ec6a94 100644 --- a/src/do.c +++ b/src/do.c @@ -2243,7 +2243,7 @@ boolean at_stairs, falling, portal; #endif if ((annotation = get_annotation(&u.uz)) != 0) - You(new ? "are in the %s." : "return to the %s.", annotation); + You(new ? "are at %s." : "return to %s.", annotation); /* assume this will always return TRUE when changing level */ (void) in_out_region(u.ux, u.uy); diff --git a/src/dungeon.c b/src/dungeon.c index e6193294d..9f78e49f5 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -3242,24 +3242,45 @@ forget_mapseen(ledger_num) /* Dynamic level naming code. */ static const char *const ownernames[] = { - "Yendorian", "Pilgrim", "Ancient", - "Giant", "Seeker", "Adventurer", - "Coward", "Goblin", "Liar", - "Sinner", "Traveller", "Explorer", - "Hero", "Horde", "Demon", - "Beast" + "Yendorian", "Pilgrim", "Ancient", + "Giant", "Seeker", "Adventurer", + "Coward", "Goblin", "Liar", + "Sinner", "Traveller", "Explorer", + "Hero", "Horde", "Demon", + "Beast", "Lover", "Angel", + "Thief", "Cat", "Serpent", + "Cruel King", "Wise Ruler", "Old Queen", + "Imp", "Goat", "Penitent", + "Guardian", "Lich", "Villain", + "Hob", "Delver", "Witch", + "Soothsayer", "Singer", "Captain", + "Lost Child", "Faerie", "Spirit", + "Dragon", "Tarantula", "Spider", + "Leocrotta", "Academy", "Council", + "Creosote", "Hydra", "Onatar", + "Anhur", "Lugh", "Hermes", + "Whisperer", "Crusher", "Rider", + "Butcher", "Baker", "Tailor", + "Ancient", "Endless", "Viper" }; static const char *const lev_adj[] = { - "Ancient", "Ruined", "Abandoned", - "Whispering", "Silent", "Forgotten", - "Mysterious", "Weeping", "Collapsed", - "Broken", "Remote" + "Ancient", "Ruined", "Abandoned", + "Whispering", "Silent", "Forgotten", + "Mysterious", "Weeping", "Collapsed", + "Broken", "Remote", "Serene", + "Murky", "Steaming", "Glowing", + "Cold", "Misty", "Mossy", + "Green", "Blue", "Red", + "Yellow", "Gray", "Forlorn", + "First", "Last", "Imposing", + "Wilding", "Bewitched","Arcane", + "Unholy", "Severed", "Dirty" }; static const char *const fountnames[] = { - "Fonts", "Pools", "Haven", "Oasis", - "Respite", "Rest" + "Fonts", "Pools", "Haven", "Oasis", + "Respite", "Rest", "Tears", }; static const char *const forgenames[] = { @@ -3268,19 +3289,25 @@ static const char *const forgenames[] = { }; static const char *const standardnames[] = { - "Way", "Road", "Path", - "Lookout", "Hideout", "Sorrow", - "Cairn", "Peak", "Cave", - "Pass", "Point", "Tunnel", - "Den", "Folly", "Causeway", - "Court", "Run", "Temple", - "Reliquary", "Cathedral", "Chapel" + "Way", "Road", "Path", + "Lookout", "Hideout", "Sorrow", + "Cairn", "Peak", "Cave", + "Pass", "Point", "Tunnel", + "Den", "Folly", "Causeway", + "Court", "Run", "Temple", + "Reliquary","Cathedral", "Chapel", + /* make some names rarer by duplicating "common" names */ + "Caves", "Tunnels", "Paths", + "Hovels", "Table", "Place", + "Town", "Burrow" }; static const char *const bigrm_names[] = { - "Chamber", "Hall", "Treasury", - "Vault", "Arena", "Antechamber", - "Cell", "Hollow" + "Chamber", "Hall", "Treasury", + "Vault", "Arena", "Antechamber", + "Cell", "Hollow", "Valley", + "Vista", "Hoard", "Battleground", + "Manor", "Gauntlet" }; int @@ -3296,12 +3323,20 @@ dynamic_levname(void) { Sprintf(buf, "Delphi"); mptr->custom = dupstr(buf); return 1; + } else if (Is_medusa_level(&u.uz)) { + Sprintf(buf, "Medusa's Island"); + mptr->custom = dupstr(buf); + return 1; + } else if (Is_rogue_level(&u.uz)) { + Sprintf(buf, "An Older World"); + mptr->custom = dupstr(buf); + return 1; } else if (Is_stronghold(&u.uz)) { Sprintf(buf, "The Castle"); mptr->custom = dupstr(buf); return 1; } else if (Is_bigroom(&u.uz)) { - Sprintf(buf, "%s of the %s", + Sprintf(buf, "The %s of the %s", bigrm_names[rn2(SIZE(bigrm_names))], ownernames[rn2(SIZE(ownernames))]); mptr->custom = dupstr(buf); @@ -3312,27 +3347,27 @@ dynamic_levname(void) { return 0; if (level.flags.nforges && !rn2(3)) { - Sprintf(buf, "%s's %s", + Sprintf(buf, "The %s's %s", ownernames[rn2(SIZE(ownernames))], forgenames[rn2(SIZE(forgenames))]); } else if (level.flags.nfountains && !rn2(3)) { - Sprintf(buf, "%s's %s", + Sprintf(buf, "The %s's %s", ownernames[rn2(SIZE(ownernames))], fountnames[rn2(SIZE(fountnames))]); } else { switch (rn2(3)) { case 0: - Sprintf(buf, "%s of the %s", + Sprintf(buf, "The %s of the %s", standardnames[rn2(SIZE(standardnames))], ownernames[rn2(SIZE(ownernames))]); break; case 1: - Sprintf(buf, "%s %s", + Sprintf(buf, "The %s %s", lev_adj[rn2(SIZE(lev_adj))], standardnames[rn2(SIZE(standardnames))]); break; case 2: - Sprintf(buf, "%s's %s", + Sprintf(buf, "%s %s", ownernames[rn2(SIZE(ownernames))], standardnames[rn2(SIZE(standardnames))]); break; From e71616ec471ee640846695424a7d601e0a72497b Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 19:01:10 +0100 Subject: [PATCH 26/82] Drop chance of dynamic level names (from SpliceHack) --- src/dungeon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dungeon.c b/src/dungeon.c index 9f78e49f5..be5260c90 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -3343,7 +3343,7 @@ dynamic_levname(void) { return 1; } } - if (u.uz.dnum != 0) + if (u.uz.dnum != 0 || !rn2(3) || depth(&u.uz) == 1) return 0; if (level.flags.nforges && !rn2(3)) { From b08e7d3410ddd0f42511e5872017c594668d3f99 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 19:10:55 +0100 Subject: [PATCH 27/82] Add more strings to dynamic level names (from SpliceHack) --- src/dungeon.c | 158 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 122 insertions(+), 36 deletions(-) diff --git a/src/dungeon.c b/src/dungeon.c index be5260c90..0ba4e1468 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -3242,6 +3242,7 @@ forget_mapseen(ledger_num) /* Dynamic level naming code. */ static const char *const ownernames[] = { + /* don't use proper nouns */ "Yendorian", "Pilgrim", "Ancient", "Giant", "Seeker", "Adventurer", "Coward", "Goblin", "Liar", @@ -3257,35 +3258,53 @@ static const char *const ownernames[] = { "Lost Child", "Faerie", "Spirit", "Dragon", "Tarantula", "Spider", "Leocrotta", "Academy", "Council", - "Creosote", "Hydra", "Onatar", - "Anhur", "Lugh", "Hermes", + "Devourer", "Hydra", "Elemental", "Whisperer", "Crusher", "Rider", "Butcher", "Baker", "Tailor", - "Ancient", "Endless", "Viper" + "Ancient", "Endless", "Viper", }; -static const char *const lev_adj[] = { - "Ancient", "Ruined", "Abandoned", - "Whispering", "Silent", "Forgotten", - "Mysterious", "Weeping", "Collapsed", - "Broken", "Remote", "Serene", - "Murky", "Steaming", "Glowing", - "Cold", "Misty", "Mossy", - "Green", "Blue", "Red", - "Yellow", "Gray", "Forlorn", - "First", "Last", "Imposing", - "Wilding", "Bewitched","Arcane", - "Unholy", "Severed", "Dirty" +static const char *const general_adj[] = { + /* trend towards spooky, abandoned */ + "Ancient", "Ruined", "Abandoned", + "Whispering", "Silent", "Forgotten", + "Mysterious", "Weeping", "Collapsed", + "Broken", "Remote", "Uncanny", + "Murky", "Steaming", "Glowing", + "Cold", "Misty", "Mossy", + "Chilly", "Yellow", "Red", + "Tepid", "Gray", "Forlorn", + "First", "Last", "Imposing", + "Wilding", "Bewitched", "Arcane", + "Unholy", "Severed", "Dirty", + "Wicked", "Ethereal", "Doomed", }; +static const char *const nice_adj[] = { + /* for fountains, but maybe other things too*/ + "Serene", "Holy", "Quiet", + "Tranquil", "Blue", "Green", + "Glittering", "Fresh", "Radiant", + "Gleaming", "Prophetic", "Decorated", + "Wonderful", "Powerful", "Painted", +}; + +static const char *const neutral_adj[] = { + /* natural places, forest, fountains, etc */ + "Infinite", "Dusty", "Mossy", + "Misty", "Verdant", "Noisome", + "Damp", "Windy", "Fungus-covered" + "Sulphurous", "Feral", "Narrow", + "Puckish", "Viny", "Slimy", +}; static const char *const fountnames[] = { - "Fonts", "Pools", "Haven", "Oasis", - "Respite", "Rest", "Tears", + "Font", "Pool", "Haven", "Oasis", + "Respite", "Rest", "Tears", "Spring", }; static const char *const forgenames[] = { "Foundry", "Smithy", "Hammer", "Metalworks", - "Forge", "Furnace", "Workshop" + "Forge", "Furnace", "Workshop", }; static const char *const standardnames[] = { @@ -3295,11 +3314,11 @@ static const char *const standardnames[] = { "Pass", "Point", "Tunnel", "Den", "Folly", "Causeway", "Court", "Run", "Temple", - "Reliquary","Cathedral", "Chapel", + "Reliquary","Passage", "Chapel", /* make some names rarer by duplicating "common" names */ "Caves", "Tunnels", "Paths", "Hovels", "Table", "Place", - "Town", "Burrow" + "Town", "Burrow", "Alley", }; static const char *const bigrm_names[] = { @@ -3307,17 +3326,48 @@ static const char *const bigrm_names[] = { "Vault", "Arena", "Antechamber", "Cell", "Hollow", "Valley", "Vista", "Hoard", "Battleground", - "Manor", "Gauntlet" + "Manor", "Gauntlet", "Lair", + "Cathedral","Bazaar", "Amphitheater", + "Canyon", "Gorge", "Ravine", +}; + +static const char *const propernames[] = { + /* beings */ + "Marduk", "Moloch", "Elbereth", "Arioch", + /* gods */ + "Camaxtli", "Huhetotl", "Quetzalcoatl", + "Mitra", "Crom", "Set", + "Anu", "Ishtar", "Anshar", + "Athena", "Hermes", "Poseidon", + "Lugh", "Brigit", "Manannan Mac Lir", + "Huan Ti", "Mars", "Shan Lai Ching", + "Mercury", "Venus", "Chih Sung-tzu", + "Issek", "Mog", "Kos", + "Susanowo", "Raijin", "Amaterasu Omikami", + "Blind Io", "The Lady", "Offler", + "Tyr", "Odin", "Loki", + "Ptah", "Thoth", "Anhur", + /* leaders */ + "Arthur", "Neferet", "Carnarvon", "Sato", + "Pelias", "Karnov", "Hippocrates", "Orion", + "Twoflower", "The Arch Priest", "The Norn", + "The Grand Master", "The Master of Thieves", + /* misc */ + "The Wizard of Yendor", "The Oracle", + "Creosote", "Izchak", "Vlad", }; int dynamic_levname(void) { char buf[BUFSZ]; mapseen * mptr; + boolean named = FALSE; if (!(mptr = find_mapseen(&u.uz))) return 0; + buf[0] = '\0'; + if (Is_special(&u.uz)) { if (Is_oracle_level(&u.uz)) { Sprintf(buf, "Delphi"); @@ -3328,7 +3378,7 @@ dynamic_levname(void) { mptr->custom = dupstr(buf); return 1; } else if (Is_rogue_level(&u.uz)) { - Sprintf(buf, "An Older World"); + Sprintf(buf, "an older world"); mptr->custom = dupstr(buf); return 1; } else if (Is_stronghold(&u.uz)) { @@ -3346,34 +3396,70 @@ dynamic_levname(void) { if (u.uz.dnum != 0 || !rn2(3) || depth(&u.uz) == 1) return 0; - if (level.flags.nforges && !rn2(3)) { - Sprintf(buf, "The %s's %s", - ownernames[rn2(SIZE(ownernames))], - forgenames[rn2(SIZE(forgenames))]); - } else if (level.flags.nfountains && !rn2(3)) { - Sprintf(buf, "The %s's %s", - ownernames[rn2(SIZE(ownernames))], - fountnames[rn2(SIZE(fountnames))]); - } else { + /* furnaces seem rare; always name them */ + if (level.flags.nforges) { + switch(rn2(2)) { + case 0: + Sprintf(buf, "The %s's %s", + ownernames[rn2(SIZE(ownernames))], + forgenames[rn2(SIZE(forgenames))]); + break; + case 1: + Sprintf(buf, "%s of %s", + forgenames[rn2(SIZE(forgenames))], + propernames[rn2(SIZE(propernames))]); + break; + } + named = TRUE; + /* fountains are somewhat special */ + } else if (level.flags.nfountains && !rn2(2)) { switch (rn2(3)) { + case 0: + Sprintf(buf, "The %s's %s", + ownernames[rn2(SIZE(ownernames))], + fountnames[rn2(SIZE(fountnames))]); + break; + case 1: + Sprintf(buf, "The %s %s", + nice_adj[rn2(SIZE(nice_adj))], + fountnames[rn2(SIZE(fountnames))]); + break; + case 2: + Sprintf(buf, "The %s %s", + neutral_adj[rn2(SIZE(neutral_adj))], + fountnames[rn2(SIZE(fountnames))]); + break; + } + named = TRUE; + /* plain levels shouldn't get special names too often */ + } else if (!rn2(3)) { + switch (rn2(5)) { case 0: Sprintf(buf, "The %s of the %s", standardnames[rn2(SIZE(standardnames))], ownernames[rn2(SIZE(ownernames))]); break; case 1: - Sprintf(buf, "The %s %s", - lev_adj[rn2(SIZE(lev_adj))], + Sprintf(buf, "%s %s", + ownernames[rn2(SIZE(ownernames))], standardnames[rn2(SIZE(standardnames))]); break; case 2: - Sprintf(buf, "%s %s", - ownernames[rn2(SIZE(ownernames))], + Sprintf(buf, "The %s %s", + neutral_adj[rn2(SIZE(neutral_adj))], + standardnames[rn2(SIZE(standardnames))]); + break; + case 3: + case 4: + Sprintf(buf, "The %s %s", + general_adj[rn2(SIZE(general_adj))], standardnames[rn2(SIZE(standardnames))]); break; } + named = TRUE; } - mptr->custom = dupstr(buf); + if (named) + mptr->custom = dupstr(buf); return 1; } From 3a80a02a337f87579026184a5241a3fb0e29a94e Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 20:10:25 +0100 Subject: [PATCH 28/82] Add more content to the dynamic level names. --- src/dungeon.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/dungeon.c b/src/dungeon.c index 0ba4e1468..e3955e84a 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -3262,6 +3262,7 @@ static const char *const ownernames[] = { "Whisperer", "Crusher", "Rider", "Butcher", "Baker", "Tailor", "Ancient", "Endless", "Viper", + "Dreamer", }; static const char *const general_adj[] = { @@ -3278,6 +3279,10 @@ static const char *const general_adj[] = { "Wilding", "Bewitched", "Arcane", "Unholy", "Severed", "Dirty", "Wicked", "Ethereal", "Doomed", + "Enchanted", "Mystic", "Twilight", + "Fabled", "Echoing", "Starlight", + "Stardust", + }; static const char *const nice_adj[] = { @@ -3287,6 +3292,9 @@ static const char *const nice_adj[] = { "Glittering", "Fresh", "Radiant", "Gleaming", "Prophetic", "Decorated", "Wonderful", "Powerful", "Painted", + "Evergreen", "Serenity", "Elysian", + "Crystal", "Silverleaf", "Resplendent", + "Marvelous", "Sacred", }; static const char *const neutral_adj[] = { @@ -3294,17 +3302,29 @@ static const char *const neutral_adj[] = { "Infinite", "Dusty", "Mossy", "Misty", "Verdant", "Noisome", "Damp", "Windy", "Fungus-covered" - "Sulphurous", "Feral", "Narrow", + "Sulphurous", "Feral", "Narrow", "Puckish", "Viny", "Slimy", + "Mistwood", "Celestia", "Emberfall", + "Dreamweaver", "Shadowbloom", "Secret", + "Hidden", + }; static const char *const fountnames[] = { "Font", "Pool", "Haven", "Oasis", "Respite", "Rest", "Tears", "Spring", + "Basin", "Gully", "Veil", "Cascade", + "Arcadia", "Waterscape", "Wellspring", + "Gardens", "Marblescape", "Retreat", + "Springlands", "Tide", "Rivulet", + "Mists", "Spout", }; static const char *const forgenames[] = { - "Foundry", "Smithy", "Hammer", "Metalworks", - "Forge", "Furnace", "Workshop", + "Foundry", "Smithy", "Hammer", "Metalworks", + "Forge", "Furnace", "Workshop", "Foothold", + "Enclave", "Anvil", "Citadel", "Crucible", + "Ironworks", "Bastion", "Smithery", "Domain", + "Hangar", "Grounds", }; static const char *const standardnames[] = { @@ -3319,6 +3339,8 @@ static const char *const standardnames[] = { "Caves", "Tunnels", "Paths", "Hovels", "Table", "Place", "Town", "Burrow", "Alley", + "Vale", "Glen", "Dell", + "Terrace", "Meadows", }; static const char *const bigrm_names[] = { @@ -3329,6 +3351,8 @@ static const char *const bigrm_names[] = { "Manor", "Gauntlet", "Lair", "Cathedral","Bazaar", "Amphitheater", "Canyon", "Gorge", "Ravine", + "Expanse", "Gallery", "Vestibule", + "Rotunda", "Atrium", "Salon", }; static const char *const propernames[] = { From 290ad846302915737386bc8bf8a63cfcca8d3201 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 20:31:37 +0100 Subject: [PATCH 29/82] Dynamic level names are more rare. Only start them after level 5. They should have a bit of mystique to them and have enough rarity to really stand out when encountered. --- src/dungeon.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/dungeon.c b/src/dungeon.c index e3955e84a..d18d6ce08 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -3417,12 +3417,12 @@ dynamic_levname(void) { return 1; } } - if (u.uz.dnum != 0 || !rn2(3) || depth(&u.uz) == 1) + if (u.uz.dnum != 0 || depth(&u.uz) < 5 || !rn2(3)) return 0; - - /* furnaces seem rare; always name them */ - if (level.flags.nforges) { - switch(rn2(2)) { + + if (level.flags.nforges && !rn2(2)) { + /* furnaces seem rare; usually name them */ + switch (rn2(2)) { case 0: Sprintf(buf, "The %s's %s", ownernames[rn2(SIZE(ownernames))], @@ -3435,8 +3435,8 @@ dynamic_levname(void) { break; } named = TRUE; + } else if (level.flags.nfountains && !rn2(5)) { /* fountains are somewhat special */ - } else if (level.flags.nfountains && !rn2(2)) { switch (rn2(3)) { case 0: Sprintf(buf, "The %s's %s", @@ -3456,7 +3456,7 @@ dynamic_levname(void) { } named = TRUE; /* plain levels shouldn't get special names too often */ - } else if (!rn2(3)) { + } else if (!rn2(5)) { switch (rn2(5)) { case 0: Sprintf(buf, "The %s of the %s", From 052f416cb130c9762a52199b2df337026e2cf48d Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 21:05:29 +0100 Subject: [PATCH 30/82] Fix dynamic level names for the big room, as well as displaying them for other special levels. --- src/mklev.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mklev.c b/src/mklev.c index a0a5ee801..f9f91854d 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -927,6 +927,7 @@ makelevel() /* check for special levels */ if (slev && !Is_rogue_level(&u.uz)) { makemaz(slev->proto); + dynamic_levname(); return; } else if (dungeons[u.uz.dnum].proto[0]) { makemaz(""); From 210aab421d62ebb08f9bab193dfdedc0738f1b05 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 8 Nov 2023 23:23:52 +0100 Subject: [PATCH 31/82] Interesting art rooms (from SpliceHack). These are mostly flavor, once in a while you run into a room and it gives you a special message about a piece of art. However, I liked that one of the effects was magic mapping, so I added a couple minor effects so it's not entirely cosmetic. --- include/mkroom.h | 101 ++++++++++++++++++------------------ src/hack.c | 131 +++++++++++++++++++++++++++++++++++++++++++++++ src/mklev.c | 4 ++ 3 files changed, 186 insertions(+), 50 deletions(-) diff --git a/include/mkroom.h b/include/mkroom.h index 78acd5f93..43e583700 100644 --- a/include/mkroom.h +++ b/include/mkroom.h @@ -53,57 +53,58 @@ extern NEARDATA coord doors[DOORMAX]; /* values for rtype in the room definition structure */ enum roomtype_types { - OROOM = 0, /* ordinary room */ - COURT = 2, /* contains a throne */ - SWAMP = 3, /* contains pools */ - VAULT = 4, /* detached room usually reached via teleport trap */ - BEEHIVE = 5, /* contains killer bees and royal jelly */ - MORGUE = 6, /* contains corpses, undead and graves */ - BARRACKS = 7, /* contains soldiers and their gear */ - ZOO = 8, /* floor covered with treasure and monsters */ - DELPHI = 9, /* contains Oracle and peripherals */ - TEMPLE = 10, /* contains a shrine (altar attended by priest[ess]) */ - LEPREHALL = 11, /* leprechaun hall (Tom Proudfoot) */ - COCKNEST = 12, /* cockatrice nest (Tom Proudfoot) */ - ANTHOLE = 13, /* ants (Tom Proudfoot) */ - OWLBNEST = 14, /* owlbear nest */ - ARMORY = 15, /* weapons, armor, tools and rust monsters */ - NURSERY = 16, /* mind flayer larva nursery */ - GARDEN = 17, /* nymphs, trees and fountains */ - LEMUREPIT = 18, /* contains lemures and horned devils */ - REALZOO = 19, /* zoo-like monsters (monkeys, etc.) */ - GIANTCOURT = 20, /* a giant courtroom */ - DRAGONLAIR = 21, /* dragons and $$$ */ - BADFOODSHOP= 22, /* bad food! */ - MIGOHIVE = 23, /* Mi-Go */ - FUNGUSFARM = 24, /* molds, puddings, and slime */ - ZROOM = 25, /* molds, puddings, and slime */ - MINIGUILD = 26, /* Replacement for SlashEM guild of Disgruntled Adventurers. */ - CLINIC = 27, /* nurses */ - TERRORHALL = 28, /* hulks */ - RNDVAULT = 29, /* random vault, not to be confused with VAULT */ - BLACKFOYER = 30, /* Foyer to the black market */ + OROOM = 0, /* ordinary room */ + COURT = 2, /* contains a throne */ + SWAMP = 3, /* contains pools */ + VAULT = 4, /* detached room usually reached via teleport trap */ + BEEHIVE = 5, /* contains killer bees and royal jelly */ + MORGUE = 6, /* contains corpses, undead and graves */ + BARRACKS = 7, /* contains soldiers and their gear */ + ZOO = 8, /* floor covered with treasure and monsters */ + DELPHI = 9, /* contains Oracle and peripherals */ + TEMPLE = 10, /* contains a shrine (altar attended by priest[ess]) */ + LEPREHALL = 11, /* leprechaun hall (Tom Proudfoot) */ + COCKNEST = 12, /* cockatrice nest (Tom Proudfoot) */ + ANTHOLE = 13, /* ants (Tom Proudfoot) */ + OWLBNEST = 14, /* owlbear nest */ + ARMORY = 15, /* weapons, armor, tools and rust monsters */ + NURSERY = 16, /* mind flayer larva nursery */ + GARDEN = 17, /* nymphs, trees and fountains */ + LEMUREPIT = 18, /* contains lemures and horned devils */ + REALZOO = 19, /* zoo-like monsters (monkeys, etc.) */ + GIANTCOURT = 20, /* a giant courtroom */ + DRAGONLAIR = 21, /* dragons and $$$ */ + BADFOODSHOP = 22, /* bad food! */ + MIGOHIVE = 23, /* Mi-Go */ + FUNGUSFARM = 24, /* molds, puddings, and slime */ + ZROOM = 25, /* molds, puddings, and slime */ + MINIGUILD = 26, /* Replacement for SlashEM guild of Disgruntled Adventurers. */ + CLINIC = 27, /* nurses */ + TERRORHALL = 28, /* hulks */ + ARTROOM = 29, /* hulks */ + RNDVAULT = 30, /* random vault, not to be confused with VAULT */ + BLACKFOYER = 31, /* Foyer to the black market */ - SHOPBASE = 31, /* everything above this is a shop */ - ARMORSHOP = 32, /* specific shop defines for level compiler */ - SCROLLSHOP = 33, - POTIONSHOP = 34, - WEAPONSHOP = 35, - FOODSHOP = 36, - RINGSHOP = 37, - WANDSHOP = 38, - TOOLSHOP = 39, - BOOKSHOP = 40, - ARCHERYSHOP = 41, - MASKSHOP = 42, - JUNKSHOP = 43, - FODDERSHOP = 44, /* health food store */ - TINSHOP = 45, - GUNSHOP = 46, - INSTRUMENTSHOP = 47, - PETSHOP = 48, /* Stephen White */ - CANDLESHOP = 49, /*(UNIQUESHOP) */ - BLACKSHOP = 50 /*(UNIQUESHOP) */ + SHOPBASE = 32, /* everything above this is a shop */ + ARMORSHOP = 33, /* specific shop defines for level compiler */ + SCROLLSHOP = 34, + POTIONSHOP = 35, + WEAPONSHOP = 36, + FOODSHOP = 37, + RINGSHOP = 38, + WANDSHOP = 39, + TOOLSHOP = 40, + BOOKSHOP = 41, + ARCHERYSHOP = 42, + MASKSHOP = 43, + JUNKSHOP = 44, + FODDERSHOP = 45, /* health food */ + TINSHOP = 46, + GUNSHOP = 47, + INSTRUMENTSHOP = 48, + PETSHOP = 49, /* Stephen White */ + CANDLESHOP = 50, /*(UNIQUESHOP) */ + BLACKSHOP = 51 /*(UNIQUESHOP) */ }; #define MAXRTYPE (BLACKSHOP) /* maximum valid room type */ diff --git a/src/hack.c b/src/hack.c index fb388a9c4..926bb1ac7 100644 --- a/src/hack.c +++ b/src/hack.c @@ -14,6 +14,7 @@ STATIC_DCL void NDECL(dosinkfall); STATIC_DCL boolean FDECL(findtravelpath, (int)); STATIC_DCL boolean FDECL(trapmove, (int, int, struct trap *)); STATIC_DCL struct monst *FDECL(monstinroom, (struct permonst *, int)); +STATIC_DCL void interesting_room(void); STATIC_DCL boolean FDECL(doorless_door, (int, int)); STATIC_DCL void FDECL(move_update, (BOOLEAN_P)); STATIC_DCL void FDECL(maybe_smudge_engr, (int, int, int, int)); @@ -3078,6 +3079,12 @@ register boolean newlev; verbalize("Please have a look around, but don't even think about stealing anything."); } break; + case ARTROOM: + if (Blind) + msg_given = FALSE; + else + interesting_room(); + break; case TEMPLE: intemple(roomno + ROOMOFFSET); /*FALLTHRU*/ @@ -3454,6 +3461,130 @@ lookaround() } } + +/* Message for entering an art room. */ +static void +interesting_room(void) +{ + static const char *const adjectives[] = { + "furious", "wrathful", "mysterious", "ugly", + "beautiful", "poorly-rendered", "large", "lifelike", + "peaceful", "covetous", "subservient", "lovely", + "misshapen", "luminous", "melancholic", "bold", + "surreal", "brooding", "enigmatic", "chaotic", + "seething", "frenzied", "cheap", "knock-off", + "tattered", "distasteful", "vulgar", "sordid", + "unpleasant", "expensive", "poor-quality", "tacky", + "kitsch", "tawdry", "inferior", "unnerving", + "ominous", "eerie", "disturbing", "dark" + }; + + static const char *const scary_adj[] = { + "fearful", "horrifying", "sinister", "menacing", + }; + + static const char *const art[] = { + "painting", "carving", "tapestry", "bas-relief", + "photograph", "print", "etching", "engraving", + "woodcut", "lithograph", "mosaic", "oil painting", + "watercolor painting", "spray painting", "fresco", + "poster", "sketching", "pyrograph", + }; + + int name, name2; + /* Modified version of rndmonnam */ + do { + name = rn2(NUMMONS); + } while ((type_is_pname(&mons[name]) || (mons[name].geno & G_UNIQ))); + + do { + name2 = rn2(NUMMONS); + } while ((type_is_pname(&mons[name2]) || (mons[name2].geno & G_UNIQ))); + + const char* carvemon = mons[name].mname; + const char* carvemon2 = mons[name2].mname; + + /* Carving message */ + switch (rnd(7)) { + case 1: + pline("%s on the ceiling portrays %s %s.", + An(art[rn2(SIZE(art))]), + an(adjectives[rn2(SIZE(adjectives))]), carvemon); + break; + case 2: + pline("There is %s of %s in this room.", + an(art[rn2(SIZE(art))]), u_gname()); + if (Afraid) { + pline("It calms you."); + make_afraid(0L, TRUE); + } else if (u.ualign.record > 0) { + pline("It shines a bright light through you!"); + display_nhwindow(WIN_MESSAGE, FALSE); + enlightenment(MAGICENLIGHTENMENT, ENL_GAMEINPROGRESS); + pline_The("light subsides."); + exercise(A_WIS, TRUE); + } else { + You("have an uneasy feeling..."); + exercise(A_WIS, FALSE); + } + break; + case 3: + pline("%s on the wall depicts a large number of %s.", + An(art[rn2(SIZE(art))]), makeplural(carvemon)); + break; + case 4: + pline("%s in this room contains a partial map of the dungeon!", + An(art[rn2(SIZE(art))])); + HConfusion = 1; + do_mapping(FALSE); + HConfusion = 0; + break; + case 5: + /* Scare the player! */ + pline("%s on the wall portrays %s %s.", + An(art[rn2(SIZE(art))]), + an(scary_adj[rn2(SIZE(scary_adj))]), + carvemon); + if (!Fearless) { + switch (rnd(7)) { + case 1: + pline("It %s you!", rn2(2) ? "scares" : "terrifies"); + break; + case 2: + pline("It fills you with fear!"); + break; + case 3: + pline("It gives you %s!", rn2(2) ? "the creeps" : "a fright"); + break; + case 4: + pline("It sends shivers down your spine!"); + break; + case 5: + pline("It makes your blood run cold!"); + break; + case 6: + pline("It makes you %s!", + rn2(2) ? "tremble in fear" : "quiver with fear"); + break; + case 7: + pline("It makes you feel petrified!"); + if (have_lizard()) { + more_experienced(2, 0); + return; + } + } + make_afraid((HAfraid & TIMEOUT) + (long) rn1(10, 5), FALSE); + } + break; + default: + pline("%s in this room presents a battle between %s and %s.", + An(art[rn2(SIZE(art))]), + makeplural(carvemon), makeplural(carvemon2)); + } + more_experienced(2, 0); + newexplevel(); +} + /* check for a doorway which lacks its door (NODOOR or BROKEN) */ STATIC_OVL boolean doorless_door(x, y) diff --git a/src/mklev.c b/src/mklev.c index f9f91854d..03192405c 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -1251,6 +1251,10 @@ makelevel() } } + /* Maybe decorate the walls */ + if (croom->rtype == OROOM && depth(&u.uz) > 1 && !rn2(20)) + croom->rtype = ARTROOM; + skip_nonrogue: if (!rn2(3)) { if (somexyspace(croom, &pos, 0)) From 7cf51f99a1df2754bfb01ec51a3df502db3500fb Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 00:01:29 +0100 Subject: [PATCH 32/82] Revert "Completed removed wands of fireball - fixes #100." This reverts commit 80c278ba0de4d2b9e49ab14de981fade3b98d94a. Using new knowledge of the ZT/spell system, I was able to reintegrate wands of fireball. --- dat/grund.des | 2 +- dat/qlawful.des | 2 +- src/apply.c | 16 +- src/engrave.c | 11 + src/muse.c | 28 ++- src/objects.c | 5 +- src/zap.c | 8 +- win/share/objects.txt | 516 ++++++------------------------------------ 8 files changed, 131 insertions(+), 457 deletions(-) diff --git a/dat/grund.des b/dat/grund.des index a02e642ff..353b8e913 100644 --- a/dat/grund.des +++ b/dat/grund.des @@ -233,7 +233,7 @@ OBJECT: (')', "orcish bow"), (39,02), uncursed, +1 OBJECT: (')', "orcish arrow"), (39,02), uncursed, +2 MONSTER: ('o', "war orc"), (39,05), hostile -[40%]: OBJECT: ('/', "noise"), (39,05) +[40%]: OBJECT: ('/', "fireball"), (39,05) OBJECT: (')', "orcish bow"), (39,05), uncursed, +2 OBJECT: (')', "orcish arrow"), (39,05), uncursed, +1 diff --git a/dat/qlawful.des b/dat/qlawful.des index 70e53ef4e..34c66af2d 100644 --- a/dat/qlawful.des +++ b/dat/qlawful.des @@ -240,7 +240,7 @@ REGION: (64,09,68,13), unlit, "swamp" OBJECT: ('[', "gray dragon scales"), (66,11), cursed, -9 TRAP: "statue", (66,11) CONTAINER: ('`', "statue"), (66,11), montype:"arch-lich", 0 { - OBJECT: ('/', "deluge") + OBJECT: ('/', "fireball") OBJECT: ('/', "create horde"), uncursed, 1 OBJECT: ('/', "speed monster"), uncursed, 1 OBJECT: ('/', "make invisible"), uncursed, 1 diff --git a/src/apply.c b/src/apply.c index e6c3b6cc1..20fdcb206 100644 --- a/src/apply.c +++ b/src/apply.c @@ -4743,6 +4743,19 @@ struct obj *obj; case WAN_NOISE: dmg *= 4; goto wanexpl; + case WAN_FIREBALL: + dmg *= 2; + /* The magic 11 is ZT_SPELL(ZT_FIRE)*/ + explode(u.ux, u.uy, 11, d(6, 6), WAND_CLASS, EXPL_FIERY); + mk_wandtrap(obj); + + if (obj->dknown + && !objects[obj->otyp].oc_name_known + && !objects[obj->otyp].oc_uname) { + docall(obj); + } + goto discard_broken_wand; + case WAN_FIRE: expltype = EXPL_FIERY; mk_wandtrap(obj); @@ -5439,7 +5452,8 @@ struct obj *obj; int traptype = MAGIC_TRAP; /* Default in case of impossible */ switch (obj->otyp){ - case WAN_FIRE: + case WAN_FIRE: + case WAN_FIREBALL: traptype = FIRE_TRAP; break; case WAN_COLD: diff --git a/src/engrave.c b/src/engrave.c index 556732f3b..f13797729 100644 --- a/src/engrave.c +++ b/src/engrave.c @@ -1001,6 +1001,17 @@ doengrave() Strcpy(post_engr_text, Blind ? "You feel the wand heat up." : "Flames fly from the wand."); break; + case WAN_FIREBALL: + ptext = TRUE; + type = BURN; + if (!objects[otmp->otyp].oc_name_known) { + if (flags.verbose) + pline("This %s is a wand of fireballs!", xname(otmp)); + preknown = TRUE; + } + Strcpy(post_engr_text, Blind ? "You feel the wand heat up." + : "Flames fly from the wand."); + break; case WAN_CORROSION: ptext = TRUE; type = BURN; diff --git a/src/muse.c b/src/muse.c index eb0ae1309..3cb8ee536 100644 --- a/src/muse.c +++ b/src/muse.c @@ -1615,6 +1615,7 @@ struct monst *mtmp; #define MUSE_WAN_MAGIC_MISSILE 55 /*#define MUSE_WAN_TELEPORTATION 15 also a defensive item so don't redefine */ #define MUSE_WAN_STRIKING 57 +#define MUSE_WAN_FIREBALL 58 #define MUSE_WAN_CANCELLATION 59 #define MUSE_WAN_POLYMORPH 60 #define MUSE_WAN_SLOW_MONSTER 61 @@ -1763,6 +1764,9 @@ int otyp; case HORN_OF_BLASTING: want++; /*FALLTHRU*/ + case WAN_FIREBALL: + want++; + /*FALLTHRU*/ case WAN_CORROSION: want++; /*FALLTHRU*/ @@ -1893,6 +1897,15 @@ boolean reflection_skip; m.tocharge = obj; } } + nomore(MUSE_WAN_FIREBALL); + if (obj->otyp == WAN_FIREBALL) { + if (obj->spe > 0 && !m_seenres(mtmp, M_SEEN_FIRE)) { + m.offensive = obj; + m.has_offense = MUSE_WAN_FIREBALL; + } else if (obj->spe < 1 && pick_to_charge(obj)) { + m.tocharge = obj; + } + } nomore(MUSE_WAN_CORROSION); if (obj->otyp == WAN_CORROSION) { if (obj->spe > 0 && !m_seenres(mtmp, M_SEEN_ACID)) { @@ -2556,6 +2569,7 @@ struct monst *mtmp; && (monnear(mtmp, mtmp->mux, mtmp->muy) && m.has_offense != MUSE_WAN_DEATH && m.has_offense != MUSE_WAN_SLEEP + && m.has_offense != MUSE_WAN_FIREBALL && m.has_offense != MUSE_WAN_FIRE && m.has_offense != MUSE_WAN_COLD && m.has_offense != MUSE_WAN_LIGHTNING)) { @@ -2585,6 +2599,7 @@ struct monst *mtmp; return (DEADMONSTER(mtmp)) ? 1 : 2; case MUSE_WAN_DEATH: case MUSE_WAN_SLEEP: + case MUSE_WAN_FIREBALL: case MUSE_WAN_FIRE: case MUSE_WAN_COLD: case MUSE_WAN_LIGHTNING: @@ -2597,11 +2612,16 @@ struct monst *mtmp; if (oseen) makeknown(otmp->otyp); m_using = TRUE; - buzz(ZT_MONWAND(otmp->otyp - WAN_MAGIC_MISSILE), - (otmp->otyp == WAN_MAGIC_MISSILE) ? 2 : 6, mtmp->mx, mtmp->my, - sgn(tbx), sgn(tby)); + if (otmp->otyp == WAN_FIREBALL) + buzz(ZT_MONSPELL(ZT_FIRE), 6, mtmp->mx, mtmp->my, + sgn(tbx), sgn(tby)); + else + buzz(ZT_MONWAND(otmp->otyp - WAN_MAGIC_MISSILE), + (otmp->otyp == WAN_MAGIC_MISSILE) ? 2 : 6, mtmp->mx, mtmp->my, + sgn(tbx), sgn(tby)); m_using = FALSE; return (DEADMONSTER(mtmp)) ? 1 : 2; + case MUSE_FIRE_HORN: case MUSE_FROST_HORN: case MUSE_HORN_OF_BLASTING: @@ -2855,6 +2875,8 @@ struct monst *mtmp; return 0; if (difficulty > 7 && !rn2(35)) return WAN_DEATH; + if (difficulty > 6 && !rn2(25)) + return WAN_FIREBALL; if (difficulty > 7 && !rn2(30)) return WAN_POLYMORPH; diff --git a/src/objects.c b/src/objects.c index e06355767..711ec66a9 100644 --- a/src/objects.c +++ b/src/objects.c @@ -1303,9 +1303,11 @@ WAND("extra healing", "bronze", 90, 300, 1, IMMEDIATE, COPPER, CLR_YELLOW), WAND("opening", "zinc", 75, 150, 1, IMMEDIATE, METAL, HI_METAL), WAND("locking", "aluminum", 75, 150, 1, IMMEDIATE, METAL, HI_METAL), WAND("probing", "uranium", 90, 150, 1, IMMEDIATE, METAL, HI_METAL), +WAND("fireball", "forked", 5, 300, 1, RAY, WOOD, HI_WOOD),/* Slash'EM */ +WAND("digging", "iron", 165, 150, 1, RAY, IRON, HI_METAL), + /* Ray wands have to come last, and in this order. */ /* This is extremely kludgy, but that's what zap.c expects. */ -WAND("digging", "iron", 165, 150, 1, RAY, IRON, HI_METAL), WAND("magic missile", "steel", 150, 150, 1, RAY, METAL, HI_METAL), WAND("fire", "hexagonal", 120, 175, 1, RAY, GLASS, HI_METAL), WAND("cold", "short", 120, 175, 1, RAY, IRON, HI_METAL), @@ -1319,7 +1321,6 @@ WAND("deluge", "driftwood", 100, 175, 1, RAY, WOOD, HI_WOOD), /* SpliceHac /* extra descriptions, shuffled into use at start of new game */ WAND(None, "spiked", 0, 150, 1, 0, IRON, HI_METAL), WAND(None, "jeweled", 0, 150, 1, 0, IRON, HI_MINERAL), -WAND(None, "forked", 0, 150, 1, 0, WOOD, HI_WOOD), WAND(None, "quartz", 0, 150, 1, 0, GLASS, HI_GLASS), WAND(None, "walnut", 0, 150, 1, 0, WOOD, HI_WOOD), WAND(None, "mahogany", 0, 150, 1, 0, WOOD, HI_WOOD), diff --git a/src/zap.c b/src/zap.c index 6f5aaf84e..d7b4d33d9 100644 --- a/src/zap.c +++ b/src/zap.c @@ -2616,6 +2616,7 @@ struct obj *obj, *otmp; res = stone_to_flesh_obj(obj); break; case SPE_FIRE_BOLT: + case WAN_FIREBALL: case WAN_FIRE: if (obj->otyp == EGG && obj->corpsenm == PM_PHOENIX) { hatch_faster(obj); @@ -2946,6 +2947,10 @@ boolean ordinary; destroy_item(RING_CLASS, AD_ELEC); (void) flashburn((long) rnd(100)); break; + + case WAN_FIREBALL: + makeknown(WAN_FIREBALL); + /* FALLTHROUGH */ case SPE_FIREBALL: You("explode a fireball on top of yourself!"); explode(u.ux, u.uy, ZT_SPELL(ZT_FIRE), d(6, 6), WAND_CLASS, @@ -4163,7 +4168,8 @@ struct obj *obj; zapnodir(obj); } else { /* neither immediate nor directionless */ - + if (otyp == WAN_FIREBALL) + otyp = SPE_FIREBALL; if (otyp == WAN_DIGGING || otyp == SPE_DIG) zap_dig(); else if (otyp >= FIRST_SPELLBOOK && otyp <= LAST_SPELLBOOK) diff --git a/win/share/objects.txt b/win/share/objects.txt index 76ef78cf6..dad01beec 100644 --- a/win/share/objects.txt +++ b/win/share/objects.txt @@ -11675,6 +11675,25 @@ Z = (195, 195, 195) ................ ................ } +# tile 570 (forked / fireball) +{ + ................ + ................ + ............L... + ...........LP... + ..........HPAA.. + .........LPAA... + ........HPAA.... + .......LPAA..... + ......HPAA...... + .....LPAA....... + ....HPAA........ + ...LPAA......... + ...PAA.......... + ................ + ................ + ................ +} # tile 613 (steel / magic missile) { ................ @@ -11866,7 +11885,7 @@ Z = (195, 195, 195) ................ } -# tile 623 (spiked) +# tile 570 (spiked) { ................ ................ @@ -11885,406 +11904,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 624 (jeweled) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 625 (forked) -{ - ................ - ................ - .........N...... - ........N..NO... - .......D..NOAA.. - .......D.DIAA.O. - .......DDIAA.OA. - .......DIIIIIA.. - ......DIAAAAA... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 626 (quartz) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 627 (walnut) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 628 (mahogany) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 629 (cedar) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 630 (chrome) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 631 (nickel) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 632 (mithril) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 633 (grooved) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 634 (bent) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 635 (bone) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 636 (alabaster) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 637 (orichalcum) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 638 (electrum) -{ - ................ - ................ - ..........NNB... - ..........NBB... - ..........BBBA.. - .........DIAA... - ........DIAA.... - .......DIAA..... - ......DIAA...... - .....DIAA....... - ....NIAA........ - ...NOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 639 (holly) -{ - ................ - ................ - ...........D.... - .........FDDF... - .........JKDAA.. - ........JJJAA... - .......JJKAA.... - ......JKJAA..... - .....JJJAA...... - ....JJKAA....... - ...FKJAA........ - ..FFDAA......... - ...FAA.......... - ................ - ................ - ................ -} -# tile 640 (pliable) -{ - ................ - ................ - ...........N.... - ..........NNO... - .........JKOAA.. - ........JJJAA... - ........JJKAA... - ........JKJAA... - ......JJJAA..... - .....JJKAA...... - ...OKJAA........ - ..NNOAA......... - ...NAA.......... - ................ - ................ - ................ -} -# tile 641 (dragon-bone) -{ - .............O.. - ............NO.. - ...........EO..O - ...........NO.O. - ..........NONO.. - .........NNAA... - ........NNAA.... - .......NNAA..... - ......NNAA...... - .....NNAA....... - ....NNAA........ - ...NOAA......... - ....NA.......... - ................ - ................ - ................ -} -# tile 642 (golden) -{ - ................ - ................ - ................ - ...........HO... - ..........HOAA.. - .........HHAA... - ........HHAA.... - .......HHAA..... - ......HHAA...... - .....HHAA....... - ....HHAA........ - ...HOAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 643 (gilded) -{ - ................ - ................ - ................ - ...........CC... - ..........HKAA.. - .........HJAA... - ........HJAA.... - .......HJAA..... - ......HJAA...... - .....HJAA....... - ....HJAA........ - ...CJAA......... - ....AA.......... - ................ - ................ - ................ -} -# tile 644 (thin) -{ - ................ - ................ - .............O.. - ............OA.. - ...........OAA.. - ..........OAA... - .........OAA.... - ........OAA..... - .......OAA...... - ......OAA....... - .....OAA........ - ....OAA......... - ...OAA.......... - ..OAA........... - .OAA............ - .AA............. -} -# tile 645 (porcelain) +# tile 571 (jeweled) { ................ ................ @@ -12303,7 +11923,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 646 (gold piece) +# tile 572 (gold piece) { ................ ................ @@ -12322,7 +11942,7 @@ Z = (195, 195, 195) .........HA..... ...........HA... } -# tile 647 (white / dilithium crystal) +# tile 573 (white / dilithium crystal) { ................ ................ @@ -12341,7 +11961,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 648 (white / diamond) +# tile 574 (white / diamond) { ................ ................ @@ -12360,7 +11980,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 649 (red / ruby) +# tile 575 (red / ruby) { ................ ................ @@ -12379,7 +11999,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 650 (orange / jacinth) +# tile 576 (orange / jacinth) { ................ ................ @@ -12398,7 +12018,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 651 (blue / sapphire) +# tile 577 (blue / sapphire) { ................ ................ @@ -12417,7 +12037,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 652 (black / black opal) +# tile 578 (black / black opal) { ................ ................ @@ -12436,7 +12056,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 653 (green / emerald) +# tile 579 (green / emerald) { ................ ................ @@ -12455,7 +12075,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 654 (green / turquoise) +# tile 580 (green / turquoise) { ................ ................ @@ -12474,7 +12094,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 655 (yellow / citrine) +# tile 581 (yellow / citrine) { ................ ................ @@ -12493,7 +12113,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 656 (green / aquamarine) +# tile 582 (green / aquamarine) { ................ ................ @@ -12512,7 +12132,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 657 (yellowish brown / amber) +# tile 583 (yellowish brown / amber) { ................ ................ @@ -12531,7 +12151,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 658 (yellowish brown / topaz) +# tile 584 (yellowish brown / topaz) { ................ ................ @@ -12550,7 +12170,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 659 (black / jet) +# tile 585 (black / jet) { ................ ................ @@ -12569,7 +12189,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 660 (white / opal) +# tile 586 (white / opal) { ................ ................ @@ -12588,7 +12208,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 661 (yellow / chrysoberyl) +# tile 587 (yellow / chrysoberyl) { ................ ................ @@ -12607,7 +12227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 662 (red / garnet) +# tile 588 (red / garnet) { ................ ................ @@ -12626,7 +12246,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 663 (violet / amethyst) +# tile 589 (violet / amethyst) { ................ ................ @@ -12645,7 +12265,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 664 (red / jasper) +# tile 590 (red / jasper) { ................ ................ @@ -12664,7 +12284,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 665 (violet / fluorite) +# tile 591 (violet / fluorite) { ................ ................ @@ -12683,7 +12303,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 666 (black / obsidian) +# tile 592 (black / obsidian) { ................ ................ @@ -12702,7 +12322,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 667 (orange / agate) +# tile 593 (orange / agate) { ................ ................ @@ -12721,7 +12341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 668 (green / jade) +# tile 594 (green / jade) { ................ ................ @@ -12740,7 +12360,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 669 (white / worthless piece of white glass) +# tile 595 (white / worthless piece of white glass) { ................ ................ @@ -12759,7 +12379,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 670 (blue / worthless piece of blue glass) +# tile 596 (blue / worthless piece of blue glass) { ................ ................ @@ -12778,7 +12398,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 671 (red / worthless piece of red glass) +# tile 597 (red / worthless piece of red glass) { ................ ................ @@ -12797,7 +12417,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 672 (yellowish brown / worthless piece of yellowish brown glass) +# tile 598 (yellowish brown / worthless piece of yellowish brown glass) { ................ ................ @@ -12816,7 +12436,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 673 (orange / worthless piece of orange glass) +# tile 599 (orange / worthless piece of orange glass) { ................ ................ @@ -12835,7 +12455,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 674 (yellow / worthless piece of yellow glass) +# tile 600 (yellow / worthless piece of yellow glass) { ................ ................ @@ -12854,7 +12474,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 675 (black / worthless piece of black glass) +# tile 601 (black / worthless piece of black glass) { ................ ................ @@ -12873,7 +12493,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 676 (green / worthless piece of green glass) +# tile 602 (green / worthless piece of green glass) { ................ ................ @@ -12892,7 +12512,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 677 (violet / worthless piece of violet glass) +# tile 603 (violet / worthless piece of violet glass) { ................ ................ @@ -12911,7 +12531,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 678 (gray / luckstone) +# tile 604 (gray / luckstone) { ................ ................ @@ -12930,7 +12550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 679 (gray / healthstone) +# tile 605 (gray / healthstone) { ................ ................ @@ -12949,7 +12569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 680 (gray / loadstone) +# tile 606 (gray / loadstone) { ................ ................ @@ -12968,7 +12588,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 681 (gray / touchstone) +# tile 607 (gray / touchstone) { ................ ................ @@ -12987,7 +12607,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 682 (gray / whetstone) +# tile 608 (gray / whetstone) { ................ ................ @@ -13006,7 +12626,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 683 (gray / flint) +# tile 609 (gray / flint) { ................ ................ @@ -13025,7 +12645,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 684 (shiny / sling bullet) +# tile 610 (shiny / sling bullet) { ................ ................ @@ -13044,7 +12664,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 685 (rock) +# tile 611 (rock) { ................ ................ @@ -13063,7 +12683,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 686 (boulder) +# tile 612 (boulder) { ................ ................ @@ -13082,7 +12702,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 687 (statue) +# tile 613 (statue) { ................ ........JJ...... @@ -13101,7 +12721,7 @@ Z = (195, 195, 195) .....JJJJJJAA... ................ } -# tile 688 (heavy iron ball) +# tile 614 (heavy iron ball) { ................ ................ @@ -13120,7 +12740,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 689 (iron chain) +# tile 615 (iron chain) { ................ ................ @@ -13139,7 +12759,7 @@ Z = (195, 195, 195) ...........PP.PA ............AA.. } -# tile 690 (splash of venom / blinding venom) +# tile 616 (splash of venom / blinding venom) { ................ ................ @@ -13158,7 +12778,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 691 (splash of venom / acid venom) +# tile 617 (splash of venom / acid venom) { ................ ................ @@ -13177,7 +12797,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 692 (snowball) +# tile 618 (snowball) { ................ ................ From 375e79ca6cace82a87ee784f85111f7e99d15642 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 00:06:04 +0100 Subject: [PATCH 33/82] Make art rooms a bit more rare. From a 1 in 20 per room chance to 1 in 27. --- src/mklev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mklev.c b/src/mklev.c index 03192405c..4b6e931ec 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -1252,7 +1252,7 @@ makelevel() } /* Maybe decorate the walls */ - if (croom->rtype == OROOM && depth(&u.uz) > 1 && !rn2(20)) + if (croom->rtype == OROOM && depth(&u.uz) > 1 && !rn2(27)) croom->rtype = ARTROOM; skip_nonrogue: From c937f6ee4a46c6894a6202922449496a1a42758c Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 00:44:01 +0100 Subject: [PATCH 34/82] Consolidate the storage room level to a random themed room. I saw how this was done in SpliceHack and it seemed like a much better way to implement this. The room can appear more than once in the dungeon, and it doesn't take up an entire floor when it appears. --- dat/stor.des | 128 ----------------------------------- dat/vaults.des | 96 +++++++++++++++++++++++++- sys/unix/Makefile.dat | 2 - sys/unix/Makefile.top | 2 +- sys/winnt/Makefile.gcc | 3 - sys/winnt/Makefile.msc | 3 - util/lev_main.c | 1 - win/win32/vs2017/files.props | 2 - 8 files changed, 95 insertions(+), 142 deletions(-) delete mode 100644 dat/stor.des diff --git a/dat/stor.des b/dat/stor.des deleted file mode 100644 index 9b8d879a2..000000000 --- a/dat/stor.des +++ /dev/null @@ -1,128 +0,0 @@ -# -# Storage level -# - -LEVEL: "stor" - -ROOM: "ordinary", unlit, random, random, (4,4) { - OBJECT: '(', (2,2) - OBJECT: '(', (2,2) - CONTAINER: ('(', "chest"), (2,2) { - SWITCH [ 7 ] { - CASE 0: - OBJECT: '/' - OBJECT: '=' - OBJECT: '"' - ENGRAVING: (2,2), burn, "Begone! Keep Off! Shoo!" - BREAK - CASE 1: - OBJECT: '/' - OBJECT: '=' - OBJECT: ('=', "regeneration") - OBJECT: '*' - ENGRAVING: (2,2), burn, "Danger! Cursed Items! Do Not Touch!" - BREAK - CASE 2: - OBJECT: '/' - OBJECT: '=' - OBJECT: '/' - ENGRAVING: (2, 2), burn, "Property of the Wizard! Do Not Touch!" - BREAK - CASE 3: - OBJECT: '/' - OBJECT: ('[', "helmet") - OBJECT: '/' - OBJECT: ('[', "helmet") - OBJECT: ')' - OBJECT: ('[', "helmet") - OBJECT: ')' - OBJECT: ('[', "helmet") - OBJECT: ')' - OBJECT: ('[', "helmet") - OBJECT: ')' - OBJECT: ('[', "helmet") - OBJECT: ')' - OBJECT: ('[', "helmet") - OBJECT: ')' - OBJECT: ('[', "helmet") - ENGRAVING: (2,2), burn, "Army of Yendor armory annex. Trespassers will be shot." - BREAK - CASE 4: - OBJECT: '/' - OBJECT: '/' - OBJECT: ')' - OBJECT: ')' - OBJECT: '%' - OBJECT: '%' - OBJECT: '%' - OBJECT: '%' - ENGRAVING: (2,2), burn, "Mine, not yours. You touch, you're dead!" - BREAK - CASE 5: - OBJECT: '+' - OBJECT: '+' - OBJECT: '?' - OBJECT: '?' - OBJECT: '?' - ENGRAVING: (2,2), burn, "Property of the Dungeons of Doom municipal library. Do not remove." - BREAK - CASE 6: - OBJECT: (')', "elven broadsword") - OBJECT: (')', "elven dagger") - OBJECT: (')', "elven spear") - OBJECT: (')', "elven bow") - OBJECT: (')', "elven arrow") - OBJECT: (')', "elven arrow") - OBJECT: ('[', "elven helm") - OBJECT: ('[', "elven chain mail") - OBJECT: ('[', "elven cloak") - OBJECT: '*' - OBJECT: '*' - OBJECT: '*' - OBJECT: '*' - OBJECT: '*' - ENGRAVING:(2,2), burn, "A Elbereth Gilthoniel, silivren penna miriel, o menel aglar elenath!" - BREAK - DEFAULT: - BREAK - } - } - - # 3 traps for the storage room, deterrents.. - TRAP: random, random - TRAP: random, random - TRAP: random, random -} - -ROOM: "ordinary" , random, random, random, random { - STAIR: random, up - OBJECT: random, random - MONSTER: random, random, hostile -} - -ROOM: "ordinary" , random, random, random, random { - STAIR: random, down - OBJECT: random, random - TRAP: random, random - MONSTER: random, random, hostile -} - -ROOM: "ordinary" , random, random, random, random { - OBJECT: random, random - OBJECT: random, random - MONSTER: random, random, hostile -} - -ROOM: "ordinary" , random, random, random, random { - OBJECT: random, random - TRAP: random, random - MONSTER: random, random, hostile -} - -ROOM: "ordinary" , random, random, random, random { - OBJECT: random, random - TRAP: random, random - MONSTER: random, random, hostile -} - -RANDOM_CORRIDORS \ No newline at end of file diff --git a/dat/vaults.des b/dat/vaults.des index a1dff8009..6fbc55ccb 100644 --- a/dat/vaults.des +++ b/dat/vaults.des @@ -1230,7 +1230,7 @@ ROOM:"rndvault", random, random, random, random { TERRAIN:$fill, 'L' } -#Perimeter room +# Perimeter room LEVEL:"vlt-0073" FLAGS:rndvault MINDEPTH:8 @@ -1242,13 +1242,105 @@ ROOM:"rndvault", random, random, random, (5,5) { TERRAIN:rect(0, 0, 4, 4), $terr[0] } +# Storage room +LEVEL:"vlt-0074" +FLAGS:rndvault +MINDEPTH:8 + +ROOM:"rndvault", unlit, random, random, (4,4) { + OBJECT: '(', (2,2) + OBJECT: '(', (2,2) + + SWITCH [ 9 ] { + CASE 0: ENGRAVING: (2,2), burn, "Begone! Keep Off! Shoo!" + BREAK + CASE 1: ENGRAVING: (2,2), burn, "Danger! Cursed Items! Do Not Touch!" + BREAK + CASE 2: ENGRAVING: (2, 2), burn, "Property of the Wizard! Do Not Touch!" + BREAK + CASE 3: ENGRAVING: (2,2), burn, "Army of Yendor armory annex. Trespassers will be shot." + BREAK + CASE 4: ENGRAVING: (2,2), burn, "Mine, not yours. You touch, you're dead!" + BREAK + CASE 5: ENGRAVING: (2,2), burn, "Property of the Dungeons of Doom municipal library. Do not remove." + BREAK + CASE 6: ENGRAVING: (2,2), burn, "A Elbereth Gilthoniel, silivren penna miriel, o menel aglar elenath!" + BREAK + CASE 7: ENGRAVING: (2,2), burn, "Warning: Chest is Rigged to Explode." + BREAK + CASE 8: ENGRAVING: (2,2), burn, "Beware! A Unique Trap Guards This Chest!" + BREAK + CASE 9: ENGRAVING: (2,2), burn, "Get off this level ASAP! Whatever you do, do not touch these items! - A Friend" + BREAK + CASE 10: ENGRAVING: (2,2), burn, "elberethelberethelberethelberethelbzlx" + BREAK + } + + CONTAINER: ('(', "chest"), (2,2) { + SWITCH [ 7 ] { + CASE 0: + OBJECT: '/' + OBJECT: '=' + OBJECT: '"' + BREAK + CASE 1: + OBJECT: '/' + OBJECT: '=' + OBJECT: ('=', "regeneration") + OBJECT: '*' + BREAK + CASE 2: + OBJECT: '/' + OBJECT: '=' + OBJECT: '/' + BREAK + CASE 3: + LOOP [2] { OBJECT: '/' } + LOOP [8] { OBJECT: ('[', "helmet") } + LOOP [6] { OBJECT: ')' } + BREAK + CASE 4: + LOOP [2] { OBJECT: '/' } + LOOP [2] { OBJECT: ')' } + LOOP [4] { OBJECT: '%' } + BREAK + CASE 5: + LOOP [2] { OBJECT: '+' } + LOOP [2] { OBJECT: '?' } + BREAK + CASE 6: + OBJECT: (')', "elven broadsword") + OBJECT: (')', "elven dagger") + OBJECT: (')', "elven spear") + OBJECT: (')', "elven bow") + OBJECT: (')', "elven arrow") + OBJECT: (')', "elven arrow") + OBJECT: ('[', "elven helm") + OBJECT: ('[', "elven chain mail") + OBJECT: ('[', "elven cloak") + LOOP [5] { OBJECT: '*' } + BREAK + DEFAULT: + BREAK + } + } + + # traps for the storage room, deterrents.. + TRAP: random, random + TRAP: random, random + TRAP: random, random + [50%]: TRAP: random, random + + OBJECT:('%', "corpse"), random, montype:'@' +} + # Default room # Because this is the last room this will show up regardless of MINLEVEL # (At least that's what some testing revealed.) # We'll make this room add some color to the dungeon but no dangerous # lava or deep water pools. -LEVEL:"vlt-0074" +LEVEL:"vlt-0075" FLAGS:rndvault ROOM:"rndvault", random, random, random, (3,3) { $terr = TERRAIN: {'I', 'T', 't', 's', 'w', 'C', ',' } diff --git a/sys/unix/Makefile.dat b/sys/unix/Makefile.dat index 1d329956e..7645c30d4 100644 --- a/sys/unix/Makefile.dat +++ b/sys/unix/Makefile.dat @@ -154,7 +154,6 @@ spec_levs: ../util/lev_comp \ sea.des \ sokoban.des \ spiders.des \ - stor.des \ tomb.des \ tower.des \ town.des \ @@ -188,7 +187,6 @@ spec_levs: ../util/lev_comp \ ../util/lev_comp sea.des ../util/lev_comp sokoban.des ../util/lev_comp spiders.des - ../util/lev_comp stor.des ../util/lev_comp tomb.des ../util/lev_comp tower.des ../util/lev_comp town.des diff --git a/sys/unix/Makefile.top b/sys/unix/Makefile.top index 73cfebcd5..8f6d9c372 100644 --- a/sys/unix/Makefile.top +++ b/sys/unix/Makefile.top @@ -90,7 +90,7 @@ SPEC_LEVS = bigrm-*.lev castle-?.lev fakewiz?.lev hellfill.lev \ tower?.lev valley.lev giants.lev \ wizard?.lev astral.lev air.lev earth.lev fire.lev water.lev \ town-?.lev townfill.lev village.lev spiders.lev \ - rats-?.lev nymph.lev stor.lev cavepass.lev sea.lev \ + rats-?.lev nymph.lev cavepass.lev sea.lev \ cavenest.lev cavefill.lev cavebegn.lev caveend.lev \ tomb.lev mtemple.lev grund.lev blkmar.lev \ ozzy.lev qlawful.lev qneutral.lev qchaos.lev \ diff --git a/sys/winnt/Makefile.gcc b/sys/winnt/Makefile.gcc index 4179a0a00..1e7500e99 100644 --- a/sys/winnt/Makefile.gcc +++ b/sys/winnt/Makefile.gcc @@ -823,7 +823,6 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(DAT)/rats.des \ $(DAT)/sokoban.des \ $(DAT)/spiders.des \ - $(DAT)/stor.des \ $(DAT)/tomb.des \ $(DAT)/tower.des \ $(DAT)/town.des \ @@ -876,7 +875,6 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(subst /,\,$(U)levcomp $(DAT)/rats.des $(subst /,\,$(U)levcomp $(DAT)/sokoban.des) $(subst /,\,$(U)levcomp $(DAT)/spiders.des - $(subst /,\,$(U)levcomp $(DAT)/stor.des $(subst /,\,$(U)levcomp $(DAT)/tomb.des $(subst /,\,$(U)levcomp $(DAT)/tower.des) $(subst /,\,$(U)levcomp $(DAT)/ucastle.des) @@ -1387,7 +1385,6 @@ ifneq "$(W_DAT)" "" if exist $(W_DAT)\rats.lev del $(W_DAT)\rats.lev if exist $(W_DAT)\sanctum.lev del $(W_DAT)\sanctum.lev if exist $(W_DAT)\soko?-*.lev del $(W_DAT)\soko?-*.lev - if exist $(W_DAT)\stor-?.lev del $(W_DAT)\stor-?.lev if exist $(W_DAT)\tomb.lev del $(W_DAT)\tomb.lev if exist $(W_DAT)\tower?.lev del $(W_DAT)\tower?.lev if exist $(W_DAT)\townfill.lev del $(W_DAT)\townfill.lev diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index 072c44ae8..369049378 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -780,7 +780,6 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(DAT)\rats.des \ $(DAT)\sokoban.des \ $(DAT)\spiders.des \ - $(DAT)\stor.des \ $(DAT)\tomb.des \ $(DAT)\tower.des \ $(DAT)\town.des \ @@ -836,7 +835,6 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(U)levcomp sea.des $(U)levcomp sokoban.des $(U)levcomp spiders.des - $(U)levcomp stor.des $(U)levcomp tomb.des $(U)levcomp tower.des $(U)levcomp town.des @@ -1390,7 +1388,6 @@ spotless: clean if exist $(DAT)\rats-?.lev del $(DAT)\rats-?.lev if exist $(DAT)\sanctum.lev del $(DAT)\sanctum.lev if exist $(DAT)\soko?-*.lev del $(DAT)\soko?-*.lev - if exist $(DAT)\stor-?.lev del $(DAT)\stor-?.lev if exist $(DAT)\tomb.lev del $(DAT)\tomb.lev if exist $(DAT)\tower?.lev del $(DAT)\tower?.lev if exist $(DAT)\townfill.lev del $(DAT)\townfill.lev diff --git a/util/lev_main.c b/util/lev_main.c index 6fbf255dc..3a8aa4dd5 100644 --- a/util/lev_main.c +++ b/util/lev_main.c @@ -323,7 +323,6 @@ char **argv; ":dat:sokoban.des", ":dat:sea.des", ":dat:spiders.des", - ":dat:stor.des", ":dat:tomb.des", ":dat:tower.des", ":dat:town.des", diff --git a/win/win32/vs2017/files.props b/win/win32/vs2017/files.props index 7f3848589..e12038eca 100644 --- a/win/win32/vs2017/files.props +++ b/win/win32/vs2017/files.props @@ -77,7 +77,6 @@ - @@ -253,7 +252,6 @@ - From c50ed888be5753aa2d131bf0e59d8af9e1343307 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 00:55:00 +0100 Subject: [PATCH 35/82] Fix: Falling downstairs with lightsabers, removed extra code for locked lightsabers. --- src/do.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/do.c b/src/do.c index fc6ec6a94..087f4be98 100644 --- a/src/do.c +++ b/src/do.c @@ -2014,29 +2014,11 @@ boolean at_stairs, falling, portal; boolean secsaber = uswapwep && u.twoweap && is_lightsaber(uswapwep) && uswapwep->lamplit; if (mainsaber || secsaber) { - int lrole = rnl(20); - if (lrole + 5 < ACURR(A_DEX)) { - You("roll and dodge your tumbling energy sword%s.", (mainsaber && secsaber) ? "s" : ""); - } else { - You("come into contact with your energy sword%s.", - (mainsaber && secsaber && lrole >= ACURR(A_DEX)) ? "s" : ""); - if (mainsaber && lrole >= ACURR(A_DEX)) - losehp(dmgval(uwep, &youmonst), - "falling downstairs with a lit lightsaber", KILLED_BY); - if (secsaber && lrole >= ACURR(A_DEX)) - losehp(dmgval(uswapwep, &youmonst), - "falling downstairs with a lit lightsaber", KILLED_BY); - } - if (mainsaber) - lightsaber_deactivate(uwep, TRUE); - if (secsaber) - lightsaber_deactivate(uswapwep, TRUE); - } else { if (rnl(20) < ACURR(A_DEX)){ - You("hurriedly deactivate your energy sword%s.", + You("hurriedly deactivate your lightsaber%s.", (mainsaber && secsaber) ? "s" : ""); } else { - You("come into contact with your energy sword%s.", + You("come into contact with your lightsaber%s.", (mainsaber && secsaber) ? "s" : ""); if (mainsaber) losehp(dmgval(uwep, &youmonst), From 1ba0448a7cb55647494999a0ca860b5fca44b3f5 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 00:56:44 +0100 Subject: [PATCH 36/82] Raise levels of weeping eyes and burning eyes from 2 to 4. --- src/monst.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/monst.c b/src/monst.c index f26024228..733725040 100644 --- a/src/monst.c +++ b/src/monst.c @@ -741,14 +741,14 @@ NEARDATA struct permonst mons[] = { M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_NOTAKE | M1_REGEN, M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 0, 0, 3, CLR_BLUE), MON("weeping eye", S_EYE, /* SpliceHack */ - LVL(2, 1, 9, 10, 0), (G_GENO | 2), + LVL(4, 1, 9, 10, 0), (G_GENO | 2), A(ATTK(AT_NONE, AD_RUST, 0, 70), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0, M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_NOTAKE, M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 0, 0, 3, CLR_BROWN), MON("burning eye", S_EYE, - LVL(2, 1, 9, 10, 0), (G_NOHELL | G_GENO | 1), + LVL(4, 1, 9, 10, 0), (G_NOHELL | G_GENO | 1), A(ATTK(AT_NONE, AD_FIRE, 0, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_FIRE, MR_FIRE, From cb2ec0f783b1bdca5ab0e856e1c72a4b4762abf3 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 07:38:32 +0100 Subject: [PATCH 37/82] Imported rocket launchers, rockets, and grenade launchers in from SLASH'EM. Reduced the weights a bit and improved the performance of these items since they are fairly rare. --- include/objclass.h | 2 +- src/dothrow.c | 19 +- src/mthrowu.c | 14 +- src/objects.c | 10 +- src/objnam.c | 1 + src/weapon.c | 5 + src/zap.c | 2 +- win/share/monsters.txt | 1420 ++++++++++++++++++++-------------------- win/share/objects.txt | 1177 +++++++++++++++++---------------- 9 files changed, 1369 insertions(+), 1281 deletions(-) diff --git a/include/objclass.h b/include/objclass.h index 749301e5e..394c56d94 100644 --- a/include/objclass.h +++ b/include/objclass.h @@ -148,7 +148,7 @@ struct objclass { #define WP_BULLET 1 #define WP_SHELL 2 #define WP_ROCKET 3 -#define WP_BOMB 4 +#define WP_BOMB 4 #define oc_hitbon oc_oc1 /* weapons: "to hit" bonus */ #define w_acbon oc_oc2 /* weapons: ac bonus */ diff --git a/src/dothrow.c b/src/dothrow.c index 5697023b6..32fe38897 100644 --- a/src/dothrow.c +++ b/src/dothrow.c @@ -1790,7 +1790,12 @@ struct obj *oldslot; /* for thrown-and-return used with !fixinv */ arm_bomb(obj, TRUE); } } - + if (obj && thrownobj && obj->otyp == ROCKET) { + explode(bhitpos.x, bhitpos.y, ZT_SPELL(ZT_FIRE), + d(3, 8), WEAPON_CLASS, EXPL_FIERY); + thrownobj = (struct obj *) 0; + } + if (!thrownobj) { /* missile has already been handled */ if (tethered_weapon) @@ -2286,6 +2291,10 @@ register struct obj *obj; /* thrownobj or kickedobj or uwep */ /* arm_bomb(obj, TRUE); */ bomb_explode(obj, bhitpos.x, bhitpos.y, TRUE); return 1; + } else if (obj->otyp == ROCKET) { + explode(bhitpos.x, bhitpos.y, ZT_SPELL(ZT_FIRE), + d(3,8), WEAPON_CLASS, EXPL_FIERY); + return 1; } else { /* thrown non-ammo or applied polearm/grapnel */ if (otyp == BOOMERANG || obj->otyp == CHAKRAM) /* arbitrary */ tmp += 4; @@ -3029,6 +3038,10 @@ int otyp; return 22; case SNIPER_RIFLE: return 25; + case ROCKET_LAUNCHER: + return 20; + case GRENADE_LAUNCHER: + return 10; default: impossible("No firearm for firearm-range!"); return BOLT_LIM; @@ -3057,6 +3070,10 @@ int otyp; return 5; case HEAVY_MACHINE_GUN: return 8; + case ROCKET_LAUNCHER: + return -3; + case GRENADE_LAUNCHER: + return -1; default: impossible("No firearm for rate-of-fire!"); return 0; diff --git a/src/mthrowu.c b/src/mthrowu.c index f725f1f21..67bcc3a37 100644 --- a/src/mthrowu.c +++ b/src/mthrowu.c @@ -202,15 +202,19 @@ int x, y; bomb_explode(obj, bhitpos.x, bhitpos.y, FALSE); } } - - /* D: Detonate crossbow bolts from Hellfire if they hit */ - if (ohit && mwep && mwep->oartifact == ART_HELLFIRE - && is_ammo(obj) && ammo_and_launcher(obj, mwep)) { + if (obj->otyp == ROCKET) { if (cansee(bhitpos.x, bhitpos.y)) pline("%s explodes in a ball of fire!", Doname2(obj)); else You_hear("an explosion"); - + explode(bhitpos.x, bhitpos.y, ZT_MONSPELL(ZT_FIRE), + d(3, 8), WEAPON_CLASS, EXPL_FIERY); + create = 0; + } + + /* D: Detonate crossbow bolts from Hellfire if they hit */ + if (ohit && mwep && mwep->oartifact == ART_HELLFIRE + && is_ammo(obj) && ammo_and_launcher(obj, mwep)) { explode(bhitpos.x, bhitpos.y, -ZT_SPELL(ZT_FIRE), d(2, 6), WEAPON_CLASS, EXPL_FIERY); diff --git a/src/objects.c b/src/objects.c index 711ec66a9..1742bd645 100644 --- a/src/objects.c +++ b/src/objects.c @@ -413,11 +413,15 @@ GUN("sniper rifle", "broken crossbow", 0, 1, 1, 160, 1500, 4, WP_B GUN("shotgun", "broken crossbow", 0, 0, 1, 60, 200, 3, WP_SHELL, IRON, P_FIREARM, HI_METAL), /* Slash'EM */ GUN("auto shotgun", "strange broken crossbow", 0, 1, 1, 120, 1500, 1, WP_SHELL, IRON, P_FIREARM, HI_METAL), /* Slash'EM */ +GUN("rocket launcher", None, 1, 1, 0, 450, 3500, -2, WP_ROCKET, IRON, P_FIREARM, HI_METAL), +GUN("grenade launcher", None, 1, 1, 0, 55, 1500, -1, WP_BOMB, IRON, P_FIREARM, HI_METAL), + BULLET("bullet", "pellet", 1, 1, 1, 5, 20, 30, 0, WP_BULLET, P, IRON, -P_FIREARM, HI_METAL), /* Slash'EM */ BULLET("shotgun shell", "red tube", 1, 1, 2, 7, 30, 45, 0, WP_SHELL, P, IRON, -P_FIREARM, CLR_RED), /* Slash'EM */ -BULLET("fire bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, P_NONE, CLR_GREEN), /* Slash'EM */ -BULLET("sonic bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, P_NONE, CLR_BLACK), /* Slash'EM */ -BULLET("gas bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, P_NONE, CLR_ORANGE), /* Slash'EM */ +BULLET("rocket", None, 1, 0,100,450, 45, 60, 0, WP_ROCKET, P, IRON, -P_FIREARM, CLR_GREEN), +BULLET("fire bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, -P_FIREARM, CLR_GREEN), /* Slash'EM */ +BULLET("sonic bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, -P_FIREARM, CLR_BLACK), /* Slash'EM */ +BULLET("gas bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, -P_FIREARM, CLR_ORANGE), /* Slash'EM */ #undef P #undef S diff --git a/src/objnam.c b/src/objnam.c index fd379c5eb..d06ad7c9d 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -3442,6 +3442,7 @@ static const struct alt_spellings { { "handgun", PISTOL }, { "hand gun", PISTOL }, { "revolver", PISTOL }, + { "bazooka", ROCKET_LAUNCHER }, { "shell", SHOTGUN_SHELL }, { "hand grenade", FIRE_BOMB }, { "frag grenade", FIRE_BOMB }, diff --git a/src/weapon.c b/src/weapon.c index 9f41def3e..268cdd035 100644 --- a/src/weapon.c +++ b/src/weapon.c @@ -947,6 +947,7 @@ static NEARDATA const int rwep[] = { FIRE_BOMB, SONIC_BOMB, GAS_BOMB, + ROCKET, DWARVISH_SPEAR, ELVEN_SPEAR, SPEAR, @@ -1163,6 +1164,10 @@ struct monst *mtmp; propellor = (oselect(mtmp, AUTO_SHOTGUN)); if (!propellor) propellor = (oselect(mtmp, SHOTGUN)); + } else if ((objects[rwep[i]].w_ammotyp) == WP_ROCKET) { + propellor = (oselect(mtmp, ROCKET_LAUNCHER)); + } else if ((objects[rwep[i]].w_ammotyp) == WP_BOMB) { + propellor = (oselect(mtmp, GRENADE_LAUNCHER)); } break; } diff --git a/src/zap.c b/src/zap.c index d7b4d33d9..8fd106ce3 100644 --- a/src/zap.c +++ b/src/zap.c @@ -4344,7 +4344,7 @@ struct obj *otmp; if (!Deaf) pline("Kaboom!"); explode(x, y, ZT_MAGIC_MISSILE, - 20 + d(3 ,6), TRAP_EXPLODE, EXPL_MAGICAL); + 20 + d(3,6), TRAP_EXPLODE, EXPL_MAGICAL); deltrap(ttmp); newsym(x, y); } diff --git a/win/share/monsters.txt b/win/share/monsters.txt index 6cfdf5205..88490e599 100644 --- a/win/share/monsters.txt +++ b/win/share/monsters.txt @@ -1662,7 +1662,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 58 (dread eye) +# tile 86 (dread eye) { ................ ................ @@ -1681,7 +1681,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 86 (serval) +# tile 87 (serval) { ................ ................ @@ -1700,7 +1700,7 @@ Z = (195, 195, 195) .....HHHA.KHA... ................ } -# tile 87 (kitten) +# tile 88 (kitten) { ................ ................ @@ -1719,7 +1719,7 @@ Z = (195, 195, 195) ......CCA..CA... ................ } -# tile 88 (housecat) +# tile 89 (housecat) { ................ ................ @@ -1738,7 +1738,7 @@ Z = (195, 195, 195) .....CCA...CA... ................ } -# tile 89 (caterwaul) +# tile 90 (caterwaul) { ................ ................ @@ -1757,7 +1757,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 90 (jaguar) +# tile 91 (jaguar) { ................ ................ @@ -1776,7 +1776,7 @@ Z = (195, 195, 195) .....CCAA...CA.. ................ } -# tile 91 (lynx) +# tile 92 (lynx) { ................ ................ @@ -1795,7 +1795,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 92 (panther) +# tile 93 (panther) { ................ ................ @@ -1814,7 +1814,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 93 (werepanther) +# tile 94 (werepanther) { ................ ................ @@ -1833,7 +1833,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 94 (large cat) +# tile 95 (large cat) { ................ ................ @@ -1852,7 +1852,7 @@ Z = (195, 195, 195) .....CCAA...CA.. ................ } -# tile 95 (tiger) +# tile 96 (tiger) { ................ ................ @@ -1871,7 +1871,7 @@ Z = (195, 195, 195) .....CCAA..CCA.. ................ } -# tile 96 (weretiger) +# tile 97 (weretiger) { ................ ................ @@ -1890,7 +1890,7 @@ Z = (195, 195, 195) .....LLAA..LLA.. ................ } -# tile 97 (saber-toothed cat) +# tile 98 (saber-toothed cat) { ................ ................ @@ -1909,7 +1909,7 @@ Z = (195, 195, 195) .....KCAA..CKA.. ................ } -# tile 98 (lion) +# tile 99 (lion) { ................ ................ @@ -1928,7 +1928,7 @@ Z = (195, 195, 195) .....HKAA..HKA.. ................ } -# tile 99 (serpopard) +# tile 100 (serpopard) { .......HHHAJ.... ......HHJJAHH... @@ -1947,7 +1947,7 @@ Z = (195, 195, 195) .....HHAA....... ................ } -# tile 100 (fat cat) +# tile 101 (fat cat) { ................ ................ @@ -1966,7 +1966,7 @@ Z = (195, 195, 195) .....CCAAAAACA.. ................ } -# tile 101 (kamadan) +# tile 102 (kamadan) { ................ ........FGA..... @@ -1985,7 +1985,7 @@ Z = (195, 195, 195) ...CK.CKAAAACK.. ................ } -# tile 102 (saber-toothed tiger) +# tile 103 (saber-toothed tiger) { ................ ................ @@ -2004,7 +2004,7 @@ Z = (195, 195, 195) .....CCAA..CCA.. ................ } -# tile 103 (displacer beast) +# tile 104 (displacer beast) { ................ ........E....... @@ -2023,7 +2023,7 @@ Z = (195, 195, 195) ...AE.AE.EA.EA.. ................ } -# tile 104 (hellcat) +# tile 105 (hellcat) { ................ ................ @@ -2042,7 +2042,7 @@ Z = (195, 195, 195) .....DDAA..KDA.. ................ } -# tile 105 (jermlaine) +# tile 106 (jermlaine) { ................ ................ @@ -2061,7 +2061,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 106 (telamon) +# tile 107 (telamon) { ................ ................ @@ -2080,7 +2080,7 @@ Z = (195, 195, 195) ...UUUUUUUUUUU.. ................ } -# tile 107 (statue gargoyle) +# tile 108 (statue gargoyle) { ................ ...A..N.O..A.... @@ -2099,7 +2099,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 108 (galltrit) +# tile 109 (galltrit) { ................ ................ @@ -2118,7 +2118,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 109 (gremlin) +# tile 110 (gremlin) { ................ ................ @@ -2137,7 +2137,7 @@ Z = (195, 195, 195) ...GFA.FGA...... ................ } -# tile 110 (lava gremlin) +# tile 111 (lava gremlin) { ................ ................ @@ -2156,7 +2156,7 @@ Z = (195, 195, 195) ...DCA.CDA...... ................ } -# tile 111 (gargoyle) +# tile 112 (gargoyle) { ................ ................ @@ -2175,7 +2175,7 @@ Z = (195, 195, 195) ....PFA.FPA..... ................ } -# tile 112 (winged gargoyle) +# tile 113 (winged gargoyle) { ...K......K..... ...KJ....KJ..... @@ -2194,7 +2194,7 @@ Z = (195, 195, 195) ....PFA.FPA..... ................ } -# tile 113 (hobbit) +# tile 114 (hobbit) { ................ ................ @@ -2213,7 +2213,7 @@ Z = (195, 195, 195) ....LLL.LLL..... ................ } -# tile 114 (hobbit pickpocket) +# tile 115 (hobbit pickpocket) { ................ ................ @@ -2232,7 +2232,7 @@ Z = (195, 195, 195) ....LLL.LLL..... ................ } -# tile 115 (dwarf) +# tile 116 (dwarf) { ................ ................ @@ -2251,7 +2251,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 116 (dwarf thief) +# tile 117 (dwarf thief) { ................ ................ @@ -2270,7 +2270,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 117 (mountain dwarf) +# tile 118 (mountain dwarf) { ................ ................ @@ -2289,7 +2289,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 118 (dwarf noble) +# tile 119 (dwarf noble) { ................ ................ @@ -2308,7 +2308,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 119 (dwarf royal) +# tile 120 (dwarf royal) { ................ ................ @@ -2327,7 +2327,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 120 (duergar) +# tile 121 (duergar) { ................ ................ @@ -2346,7 +2346,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 121 (illithid) +# tile 122 (illithid) { ................ .......IIIIC.... @@ -2365,7 +2365,7 @@ Z = (195, 195, 195) ...EEECEEEAA.... ....IIC.IIA..... } -# tile 122 (deep one) +# tile 123 (deep one) { ................ ................ @@ -2384,7 +2384,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 123 (mind flayer) +# tile 124 (mind flayer) { ................ .......IIIIC.... @@ -2403,7 +2403,7 @@ Z = (195, 195, 195) ......CFFCAA.... ....IIC.IIA..... } -# tile 124 (planar pirate) +# tile 125 (planar pirate) { ................ .....HHCA....... @@ -2422,7 +2422,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 125 (deeper one) +# tile 126 (deeper one) { ................ ........J.J.J... @@ -2441,7 +2441,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 126 (master mind flayer) +# tile 127 (master mind flayer) { ................ .......IIIIC.... @@ -2460,7 +2460,7 @@ Z = (195, 195, 195) ...EEECEEEAA.... ....IIC.IIA..... } -# tile 127 (alhoon) +# tile 128 (alhoon) { ................ .......IIIIC.... @@ -2479,7 +2479,7 @@ Z = (195, 195, 195) ...EEECEEEAA.... ....IIC.IIA..... } -# tile 128 (deepest one) +# tile 129 (deepest one) { .....G.......... ....GGF.B.B.B... @@ -2498,7 +2498,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 129 (manes) +# tile 130 (manes) { ................ ................ @@ -2517,7 +2517,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 130 (lesser homunculus) +# tile 131 (lesser homunculus) { ................ ................ @@ -2536,7 +2536,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 131 (dretch) +# tile 132 (dretch) { ................ ................ @@ -2555,7 +2555,7 @@ Z = (195, 195, 195) ..AAANPAPN...... ................ } -# tile 132 (imp) +# tile 133 (imp) { ................ ................ @@ -2574,7 +2574,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 133 (homunculus) +# tile 134 (homunculus) { ................ ................ @@ -2593,7 +2593,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 134 (lemure) +# tile 135 (lemure) { ................ ................ @@ -2612,7 +2612,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 135 (rutterkin) +# tile 136 (rutterkin) { ................ ................ @@ -2631,7 +2631,7 @@ Z = (195, 195, 195) ...AABOAOB...... ................ } -# tile 136 (quasit) +# tile 137 (quasit) { ................ ................ @@ -2650,7 +2650,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 137 (tengu) +# tile 138 (tengu) { ................ .......PP....... @@ -2669,7 +2669,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 138 (greater homunculus) +# tile 139 (greater homunculus) { ................ ................ @@ -2688,7 +2688,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 139 (dust devil) +# tile 140 (dust devil) { ................ ....J.....J..... @@ -2707,7 +2707,7 @@ Z = (195, 195, 195) ....KKKK..K..... ................ } -# tile 140 (nupperibo) +# tile 141 (nupperibo) { ................ ................ @@ -2726,7 +2726,7 @@ Z = (195, 195, 195) ..A...AFAF...A.. ................ } -# tile 141 (redcap) +# tile 142 (redcap) { ................ ................ @@ -2745,7 +2745,7 @@ Z = (195, 195, 195) JA.LLAAAALLA.... ................ } -# tile 142 (blood imp) +# tile 143 (blood imp) { ................ ................ @@ -2764,7 +2764,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 143 (blue jelly) +# tile 144 (blue jelly) { ................ ................ @@ -2783,7 +2783,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 144 (spotted jelly) +# tile 145 (spotted jelly) { ................ ................ @@ -2802,7 +2802,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 145 (clear jelly) +# tile 146 (clear jelly) { ................ ................ @@ -2821,7 +2821,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 146 (ochre jelly) +# tile 147 (ochre jelly) { ................ ................ @@ -2840,7 +2840,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 147 (yellow jelly) +# tile 148 (yellow jelly) { ................ ................ @@ -2859,7 +2859,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 148 (orange jelly) +# tile 149 (orange jelly) { ................ ................ @@ -2878,7 +2878,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 149 (rancid jelly) +# tile 150 (rancid jelly) { ................ ................ @@ -2897,7 +2897,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 150 (kobold) +# tile 151 (kobold) { ................ ................ @@ -2916,7 +2916,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 151 (large kobold) +# tile 152 (large kobold) { ................ ................ @@ -2935,7 +2935,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 152 (kobold noble) +# tile 153 (kobold noble) { ................ ................ @@ -2954,7 +2954,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 153 (kobold shaman) +# tile 154 (kobold shaman) { ................ ................ @@ -2973,7 +2973,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 154 (swamp kobold) +# tile 155 (swamp kobold) { ................ ................ @@ -2992,7 +2992,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 155 (rock kobold) +# tile 156 (rock kobold) { ................ ................ @@ -3011,7 +3011,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 156 (kobold warrior) +# tile 157 (kobold warrior) { ................ ................ @@ -3030,7 +3030,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 157 (Kroo the Kobold King) +# tile 158 (Kroo the Kobold King) { ................ ................ @@ -3049,7 +3049,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 158 (leprechaun) +# tile 159 (leprechaun) { ................ ................ @@ -3068,7 +3068,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 159 (leprechaun wizard) +# tile 160 (leprechaun wizard) { ................ ................ @@ -3087,7 +3087,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 160 (small mimic) +# tile 161 (small mimic) { ................ ................ @@ -3106,7 +3106,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 161 (large mimic) +# tile 162 (large mimic) { ................ ................ @@ -3125,7 +3125,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 162 (giant mimic) +# tile 163 (giant mimic) { ................ ......NNO....... @@ -3144,7 +3144,7 @@ Z = (195, 195, 195) ...NNNO.NNOOA... ................ } -# tile 163 (nymph) +# tile 164 (nymph) { ................ ................ @@ -3163,7 +3163,7 @@ Z = (195, 195, 195) ....KJKJKJKJ.... ................ } -# tile 164 (wood nymph) +# tile 165 (wood nymph) { ................ ................ @@ -3182,7 +3182,7 @@ Z = (195, 195, 195) ....KJKJKJKJ.... ................ } -# tile 165 (water nymph) +# tile 166 (water nymph) { ................ ................ @@ -3201,7 +3201,7 @@ Z = (195, 195, 195) ....BPBPBPBP.... ................ } -# tile 166 (mountain nymph) +# tile 167 (mountain nymph) { ................ ................ @@ -3220,7 +3220,7 @@ Z = (195, 195, 195) ....OLOLOLOL.... ................ } -# tile 167 (ice nymph) +# tile 168 (ice nymph) { ................ ................ @@ -3239,7 +3239,7 @@ Z = (195, 195, 195) ....OLOLOLOL.... ................ } -# tile 168 (pixie) +# tile 169 (pixie) { ................ ................ @@ -3258,7 +3258,7 @@ Z = (195, 195, 195) .......AAAAAA... ................ } -# tile 169 (quickling) +# tile 170 (quickling) { ................ ................ @@ -3277,7 +3277,7 @@ Z = (195, 195, 195) ........A....... ................ } -# tile 170 (yuki-onna) +# tile 171 (yuki-onna) { ................ ................ @@ -3296,7 +3296,7 @@ Z = (195, 195, 195) ....ONONONON.... ................ } -# tile 171 (brownie) +# tile 172 (brownie) { ................ ................ @@ -3315,7 +3315,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 172 (lampad) +# tile 173 (lampad) { ................ ................ @@ -3334,7 +3334,7 @@ Z = (195, 195, 195) ....QRQRQRQR.... ................ } -# tile 173 (dream thief) +# tile 174 (dream thief) { ................ ................ @@ -3353,7 +3353,7 @@ Z = (195, 195, 195) ......AAEDEDAA.. .......AAAAAA... } -# tile 174 (thriae) +# tile 175 (thriae) { ................ ....OJ.......... @@ -3372,7 +3372,7 @@ Z = (195, 195, 195) ...AAAAACAAAA... .....AAAAAA..... } -# tile 175 (Aphrodite) +# tile 176 (Aphrodite) { ................ .........PCP.... @@ -3391,7 +3391,7 @@ Z = (195, 195, 195) ....OLOLOLOL.... ................ } -# tile 176 (goblin) +# tile 177 (goblin) { ................ ................ @@ -3410,7 +3410,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 177 (hobgoblin) +# tile 178 (hobgoblin) { ................ .....LK......... @@ -3429,7 +3429,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 178 (goblin shaman) +# tile 179 (goblin shaman) { ................ ................ @@ -3448,7 +3448,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 179 (goblin-captain) +# tile 180 (goblin-captain) { ................ ................ @@ -3467,7 +3467,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 180 (orc) +# tile 181 (orc) { ................ ................ @@ -3486,7 +3486,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 181 (hill orc) +# tile 182 (hill orc) { ................ ................ @@ -3505,7 +3505,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 182 (Mordor orc) +# tile 183 (Mordor orc) { ................ ................ @@ -3524,7 +3524,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 183 (Uruk-hai) +# tile 184 (Uruk-hai) { ................ ................ @@ -3543,7 +3543,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 184 (bugbear) +# tile 185 (bugbear) { ................ ................ @@ -3562,7 +3562,7 @@ Z = (195, 195, 195) ........CCA..... ................ } -# tile 185 (orc shaman) +# tile 186 (orc shaman) { ................ ................ @@ -3581,7 +3581,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 186 (orc-captain) +# tile 187 (orc-captain) { ................ ................ @@ -3600,7 +3600,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 187 (war orc) +# tile 188 (war orc) { ................ ..........P..... @@ -3619,7 +3619,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 188 (great orc) +# tile 189 (great orc) { .....O.......... ....NOP......... @@ -3638,7 +3638,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 189 (snow orc) +# tile 190 (snow orc) { ................ ................ @@ -3657,7 +3657,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 190 (demon orc) +# tile 191 (demon orc) { ................ ................ @@ -3676,7 +3676,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 191 (Grund the Orc King) +# tile 192 (Grund the Orc King) { ................ ...HAHAHA....... @@ -3695,7 +3695,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 192 (rock piercer) +# tile 193 (rock piercer) { .JKKKKKKKKJAAA.. ..JJGKGKJJAAAA.. @@ -3714,7 +3714,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 193 (iron piercer) +# tile 194 (iron piercer) { .BPPPPPPPP.AAA.. ..BBDPDP..AAAA.. @@ -3733,7 +3733,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 194 (glass piercer) +# tile 195 (glass piercer) { .NBBBBBBBBPAAA.. ..NNDBDBPPAAAA.. @@ -3752,7 +3752,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 195 (diamond piercer) +# tile 196 (diamond piercer) { .NNNNNNNNNOAAA.. ..NNDNDNOOAAAA.. @@ -3771,7 +3771,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 196 (god piercer) +# tile 197 (god piercer) { .NHHHHHHHHCAAA.. ..NNDHDHCCAAAA.. @@ -3790,7 +3790,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 197 (pig) +# tile 198 (pig) { ................ ................ @@ -3809,7 +3809,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 198 (lamb) +# tile 199 (lamb) { ................ ................ @@ -3828,7 +3828,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 199 (feral hog) +# tile 200 (feral hog) { ................ ................ @@ -3847,7 +3847,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 200 (sheep) +# tile 201 (sheep) { ................ ................ @@ -3866,7 +3866,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 201 (rothe) +# tile 202 (rothe) { ................ ...........K.... @@ -3885,7 +3885,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 202 (llama) +# tile 203 (llama) { ................ ................ @@ -3904,7 +3904,7 @@ Z = (195, 195, 195) ...OANAAAAAA.... ................ } -# tile 203 (goat) +# tile 204 (goat) { ................ ................ @@ -3923,7 +3923,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 204 (cow) +# tile 205 (cow) { ................ ................ @@ -3942,7 +3942,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 205 (black bear) +# tile 206 (black bear) { ................ ................ @@ -3961,7 +3961,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 206 (bull) +# tile 207 (bull) { ................ ................ @@ -3980,7 +3980,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 207 (leocrotta) +# tile 208 (leocrotta) { ................ ..A..A.......... @@ -3999,7 +3999,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 208 (landshark) +# tile 209 (landshark) { ................ ................ @@ -4018,7 +4018,7 @@ Z = (195, 195, 195) ....J.....J..... ................ } -# tile 209 (wumpus) +# tile 210 (wumpus) { ................ ............B... @@ -4037,7 +4037,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 210 (manticore) +# tile 211 (manticore) { .......M..M..... ........MOM..... @@ -4056,7 +4056,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 211 (mumak) +# tile 212 (mumak) { ................ ...........P.... @@ -4075,7 +4075,7 @@ Z = (195, 195, 195) PPPA............ .AA............. } -# tile 212 (chimera) +# tile 213 (chimera) { .............FD. ...........FFFFF @@ -4094,7 +4094,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 213 (grizzly bear) +# tile 214 (grizzly bear) { ................ ................ @@ -4113,7 +4113,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 214 (polar bear) +# tile 215 (polar bear) { ................ ................ @@ -4132,7 +4132,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 215 (werebear) +# tile 216 (werebear) { ................ ................ @@ -4151,7 +4151,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 216 (hippo) +# tile 217 (hippo) { ................ ................ @@ -4170,7 +4170,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 217 (titanothere) +# tile 218 (titanothere) { ................ ................ @@ -4189,7 +4189,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 218 (baluchitherium) +# tile 219 (baluchitherium) { ................ ................ @@ -4208,7 +4208,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 219 (hellbear) +# tile 220 (hellbear) { ................ ................ @@ -4227,7 +4227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 220 (mastodon) +# tile 221 (mastodon) { ................ ................ @@ -4246,7 +4246,7 @@ Z = (195, 195, 195) .......PPA...... ................ } -# tile 221 (woolly mammoth) +# tile 222 (woolly mammoth) { ................ ................ @@ -4265,7 +4265,7 @@ Z = (195, 195, 195) .......PPA...... ................ } -# tile 222 (juggernaut) +# tile 223 (juggernaut) { ................ ......P......... @@ -4284,7 +4284,7 @@ Z = (195, 195, 195) ..JKKA....AJKKAA ................ } -# tile 223 (Jumbo the Elephant) +# tile 224 (Jumbo the Elephant) { ................ ................ @@ -4303,7 +4303,7 @@ Z = (195, 195, 195) .BP...APPA...... ..PP...PP....... } -# tile 224 (catoblepas) +# tile 225 (catoblepas) { ................ ...A.BBB........ @@ -4322,7 +4322,7 @@ Z = (195, 195, 195) .........AA.AA.. ................ } -# tile 225 (rabbit) +# tile 226 (rabbit) { ................ ................ @@ -4341,7 +4341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 226 (hedgehog) +# tile 227 (hedgehog) { ................ ................ @@ -4360,7 +4360,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 227 (sewer rat) +# tile 228 (sewer rat) { ................ ................ @@ -4379,7 +4379,7 @@ Z = (195, 195, 195) .........JJA.... ................ } -# tile 228 (black rat) +# tile 229 (black rat) { ................ ................ @@ -4398,7 +4398,7 @@ Z = (195, 195, 195) .............A.. ................ } -# tile 229 (giant rat) +# tile 230 (giant rat) { ................ ................ @@ -4417,7 +4417,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 230 (pack rat) +# tile 231 (pack rat) { ................ ................ @@ -4436,7 +4436,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 231 (wererat) +# tile 232 (wererat) { ................ ................ @@ -4455,7 +4455,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 232 (rabid rat) +# tile 233 (rabid rat) { ................ ................ @@ -4474,7 +4474,7 @@ Z = (195, 195, 195) .OOOOOOOO.JJA... ................ } -# tile 233 (hellrat) +# tile 234 (hellrat) { ................ ....A......A.... @@ -4493,7 +4493,7 @@ Z = (195, 195, 195) ............JA.. ................ } -# tile 234 (enormous rat) +# tile 235 (enormous rat) { ................ ................ @@ -4512,7 +4512,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 235 (rodent of unusual size) +# tile 236 (rodent of unusual size) { ................ ................ @@ -4531,7 +4531,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 236 (skunk) +# tile 237 (skunk) { ................ ............AAA. @@ -4550,7 +4550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 237 (rabid rabbit) +# tile 238 (rabid rabbit) { ................ ................ @@ -4569,7 +4569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 238 (rock mole) +# tile 239 (rock mole) { ................ ................ @@ -4588,7 +4588,7 @@ Z = (195, 195, 195) AN.NAA.AA...AA.. .AAAA........... } -# tile 239 (woodchuck) +# tile 240 (woodchuck) { ................ ................ @@ -4607,7 +4607,7 @@ Z = (195, 195, 195) .....JJAAJJAA... ................ } -# tile 240 (giant badger) +# tile 241 (giant badger) { ................ ................ @@ -4626,7 +4626,7 @@ Z = (195, 195, 195) ......AJJAAK.... ................ } -# tile 241 (honey badger) +# tile 242 (honey badger) { ................ ................ @@ -4645,7 +4645,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 242 (cave spider) +# tile 243 (cave spider) { ................ ................ @@ -4664,7 +4664,7 @@ Z = (195, 195, 195) .....PAA.APA.... ................ } -# tile 243 (centipede) +# tile 244 (centipede) { ................ ................ @@ -4683,7 +4683,7 @@ Z = (195, 195, 195) ...B............ ................ } -# tile 244 (recluse spider) +# tile 245 (recluse spider) { ................ ................ @@ -4702,7 +4702,7 @@ Z = (195, 195, 195) .....KAA.AKA.... ................ } -# tile 245 (jumping spider) +# tile 246 (jumping spider) { ................ ................ @@ -4721,7 +4721,7 @@ Z = (195, 195, 195) .....PAA.APA.... ................ } -# tile 246 (barking spider) +# tile 247 (barking spider) { ................ ................ @@ -4740,7 +4740,7 @@ Z = (195, 195, 195) .....PAA.APA.... ................ } -# tile 247 (giant spider) +# tile 248 (giant spider) { ................ ................ @@ -4759,7 +4759,7 @@ Z = (195, 195, 195) .....JAA.AJA.... ................ } -# tile 248 (scorpion) +# tile 249 (scorpion) { ................ ................ @@ -4778,7 +4778,7 @@ Z = (195, 195, 195) .......JAAJA.... ................ } -# tile 249 (nickelpede) +# tile 250 (nickelpede) { ................ ................ @@ -4797,7 +4797,7 @@ Z = (195, 195, 195) ...BA........... ................ } -# tile 250 (phase spider) +# tile 251 (phase spider) { ................ ........P....... @@ -4816,7 +4816,7 @@ Z = (195, 195, 195) .....PAA.APA.... ................ } -# tile 251 (monstrous spider) +# tile 252 (monstrous spider) { ................ ................ @@ -4835,7 +4835,7 @@ Z = (195, 195, 195) .....RAA.ARA.... ................ } -# tile 252 (werespider) +# tile 253 (werespider) { ................ ................ @@ -4854,7 +4854,7 @@ Z = (195, 195, 195) .....LAA.ALA.... ................ } -# tile 253 (carrion crawler) +# tile 254 (carrion crawler) { ................ ................ @@ -4873,7 +4873,7 @@ Z = (195, 195, 195) ...HAHA......... ................ } -# tile 254 (giant scorpion) +# tile 255 (giant scorpion) { .......JJJJ..... .....JJJAKKJA... @@ -4892,7 +4892,7 @@ Z = (195, 195, 195) .A.DAAAJAAJA.J.. ...A....J..JA... } -# tile 255 (giant centipede) +# tile 256 (giant centipede) { ................ ................ @@ -4911,7 +4911,7 @@ Z = (195, 195, 195) ...B............ ................ } -# tile 256 (Girtab) +# tile 257 (Girtab) { ..AA.......AA... .A...AAAAA...A.. @@ -4930,7 +4930,7 @@ Z = (195, 195, 195) ..A.A.....A.A... ..A..A...A..A... } -# tile 257 (Shelob) +# tile 258 (Shelob) { ..EEA.....AEEA.. .EAA.POPOP..AEA. @@ -4949,7 +4949,7 @@ Z = (195, 195, 195) ..EAEAI.IAEAEA.. ..EA.EA.AEAAEA.. } -# tile 258 (lurker above) +# tile 259 (lurker above) { .AAAAAAAAAAAAAAA ...AAGFAAGFAAA.. @@ -4968,7 +4968,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 259 (trapper) +# tile 260 (trapper) { ................ ................ @@ -4987,7 +4987,7 @@ Z = (195, 195, 195) ...AAGFAAGFAAA.. .AAAAAAAAAAAAAAA } -# tile 260 (pony) +# tile 261 (pony) { ................ ................ @@ -5006,7 +5006,7 @@ Z = (195, 195, 195) .....LA...L..... ................ } -# tile 261 (lesser nightmare) +# tile 262 (lesser nightmare) { ................ ................ @@ -5025,7 +5025,7 @@ Z = (195, 195, 195) .....LA...L..... ................ } -# tile 262 (white unicorn) +# tile 263 (white unicorn) { ................ ..HP............ @@ -5044,7 +5044,7 @@ Z = (195, 195, 195) .....LA...L..... ................ } -# tile 263 (gray unicorn) +# tile 264 (gray unicorn) { ................ ..HP............ @@ -5063,7 +5063,7 @@ Z = (195, 195, 195) .....LA...L..... ................ } -# tile 264 (black unicorn) +# tile 265 (black unicorn) { ................ ..HP............ @@ -5082,7 +5082,7 @@ Z = (195, 195, 195) .....LP...L..... ................ } -# tile 265 (horse) +# tile 266 (horse) { ................ ................ @@ -5101,7 +5101,7 @@ Z = (195, 195, 195) .....LA....L.... ................ } -# tile 266 (greater nightmare) +# tile 267 (greater nightmare) { ................ ................ @@ -5120,7 +5120,7 @@ Z = (195, 195, 195) .....LA....L.... ................ } -# tile 267 (warhorse) +# tile 268 (warhorse) { ................ .....JJJ........ @@ -5139,7 +5139,7 @@ Z = (195, 195, 195) .....LC....LC... ................ } -# tile 268 (cauchemar) +# tile 269 (cauchemar) { ................ .....FFF........ @@ -5158,7 +5158,7 @@ Z = (195, 195, 195) .....LC....LC... ................ } -# tile 269 (selkie) +# tile 270 (selkie) { ................ .....FFF........ @@ -5177,7 +5177,7 @@ Z = (195, 195, 195) ....DDC...DDC... ................ } -# tile 270 (pegasus) +# tile 271 (pegasus) { ................ ................ @@ -5196,7 +5196,7 @@ Z = (195, 195, 195) ..CA..........CA ................ } -# tile 271 (greater pegasus) +# tile 272 (greater pegasus) { ................ ................ @@ -5216,7 +5216,7 @@ Z = (195, 195, 195) ................ } -# tile 272 (fog cloud) +# tile 273 (fog cloud) { .......P........ ....P..P........ @@ -5235,7 +5235,7 @@ Z = (195, 195, 195) ..P..P.P..P..... ................ } -# tile 273 (dust vortex) +# tile 274 (dust vortex) { ................ ................ @@ -5254,7 +5254,7 @@ Z = (195, 195, 195) ....KKKK..K..... ................ } -# tile 274 (ice vortex) +# tile 275 (ice vortex) { ................ ................ @@ -5273,7 +5273,7 @@ Z = (195, 195, 195) ....NNNN..N..... ................ } -# tile 275 (energy vortex) +# tile 276 (energy vortex) { ................ ................ @@ -5292,7 +5292,7 @@ Z = (195, 195, 195) ....EEEE..E..... ................ } -# tile 276 (steam vortex) +# tile 277 (steam vortex) { ................ ................ @@ -5311,7 +5311,7 @@ Z = (195, 195, 195) ....PPPP..P..... ................ } -# tile 277 (fire vortex) +# tile 278 (fire vortex) { ................ ................ @@ -5330,7 +5330,7 @@ Z = (195, 195, 195) ....DDDD..D..... ................ } -# tile 278 (antimatter vortex) +# tile 279 (antimatter vortex) { ................ ................ @@ -5349,7 +5349,7 @@ Z = (195, 195, 195) ....PPPP..P..... ................ } -# tile 279 (larva) +# tile 280 (larva) { ................ ................ @@ -5368,7 +5368,7 @@ Z = (195, 195, 195) ..........AAA... ................ } -# tile 280 (maggot) +# tile 281 (maggot) { ................ ................ @@ -5387,7 +5387,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 281 (dung worm) +# tile 282 (dung worm) { ................ ................ @@ -5406,7 +5406,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 282 (rot worm) +# tile 283 (rot worm) { ................ ................ @@ -5425,7 +5425,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 283 (baby long worm) +# tile 284 (baby long worm) { ................ ................ @@ -5444,7 +5444,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 284 (acid worm) +# tile 285 (acid worm) { ................ ................ @@ -5463,7 +5463,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 285 (bloodworm) +# tile 286 (bloodworm) { ................ ................ @@ -5482,7 +5482,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 286 (tunnel worm) +# tile 287 (tunnel worm) { ................ ................ @@ -5501,7 +5501,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 287 (giant leech) +# tile 288 (giant leech) { ................ ................ @@ -5520,7 +5520,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 288 (baby purple worm) +# tile 289 (baby purple worm) { ................ ................ @@ -5539,7 +5539,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 289 (long worm) +# tile 290 (long worm) { ................ ................ @@ -5558,7 +5558,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 290 (purple worm) +# tile 291 (purple worm) { ................ ................ @@ -5577,7 +5577,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 291 (neothelid) +# tile 292 (neothelid) { ................ ................ @@ -5596,7 +5596,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 292 (hellminth) +# tile 293 (hellminth) { ................ ................ @@ -5615,7 +5615,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 293 (grid bug) +# tile 294 (grid bug) { ................ ................ @@ -5634,7 +5634,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 294 (spark bug) +# tile 295 (spark bug) { ................ ........E....... @@ -5653,7 +5653,7 @@ Z = (195, 195, 195) ..I..AAAAAA..... ......AA.A...... } -# tile 295 (arc bug) +# tile 296 (arc bug) { .....EPE........ ...PBNNNBE...... @@ -5672,7 +5672,7 @@ Z = (195, 195, 195) ..D..AAAAAA..... ......AA.A...... } -# tile 296 (lightning bug) +# tile 297 (lightning bug) { ................ ................ @@ -5691,7 +5691,7 @@ Z = (195, 195, 195) ..F..AAAAAA..... ......AA.A...... } -# tile 297 (xan) +# tile 298 (xan) { ................ ................ @@ -5710,7 +5710,7 @@ Z = (195, 195, 195) ..G..AAAAAA..... ......AA.AA..... } -# tile 298 (yellow light) +# tile 299 (yellow light) { ................ ......NA........ @@ -5729,7 +5729,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 299 (black light) +# tile 300 (black light) { ................ ......AA........ @@ -5748,7 +5748,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 300 (ethereal light) +# tile 301 (ethereal light) { ................ ......PE........ @@ -5767,7 +5767,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 301 (will-o'-the-wisp) +# tile 302 (will-o'-the-wisp) { ................ ................ @@ -5786,7 +5786,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 302 (echidna) +# tile 303 (echidna) { ................ ................ @@ -5805,7 +5805,7 @@ Z = (195, 195, 195) ....CJKACJKA.... ................ } -# tile 303 (drop bear) +# tile 304 (drop bear) { ................ ................ @@ -5824,7 +5824,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 304 (platypus) +# tile 305 (platypus) { ................ ................ @@ -5843,7 +5843,7 @@ Z = (195, 195, 195) ....CCAACCAC.... ................ } -# tile 305 (wombat) +# tile 306 (wombat) { ................ ................ @@ -5862,7 +5862,7 @@ Z = (195, 195, 195) ....KCAA.KKAA... ................ } -# tile 306 (wallaby) +# tile 307 (wallaby) { ................ ................ @@ -5881,7 +5881,7 @@ Z = (195, 195, 195) ..KCAAAKKKKAA... ................ } -# tile 307 (koala) +# tile 308 (koala) { ................ ................ @@ -5900,7 +5900,7 @@ Z = (195, 195, 195) .....JJA.JJA.... ................ } -# tile 308 (wallaroo) +# tile 309 (wallaroo) { ................ ................ @@ -5919,7 +5919,7 @@ Z = (195, 195, 195) ..JKAAAJJJJAA... ................ } -# tile 309 (Tasmanian devil) +# tile 310 (Tasmanian devil) { ................ ................ @@ -5938,7 +5938,7 @@ Z = (195, 195, 195) .....CJA.CKA.... ................ } -# tile 310 (kangaroo) +# tile 311 (kangaroo) { ................ ......KAKA...... @@ -5957,7 +5957,7 @@ Z = (195, 195, 195) ..KJAAACJKCAA... ................ } -# tile 311 (couatl) +# tile 312 (couatl) { ................ ................ @@ -5976,7 +5976,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 312 (Aleax) +# tile 313 (Aleax) { ................ ......BBBB..I... @@ -5995,7 +5995,7 @@ Z = (195, 195, 195) ..BF.LLAALLAFB.. ................ } -# tile 313 (lamassu) +# tile 314 (lamassu) { ................ ..HHHH.......... @@ -6014,7 +6014,7 @@ Z = (195, 195, 195) .....HKAA..HKA.. ................ } -# tile 314 (Angel) +# tile 315 (Angel) { ................ ................ @@ -6033,7 +6033,7 @@ Z = (195, 195, 195) ....BNNNNNNP.... ................ } -# tile 315 (ki-rin) +# tile 316 (ki-rin) { ................ ................ @@ -6052,7 +6052,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 316 (movanic deva) +# tile 317 (movanic deva) { ................ ......BBBB..I... @@ -6071,7 +6071,7 @@ Z = (195, 195, 195) ..BF.LLAALLAFB.. ................ } -# tile 317 (eldritch ki-rin) +# tile 318 (eldritch ki-rin) { ................ ................ @@ -6090,7 +6090,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 318 (monadic deva) +# tile 319 (monadic deva) { ................ ......BBBB..I... @@ -6109,7 +6109,7 @@ Z = (195, 195, 195) ..BF.JJAAJJAFB.. ................ } -# tile 319 (astral deva) +# tile 320 (astral deva) { ................ ......BBBB..I... @@ -6128,7 +6128,7 @@ Z = (195, 195, 195) ..BF.HHPPHHPFB.. ................ } -# tile 320 (Archangel) +# tile 321 (Archangel) { ................ ................ @@ -6147,7 +6147,7 @@ Z = (195, 195, 195) ....BNNNNNNP.... ................ } -# tile 321 (Archon) +# tile 322 (Archon) { ................ ......OOOO...... @@ -6166,7 +6166,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 322 (Planetar) +# tile 323 (Planetar) { ................ ......BBBB..I... @@ -6185,7 +6185,7 @@ Z = (195, 195, 195) ..BF.FFAAFFAFB.. ................ } -# tile 323 (Solar) +# tile 324 (Solar) { ................ ......BBBB..I... @@ -6204,7 +6204,7 @@ Z = (195, 195, 195) ..BF.BBAABBAFB.. ................ } -# tile 324 (bat) +# tile 325 (bat) { ................ ................ @@ -6223,7 +6223,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 325 (giant bat) +# tile 326 (giant bat) { ................ ................ @@ -6242,7 +6242,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 326 (zoo bat) +# tile 327 (zoo bat) { ................ ......BBB....... @@ -6261,7 +6261,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 327 (rhumbat) +# tile 328 (rhumbat) { ................ ................ @@ -6280,7 +6280,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 328 (raven) +# tile 329 (raven) { ..AAAA...AAA.... .AAAAAA.AAA..... @@ -6299,7 +6299,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 329 (vampire bat) +# tile 330 (vampire bat) { ................ ................ @@ -6318,7 +6318,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 330 (hellbat) +# tile 331 (hellbat) { ................ ................ @@ -6337,7 +6337,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 331 (mongbat) +# tile 332 (mongbat) { ................ ................ @@ -6356,7 +6356,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 332 (athol) +# tile 333 (athol) { ................ ................ @@ -6375,7 +6375,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 333 (gaol bat) +# tile 334 (gaol bat) { .....BDBDB...... ....BAAAAAB..... @@ -6394,7 +6394,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 334 (mobat) +# tile 335 (mobat) { ................ ................ @@ -6413,7 +6413,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 335 (harpy) +# tile 336 (harpy) { ................ ......AAA....... @@ -6432,7 +6432,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 336 (phoenix) +# tile 337 (phoenix) { ................ ..............D. @@ -6451,7 +6451,7 @@ Z = (195, 195, 195) .........CDDD..C ........DC.H.I.. } -# tile 337 (byakhee) +# tile 338 (byakhee) { ................ ...........KKKK. @@ -6470,7 +6470,7 @@ Z = (195, 195, 195) ......K.AAAA.... .....AAAAAAAA... } -# tile 338 (nightgaunt) +# tile 339 (nightgaunt) { ................ ...........EEEE. @@ -6489,7 +6489,7 @@ Z = (195, 195, 195) ......E.AAAA.... .....AAAAAAAA... } -# tile 339 (centaur) +# tile 340 (centaur) { ................ ...KKA.......... @@ -6508,7 +6508,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 340 (plains centaur) +# tile 341 (plains centaur) { ................ ...KKA.......... @@ -6527,7 +6527,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 341 (forest centaur) +# tile 342 (forest centaur) { ................ ................ @@ -6546,7 +6546,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 342 (mountain centaur) +# tile 343 (mountain centaur) { ................ ................ @@ -6565,7 +6565,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 343 (pseudodragon) +# tile 344 (pseudodragon) { ................ .JKKJA.......... @@ -6584,7 +6584,7 @@ Z = (195, 195, 195) .JAAJJJJJAAA.... ................ } -# tile 344 (elder pseudodragon) +# tile 345 (elder pseudodragon) { ................ .JKKJA.......... @@ -6603,7 +6603,7 @@ Z = (195, 195, 195) .JAAJJJJJAAA.... ................ } -# tile 345 (ancient pseudodragon) +# tile 346 (ancient pseudodragon) { ................ .JKKJA.......... @@ -6622,7 +6622,7 @@ Z = (195, 195, 195) .JAAJJJJJAAA.... ................ } -# tile 346 (baby gray dragon) +# tile 347 (baby gray dragon) { ................ ................ @@ -6641,7 +6641,7 @@ Z = (195, 195, 195) .....BPAA..PPAA. ...........PAA.. } -# tile 347 (baby silver dragon) +# tile 348 (baby silver dragon) { ................ ................ @@ -6660,7 +6660,7 @@ Z = (195, 195, 195) .....PBAA..BBAA. ...........BAA.. } -# tile 348 (baby shimmering dragon) +# tile 349 (baby shimmering dragon) { .I.............. ...BBBBBBB.I.... @@ -6679,7 +6679,7 @@ Z = (195, 195, 195) B....BPAA..PPAAB .B.........PAAB. } -# tile 349 (baby deep dragon) +# tile 350 (baby deep dragon) { ................ ................ @@ -6698,7 +6698,7 @@ Z = (195, 195, 195) .....ONAA..NNAA. ...........NAA.. } -# tile 350 (baby red dragon) +# tile 351 (baby red dragon) { ................ ................ @@ -6717,7 +6717,7 @@ Z = (195, 195, 195) .....IDAA..DDAA. ...........DAA.. } -# tile 351 (baby white dragon) +# tile 352 (baby white dragon) { ................ ................ @@ -6736,7 +6736,7 @@ Z = (195, 195, 195) .....NOAA..OOAA. ...........OAA.. } -# tile 352 (baby orange dragon) +# tile 353 (baby orange dragon) { ................ ................ @@ -6755,7 +6755,7 @@ Z = (195, 195, 195) .....LCAA..CCAA. ...........CAA.. } -# tile 353 (baby violet dragon) +# tile 354 (baby violet dragon) { ................ ................ @@ -6774,7 +6774,7 @@ Z = (195, 195, 195) .....DIAA..IIAA. ...........IAA.. } -# tile 354 (baby black dragon) +# tile 355 (baby black dragon) { ................ ................ @@ -6793,7 +6793,7 @@ Z = (195, 195, 195) .....AAP...AAPP. ...........APP.. } -# tile 355 (baby blue dragon) +# tile 356 (baby blue dragon) { ................ ................ @@ -6812,7 +6812,7 @@ Z = (195, 195, 195) .....BEAA..EEAA. ...........EAA.. } -# tile 356 (baby green dragon) +# tile 357 (baby green dragon) { ................ ................ @@ -6831,7 +6831,7 @@ Z = (195, 195, 195) .....GFAA..FFAA. ...........FAA.. } -# tile 357 (baby gold dragon) +# tile 358 (baby gold dragon) { ................ ................ @@ -6850,7 +6850,7 @@ Z = (195, 195, 195) .....PHAA..DDAA. ...........DAA.. } -# tile 358 (baby sea dragon) +# tile 359 (baby sea dragon) { ................ ................ @@ -6869,7 +6869,7 @@ Z = (195, 195, 195) .....BEAA..EEAA. ...........EAA.. } -# tile 359 (baby yellow dragon) +# tile 360 (baby yellow dragon) { ................ ................ @@ -6888,7 +6888,7 @@ Z = (195, 195, 195) .....NHAA..HHAA. ...........HAA.. } -# tile 360 (gray dragon) +# tile 361 (gray dragon) { ......BBBPA..... .....NPNPPPA.... @@ -6907,7 +6907,7 @@ Z = (195, 195, 195) ....BPAA...PP.A. ........PPPP.A.. } -# tile 361 (silver dragon) +# tile 362 (silver dragon) { ......PPPBA..... .....OBOBBBA.... @@ -6926,7 +6926,7 @@ Z = (195, 195, 195) ....PBAA...BB.A. ........BBBB.A.. } -# tile 362 (shimmering dragon) +# tile 363 (shimmering dragon) { .I.BF.BBBPAFB... ..BF.NPNPPPAFB.I @@ -6945,7 +6945,7 @@ Z = (195, 195, 195) ....BPAA...PP.AB ........PPPP.AB. } -# tile 363 (deep dragon) +# tile 364 (deep dragon) { ......OOONA..... .....DNDNNNA.... @@ -6964,7 +6964,7 @@ Z = (195, 195, 195) ....ONAA...NNJA. ........NNNNJA.. } -# tile 364 (red dragon) +# tile 365 (red dragon) { ......IIIDA..... .....NDNDDDA.... @@ -6983,7 +6983,7 @@ Z = (195, 195, 195) ....IDAAJJJDDJA. ........DDDDJA.. } -# tile 365 (white dragon) +# tile 366 (white dragon) { ......NNNOA..... .....IOIOOOA.... @@ -7002,7 +7002,7 @@ Z = (195, 195, 195) ....NOAA...OOJA. ........OOOOJA.. } -# tile 366 (orange dragon) +# tile 367 (orange dragon) { ......LLLCA..... .....NCNCCCA.... @@ -7021,7 +7021,7 @@ Z = (195, 195, 195) ....LCAA.KKCCJA. ........CCCCJA.. } -# tile 367 (violet dragon) +# tile 368 (violet dragon) { ......DDDIA..... .....NINIIIA.... @@ -7040,7 +7040,7 @@ Z = (195, 195, 195) ....DIAA...IIJA. ...P....IIIIJA.. } -# tile 368 (black dragon) +# tile 369 (black dragon) { ......AAAA...... .....NANAAA..... @@ -7059,7 +7059,7 @@ Z = (195, 195, 195) ....AAPP...AAAP. ........AAAAA... } -# tile 369 (blue dragon) +# tile 370 (blue dragon) { ......BBBEA..... .....NENEEEA.... @@ -7078,7 +7078,7 @@ Z = (195, 195, 195) ....BEAA...EEJA. ...P....EEEEJA.. } -# tile 370 (green dragon) +# tile 371 (green dragon) { ......GGGFA..... .....NFNFFFA.... @@ -7097,7 +7097,7 @@ Z = (195, 195, 195) ....GFAA...FFJA. ........FFFFJA.. } -# tile 371 (gold dragon) +# tile 372 (gold dragon) { ......HHHDA..... .....OHOHHDA.... @@ -7116,7 +7116,7 @@ Z = (195, 195, 195) ....PDAA...HD.A. ........DDHD.A.. } -# tile 372 (sea dragon) +# tile 373 (sea dragon) { ......BBBEA..... .....NENEEEA.... @@ -7135,7 +7135,7 @@ Z = (195, 195, 195) ....BEAA...EEJA. ...P....EEEEJA.. } -# tile 373 (yellow dragon) +# tile 374 (yellow dragon) { ......NNNHA..... .....DHDHHHA.... @@ -7154,7 +7154,7 @@ Z = (195, 195, 195) ....NHAAJJJHHJA. ........HHHHJA.. } -# tile 374 (wyvern) +# tile 375 (wyvern) { ................ .FGGFA.......... @@ -7173,7 +7173,7 @@ Z = (195, 195, 195) .FAAFFFFFAAA.... ................ } -# tile 375 (hydra) +# tile 376 (hydra) { .......GFA...... ..DKA.HGGHA.BEA. @@ -7192,7 +7192,7 @@ Z = (195, 195, 195) .....AOA.OAA.... .....AA..AA..... } -# tile 376 (stalker) +# tile 377 (stalker) { ................ .......PPP...... @@ -7211,7 +7211,7 @@ Z = (195, 195, 195) .....PP..PP..... ................ } -# tile 377 (air elemental) +# tile 378 (air elemental) { ................ ...P.PPP..P..... @@ -7230,7 +7230,7 @@ Z = (195, 195, 195) ...PP.APPPA..... ................ } -# tile 378 (fire elemental) +# tile 379 (fire elemental) { ................ .H..LDDD........ @@ -7249,7 +7249,7 @@ Z = (195, 195, 195) ..LDDCADDDA..... ................ } -# tile 379 (earth elemental) +# tile 380 (earth elemental) { ..F............. ....CKKK..F..... @@ -7268,7 +7268,7 @@ Z = (195, 195, 195) ..CKKJAKKKA..... ................ } -# tile 380 (mud elemental) +# tile 381 (mud elemental) { ..I............. ....KJJJ..I..... @@ -7287,7 +7287,7 @@ Z = (195, 195, 195) ..KJJJAJJJA..... ................ } -# tile 381 (acid elemental) +# tile 382 (acid elemental) { ................ ...G.GGG..G..... @@ -7306,7 +7306,7 @@ Z = (195, 195, 195) ...GG.AGGGA..... ................ } -# tile 382 (ice elemental) +# tile 383 (ice elemental) { ................ ....PUUU..V..... @@ -7325,7 +7325,7 @@ Z = (195, 195, 195) ..PUUVAUUUA..... ................ } -# tile 383 (magma elemental) +# tile 384 (magma elemental) { ................ .H..LCCC........ @@ -7344,7 +7344,7 @@ Z = (195, 195, 195) ..LCCDACCCA..... ................ } -# tile 384 (water elemental) +# tile 385 (water elemental) { ................ ....PBBB..E..... @@ -7363,7 +7363,7 @@ Z = (195, 195, 195) ..PBBEABBBA..... ................ } -# tile 385 (lichen) +# tile 386 (lichen) { ................ ................ @@ -7382,7 +7382,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 386 (brown mold) +# tile 387 (brown mold) { ................ ................ @@ -7401,7 +7401,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 387 (yellow mold) +# tile 388 (yellow mold) { ................ ................ @@ -7420,7 +7420,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 388 (green mold) +# tile 389 (green mold) { ................ ................ @@ -7439,7 +7439,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 389 (red mold) +# tile 390 (red mold) { ................ ................ @@ -7459,7 +7459,7 @@ Z = (195, 195, 195) ................ } -# tile 390 (orange mold) +# tile 391 (orange mold) { ................ ................ @@ -7478,7 +7478,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 391 (shrieker) +# tile 392 (shrieker) { ................ ................ @@ -7497,7 +7497,7 @@ Z = (195, 195, 195) ...AAAAAAAAAA... ................ } -# tile 392 (violet fungus) +# tile 393 (violet fungus) { ................ ................ @@ -7516,7 +7516,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 393 (screamer) +# tile 394 (screamer) { ................ ................ @@ -7535,7 +7535,7 @@ Z = (195, 195, 195) ...AAAAAAAAAA... ................ } -# tile 394 (gray fungus) +# tile 395 (gray fungus) { ................ ................ @@ -7554,7 +7554,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 395 (black mold) +# tile 396 (black mold) { ................ ................ @@ -7573,7 +7573,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 396 (volatile mushroom) +# tile 397 (volatile mushroom) { ................ ................ @@ -7592,7 +7592,7 @@ Z = (195, 195, 195) ...AAAAAAAAAA... ................ } -# tile 397 (brown moldier) +# tile 398 (brown moldier) { ................ ................ @@ -7611,7 +7611,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 398 (yellow moldier) +# tile 399 (yellow moldier) { ................ ................ @@ -7630,7 +7630,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 399 (green moldier) +# tile 400 (green moldier) { ................ ................ @@ -7649,7 +7649,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 400 (red moldier) +# tile 401 (red moldier) { ................ ................ @@ -7668,7 +7668,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 401 (orange moldier) +# tile 402 (orange moldier) { ................ ................ @@ -7687,7 +7687,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 402 (gray moldier) +# tile 403 (gray moldier) { ................ ................ @@ -7706,7 +7706,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 403 (black moldier) +# tile 404 (black moldier) { ................ ................ @@ -7725,7 +7725,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 404 (dungeon fern) +# tile 405 (dungeon fern) { ..F............. ...AF.F......... @@ -7744,7 +7744,7 @@ Z = (195, 195, 195) ..FAAFGFAFGFAF.. ..FAAAFGFAFA.F.. } -# tile 405 (dungeon fern sprout) +# tile 406 (dungeon fern sprout) { ................ ................ @@ -7763,7 +7763,7 @@ Z = (195, 195, 195) ......FGFA...... ................ } -# tile 406 (dungeon fern spore) +# tile 407 (dungeon fern spore) { ................ ................ @@ -7782,7 +7782,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 407 (arctic fern) +# tile 408 (arctic fern) { ..N............. ...AN.N......... @@ -7801,7 +7801,7 @@ Z = (195, 195, 195) ..NAANBNANBNAN.. ..NAAANBNANA.N.. } -# tile 408 (arctic fern sprout) +# tile 409 (arctic fern sprout) { ................ ................ @@ -7820,7 +7820,7 @@ Z = (195, 195, 195) ......NBNA...... ................ } -# tile 409 (arctic fern spore) +# tile 410 (arctic fern spore) { ................ ................ @@ -7840,7 +7840,7 @@ Z = (195, 195, 195) ................ } -# tile 410 (blazing fern) +# tile 411 (blazing fern) { ..D............. ...AD.D......... @@ -7859,7 +7859,7 @@ Z = (195, 195, 195) ..DAADCDADCDAD.. ..DAAADCDADA.D.. } -# tile 411 (blazing fern sprout) +# tile 412 (blazing fern sprout) { ................ ................ @@ -7878,7 +7878,7 @@ Z = (195, 195, 195) ......DCDA...... ................ } -# tile 412 (blazing fern spore) +# tile 413 (blazing fern spore) { ................ ................ @@ -7897,7 +7897,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 413 (swamp fern) +# tile 414 (swamp fern) { ..D............. ...AD.D......... @@ -7916,7 +7916,7 @@ Z = (195, 195, 195) ..DAADIDADIDAD.. ..DAAADIDADA.D.. } -# tile 414 (swamp fern sprout) +# tile 415 (swamp fern sprout) { ................ ................ @@ -7935,7 +7935,7 @@ Z = (195, 195, 195) ......DIDA...... ................ } -# tile 415 (swamp fern spore) +# tile 416 (swamp fern spore) { ................ ................ @@ -7954,7 +7954,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 416 (fern spore) +# tile 417 (fern spore) { ................ ................ @@ -7974,7 +7974,7 @@ Z = (195, 195, 195) ................ } -# tile 417 (gnome) +# tile 418 (gnome) { ................ ................ @@ -7993,7 +7993,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 418 (gnome thief) +# tile 419 (gnome thief) { ................ ................ @@ -8012,7 +8012,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 419 (rock gnome) +# tile 420 (rock gnome) { ................ ................ @@ -8031,7 +8031,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 420 (gnome noble) +# tile 421 (gnome noble) { ................ ................ @@ -8050,7 +8050,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 421 (gnomish wizard) +# tile 422 (gnomish wizard) { ................ ................ @@ -8069,7 +8069,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 422 (gnomish psyker) +# tile 423 (gnomish psyker) { ................ ................ @@ -8088,7 +8088,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 423 (deep gnome) +# tile 424 (deep gnome) { ................ ................ @@ -8107,7 +8107,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 424 (gnome warrior) +# tile 425 (gnome warrior) { ................ ................ @@ -8126,7 +8126,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 425 (gnome royal) +# tile 426 (gnome royal) { ................ ................ @@ -8145,7 +8145,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 426 (Ruggo the Gnome King) +# tile 427 (Ruggo the Gnome King) { ................ ................ @@ -8164,7 +8164,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 427 (gnoll) +# tile 428 (gnoll) { ................ ................ @@ -8183,7 +8183,7 @@ Z = (195, 195, 195) .....CCACCAAAA.. ................ } -# tile 428 (gnoll warrior) +# tile 429 (gnoll warrior) { .........P...... ...K.PAJ.P...... @@ -8202,7 +8202,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 429 (gnoll chieftain) +# tile 430 (gnoll chieftain) { .........P...... ...K.BAJ.P...... @@ -8221,7 +8221,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 430 (gnoll shaman) +# tile 431 (gnoll shaman) { .........P...... ...K.NAK.P...... @@ -8240,7 +8240,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 431 (flind) +# tile 432 (flind) { ................ ................ @@ -8259,7 +8259,7 @@ Z = (195, 195, 195) ...CCACCAAAA.... ................ } -# tile 432 (marrashi) +# tile 433 (marrashi) { ................ ...H.HAH........ @@ -8278,7 +8278,7 @@ Z = (195, 195, 195) ....JJJJ........ ................ } -# tile 433 (giant) +# tile 434 (giant) { ......JJJJAA.... ....JJJJJJJJA... @@ -8297,7 +8297,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.CLLLKAA } -# tile 434 (stone giant) +# tile 435 (stone giant) { ......JJJJAA.... ....JJJJJJJJA... @@ -8316,7 +8316,7 @@ Z = (195, 195, 195) .....ALJACLJAAAA ...LLLLJ.CLLLKAA } -# tile 435 (hill giant shaman) +# tile 436 (hill giant shaman) { ......JJJJAA.... ....JJJJJJJJA... @@ -8335,7 +8335,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.LLLLKAA } -# tile 436 (hill giant) +# tile 437 (hill giant) { ......JJJJAA.... ....JJJJJJJJA... @@ -8354,7 +8354,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.LLLLKAA } -# tile 437 (fire giant) +# tile 438 (fire giant) { ....PPDDDDAA.... ....PDDDDDDDA... @@ -8373,7 +8373,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.LLLLKAA } -# tile 438 (frost giant) +# tile 439 (frost giant) { .....KJJJJAA.... ....KJJJJJJJA... @@ -8392,7 +8392,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.CLLLKAA } -# tile 439 (ettin) +# tile 440 (ettin) { ....NN..ONOP.... ..NNOOPNNOOPP... @@ -8411,7 +8411,7 @@ Z = (195, 195, 195) .....BPAABPAAAAA ...PPPPA.BPPPFAA } -# tile 440 (storm giant) +# tile 441 (storm giant) { ......JJJJAA.... ....JJJJJJJJA... @@ -8430,7 +8430,7 @@ Z = (195, 195, 195) .....CLJACCJAAAA ...LLLLJ.LLLLKAA } -# tile 441 (titan) +# tile 442 (titan) { .....AAAAAAA.... ....AALLLLAAA... @@ -8449,7 +8449,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.CLLLKAA } -# tile 442 (the Largest Giant) +# tile 443 (the Largest Giant) { ....JJJJJJJJA... ...JJLLLLLLJJA.. @@ -8468,7 +8468,7 @@ Z = (195, 195, 195) ...OLLLJAOLLCAAA ..LLLLLJAOLLLCAA } -# tile 443 (minotaur) +# tile 444 (minotaur) { ................ .O..........O... @@ -8487,7 +8487,7 @@ Z = (195, 195, 195) ....CLCACLCAAAAA ..LLLLL.LLLLLAA. } -# tile 444 (elder minotaur) +# tile 445 (elder minotaur) { ................ .O..........O... @@ -8506,7 +8506,7 @@ Z = (195, 195, 195) ....CLCACLCAAAAA ..LLLLL.LLLLLAA. } -# tile 445 (hecatoncheire) +# tile 446 (hecatoncheire) { .....AAAAAAA.... ....AAPPPPAAAAA. @@ -8525,7 +8525,7 @@ Z = (195, 195, 195) ..AAAVPWWAAWWPAA ..AAPPPWWAAPWWWA } -# tile 446 (Father Dagon) +# tile 447 (Father Dagon) { .....G.......... ....III.B.B.B... @@ -8544,7 +8544,7 @@ Z = (195, 195, 195) ...GFAGFAABA.... ..GGFAGFFABA.... } -# tile 447 (Mother Hydra) +# tile 448 (Mother Hydra) { .....G.......... ....DDD.B.B.B... @@ -8563,7 +8563,7 @@ Z = (195, 195, 195) ...GFAGFAABA.... ..GGFAGFFABA.... } -# tile 448 (snark) +# tile 449 (snark) { ................ ...DP........... @@ -8582,7 +8582,7 @@ Z = (195, 195, 195) ...IDAA..ID..... ................ } -# tile 449 (jabberwock) +# tile 450 (jabberwock) { ................ ...DP........... @@ -8601,7 +8601,7 @@ Z = (195, 195, 195) ...IDAA..ID..... ................ } -# tile 450 (boojum) +# tile 451 (boojum) { ................ ...DP........... @@ -8620,7 +8620,7 @@ Z = (195, 195, 195) ...IDAA..ID..... ................ } -# tile 451 (vorpal jabberwock) +# tile 452 (vorpal jabberwock) { ................ ...GP........... @@ -8639,7 +8639,7 @@ Z = (195, 195, 195) ...FGAA..FG..... ................ } -# tile 452 (Keystone Kop) +# tile 453 (Keystone Kop) { ................ ....AA.......... @@ -8658,7 +8658,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 453 (Kop Sergeant) +# tile 454 (Kop Sergeant) { ................ ....AA.......... @@ -8677,7 +8677,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 454 (Kop Lieutenant) +# tile 455 (Kop Lieutenant) { ................ ....AA.......... @@ -8696,7 +8696,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 455 (Kop Kaptain) +# tile 456 (Kop Kaptain) { ................ ....AA....C..... @@ -8715,7 +8715,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 456 (Kop Kommissioner) +# tile 457 (Kop Kommissioner) { ................ ....AA.......... @@ -8734,7 +8734,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 457 (lich) +# tile 458 (lich) { ................ ................ @@ -8753,7 +8753,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 458 (worm that walks) +# tile 459 (worm that walks) { ................ ...RRR.......... @@ -8772,7 +8772,7 @@ Z = (195, 195, 195) ......FFF..FF... FF............FF } -# tile 459 (demilich) +# tile 460 (demilich) { ................ ................ @@ -8791,7 +8791,7 @@ Z = (195, 195, 195) ......LLL....... ................ } -# tile 460 (eye of fear and flame) +# tile 461 (eye of fear and flame) { ................ ................ @@ -8810,7 +8810,7 @@ Z = (195, 195, 195) .......OO....... ................ } -# tile 461 (master lich) +# tile 462 (master lich) { ...H............ ...HCH.H........ @@ -8829,7 +8829,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 462 (arch-lich) +# tile 463 (arch-lich) { ................ ................ @@ -8848,7 +8848,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 463 (Vecna) +# tile 464 (Vecna) { ................ ................ @@ -8867,7 +8867,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 464 (kobold mummy) +# tile 465 (kobold mummy) { ................ ................ @@ -8886,7 +8886,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 465 (gnome mummy) +# tile 466 (gnome mummy) { ................ ................ @@ -8905,7 +8905,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 466 (orc mummy) +# tile 467 (orc mummy) { ................ ................ @@ -8924,7 +8924,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 467 (dwarf mummy) +# tile 468 (dwarf mummy) { ................ ................ @@ -8943,7 +8943,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 468 (hobbit mummy) +# tile 469 (hobbit mummy) { ................ ................ @@ -8962,7 +8962,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 469 (elf mummy) +# tile 470 (elf mummy) { ................ ................ @@ -8981,7 +8981,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 470 (human mummy) +# tile 471 (human mummy) { ................ ................ @@ -9000,7 +9000,7 @@ Z = (195, 195, 195) ..NNN.NNNA...... ................ } -# tile 471 (centaur mummy) +# tile 472 (centaur mummy) { ................ ................ @@ -9019,7 +9019,7 @@ Z = (195, 195, 195) ....MA...M...... ................ } -# tile 472 (ettin mummy) +# tile 473 (ettin mummy) { .....NN..ONOO... ...NNOOONNOOOO.. @@ -9038,7 +9038,7 @@ Z = (195, 195, 195) .....NOOANOOAAAA ...OOOOO.OOOOKAA } -# tile 473 (adherer) +# tile 474 (adherer) { ................ ................ @@ -9057,7 +9057,7 @@ Z = (195, 195, 195) ..VVV.VVVA...... ................ } -# tile 474 (giant mummy) +# tile 475 (giant mummy) { ......ONOOAA.... ....ONNNOOOOA... @@ -9076,7 +9076,7 @@ Z = (195, 195, 195) .....NOOANOOAAAA ...OOOOO.OOOOKAA } -# tile 475 (troll mummy) +# tile 476 (troll mummy) { ................ ....OOO......... @@ -9095,7 +9095,7 @@ Z = (195, 195, 195) ..OOA..OA....... ................ } -# tile 476 (red naga hatchling) +# tile 477 (red naga hatchling) { ................ ................ @@ -9114,7 +9114,7 @@ Z = (195, 195, 195) ....IIDDDDDA.... ................ } -# tile 477 (black naga hatchling) +# tile 478 (black naga hatchling) { ................ ................ @@ -9133,7 +9133,7 @@ Z = (195, 195, 195) ....AAAAAAAA.... ................ } -# tile 478 (golden naga hatchling) +# tile 479 (golden naga hatchling) { ................ ................ @@ -9152,7 +9152,7 @@ Z = (195, 195, 195) ....NNHHHHHA.... ................ } -# tile 479 (guardian naga hatchling) +# tile 480 (guardian naga hatchling) { ................ ................ @@ -9171,7 +9171,7 @@ Z = (195, 195, 195) ....GGFFFFFA.... ................ } -# tile 480 (red naga) +# tile 481 (red naga) { ................ ....KK.......... @@ -9190,7 +9190,7 @@ Z = (195, 195, 195) .....DDAA..DDA.. ..........DA.... } -# tile 481 (black naga) +# tile 482 (black naga) { ................ ....KK.......... @@ -9209,7 +9209,7 @@ Z = (195, 195, 195) .....AAPP..AAP.. ..........AP.... } -# tile 482 (golden naga) +# tile 483 (golden naga) { ................ ....KK.......... @@ -9228,7 +9228,7 @@ Z = (195, 195, 195) .....HHAA..HHA.. ..........HA.... } -# tile 483 (guardian naga) +# tile 484 (guardian naga) { ................ ....KK.......... @@ -9247,7 +9247,7 @@ Z = (195, 195, 195) .....FFAA..FFA.. ..........FA.... } -# tile 484 (ha-naga) +# tile 485 (ha-naga) { ................ ....KK.......... @@ -9266,7 +9266,7 @@ Z = (195, 195, 195) .....FFAA..FFA.. ..........FA.... } -# tile 485 (ogre) +# tile 486 (ogre) { ................ ................ @@ -9285,7 +9285,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 486 (ogre noble) +# tile 487 (ogre noble) { ................ ................ @@ -9304,7 +9304,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 487 (ogre mage) +# tile 488 (ogre mage) { ................ ................ @@ -9323,7 +9323,7 @@ Z = (195, 195, 195) ....KJJJKOAAAAAA ..OOOOO.OOOOOAA. } -# tile 488 (ogre royal) +# tile 489 (ogre royal) { ...H..C..H...... ...HDCHCDH...... @@ -9342,7 +9342,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 489 (shadow ogre) +# tile 490 (shadow ogre) { ................ ................ @@ -9361,7 +9361,7 @@ Z = (195, 195, 195) ....NFFFNOPPPPPP ..OOOOO.OOOOOPP. } -# tile 490 (gray ooze) +# tile 491 (gray ooze) { ................ ................ @@ -9380,7 +9380,7 @@ Z = (195, 195, 195) .........KCCCJ.. ................ } -# tile 491 (brown pudding) +# tile 492 (brown pudding) { ................ ................ @@ -9399,7 +9399,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 492 (green slime) +# tile 493 (green slime) { ................ ................ @@ -9418,7 +9418,7 @@ Z = (195, 195, 195) NGGFGGF..GF..... ..GGF..GGF..G... } -# tile 493 (blood pudding) +# tile 494 (blood pudding) { ................ ................ @@ -9437,7 +9437,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 494 (gel) +# tile 495 (gel) { ................ ................ @@ -9456,7 +9456,7 @@ Z = (195, 195, 195) ...........AAAAA ..............AA } -# tile 495 (moldy pudding) +# tile 496 (moldy pudding) { ................ ................ @@ -9475,7 +9475,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 496 (black pudding) +# tile 497 (black pudding) { ........A....... ........AA...... @@ -9495,7 +9495,7 @@ Z = (195, 195, 195) ..........AAAA.. } -# tile 497 (shoggoth) +# tile 498 (shoggoth) { ................ ................ @@ -9514,7 +9514,7 @@ Z = (195, 195, 195) .AAAAAAAAAAAAAA. ................ } -# tile 498 (giant shoggoth) +# tile 499 (giant shoggoth) { ....AAAAA....... ..AAAEEEAAA..... @@ -9533,7 +9533,7 @@ Z = (195, 195, 195) .AAAAAAAAAAAAEA. AAAAAAAAAAAAAAAA } -# tile 499 (scramper) +# tile 500 (scramper) { ................ ................ @@ -9552,7 +9552,7 @@ Z = (195, 195, 195) ..........AAA... ................ } -# tile 500 (squealer) +# tile 501 (squealer) { ................ ................ @@ -9571,7 +9571,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 501 (mangler) +# tile 502 (mangler) { ................ ......AO.AO..... @@ -9590,7 +9590,7 @@ Z = (195, 195, 195) APPPFANAAFFPAAOP ....ANP......... } -# tile 502 (quantum mechanic) +# tile 503 (quantum mechanic) { ................ ......LLLL...... @@ -9609,7 +9609,7 @@ Z = (195, 195, 195) ....NAAEBAANN... ................ } -# tile 503 (alchemist) +# tile 504 (alchemist) { ................ ......LLLL...... @@ -9628,7 +9628,7 @@ Z = (195, 195, 195) ....NAAEBAANN... ................ } -# tile 504 (genetic engineer) +# tile 505 (genetic engineer) { ................ ......LLLL...... @@ -9647,7 +9647,7 @@ Z = (195, 195, 195) ..AANAAEPAANN... ................ } -# tile 505 (rust monster) +# tile 506 (rust monster) { ................ ....EEEE........ @@ -9666,7 +9666,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 506 (disenchanter) +# tile 507 (disenchanter) { ................ ....PPPP........ @@ -9685,7 +9685,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 507 (garter snake) +# tile 508 (garter snake) { ................ ................ @@ -9704,7 +9704,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 508 (snake) +# tile 509 (snake) { ................ ................ @@ -9723,7 +9723,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 509 (water moccasin) +# tile 510 (water moccasin) { ................ ................ @@ -9742,7 +9742,7 @@ Z = (195, 195, 195) .....AAAAA...... ................ } -# tile 510 (python) +# tile 511 (python) { ................ ................ @@ -9761,7 +9761,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 511 (pit viper) +# tile 512 (pit viper) { ................ ................ @@ -9780,7 +9780,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 512 (cobra) +# tile 513 (cobra) { ................ ................ @@ -9799,7 +9799,7 @@ Z = (195, 195, 195) .....AAAAAAAAA.. ................ } -# tile 513 (cerastes) +# tile 514 (cerastes) { ................ ..M..M.......... @@ -9818,7 +9818,7 @@ Z = (195, 195, 195) ......FSFF...... ................ } -# tile 514 (asphynx) +# tile 515 (asphynx) { ................ ................ @@ -9837,7 +9837,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 515 (king cobra) +# tile 516 (king cobra) { ................ ................ @@ -9856,7 +9856,7 @@ Z = (195, 195, 195) .....AAAAAAAAA.. ................ } -# tile 516 (weresnake) +# tile 517 (weresnake) { ................ ................ @@ -9875,7 +9875,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 517 (amphisbaena) +# tile 518 (amphisbaena) { ................ ................ @@ -9894,7 +9894,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 518 (giant anaconda) +# tile 519 (giant anaconda) { ................ ................ @@ -9913,7 +9913,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 519 (troll) +# tile 520 (troll) { ................ ..AAAAAA........ @@ -9932,7 +9932,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 520 (ice troll) +# tile 521 (ice troll) { ................ ..OONOOO........ @@ -9951,7 +9951,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 521 (rock troll) +# tile 522 (rock troll) { ................ ...AAAAA........ @@ -9970,7 +9970,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 522 (two-headed troll) +# tile 523 (two-headed troll) { ................ .AAAAAAAAAA..... @@ -9989,7 +9989,7 @@ Z = (195, 195, 195) ..CJA..KA....... ................ } -# tile 523 (water troll) +# tile 524 (water troll) { ................ ...AAAAA........ @@ -10008,7 +10008,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 524 (grave troll) +# tile 525 (grave troll) { ................ ..FFFFFF........ @@ -10027,7 +10027,7 @@ Z = (195, 195, 195) ..UPA..UA....... ................ } -# tile 525 (Olog-hai) +# tile 526 (Olog-hai) { ...PPPPP........ ..PPAAAPP....... @@ -10046,7 +10046,7 @@ Z = (195, 195, 195) ..AAA.AAA....... ................ } -# tile 526 (cave troll) +# tile 527 (cave troll) { ................ ..AAAAAA........ @@ -10065,7 +10065,7 @@ Z = (195, 195, 195) ..CKA..CA....... ................ } -# tile 527 (black troll) +# tile 528 (black troll) { ................ ..NNNNNN........ @@ -10084,7 +10084,7 @@ Z = (195, 195, 195) ..EAP..EP....... ................ } -# tile 528 (umber hulk) +# tile 529 (umber hulk) { ................ ...AAAAA........ @@ -10103,7 +10103,7 @@ Z = (195, 195, 195) .AAAP..AAP...... ................ } -# tile 529 (umbral hulk) +# tile 530 (umbral hulk) { AAAA.....AAAAAAA AAA.AAAAA.AAAAAA @@ -10122,7 +10122,7 @@ Z = (195, 195, 195) A.AAA...AAA.AAAA AA....A....AAAAA } -# tile 530 (hunger hulk) +# tile 531 (hunger hulk) { ................ ...DDDDJ........ @@ -10141,7 +10141,7 @@ Z = (195, 195, 195) .DDJA..DDJA..... ................ } -# tile 531 (slumber hulk) +# tile 532 (slumber hulk) { ................ ...BBBBB........ @@ -10160,7 +10160,7 @@ Z = (195, 195, 195) .BBBA..BBA...... ................ } -# tile 532 (water hulk) +# tile 533 (water hulk) { ................ ...EEEEE........ @@ -10179,7 +10179,7 @@ Z = (195, 195, 195) .EEEA..EEA...... ................ } -# tile 533 (shambling horror) +# tile 534 (shambling horror) { ................ ...AAAAA........ @@ -10198,7 +10198,7 @@ Z = (195, 195, 195) .AAAP..AAP...... ................ } -# tile 534 (vampiric) +# tile 535 (vampiric) { ................ ................ @@ -10217,7 +10217,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 535 (vampire) +# tile 536 (vampire) { ................ ................ @@ -10236,7 +10236,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 536 (vampire noble) +# tile 537 (vampire noble) { ................ .....AAAA....... @@ -10255,7 +10255,7 @@ Z = (195, 195, 195) .N..AAPP..AP.... ................ } -# tile 537 (vampire royal) +# tile 538 (vampire royal) { ................ .....AAAA....... @@ -10274,7 +10274,7 @@ Z = (195, 195, 195) .N..AAPP..AP.... ................ } -# tile 538 (fire vampire) +# tile 539 (fire vampire) { ................ ....PHP..PP..... @@ -10293,7 +10293,7 @@ Z = (195, 195, 195) ................ AAAAAAAAAAAAAAAA } -# tile 539 (vampire mage) +# tile 540 (vampire mage) { ................ ................ @@ -10312,7 +10312,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 540 (star vampire) +# tile 541 (star vampire) { ................ ......KP....P... @@ -10331,7 +10331,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 541 (nosferatu) +# tile 542 (nosferatu) { ................ ................ @@ -10350,7 +10350,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 542 (Vlad the Impaler) +# tile 543 (Vlad the Impaler) { ................ ..N..AAAA....... @@ -10369,7 +10369,7 @@ Z = (195, 195, 195) ..N.AAPP..AP.... ................ } -# tile 543 (barrow wight) +# tile 544 (barrow wight) { ................ ................ @@ -10388,7 +10388,7 @@ Z = (195, 195, 195) .J.....LLAA..... ................ } -# tile 544 (wight) +# tile 545 (wight) { ................ ................ @@ -10407,7 +10407,7 @@ Z = (195, 195, 195) .......OOAA..... ................ } -# tile 545 (wraith) +# tile 546 (wraith) { ................ ................ @@ -10426,7 +10426,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 546 (bodak) +# tile 547 (bodak) { ......OOO....... .....OHOHO...... @@ -10445,7 +10445,7 @@ Z = (195, 195, 195) ......VAVA...... ................ } -# tile 547 (banshee) +# tile 548 (banshee) { .....BBB........ ....BANNB....... @@ -10464,7 +10464,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 548 (slaughter wight) +# tile 549 (slaughter wight) { ................ ................ @@ -10483,7 +10483,7 @@ Z = (195, 195, 195) ....F.AAAJAD.... .....JADAAAA.... } -# tile 549 (Nazgul) +# tile 550 (Nazgul) { ................ ................ @@ -10502,7 +10502,7 @@ Z = (195, 195, 195) ......PPPPA..... ................ } -# tile 550 (xorn) +# tile 551 (xorn) { ................ ................ @@ -10521,7 +10521,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 551 (lemur) +# tile 552 (lemur) { ................ ................ @@ -10540,7 +10540,7 @@ Z = (195, 195, 195) .......ARRRRAAA. ......ARARAARAA. } -# tile 552 (monkey) +# tile 553 (monkey) { ................ ................ @@ -10559,7 +10559,7 @@ Z = (195, 195, 195) .....JJA.JJA.... ................ } -# tile 553 (baby owlbear) +# tile 554 (baby owlbear) { ................ ....K.....K..... @@ -10578,7 +10578,7 @@ Z = (195, 195, 195) ...PJPJAJPJPA... ................ } -# tile 554 (ape) +# tile 555 (ape) { ................ ................ @@ -10597,7 +10597,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 555 (owlbear) +# tile 556 (owlbear) { ................ ....K.....K..... @@ -10616,7 +10616,7 @@ Z = (195, 195, 195) ...PJPJAJPJPA... ................ } -# tile 556 (yeti) +# tile 557 (yeti) { ................ ....BNNN........ @@ -10635,7 +10635,7 @@ Z = (195, 195, 195) ..BNNA..NNA..... ................ } -# tile 557 (carnivorous ape) +# tile 558 (carnivorous ape) { ................ ................ @@ -10654,7 +10654,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 558 (sasquatch) +# tile 559 (sasquatch) { ................ ....CCCCC....... @@ -10673,7 +10673,7 @@ Z = (195, 195, 195) .CJJJKACKJJKA... ................ } -# tile 559 (zruty) +# tile 560 (zruty) { ................ ......FFGF...... @@ -10692,7 +10692,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 560 (kobold zombie) +# tile 561 (kobold zombie) { ................ ................ @@ -10711,7 +10711,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 561 (gnome zombie) +# tile 562 (gnome zombie) { ................ ................ @@ -10730,7 +10730,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 562 (orc zombie) +# tile 563 (orc zombie) { ................ ................ @@ -10749,7 +10749,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 563 (dwarf zombie) +# tile 564 (dwarf zombie) { ................ ................ @@ -10768,7 +10768,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 564 (hobbit zombie) +# tile 565 (hobbit zombie) { ................ ................ @@ -10787,7 +10787,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 565 (elf zombie) +# tile 566 (elf zombie) { ................ ................ @@ -10806,7 +10806,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 566 (human zombie) +# tile 567 (human zombie) { ......AAA....... .....FFGAA...... @@ -10825,7 +10825,7 @@ Z = (195, 195, 195) ....GGAGGA...... ................ } -# tile 567 (draugr) +# tile 568 (draugr) { ................ ....O........... @@ -10844,7 +10844,7 @@ Z = (195, 195, 195) ......JJJ....... ................ } -# tile 568 (gnoll witherling) +# tile 569 (gnoll witherling) { ................ ................ @@ -10863,7 +10863,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 569 (centaur zombie) +# tile 570 (centaur zombie) { ................ ...FGA.......... @@ -10882,7 +10882,7 @@ Z = (195, 195, 195) ....GA...G...... ................ } -# tile 570 (ettin zombie) +# tile 571 (ettin zombie) { ....NN..ONOP.... ..NNOOPNNOOPP... @@ -10901,7 +10901,7 @@ Z = (195, 195, 195) .....GFAAGFAAAAA ...FFFFA.GFFFFAA } -# tile 571 (giant zombie) +# tile 572 (giant zombie) { ......JJJJAA.... ....JJJJJJJJA... @@ -10921,7 +10921,7 @@ Z = (195, 195, 195) ...GFFAAGFFFAAAA } -# tile 572 (ghoul) +# tile 573 (ghoul) { ......AAA....... .....OOOAA...... @@ -10940,7 +10940,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 573 (vomitous ghoul) +# tile 574 (vomitous ghoul) { ......AAA....... .....OOOAA...... @@ -10959,7 +10959,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 574 (skeletal pirate) +# tile 575 (skeletal pirate) { ................ ......OOA....... @@ -10978,7 +10978,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 575 (ghast) +# tile 576 (ghast) { ......AAA....... .....OOOAA...... @@ -10997,7 +10997,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 576 (ghoul mage) +# tile 577 (ghoul mage) { ......NO........ .....NOOO....... @@ -11016,7 +11016,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 577 (skeleton) +# tile 578 (skeleton) { ................ ................ @@ -11035,7 +11035,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 578 (revenant) +# tile 579 (revenant) { ................ ................ @@ -11054,7 +11054,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 579 (gug) +# tile 580 (gug) { ................ ................ @@ -11073,7 +11073,7 @@ Z = (195, 195, 195) ......OOLA...... ................ } -# tile 580 (ghoul queen) +# tile 581 (ghoul queen) { ......NO........ .....HHHH....... @@ -11092,7 +11092,7 @@ Z = (195, 195, 195) ...OOOA.OOA..... ................ } -# tile 581 (dragon zombie) +# tile 582 (dragon zombie) { ......JJJIA..... .....NFNFFIA.... @@ -11111,7 +11111,7 @@ Z = (195, 195, 195) ....JFAAJJJFFJA. ........FFFFJA.. } -# tile 582 (droid) +# tile 583 (droid) { ...A.AAAAAA..... ..AOAPUPUPUA.... @@ -11130,7 +11130,7 @@ Z = (195, 195, 195) AMYMA.......AYMA AAAAA.......AAAA } -# tile 583 (straw golem) +# tile 584 (straw golem) { ......LJ........ ......LJHJ...... @@ -11149,7 +11149,7 @@ Z = (195, 195, 195) ....HALA.AHAAL.. ..........L..... } -# tile 584 (paper golem) +# tile 585 (paper golem) { ................ .......OA....... @@ -11168,7 +11168,7 @@ Z = (195, 195, 195) ....OOA...OOA... ................ } -# tile 585 (wax golem) +# tile 586 (wax golem) { ................ .........PA..... @@ -11187,7 +11187,7 @@ Z = (195, 195, 195) .PA.NOAA..NNAPA. ..PPNOA...OPPA.. } -# tile 586 (plastic golem) +# tile 587 (plastic golem) { ................ ................ @@ -11206,7 +11206,7 @@ Z = (195, 195, 195) .....CA...CA.... ................ } -# tile 587 (rope golem) +# tile 588 (rope golem) { ................ ................ @@ -11225,7 +11225,7 @@ Z = (195, 195, 195) ...O.A....OAA... ....OA.......... } -# tile 588 (gold golem) +# tile 589 (gold golem) { ................ ......HNH....... @@ -11244,7 +11244,7 @@ Z = (195, 195, 195) H...HNC.AHNC.A.H ..H............. } -# tile 589 (leather golem) +# tile 590 (leather golem) { ......KKKK...... .....KHKHJ...... @@ -11263,7 +11263,7 @@ Z = (195, 195, 195) ...KJJA..KJJA... ....KA....KA.... } -# tile 590 (wood golem) +# tile 591 (wood golem) { ................ ......KCKJ...... @@ -11282,7 +11282,7 @@ Z = (195, 195, 195) ....KCKJAKCKJA.. ................ } -# tile 591 (flesh golem) +# tile 592 (flesh golem) { ................ ................ @@ -11301,7 +11301,7 @@ Z = (195, 195, 195) ..LLDDD..DDDDD.. ................ } -# tile 592 (clay golem) +# tile 593 (clay golem) { ................ ................ @@ -11320,7 +11320,7 @@ Z = (195, 195, 195) ..CKKKA.CKKKAA.. ................ } -# tile 593 (stone golem) +# tile 594 (stone golem) { ................ ................ @@ -11339,7 +11339,7 @@ Z = (195, 195, 195) ...PPAA.PPPA.... ................ } -# tile 594 (glass golem) +# tile 595 (glass golem) { ................ .....BBBBBBA.... @@ -11358,7 +11358,7 @@ Z = (195, 195, 195) ..BNPA....NPAA.. ...BA.....BPA... } -# tile 595 (iron golem) +# tile 596 (iron golem) { ................ ......PBP....... @@ -11377,7 +11377,7 @@ Z = (195, 195, 195) ....PBP.APBP.A.. ................ } -# tile 596 (snow golem) +# tile 597 (snow golem) { ................ .....BBBBBBA.... @@ -11397,7 +11397,7 @@ Z = (195, 195, 195) ...BA.....BPA... } -# tile 597 (ruby golem) +# tile 598 (ruby golem) { ................ ......CDC....... @@ -11416,7 +11416,7 @@ Z = (195, 195, 195) ....CDK.ACDK.A.. ................ } -# tile 598 (diamond golem) +# tile 599 (diamond golem) { ................ ......ONO....... @@ -11435,7 +11435,7 @@ Z = (195, 195, 195) ....ONO.AONO.A.. ................ } -# tile 599 (sapphire golem) +# tile 600 (sapphire golem) { ................ ......BEB....... @@ -11454,7 +11454,7 @@ Z = (195, 195, 195) ....BEB.ABEB.A.. ................ } -# tile 600 (steel golem) +# tile 601 (steel golem) { ................ ......PBP....... @@ -11473,7 +11473,7 @@ Z = (195, 195, 195) ....PBP.APBP.A.. ................ } -# tile 601 (crystal golem) +# tile 602 (crystal golem) { ................ ......OLO....... @@ -11492,7 +11492,7 @@ Z = (195, 195, 195) ....OLO.AOLO.A.. ................ } -# tile 602 (human) +# tile 603 (human) { ................ ................ @@ -11511,7 +11511,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 603 (peasant) +# tile 604 (peasant) { ................ ................ @@ -11530,7 +11530,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 604 (miner) +# tile 605 (miner) { ................ ................ @@ -11549,7 +11549,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 605 (mugger) +# tile 606 (mugger) { ................ ................ @@ -11568,7 +11568,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 606 (bandit) +# tile 607 (bandit) { ................ ................ @@ -11587,7 +11587,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 607 (street thug) +# tile 608 (street thug) { ................ ................ @@ -11606,7 +11606,7 @@ Z = (195, 195, 195) ....JJA.JJA..... ................ } -# tile 608 (prison guard) +# tile 609 (prison guard) { ................ .....BBPPPAA.... @@ -11625,7 +11625,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ....BPPP.BPPPAAA } -# tile 609 (wererat) +# tile 610 (wererat) { ................ ................ @@ -11644,7 +11644,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 610 (werejackal) +# tile 611 (werejackal) { ................ ................ @@ -11663,7 +11663,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 611 (werewolf) +# tile 612 (werewolf) { ................ ................ @@ -11682,7 +11682,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 612 (werepanther) +# tile 613 (werepanther) { ................ ................ @@ -11701,7 +11701,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (champion) +# tile 614 (champion) { ................ ................ @@ -11720,7 +11720,7 @@ Z = (195, 195, 195) .....LLA.PPPJA.. ..........PPA... } -# tile 614 (agent) +# tile 615 (agent) { ................ ................ @@ -11739,7 +11739,7 @@ Z = (195, 195, 195) .....RRR.RRR.... ................ } -# tile 615 (elf) +# tile 616 (elf) { ................ .........G...... @@ -11758,7 +11758,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 616 (Woodland-elf) +# tile 617 (Woodland-elf) { ................ ................ @@ -11777,7 +11777,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (Green-elf) +# tile 618 (Green-elf) { ................ ................ @@ -11796,7 +11796,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (weretiger) +# tile 619 (weretiger) { ................ ................ @@ -11815,7 +11815,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 619 (Grey-elf) +# tile 620 (Grey-elf) { ................ ................ @@ -11834,7 +11834,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 620 (gibberling) +# tile 621 (gibberling) { ................ ................ @@ -11853,7 +11853,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 621 (werebear) +# tile 622 (werebear) { ................ ................ @@ -11872,7 +11872,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 622 (weresnake) +# tile 623 (weresnake) { ................ ................ @@ -11891,7 +11891,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 623 (werespider) +# tile 624 (werespider) { ................ ................ @@ -11910,7 +11910,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 624 (street thug leader) +# tile 625 (street thug leader) { ................ ................ @@ -11929,7 +11929,7 @@ Z = (195, 195, 195) .....AAA.AAA.... ................ } -# tile 625 (elven noble) +# tile 626 (elven noble) { ................ ................ @@ -11948,7 +11948,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 626 (grimlock) +# tile 627 (grimlock) { ................ ................ @@ -11967,7 +11967,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 627 (elven wizard) +# tile 628 (elven wizard) { ................ ................ @@ -11986,7 +11986,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 628 (elven royal) +# tile 629 (elven royal) { ................ ................ @@ -12005,7 +12005,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 629 (doppelganger) +# tile 630 (doppelganger) { ................ ......CCCC..I... @@ -12024,7 +12024,7 @@ Z = (195, 195, 195) ..CD.LLAALLADC.. ................ } -# tile 630 (shopkeeper) +# tile 631 (shopkeeper) { ................ ................ @@ -12043,7 +12043,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 631 (One-eyed Sam) +# tile 632 (One-eyed Sam) { ................ ................ @@ -12062,7 +12062,7 @@ Z = (195, 195, 195) ....KKKKCKCK.... ................ } -# tile 632 (guard) +# tile 633 (guard) { ................ .....BBPPPAA.... @@ -12081,7 +12081,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ....BPPP.BPPPAAA } -# tile 633 (prisoner) +# tile 634 (prisoner) { ................ ................ @@ -12100,7 +12100,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 634 (Oracle) +# tile 635 (Oracle) { ................ ................ @@ -12119,7 +12119,7 @@ Z = (195, 195, 195) ....LELLLLELAA.. ................ } -# tile 635 (aligned priest) +# tile 636 (aligned priest) { ................ INI............. @@ -12138,7 +12138,7 @@ Z = (195, 195, 195) .JACCCJJCCCAA... ................ } -# tile 636 (high priest) +# tile 637 (high priest) { .INI............ IIIII.KCCK...... @@ -12157,7 +12157,7 @@ Z = (195, 195, 195) ..HACCCJJCCCAA.. ................ } -# tile 637 (soldier) +# tile 638 (soldier) { .....J.......... .....JAAA....... @@ -12176,7 +12176,7 @@ Z = (195, 195, 195) .....JJ.JJ...... ................ } -# tile 638 (sergeant) +# tile 639 (sergeant) { .....J.......... .....JFFF....... @@ -12195,7 +12195,7 @@ Z = (195, 195, 195) .....AA.AA...... ................ } -# tile 639 (stormtrooper) +# tile 640 (stormtrooper) { .....AAAAAA..... ....AVNNNNNA.... @@ -12214,7 +12214,7 @@ Z = (195, 195, 195) ...AAVNNNNAA.A.. ...ANAAVNNNNANA. } -# tile 640 (nurse) +# tile 641 (nurse) { ................ .......NO....... @@ -12234,7 +12234,7 @@ Z = (195, 195, 195) ................ } -# tile 641 (lieutenant) +# tile 642 (lieutenant) { ................ .......FFF...... @@ -12253,7 +12253,7 @@ Z = (195, 195, 195) .....AA.AA...... ................ } -# tile 642 (captain) +# tile 643 (captain) { ................ ......FHHF...... @@ -12272,7 +12272,7 @@ Z = (195, 195, 195) .....AA.AAAAA... ................ } -# tile 643 (general) +# tile 644 (general) { ................ ......FHHF...... @@ -12291,7 +12291,7 @@ Z = (195, 195, 195) .....AA.AAAAA... ................ } -# tile 644 (watchman) +# tile 645 (watchman) { ................ ......PPP....... @@ -12310,7 +12310,7 @@ Z = (195, 195, 195) ....JJJ.JJJ..... ................ } -# tile 645 (watch captain) +# tile 646 (watch captain) { ......PPP....... .....PHHHP...... @@ -12329,7 +12329,7 @@ Z = (195, 195, 195) ....JJJ.JJJ..... ................ } -# tile 646 (Medusa) +# tile 647 (Medusa) { ................ ..GA...GA....... @@ -12348,7 +12348,7 @@ Z = (195, 195, 195) ..IIKIKIKIA..... ................ } -# tile 647 (Wizard of Yendor) +# tile 648 (Wizard of Yendor) { .EEE.......EEE.. EFFAE..E..EAFFE. @@ -12367,7 +12367,7 @@ Z = (195, 195, 195) .EEEEEEEEEEEAAA. EEEEEEEEEEEEEEA. } -# tile 648 (Croesus) +# tile 649 (Croesus) { ....H..H..H..... ....HCHEHCH..... @@ -12386,7 +12386,7 @@ Z = (195, 195, 195) .GIIIKJJKKIIIGG. ................ } -# tile 649 (Charon) +# tile 650 (Charon) { ................ .......J........ @@ -12405,7 +12405,7 @@ Z = (195, 195, 195) .JJJJJJJJJJJAAA. JJJJJJJJJJJJJJA. } -# tile 650 (Rat King) +# tile 651 (Rat King) { ................ ................ @@ -12424,7 +12424,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 651 (shadow) +# tile 652 (shadow) { ................ ...........A.... @@ -12443,7 +12443,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 652 (ghost) +# tile 653 (ghost) { ................ ................ @@ -12462,7 +12462,7 @@ Z = (195, 195, 195) .O...P....P..... ........P....... } -# tile 653 (spectre) +# tile 654 (spectre) { ................ ................ @@ -12481,7 +12481,7 @@ Z = (195, 195, 195) .O...P....P..... ........P....... } -# tile 654 (shade) +# tile 655 (shade) { ................ ................ @@ -12500,7 +12500,7 @@ Z = (195, 195, 195) AAAA.AAAAJA..... ................ } -# tile 655 (water demon) +# tile 656 (water demon) { ................ ................ @@ -12519,7 +12519,7 @@ Z = (195, 195, 195) ....EEAEEA...... ................ } -# tile 656 (lava demon) +# tile 657 (lava demon) { ................ ................ @@ -12538,7 +12538,7 @@ Z = (195, 195, 195) ....CCACCA...... ................ } -# tile 657 (succubus) +# tile 658 (succubus) { DD.OHHD......... DDOHHDGD........ @@ -12557,7 +12557,7 @@ Z = (195, 195, 195) ....DDAA..DDAA.. ...DDJA...DDDA.. } -# tile 658 (incubus) +# tile 659 (incubus) { DD.OHHD......... DDOHHDGD........ @@ -12576,7 +12576,7 @@ Z = (195, 195, 195) ...DDKAA..DDAA.. ..DDKAA...DDDA.. } -# tile 659 (horned devil) +# tile 660 (horned devil) { ................ ................ @@ -12595,7 +12595,7 @@ Z = (195, 195, 195) ..CDDAA.DDK..... ................ } -# tile 660 (erinys) +# tile 661 (erinys) { ..GA...GA....... ...FA.FA..GA.... @@ -12614,7 +12614,7 @@ Z = (195, 195, 195) ..BBEBEBEBA..... ................ } -# tile 661 (barbed devil) +# tile 662 (barbed devil) { ................ ................ @@ -12633,7 +12633,7 @@ Z = (195, 195, 195) .CCDDAA.DDKK.... ................ } -# tile 662 (spined devil) +# tile 663 (spined devil) { ................ ................ @@ -12652,7 +12652,7 @@ Z = (195, 195, 195) ..CODAA.DOK..... ................ } -# tile 663 (marilith) +# tile 664 (marilith) { .D..HHH.....D... DD.HHHHHA...DD.. @@ -12671,7 +12671,7 @@ Z = (195, 195, 195) ..FGFFFFFFFFFA.. ....GFFFFFFAA... } -# tile 664 (vrock) +# tile 665 (vrock) { ................ ......OPP.O..... @@ -12690,7 +12690,7 @@ Z = (195, 195, 195) .....DDA.DDA.... ................ } -# tile 665 (bearded devil) +# tile 666 (bearded devil) { ................ ................ @@ -12709,7 +12709,7 @@ Z = (195, 195, 195) ..CDDAA.DDK..... ................ } -# tile 666 (hezrou) +# tile 667 (hezrou) { ................ ................ @@ -12728,7 +12728,7 @@ Z = (195, 195, 195) ...........FFFA. ................ } -# tile 667 (bar-lgura) +# tile 668 (bar-lgura) { ................ ................ @@ -12747,7 +12747,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 668 (bone devil) +# tile 669 (bone devil) { ................ ................ @@ -12766,7 +12766,7 @@ Z = (195, 195, 195) ..NOOAA.OOL..... ................ } -# tile 669 (armanite) +# tile 670 (armanite) { ................ ..N..N.......... @@ -12785,7 +12785,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 670 (damned pirate) +# tile 671 (damned pirate) { ................ ......O.O....... @@ -12804,7 +12804,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 671 (ice devil) +# tile 672 (ice devil) { ................ ................ @@ -12823,7 +12823,7 @@ Z = (195, 195, 195) ..BNNAA.NNP..... ................ } -# tile 672 (chasme) +# tile 673 (chasme) { ................ ................ @@ -12842,7 +12842,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 673 (nalfeshnee) +# tile 674 (nalfeshnee) { ................ ................ @@ -12861,7 +12861,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 674 (spibrawulf) +# tile 675 (spibrawulf) { ................ ................ @@ -12880,7 +12880,7 @@ Z = (195, 195, 195) .AAALOAA.AOA.... ................ } -# tile 675 (sandestin) +# tile 676 (sandestin) { .....CCCCC..I... .I..CD....C..... @@ -12899,7 +12899,7 @@ Z = (195, 195, 195) .CD.DDAADDDADC.. ................ } -# tile 676 (babau) +# tile 677 (babau) { ...P............ ....P........... @@ -12918,7 +12918,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 677 (pit fiend) +# tile 678 (pit fiend) { ................ .K.O.......O.K.. @@ -12937,7 +12937,7 @@ Z = (195, 195, 195) ...CDDAA.DDK.... ................ } -# tile 678 (nabassu) +# tile 679 (nabassu) { ...K......K..... ...KJ....KJ..... @@ -12956,7 +12956,7 @@ Z = (195, 195, 195) ....BFA.FBA..... ................ } -# tile 679 (weredemon) +# tile 680 (weredemon) { ................ ................ @@ -12975,7 +12975,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 680 (balrog) +# tile 681 (balrog) { ................ .K..O.....O..K.. @@ -12994,7 +12994,7 @@ Z = (195, 195, 195) ..CDDDAA.DDDK.AA ................ } -# tile 681 (Juiblex) +# tile 682 (Juiblex) { ................ DD.........DD... @@ -13013,7 +13013,7 @@ Z = (195, 195, 195) .CCCCCCCCCCCKA.. ................ } -# tile 682 (Baphomet) +# tile 683 (Baphomet) { .O..........O... .O..........O... @@ -13032,7 +13032,7 @@ Z = (195, 195, 195) ....CDCACDCAAAAA ..DDDDD.DDDDDAA. } -# tile 683 (Yeenoghu) +# tile 684 (Yeenoghu) { ....B.HHP....... ....BPPPP....... @@ -13051,7 +13051,7 @@ Z = (195, 195, 195) ...BPAA.PPA..... ................ } -# tile 684 (Lolth) +# tile 685 (Lolth) { ................ ................ @@ -13070,7 +13070,7 @@ Z = (195, 195, 195) .....JAA.AJA.... ................ } -# tile 685 (Geryon) +# tile 686 (Geryon) { .K...........K.. .K....JJJ....KJ. @@ -13089,7 +13089,7 @@ Z = (195, 195, 195) ....FGGGFFFFFFFA .....FFFFFFFFFA. } -# tile 686 (Dispater) +# tile 687 (Dispater) { ................ ......OJJO...... @@ -13108,7 +13108,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 687 (Baalzebub) +# tile 688 (Baalzebub) { ......F...F..... .......F.F...... @@ -13127,7 +13127,7 @@ Z = (195, 195, 195) .....FFA..FF.... ................ } -# tile 688 (Mephistopheles) +# tile 689 (Mephistopheles) { ................ .K.O.......O.K.. @@ -13146,7 +13146,7 @@ Z = (195, 195, 195) ....GFAAAFGA.... ................ } -# tile 689 (Orcus) +# tile 690 (Orcus) { ................ .K..O.....O..K.. @@ -13165,7 +13165,7 @@ Z = (195, 195, 195) ...OOPPAOOPPAGA. ................ } -# tile 690 (Tiamat) +# tile 691 (Tiamat) { ......GGGFA..... .....NFNFEEA.... @@ -13184,7 +13184,7 @@ Z = (195, 195, 195) ....GFAA...CCJA. ........FFFFJA.. } -# tile 691 (Graz'zt) +# tile 692 (Graz'zt) { AA.OJJA......... AAOJJAGA........ @@ -13203,7 +13203,7 @@ Z = (195, 195, 195) .N.AAKPP..AAPP.. ..AAKPP...AAAP.. } -# tile 692 (Asmodeus) +# tile 693 (Asmodeus) { ................ ......OJJO...... @@ -13222,7 +13222,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 693 (Demogorgon) +# tile 694 (Demogorgon) { ...KKK..KKK..... ..KBKBK.BKBK.... @@ -13241,7 +13241,7 @@ Z = (195, 195, 195) ..GAGFAFFFAFA... ................ } -# tile 694 (Cthulhu) +# tile 695 (Cthulhu) { ................ .....FFFFC...... @@ -13260,7 +13260,7 @@ Z = (195, 195, 195) ....CFFCAA...... ..FFC.FFA....... } -# tile 695 (Death) +# tile 696 (Death) { .BBBB....JJJ.... .BPPPP.JJJJ..... @@ -13279,7 +13279,7 @@ Z = (195, 195, 195) .CJJAAAAAAAAJJA. ACJAAAAAAAAAAAJ. } -# tile 696 (Pestilence) +# tile 697 (Pestilence) { F........JJJ.... ..F....JJJJ..... @@ -13298,7 +13298,7 @@ Z = (195, 195, 195) ..JJFBFAFFAJJJA. .JJAAFAFAAAAAAJ. } -# tile 697 (Famine) +# tile 698 (Famine) { .........JJJ.... .......JJJ...... @@ -13317,7 +13317,7 @@ Z = (195, 195, 195) K...JJAAAJJAA... K..JJAAAAAJJJA.. } -# tile 698 (mail daemon) +# tile 699 (mail daemon) { ...OP.BEEE.PO... ...OOEBEEEEOOD.. @@ -13336,7 +13336,7 @@ Z = (195, 195, 195) ..CDDDAAA.DDDK.. ................ } -# tile 699 (djinni) +# tile 700 (djinni) { .LL..NNN..LL.... ..L..NGNA.L..... @@ -13355,7 +13355,7 @@ Z = (195, 195, 195) .........IFED... ................ } -# tile 700 (demon) +# tile 701 (demon) { ................ .....O....O..... @@ -13374,7 +13374,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 701 (jellyfish) +# tile 702 (jellyfish) { ................ .....PBPA....... @@ -13393,7 +13393,7 @@ Z = (195, 195, 195) ..PEE.P.E..E.... .P..E.P..E...... } -# tile 702 (piranha) +# tile 703 (piranha) { ................ ................ @@ -13412,7 +13412,7 @@ Z = (195, 195, 195) .....E..P....... ....E..E...E.... } -# tile 703 (giant eel) +# tile 704 (giant eel) { ................ ................ @@ -13431,7 +13431,7 @@ Z = (195, 195, 195) ...EE.AAAAE.E... ..E...EE.E...E.. } -# tile 704 (mind flayer larva) +# tile 705 (mind flayer larva) { ................ .....ICIA....... @@ -13450,7 +13450,7 @@ Z = (195, 195, 195) ..IEE.I.E..E.... .I..E.I..E...... } -# tile 705 (swordfish) +# tile 706 (swordfish) { ................ ................ @@ -13469,7 +13469,7 @@ Z = (195, 195, 195) .....E..B....... ....E..E...E.... } -# tile 706 (sea horse) +# tile 707 (sea horse) { ................ ................ @@ -13488,7 +13488,7 @@ Z = (195, 195, 195) .....LA...FFAB.. ................ } -# tile 707 (shark) +# tile 708 (shark) { ................ ................ @@ -13507,7 +13507,7 @@ Z = (195, 195, 195) PDNPPEE..EE..... .PPPE..EEE..E... } -# tile 708 (giant crab) +# tile 709 (giant crab) { ................ ................ @@ -13526,7 +13526,7 @@ Z = (195, 195, 195) ..KKAACAACAAKKA. ................ } -# tile 709 (electric eel) +# tile 710 (electric eel) { ................ ................ @@ -13545,7 +13545,7 @@ Z = (195, 195, 195) ...EE.AAADE.E... ..E...EE.E...E.. } -# tile 710 (mermaid) +# tile 711 (mermaid) { ................ ................ @@ -13564,7 +13564,7 @@ Z = (195, 195, 195) ........FBAFFA.. .........FFBA... } -# tile 711 (kraken) +# tile 712 (kraken) { ................ ................ @@ -13583,7 +13583,7 @@ Z = (195, 195, 195) EEEEEEE..EE..... ..EEE..EEE..E... } -# tile 712 (thing from below) +# tile 713 (thing from below) { ......MMM....... .....MO......... @@ -13602,7 +13602,7 @@ Z = (195, 195, 195) EEEEEEE..EE..... ..EEE..EEE..E... } -# tile 713 (tortle) +# tile 714 (tortle) { ................ ................ @@ -13621,7 +13621,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 714 (newt) +# tile 715 (newt) { ................ ................ @@ -13640,7 +13640,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 715 (gecko) +# tile 716 (gecko) { ................ ................ @@ -13659,7 +13659,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 716 (iguana) +# tile 717 (iguana) { ................ ................ @@ -13678,7 +13678,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 717 (compsognathus) +# tile 718 (compsognathus) { ................ ................ @@ -13697,7 +13697,7 @@ Z = (195, 195, 195) .......LL....... ................ } -# tile 718 (sea tortle) +# tile 719 (sea tortle) { ................ ................ @@ -13716,7 +13716,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 719 (baby crocodile) +# tile 720 (baby crocodile) { ................ ................ @@ -13735,7 +13735,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 720 (lizard) +# tile 721 (lizard) { ................ ................ @@ -13754,7 +13754,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 721 (tortle shaman) +# tile 722 (tortle shaman) { ................ ................ @@ -13773,7 +13773,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 722 (rhaumbusun) +# tile 723 (rhaumbusun) { FA.....FA....... .GFA..FA.FA..... @@ -13792,7 +13792,7 @@ Z = (195, 195, 195) ........KCA..DA. ................ } -# tile 723 (chameleon) +# tile 724 (chameleon) { ................ ................ @@ -13811,7 +13811,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 724 (crocodile) +# tile 725 (crocodile) { ................ ................ @@ -13830,7 +13830,7 @@ Z = (195, 195, 195) .DF............. ................ } -# tile 725 (velociraptor) +# tile 726 (velociraptor) { ................ ................ @@ -13849,7 +13849,7 @@ Z = (195, 195, 195) ........JGGAA... ................ } -# tile 726 (giant turtle) +# tile 727 (giant turtle) { ................ ................ @@ -13868,7 +13868,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 727 (gila monster) +# tile 728 (gila monster) { ................ ................ @@ -13887,7 +13887,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 728 (komodo dragon) +# tile 729 (komodo dragon) { ................ ................ @@ -13906,7 +13906,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 729 (salamander) +# tile 730 (salamander) { ................ ................ @@ -13925,7 +13925,7 @@ Z = (195, 195, 195) ..ACCA.......... ...AAA.......... } -# tile 730 (T-Rex) +# tile 731 (T-Rex) { ...KKKK......... .KKKKNKJ........ @@ -13944,7 +13944,7 @@ Z = (195, 195, 195) ..AAAAJKAAAAKJA. ...AJJKKAAAAKKJJ } -# tile 731 (frost salamander) +# tile 732 (frost salamander) { ................ ................ @@ -13963,7 +13963,7 @@ Z = (195, 195, 195) ..ACCA.......... ...AAA.......... } -# tile 732 (giant crocodile) +# tile 733 (giant crocodile) { ................ ................ @@ -13982,7 +13982,7 @@ Z = (195, 195, 195) .DF............. ................ } -# tile 733 (bad egg) +# tile 734 (bad egg) { ................ ................ @@ -14001,7 +14001,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 734 (killer tripe ration) +# tile 735 (killer tripe ration) { ................ ................ @@ -14020,7 +14020,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 735 (killer food ration) +# tile 736 (killer food ration) { ...JJA.......... ...BPA.......... @@ -14039,7 +14039,7 @@ Z = (195, 195, 195) ....KKCKKKCKKA.. .....AAAAAAAA... } -# tile 736 (pile of killer coins) +# tile 737 (pile of killer coins) { ................ ................ @@ -14058,7 +14058,7 @@ Z = (195, 195, 195) .........HA..... ...........HA... } -# tile 737 (large pile of killer coins) +# tile 738 (large pile of killer coins) { ................ ................ @@ -14077,7 +14077,7 @@ Z = (195, 195, 195) .........HA...HA ......HA...HA... } -# tile 738 (huge pile of killer coins) +# tile 739 (huge pile of killer coins) { ................ ................ @@ -14096,7 +14096,7 @@ Z = (195, 195, 195) .........HCA.HCA .......HCA.HCA.. } -# tile 739 (archeologist) +# tile 740 (archeologist) { ................ ................ @@ -14115,7 +14115,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 740 (barbarian) +# tile 741 (barbarian) { ................ ................ @@ -14134,7 +14134,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 741 (bard) +# tile 742 (bard) { ................ ................ @@ -14153,7 +14153,7 @@ Z = (195, 195, 195) ....BPPPPPPE.... ................ } -# tile 742 (caveman) +# tile 743 (caveman) { ................ ................ @@ -14172,7 +14172,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 743 (cavewoman) +# tile 744 (cavewoman) { ................ ................ @@ -14191,7 +14191,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 744 (convict) +# tile 745 (convict) { ................ ................ @@ -14210,7 +14210,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 745 (flame mage) +# tile 746 (flame mage) { ................ .........HD..... @@ -14229,7 +14229,7 @@ Z = (195, 195, 195) ....HDDDDDDC.... ................ } -# tile 746 (healer) +# tile 747 (healer) { ................ .......NN....... @@ -14248,7 +14248,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 747 (ice mage) +# tile 748 (ice mage) { ................ .........PN..... @@ -14267,7 +14267,7 @@ Z = (195, 195, 195) ....PNNNNNNB.... ................ } -# tile 748 (infidel) +# tile 749 (infidel) { ................ ................ @@ -14286,7 +14286,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 749 (jedi) +# tile 750 (jedi) { .......BBB...... ......BBB....... @@ -14305,7 +14305,7 @@ Z = (195, 195, 195) ......AMMMMMMMMA .......AAMMMMMA. } -# tile 750 (knight) +# tile 751 (knight) { ................ ................ @@ -14324,7 +14324,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 751 (monk) +# tile 752 (monk) { ................ ................ @@ -14343,7 +14343,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 752 (necromancer) +# tile 753 (necromancer) { ................ .........AAP.... @@ -14362,7 +14362,7 @@ Z = (195, 195, 195) ....AAAAAAAA.... ................ } -# tile 753 (priest) +# tile 754 (priest) { ................ ................ @@ -14381,7 +14381,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 754 (priestess) +# tile 755 (priestess) { ................ .......JJ....... @@ -14400,7 +14400,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 755 (pirate) +# tile 756 (pirate) { ................ .....ADDD....... @@ -14419,7 +14419,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 756 (ranger) +# tile 757 (ranger) { ................ ................ @@ -14438,7 +14438,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 757 (rogue) +# tile 758 (rogue) { ................ ................ @@ -14457,7 +14457,7 @@ Z = (195, 195, 195) .....KKA.KKA.... ................ } -# tile 758 (samurai) +# tile 759 (samurai) { ................ ................ @@ -14476,7 +14476,7 @@ Z = (195, 195, 195) .....IIA.IIA.... ................ } -# tile 759 (tourist) +# tile 760 (tourist) { ................ ................ @@ -14495,7 +14495,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 760 (undead slayer) +# tile 761 (undead slayer) { ................ ................ @@ -14514,7 +14514,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 761 (valkyrie) +# tile 762 (valkyrie) { ................ ................ @@ -14533,7 +14533,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 762 (yeoman) +# tile 763 (yeoman) { ................ .......OHA...... @@ -14552,7 +14552,7 @@ Z = (195, 195, 195) .....DDA.DDA.... ................ } -# tile 763 (wizard) +# tile 764 (wizard) { ................ .........BP..... @@ -14571,7 +14571,7 @@ Z = (195, 195, 195) ....BPPPPPPE.... ................ } -# tile 764 (long worm tail) +# tile 765 (long worm tail) { ........ILLLL... ......IILLAA.... @@ -14590,7 +14590,7 @@ Z = (195, 195, 195) .LLLIIIILLLA.... ...LLLLLAAA..... } -# tile 765 (Nightmare) +# tile 766 (Nightmare) { ................ ................ @@ -14610,7 +14610,7 @@ Z = (195, 195, 195) ................ } -# tile 766 (Beholder) +# tile 767 (Beholder) { ....OA..OA...... ..OA.DADA.OA.OA. @@ -14629,7 +14629,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 767 (Lord Carnarvon) +# tile 768 (Lord Carnarvon) { .......JJ....... ......KJJJ...... @@ -14648,7 +14648,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 768 (Pelias) +# tile 769 (Pelias) { ................ .......JJ....... @@ -14667,7 +14667,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 769 (Shaman Karnov) +# tile 770 (Shaman Karnov) { ................ .......JJA...... @@ -14686,7 +14686,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 770 (Earendil) +# tile 771 (Earendil) { .........G...... ....B..GGF..B... @@ -14705,7 +14705,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 771 (Elwing) +# tile 772 (Elwing) { .........G...... ....B..GGF..B... @@ -14724,7 +14724,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 772 (High Flame Mage) +# tile 773 (High Flame Mage) { .........HD..... ......HHHDC..... @@ -14743,7 +14743,7 @@ Z = (195, 195, 195) ...ADDDDDDDC.... ................ } -# tile 773 (Robert the Lifer) +# tile 774 (Robert the Lifer) { ................ ................ @@ -14762,7 +14762,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 774 (Hippocrates) +# tile 775 (Hippocrates) { ................ ....LLLCCD...... @@ -14781,7 +14781,7 @@ Z = (195, 195, 195) .LCCCCCCCDA..... ................ } -# tile 775 (High Ice Mage) +# tile 776 (High Ice Mage) { .........PN..... ......PPPNB..... @@ -14800,7 +14800,7 @@ Z = (195, 195, 195) ...ANNNNNNNB.... ................ } -# tile 776 (Archbishop of Moloch) +# tile 777 (Archbishop of Moloch) { .INI............ IIIII.KDDK...... @@ -14819,7 +14819,7 @@ Z = (195, 195, 195) ..CADDDJJDDDAA.. ................ } -# tile 777 (Jedi Master) +# tile 778 (Jedi Master) { ......AAAAA..... .....AKLKKLA.... @@ -14838,7 +14838,7 @@ Z = (195, 195, 195) ALLLLLALLLLLLALA ALLLLLALLLLLALA. } -# tile 778 (King Arthur) +# tile 779 (King Arthur) { ................ ................ @@ -14857,7 +14857,7 @@ Z = (195, 195, 195) ....PPAA.PPA.... ................ } -# tile 779 (Master Po) +# tile 780 (Master Po) { ................ .......LL....... @@ -14876,7 +14876,7 @@ Z = (195, 195, 195) ..JACCCCCCCCAA.. ................ } -# tile 780 (Dark Lord) +# tile 781 (Dark Lord) { .........AA..... ......AAAAA..... @@ -14895,7 +14895,7 @@ Z = (195, 195, 195) ...AAAAAAAAA.... ................ } -# tile 781 (Mayor Cummerbund) +# tile 782 (Mayor Cummerbund) { ......AOA....... ....AAOAAAA..... @@ -14914,7 +14914,7 @@ Z = (195, 195, 195) ....JJA.JJA..... ................ } -# tile 782 (Arch Priest) +# tile 783 (Arch Priest) { ..N............. .NNN..JLLJ...... @@ -14933,7 +14933,7 @@ Z = (195, 195, 195) ..HACCCJJCCCAA.. ................ } -# tile 783 (Orion) +# tile 784 (Orion) { ................ ................ @@ -14952,7 +14952,7 @@ Z = (195, 195, 195) ......BPAPAA.A.. .....PPA.PPA.... } -# tile 784 (Master of Thieves) +# tile 785 (Master of Thieves) { ................ ...H.....H...... @@ -14971,7 +14971,7 @@ Z = (195, 195, 195) ...JJA..JJA..... ................ } -# tile 785 (Lord Sato) +# tile 786 (Lord Sato) { .....AAA........ .....AAA........ @@ -14990,7 +14990,7 @@ Z = (195, 195, 195) ..IIIA.IIIAA.... ................ } -# tile 786 (Twoflower) +# tile 787 (Twoflower) { ................ ................ @@ -15009,7 +15009,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 787 (Van Helsing) +# tile 788 (Van Helsing) { ................ .......CDA...... @@ -15028,7 +15028,7 @@ Z = (195, 195, 195) ....KKJA.KJKA... ................ } -# tile 788 (Norn) +# tile 789 (Norn) { ................ ................ @@ -15047,7 +15047,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 789 (Neferet the Green) +# tile 790 (Neferet the Green) { ................ ................ @@ -15066,7 +15066,7 @@ Z = (195, 195, 195) ...BPPPPPPPE.... ................ } -# tile 790 (Chief Yeoman Warder) +# tile 791 (Chief Yeoman Warder) { .......AAA...... .......AAA...... @@ -15085,7 +15085,7 @@ Z = (195, 195, 195) .....HHA.HHA.... ................ } -# tile 791 (Minion of Huhetotl) +# tile 792 (Minion of Huhetotl) { ...OP......PO... ...OODDDDDDOOD.. @@ -15104,7 +15104,7 @@ Z = (195, 195, 195) ..CDDDAAA.DDDK.. ................ } -# tile 792 (Thoth Amon) +# tile 793 (Thoth Amon) { ................ ......OJJO...... @@ -15123,7 +15123,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 793 (Annam) +# tile 794 (Annam) { ....PPDDDDAA.... ....PDDDDDDDA... @@ -15142,7 +15142,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ...LLLLJ.BLLLKAA } -# tile 794 (Warden Arianna) +# tile 795 (Warden Arianna) { ................ ................ diff --git a/win/share/objects.txt b/win/share/objects.txt index dad01beec..5aaf34d47 100644 --- a/win/share/objects.txt +++ b/win/share/objects.txt @@ -2212,7 +2212,45 @@ Z = (195, 195, 195) ..AAA.AAA....... ................ } -# tile 115 (pellet / bullet) +# tile 115 (rocket launcher) +{ + ................ + ................ + ................ + ...GGGGGGGGGGGG. + ..GGGGGGGGGGGAG. + ..GGGGGGGGGAGAG. + ..FFFFFFFFGAGGG. + ..FJFFFJFFGGGAG. + ..AJFFFJFFGAGAG. + ..AJFFFJJFGAGGG. + ..AJJFFFJFGGGAA. + ..AAJAAAAJAAAAA. + ..AAJJKKJJAAAAA. + ...AAACKAAAAAA.. + ....AAAAAAAA.... + ................ +} +# tile 116 (grenade launcher) +{ + ................ + ................ + ....P........P.. + .B...PPPPPPPPP.. + ABB..BBBBBBBAA.. + ABBBBBPPBBBBAA.. + ABBAAJJAPBBBAA.. + ABAAAJAAPAA..... + AAAAAJAAAA...... + .AA.AAA......... + ................ + ................ + ................ + ................ + ................ + ................ +} +# tile 117 (pellet / bullet) { ................ ................ @@ -2231,7 +2269,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 116 (red tube / shotgun shell) +# tile 118 (red tube / shotgun shell) { ................ ................ @@ -2250,7 +2288,26 @@ Z = (195, 195, 195) ................ ................ } -# tile 117 (bomb / fire bomb) +# tile 119 (rocket) +{ + ................ + ............DBB. + ...........PDDB. + ...........PBDD. + ..........PBPP.. + .........PBP.... + ........PBP..... + .....EPPBP...... + ...EEPPEP....... + ..EEEPEPP....... + .....EPPE....... + ....E.EE........ + ......EE........ + ......E......... + ................ + ................ +} +# tile 120 (bomb / fire bomb) { ................ ................ @@ -2269,7 +2326,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 118 (bomb / sonic bomb) +# tile 121 (bomb / sonic bomb) { ................ ................ @@ -2288,7 +2345,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 119 (bomb / gas bomb) +# tile 122 (bomb / gas bomb) { ................ ................ @@ -2307,7 +2364,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 120 (conical hat / dunce cap) +# tile 123 (conical hat / dunce cap) { ................ .......E........ @@ -2326,7 +2383,7 @@ Z = (195, 195, 195) ....EEEEEEE..... ................ } -# tile 121 (conical hat / cornuthaum) +# tile 124 (conical hat / cornuthaum) { ................ .......E........ @@ -2345,7 +2402,7 @@ Z = (195, 195, 195) ....EEEEEEE..... ................ } -# tile 122 (fedora) +# tile 125 (fedora) { ................ ................ @@ -2364,7 +2421,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 123 (toque) +# tile 126 (toque) { ................ ................ @@ -2383,7 +2440,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 124 (hat / elven helm) +# tile 127 (hat / elven helm) { ................ ................ @@ -2402,7 +2459,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 125 (skull cap / orcish helm) +# tile 128 (skull cap / orcish helm) { ................ ................ @@ -2421,7 +2478,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 126 (hard hat / dwarvish helm) +# tile 129 (hard hat / dwarvish helm) { ................ ................ @@ -2440,7 +2497,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 127 (plasteel helm) +# tile 130 (plasteel helm) { ................ ................ @@ -2459,7 +2516,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 128 (dented pot) +# tile 131 (dented pot) { ................ ................ @@ -2478,7 +2535,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 129 (plumed helmet / helmet) +# tile 132 (plumed helmet / helmet) { .......DID...... ......DIBI...... @@ -2497,7 +2554,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 130 (etched helmet / helm of brilliance) +# tile 133 (etched helmet / helm of brilliance) { ................ ................ @@ -2516,7 +2573,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 131 (crested helmet / helm of opposite alignment) +# tile 134 (crested helmet / helm of opposite alignment) { ................ ................ @@ -2535,7 +2592,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 132 (winged helmet / helm of speed) +# tile 135 (winged helmet / helm of speed) { ................ ................ @@ -2554,7 +2611,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 133 (fearsome helmet / tinfoil hat) +# tile 136 (fearsome helmet / tinfoil hat) { ................ ................ @@ -2573,7 +2630,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 134 (top hat / helm of madness) +# tile 137 (top hat / helm of madness) { ................ ................ @@ -2592,7 +2649,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 135 (visored helmet / helm of telepathy) +# tile 138 (visored helmet / helm of telepathy) { ................ ................ @@ -2611,7 +2668,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 136 (gray dragon scales) +# tile 139 (gray dragon scales) { ................ ................ @@ -2630,7 +2687,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 137 (silver dragon scales) +# tile 140 (silver dragon scales) { ................ ................ @@ -2649,7 +2706,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 138 (shimmering dragon scales) +# tile 141 (shimmering dragon scales) { ................ ................ @@ -2668,7 +2725,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 139 (deep dragon scales) +# tile 142 (deep dragon scales) { ................ ................ @@ -2687,7 +2744,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 140 (red dragon scales) +# tile 143 (red dragon scales) { ................ ................ @@ -2706,7 +2763,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 141 (white dragon scales) +# tile 144 (white dragon scales) { ................ ................ @@ -2725,7 +2782,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 142 (orange dragon scales) +# tile 145 (orange dragon scales) { ................ ................ @@ -2744,7 +2801,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 143 (violet dragon scales) +# tile 146 (violet dragon scales) { ................ ................ @@ -2763,7 +2820,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 144 (black dragon scales) +# tile 147 (black dragon scales) { ................ ................ @@ -2782,7 +2839,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 145 (blue dragon scales) +# tile 148 (blue dragon scales) { ................ ................ @@ -2801,7 +2858,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 146 (green dragon scales) +# tile 149 (green dragon scales) { ................ ................ @@ -2820,7 +2877,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 147 (gold dragon scales) +# tile 150 (gold dragon scales) { ................ ................ @@ -2839,7 +2896,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 148 (sea dragon scales) +# tile 151 (sea dragon scales) { ................ ................ @@ -2858,7 +2915,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 149 (yellow dragon scales) +# tile 152 (yellow dragon scales) { ................ ................ @@ -2877,7 +2934,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 150 (plate mail) +# tile 153 (plate mail) { ................ ................ @@ -2896,7 +2953,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 151 (crystal plate mail) +# tile 154 (crystal plate mail) { ................ ................ @@ -2915,7 +2972,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 152 (splint mail) +# tile 155 (splint mail) { ................ ................ @@ -2934,7 +2991,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 153 (large splint mail) +# tile 156 (large splint mail) { ................ ................ @@ -2953,7 +3010,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 154 (banded mail) +# tile 157 (banded mail) { ................ ................ @@ -2972,7 +3029,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 155 (plasteel armor) +# tile 158 (plasteel armor) { .AUNUAA......... AUUUNUAAAA...... @@ -2991,7 +3048,7 @@ Z = (195, 195, 195) ...AAUNA........ ....AAAA........ } -# tile 156 (chain mail) +# tile 159 (chain mail) { ................ ................ @@ -3010,7 +3067,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 157 (dwarvish chain mail) +# tile 160 (dwarvish chain mail) { ................ ................ @@ -3029,7 +3086,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 158 (elven chain mail) +# tile 161 (elven chain mail) { ................ ...N.N.NO.O.O... @@ -3048,7 +3105,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 159 (crude chain mail / orcish chain mail) +# tile 162 (crude chain mail / orcish chain mail) { ................ ................ @@ -3067,7 +3124,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 160 (scale mail) +# tile 163 (scale mail) { ................ ................ @@ -3086,7 +3143,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 161 (studded armor) +# tile 164 (studded armor) { ................ ................ @@ -3105,7 +3162,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 162 (ring mail) +# tile 165 (ring mail) { ................ ................ @@ -3124,7 +3181,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 163 (crude ring mail / orcish ring mail) +# tile 166 (crude ring mail / orcish ring mail) { ................ ................ @@ -3143,7 +3200,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 164 (light armor) +# tile 167 (light armor) { ................ ................ @@ -3162,7 +3219,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 165 (jacket) +# tile 168 (jacket) { ................ ................ @@ -3181,7 +3238,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 166 (red robe / robe) +# tile 169 (red robe / robe) { ................ ......OOO....... @@ -3200,7 +3257,7 @@ Z = (195, 195, 195) ....OOOOOOOOA... ................ } -# tile 167 (large robe) +# tile 170 (large robe) { ................ ......XXX....... @@ -3219,7 +3276,7 @@ Z = (195, 195, 195) ...AXXXXXXAAA... ....AAAAAAAA.... } -# tile 168 (blue robe / robe of protection) +# tile 171 (blue robe / robe of protection) { ................ ......OOO....... @@ -3238,7 +3295,7 @@ Z = (195, 195, 195) ....OOOOOOOOA... ................ } -# tile 169 (orange robe / robe of power) +# tile 172 (orange robe / robe of power) { ................ ......OOO....... @@ -3257,7 +3314,7 @@ Z = (195, 195, 195) ....OOOOOOOOA... ................ } -# tile 170 (green robe / robe of weakness) +# tile 173 (green robe / robe of weakness) { ................ ......OOO....... @@ -3276,7 +3333,7 @@ Z = (195, 195, 195) ....OOOOOOOOA... ................ } -# tile 171 (Hawaiian shirt) +# tile 174 (Hawaiian shirt) { ................ ................ @@ -3295,7 +3352,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 172 (striped shirt) +# tile 175 (striped shirt) { ................ ................ @@ -3314,7 +3371,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 173 (ruffled shirt) +# tile 176 (ruffled shirt) { ................ ................ @@ -3333,7 +3390,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 174 (T-shirt) +# tile 177 (T-shirt) { ................ ................ @@ -3352,7 +3409,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 175 (mummy wrapping) +# tile 178 (mummy wrapping) { ................ ................ @@ -3371,7 +3428,7 @@ Z = (195, 195, 195) ..N.AAN.NA.OO... ................ } -# tile 176 (faded pall / elven cloak) +# tile 179 (faded pall / elven cloak) { ................ ................ @@ -3390,7 +3447,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 177 (coarse mantelet / orcish cloak) +# tile 180 (coarse mantelet / orcish cloak) { ................ ................ @@ -3409,7 +3466,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 178 (hooded cloak / dwarvish cloak) +# tile 181 (hooded cloak / dwarvish cloak) { ................ ................ @@ -3428,7 +3485,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 179 (slippery cloak / oilskin cloak) +# tile 182 (slippery cloak / oilskin cloak) { ................ ................ @@ -3447,7 +3504,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 180 (apron / alchemy smock) +# tile 183 (apron / alchemy smock) { ................ ................ @@ -3466,7 +3523,7 @@ Z = (195, 195, 195) .....NNNNNAA.... ......AAAAA..... } -# tile 181 (green coat) +# tile 184 (green coat) { ................ ................ @@ -3485,7 +3542,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 182 (plain cloak) +# tile 185 (plain cloak) { ................ ................ @@ -3504,7 +3561,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 183 (tattered cape / cloak of protection) +# tile 186 (tattered cape / cloak of protection) { ................ ................ @@ -3523,7 +3580,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 184 (opera cloak / cloak of invisibility) +# tile 187 (opera cloak / cloak of invisibility) { ................ ......NNN....... @@ -3542,7 +3599,7 @@ Z = (195, 195, 195) ..AANNNNNNAOOAA. ....AAAAAAAAAA.. } -# tile 185 (feathery cloak / cloak of flight) +# tile 188 (feathery cloak / cloak of flight) { ................ ......EEE....... @@ -3561,7 +3618,7 @@ Z = (195, 195, 195) ..AAEEEEEEOEEAA. ....AAAAAAAAAA.. } -# tile 186 (ornamental cope / cloak of magic resistance) +# tile 189 (ornamental cope / cloak of magic resistance) { ................ ................ @@ -3580,7 +3637,7 @@ Z = (195, 195, 195) ..AAAAAAAAAAAP.. ...PPPPPPPPPPP.. } -# tile 187 (dirty rag / poisonous cloak) +# tile 190 (dirty rag / poisonous cloak) { ................ ................ @@ -3599,7 +3656,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 188 (funeral shroud / mana cloak) +# tile 191 (funeral shroud / mana cloak) { ................ ......SSS....... @@ -3618,7 +3675,7 @@ Z = (195, 195, 195) ..RRSSSSSSRSSRR. ....RRRRRRRRRR.. } -# tile 189 (dusty cloak / cloak of displacement) +# tile 192 (dusty cloak / cloak of displacement) { ................ ................ @@ -3637,7 +3694,7 @@ Z = (195, 195, 195) .....PPPPPAA.... .......PPAA..... } -# tile 190 (small shield) +# tile 193 (small shield) { ................ ................ @@ -3656,7 +3713,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 191 (blue and green shield / elven shield) +# tile 194 (blue and green shield / elven shield) { ................ ................ @@ -3675,7 +3732,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 192 (tower shield) +# tile 195 (tower shield) { ...N........O... ...NNNNNOOOOO... @@ -3694,7 +3751,7 @@ Z = (195, 195, 195) ...NNNNNNOOOOA.. ...AAAAAAAAAAA.. } -# tile 193 (white-handed shield / Uruk-hai shield) +# tile 196 (white-handed shield / Uruk-hai shield) { ................ ...K.KKKJJJ.J... @@ -3713,7 +3770,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 194 (red-eyed shield / orcish shield) +# tile 197 (red-eyed shield / orcish shield) { ................ ................ @@ -3732,7 +3789,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 195 (large shield) +# tile 198 (large shield) { ................ ...N.NNNOOO.O... @@ -3751,7 +3808,7 @@ Z = (195, 195, 195) ........AA...... ................ } -# tile 196 (hide shield) +# tile 199 (hide shield) { ................ ................ @@ -3770,7 +3827,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 197 (large round shield / dwarvish roundshield) +# tile 200 (large round shield / dwarvish roundshield) { ................ ................ @@ -3789,7 +3846,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 198 (polished shield / shield of reflection) +# tile 201 (polished shield / shield of reflection) { ................ ................ @@ -3808,7 +3865,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 199 (shiny shield / shield of light) +# tile 202 (shiny shield / shield of light) { ................ ................ @@ -3827,7 +3884,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 200 (humming shield / resonant shield) +# tile 203 (humming shield / resonant shield) { ................ ................ @@ -3846,7 +3903,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 201 (slippery shield / shield of mobility) +# tile 204 (slippery shield / shield of mobility) { ................ ................ @@ -3865,7 +3922,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 202 (old gloves / gloves) +# tile 205 (old gloves / gloves) { ................ ................ @@ -3884,7 +3941,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 203 (falconry gloves / gauntlets) +# tile 206 (falconry gloves / gauntlets) { ................ ................ @@ -3903,7 +3960,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 204 (riding gloves / gauntlets of power) +# tile 207 (riding gloves / gauntlets of power) { ................ ................ @@ -3922,7 +3979,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 205 (fine gloves / rogues gloves) +# tile 208 (fine gloves / rogues gloves) { ................ ................ @@ -3941,7 +3998,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 206 (boxing gloves / gauntlets of force) +# tile 209 (boxing gloves / gauntlets of force) { ................ ................ @@ -3960,7 +4017,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 207 (gardening gloves / gauntlets of protection) +# tile 210 (gardening gloves / gauntlets of protection) { ................ ................ @@ -3979,7 +4036,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 208 (padded gloves / gauntlets of fumbling) +# tile 211 (padded gloves / gauntlets of fumbling) { ................ ................ @@ -3998,7 +4055,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 209 (black gloves / gauntlets of swimming) +# tile 212 (black gloves / gauntlets of swimming) { ................ ................ @@ -4017,7 +4074,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 210 (fencing gloves / gauntlets of dexterity) +# tile 213 (fencing gloves / gauntlets of dexterity) { ................ ................ @@ -4036,7 +4093,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 211 (white gloves / plasteel gloves) +# tile 214 (white gloves / plasteel gloves) { ................ ................ @@ -4055,7 +4112,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 212 (walking shoes / low boots) +# tile 215 (walking shoes / low boots) { ................ ................ @@ -4074,7 +4131,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 213 (white boots / plasteel boots) +# tile 216 (white boots / plasteel boots) { ................ ................ @@ -4093,7 +4150,7 @@ Z = (195, 195, 195) .AAONNA...AAAA.. ...AAAA......... } -# tile 214 (hard shoes / dwarvish boots) +# tile 217 (hard shoes / dwarvish boots) { ................ ................ @@ -4112,7 +4169,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 215 (crude shoes / orcish boots) +# tile 218 (crude shoes / orcish boots) { ................ ................ @@ -4132,7 +4189,7 @@ Z = (195, 195, 195) ................ } -# tile 216 (jackboots / high boots) +# tile 219 (jackboots / high boots) { .......CCKKKK... ......CKAAAAJJ.. @@ -4151,7 +4208,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 217 (combat boots / speed boots) +# tile 220 (combat boots / speed boots) { ................ ................ @@ -4170,7 +4227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 218 (jungle boots / water walking boots) +# tile 221 (jungle boots / water walking boots) { ................ ................ @@ -4189,7 +4246,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 219 (hiking boots / jumping boots) +# tile 222 (hiking boots / jumping boots) { ................ ................ @@ -4208,7 +4265,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 220 (steel-toed boots / stomping boots) +# tile 223 (steel-toed boots / stomping boots) { ................ ................ @@ -4227,7 +4284,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 221 (mud boots / elven boots) +# tile 224 (mud boots / elven boots) { ................ ................ @@ -4246,7 +4303,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 222 (buckled boots / kicking boots) +# tile 225 (buckled boots / kicking boots) { ................ ................ @@ -4265,7 +4322,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 223 (riding boots / fumble boots) +# tile 226 (riding boots / fumble boots) { ................ ................ @@ -4284,7 +4341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 224 (snow boots / levitation boots) +# tile 227 (snow boots / levitation boots) { ................ ................ @@ -4303,7 +4360,7 @@ Z = (195, 195, 195) ...A.A.A.A.A.A.. ................ } -# tile 225 (spiral / adornment) +# tile 228 (spiral / adornment) { ................ ................ @@ -4322,7 +4379,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 226 (puzzle / gain constitution) +# tile 229 (puzzle / gain constitution) { ................ ................ @@ -4341,7 +4398,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 227 (pyramid / gain strength) +# tile 230 (pyramid / gain strength) { ................ ................ @@ -4360,7 +4417,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 228 (rhombus / increase accuracy) +# tile 231 (rhombus / increase accuracy) { ................ ................ @@ -4379,7 +4436,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 229 (teardrop / increase damage) +# tile 232 (teardrop / increase damage) { ................ ................ @@ -4398,7 +4455,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 230 (knotted / protection) +# tile 233 (knotted / protection) { ................ ................ @@ -4417,7 +4474,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 231 (glittery / carrying) +# tile 234 (glittery / carrying) { ................ ................ @@ -4436,7 +4493,7 @@ Z = (195, 195, 195) ...N............ ................ } -# tile 232 (mobius / regeneration) +# tile 235 (mobius / regeneration) { ................ ................ @@ -4455,7 +4512,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 233 (infinity / searching) +# tile 236 (infinity / searching) { ................ ................ @@ -4474,7 +4531,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 234 (viney / stealth) +# tile 237 (viney / stealth) { ................ ................ @@ -4493,7 +4550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 235 (braided / sustain ability) +# tile 238 (braided / sustain ability) { ................ ................ @@ -4512,7 +4569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 236 (antique / levitation) +# tile 239 (antique / levitation) { ................ ................ @@ -4531,7 +4588,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 237 (scaled / hunger) +# tile 240 (scaled / hunger) { ................ ................ @@ -4550,7 +4607,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 238 (crescent / aggravate monster) +# tile 241 (crescent / aggravate monster) { ................ ................ @@ -4569,7 +4626,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 239 (chunky / conflict) +# tile 242 (chunky / conflict) { ................ ................ @@ -4588,7 +4645,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 240 (tribal / warning) +# tile 243 (tribal / warning) { ................ ................ @@ -4607,7 +4664,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 241 (rustic / poison resistance) +# tile 244 (rustic / poison resistance) { ................ ................ @@ -4626,7 +4683,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 242 (retro / fire resistance) +# tile 245 (retro / fire resistance) { ................ ................ @@ -4645,7 +4702,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 243 (exotic / cold resistance) +# tile 246 (exotic / cold resistance) { ................ ................ @@ -4664,7 +4721,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 244 (embossed / sonic resistance) +# tile 247 (embossed / sonic resistance) { ................ ................ @@ -4683,7 +4740,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 245 (floral / shock resistance) +# tile 248 (floral / shock resistance) { ................ ................ @@ -4702,7 +4759,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 246 (twisted / free action) +# tile 249 (twisted / free action) { ................ ................ @@ -4721,7 +4778,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 247 (bohemian / slow digestion) +# tile 250 (bohemian / slow digestion) { ................ ................ @@ -4740,7 +4797,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 248 (vintage / teleportation) +# tile 251 (vintage / teleportation) { ................ ................ @@ -4759,7 +4816,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 249 (cosmic / teleport control) +# tile 252 (cosmic / teleport control) { ................ ................ @@ -4778,7 +4835,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 250 (star / polymorph) +# tile 253 (star / polymorph) { ................ ................ @@ -4797,7 +4854,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 251 (minimalist / polymorph control) +# tile 254 (minimalist / polymorph control) { ................ ................ @@ -4816,7 +4873,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 252 (wire / invisibility) +# tile 255 (wire / invisibility) { ................ ................ @@ -4835,7 +4892,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 253 (engagement / see invisible) +# tile 256 (engagement / see invisible) { ................ ................ @@ -4854,7 +4911,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 254 (ridged / mood) +# tile 257 (ridged / mood) { ................ ................ @@ -4873,7 +4930,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 255 (wedding / sleeping) +# tile 258 (wedding / sleeping) { ................ ................ @@ -4892,7 +4949,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 256 (neon / displacement) +# tile 259 (neon / displacement) { ................ ................ @@ -4911,7 +4968,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 257 (shiny / protection from shape changers) +# tile 260 (shiny / protection from shape changers) { ................ ................ @@ -4930,7 +4987,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 258 (cubic) +# tile 261 (cubic) { ................ ................ @@ -4949,7 +5006,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 259 (angular) +# tile 262 (angular) { ................ ................ @@ -4968,7 +5025,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 260 (zodiac) +# tile 263 (zodiac) { ................ ................ @@ -4987,7 +5044,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 261 (dainty) +# tile 264 (dainty) { ................ ................ @@ -5006,7 +5063,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 262 (tri-band) +# tile 265 (tri-band) { ................ ................ @@ -5025,7 +5082,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 263 (bezeled) +# tile 266 (bezeled) { ................ ................ @@ -5044,7 +5101,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 264 (clustered) +# tile 267 (clustered) { ................ ................ @@ -5063,7 +5120,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 265 (abstract) +# tile 268 (abstract) { ................ ................ @@ -5082,7 +5139,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 266 (ancient) +# tile 269 (ancient) { ................ ................ @@ -5101,7 +5158,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 267 (gothic) +# tile 270 (gothic) { ................ ................ @@ -5120,7 +5177,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 268 (celtic) +# tile 271 (celtic) { ................ ................ @@ -5139,7 +5196,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 269 (plain) +# tile 272 (plain) { ................ ................ @@ -5158,7 +5215,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 270 (wavey) +# tile 273 (wavey) { ................ ................ @@ -5177,7 +5234,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 271 (roman) +# tile 274 (roman) { ................ ................ @@ -5196,7 +5253,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 272 (tapered) +# tile 275 (tapered) { ................ ................ @@ -5215,7 +5272,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 273 (circular / amulet of ESP) +# tile 276 (circular / amulet of ESP) { ................ ......LLLLLAA... @@ -5234,7 +5291,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 274 (warped / amulet of drain resistance) +# tile 277 (warped / amulet of drain resistance) { .......LLAA..... .....LLAALAAA... @@ -5253,7 +5310,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 275 (spherical / amulet of life saving) +# tile 278 (spherical / amulet of life saving) { ................ ......LLLLLAA... @@ -5272,7 +5329,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 276 (oval / amulet of strangulation) +# tile 279 (oval / amulet of strangulation) { ................ ......LLLLLLAA.. @@ -5291,7 +5348,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 277 (pentagonal / amulet of nausea) +# tile 280 (pentagonal / amulet of nausea) { ................ ......LLLLLAA... @@ -5310,7 +5367,7 @@ Z = (195, 195, 195) ........AA...... ................ } -# tile 278 (triangular / amulet of restful sleep) +# tile 281 (triangular / amulet of restful sleep) { ................ ......LLLLLAA... @@ -5329,7 +5386,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 279 (pyramidal / amulet versus poison) +# tile 282 (pyramidal / amulet versus poison) { ................ ......LLLLLAA... @@ -5348,7 +5405,7 @@ Z = (195, 195, 195) ....KJJJJJJJJA.. .......AAAAAAA.. } -# tile 280 (skull-shaped / amulet of danger) +# tile 283 (skull-shaped / amulet of danger) { ................ ......LLLLLAA... @@ -5367,7 +5424,7 @@ Z = (195, 195, 195) ........KKA..... ........AA...... } -# tile 281 (lunate / amulet versus stone) +# tile 284 (lunate / amulet versus stone) { ................ ......EEEEEAA... @@ -5386,7 +5443,7 @@ Z = (195, 195, 195) ........BAA..... ................ } -# tile 282 (square / amulet of change) +# tile 285 (square / amulet of change) { ................ ......LLLLLAA... @@ -5405,7 +5462,7 @@ Z = (195, 195, 195) .......AAAAA.... ................ } -# tile 283 (concave / amulet of unchanging) +# tile 286 (concave / amulet of unchanging) { ................ ......LLLLLAA... @@ -5424,7 +5481,7 @@ Z = (195, 195, 195) .......KCCAA.... ........AAA..... } -# tile 284 (hexagonal / amulet of reflection) +# tile 287 (hexagonal / amulet of reflection) { ................ ......LLLLLAA... @@ -5443,7 +5500,7 @@ Z = (195, 195, 195) ........AAA..... ................ } -# tile 285 (octagonal / amulet of magical breathing) +# tile 288 (octagonal / amulet of magical breathing) { ................ ......LLLLLAA... @@ -5462,7 +5519,7 @@ Z = (195, 195, 195) .......KKKAA.... ........AAA..... } -# tile 286 (oblong / amulet of magic resistance) +# tile 289 (oblong / amulet of magic resistance) { ................ ......LLLLLAA... @@ -5481,7 +5538,7 @@ Z = (195, 195, 195) .......KKKAA.... ........AAA..... } -# tile 287 (perforated / amulet of guarding) +# tile 290 (perforated / amulet of guarding) { ................ ......LLLLLAA... @@ -5500,7 +5557,7 @@ Z = (195, 195, 195) .......KKKAA.... ........AAA..... } -# tile 288 (cubical / amulet of flying) +# tile 291 (cubical / amulet of flying) { ................ ......LLLLLAA... @@ -5519,7 +5576,7 @@ Z = (195, 195, 195) ......CKKKKA.... .......AAAAA.... } -# tile 289 (convex) +# tile 292 (convex) { ................ ......LLLLLAA... @@ -5538,7 +5595,7 @@ Z = (195, 195, 195) .......KJJAA.... ........AAA..... } -# tile 290 (spiked) +# tile 293 (spiked) { ................ ................ @@ -5557,7 +5614,7 @@ Z = (195, 195, 195) ........DAA..... ................ } -# tile 291 (rectangular) +# tile 294 (rectangular) { ................ ......LLLLLAA... @@ -5576,7 +5633,7 @@ Z = (195, 195, 195) ....AAAAAAAAAA.. ................ } -# tile 292 (elliptic) +# tile 295 (elliptic) { ................ ......LLLLLAA... @@ -5595,7 +5652,7 @@ Z = (195, 195, 195) .....AAAAAAA.... ................ } -# tile 293 (Amulet of Yendor / cheap plastic imitation of the Amulet of Yendor) +# tile 296 (Amulet of Yendor / cheap plastic imitation of the Amulet of Yendor) { ................ ......HHHHHAA... @@ -5614,7 +5671,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 294 (Amulet of Yendor / Amulet of Yendor) +# tile 297 (Amulet of Yendor / Amulet of Yendor) { ................ ......HHHHHAA... @@ -5633,7 +5690,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 295 (large box) +# tile 298 (large box) { ................ ................ @@ -5652,7 +5709,7 @@ Z = (195, 195, 195) CKKKKKKKKKKJAA.. .AAAAAAAAAAAA... } -# tile 296 (chest) +# tile 299 (chest) { ................ ................ @@ -5671,7 +5728,7 @@ Z = (195, 195, 195) CKKKKKKKKKKJAA.. .AAAAAAAAAAAA... } -# tile 297 (iron safe) +# tile 300 (iron safe) { ................ ................ @@ -5690,7 +5747,7 @@ Z = (195, 195, 195) CKKKKKKKKKKJAA.. .AAAAAAAAAAAA... } -# tile 298 (crystal chest) +# tile 301 (crystal chest) { ................ ................ @@ -5709,7 +5766,7 @@ Z = (195, 195, 195) NBBBBBBBBBBPAA.. .AAAAAAAAAAAA... } -# tile 299 (ice box) +# tile 302 (ice box) { ................ ................ @@ -5728,7 +5785,7 @@ Z = (195, 195, 195) NBBBBBBBBBBPAA.. .AAAAAAAAAAAA... } -# tile 300 (magic chest / hidden chest) +# tile 303 (magic chest / hidden chest) { ................ ................ @@ -5747,7 +5804,7 @@ Z = (195, 195, 195) NIIIIIIIIIIPAA.. .AAAAAAAAAAAA... } -# tile 301 (bag / medical kit) +# tile 304 (bag / medical kit) { ................ ................ @@ -5766,7 +5823,7 @@ Z = (195, 195, 195) ........APP..... ................ } -# tile 302 (bag / sack) +# tile 305 (bag / sack) { ................ ................ @@ -5785,7 +5842,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 303 (bag / oilskin sack) +# tile 306 (bag / oilskin sack) { ................ ................ @@ -5804,7 +5861,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 304 (bag / bag of holding) +# tile 307 (bag / bag of holding) { ................ ................ @@ -5823,7 +5880,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 305 (bag / bag of rats) +# tile 308 (bag / bag of rats) { ................ ................ @@ -5842,7 +5899,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 306 (bag / bag of tricks) +# tile 309 (bag / bag of tricks) { ................ ................ @@ -5861,7 +5918,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 307 (key / skeleton key) +# tile 310 (key / skeleton key) { ................ ................ @@ -5880,7 +5937,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 308 (lock pick) +# tile 311 (lock pick) { ................ ................ @@ -5899,7 +5956,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 309 (credit card) +# tile 312 (credit card) { ................ ................ @@ -5918,7 +5975,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 310 (ornate key / magic key) +# tile 313 (ornate key / magic key) { ................ ................ @@ -5937,7 +5994,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 311 (candle / tallow candle) +# tile 314 (candle / tallow candle) { ................ ................ @@ -5956,7 +6013,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 312 (candle / wax candle) +# tile 315 (candle / wax candle) { ................ ................ @@ -5975,7 +6032,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 313 (candle / magic candle) +# tile 316 (candle / magic candle) { ................ ................ @@ -5994,7 +6051,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 314 (lantern) +# tile 317 (lantern) { ................ ................ @@ -6013,7 +6070,7 @@ Z = (195, 195, 195) .....AAAAAAA.... ................ } -# tile 315 (lamp / oil lamp) +# tile 318 (lamp / oil lamp) { ................ ................ @@ -6032,7 +6089,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 316 (lamp / magic lamp) +# tile 319 (lamp / magic lamp) { ................ ................ @@ -6051,7 +6108,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 317 (expensive camera) +# tile 320 (expensive camera) { ................ ................ @@ -6070,7 +6127,7 @@ Z = (195, 195, 195) ...PPPPPPPPPPPP. ................ } -# tile 318 (looking glass / mirror) +# tile 321 (looking glass / mirror) { ................ ................ @@ -6089,7 +6146,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 319 (wooden barrel / keg) +# tile 322 (wooden barrel / keg) { ................ ................ @@ -6108,7 +6165,7 @@ Z = (195, 195, 195) .AKKKJKKKJKKKAAA ..AAAAAAAAAAAA.. } -# tile 320 (glass orb / crystal ball) +# tile 323 (glass orb / crystal ball) { ................ ................ @@ -6127,7 +6184,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 321 (plastic orb / eight ball) +# tile 324 (plastic orb / eight ball) { ................ ................ @@ -6146,7 +6203,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 322 (lenses) +# tile 325 (lenses) { ................ ................ @@ -6165,7 +6222,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 323 (goggles) +# tile 326 (goggles) { ................ ................ @@ -6184,7 +6241,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 324 (blindfold) +# tile 327 (blindfold) { ................ ................ @@ -6203,7 +6260,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 325 (towel) +# tile 328 (towel) { ................ ................ @@ -6222,7 +6279,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 326 (saddle) +# tile 329 (saddle) { ................ ................ @@ -6241,7 +6298,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 327 (barding) +# tile 330 (barding) { ................ ................ @@ -6260,7 +6317,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 328 (spiked barding) +# tile 331 (spiked barding) { ................ ................ @@ -6279,7 +6336,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 329 (polished barding / barding of reflection) +# tile 332 (polished barding / barding of reflection) { ................ ................ @@ -6298,7 +6355,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 330 (leash) +# tile 333 (leash) { ................ ................ @@ -6317,7 +6374,7 @@ Z = (195, 195, 195) .....AAAA....... ................ } -# tile 331 (stethoscope) +# tile 334 (stethoscope) { ................ ................ @@ -6336,7 +6393,7 @@ Z = (195, 195, 195) ........AAA..... ................ } -# tile 332 (tinning kit) +# tile 335 (tinning kit) { ................ ................ @@ -6355,7 +6412,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 333 (tin opener) +# tile 336 (tin opener) { ................ ................ @@ -6374,7 +6431,7 @@ Z = (195, 195, 195) ........AA...... ................ } -# tile 334 (can of grease) +# tile 337 (can of grease) { ................ ................ @@ -6393,7 +6450,7 @@ Z = (195, 195, 195) .......AAAA..... ................ } -# tile 335 (figurine) +# tile 338 (figurine) { ................ ................ @@ -6412,7 +6469,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 336 (mask) +# tile 339 (mask) { ................ ................ @@ -6431,7 +6488,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 337 (marker / magic marker) +# tile 340 (marker / magic marker) { ................ ................ @@ -6450,7 +6507,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 338 (land mine) +# tile 341 (land mine) { ................ ................ @@ -6469,7 +6526,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 339 (beartrap) +# tile 342 (beartrap) { ................ ................ @@ -6488,7 +6545,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 340 (whistle / pea whistle) +# tile 343 (whistle / pea whistle) { ................ ................ @@ -6507,7 +6564,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 341 (whistle / magic whistle) +# tile 344 (whistle / magic whistle) { ................ ................ @@ -6526,7 +6583,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 342 (flute / flute) +# tile 345 (flute / flute) { ................ ................ @@ -6545,7 +6602,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 343 (flute / magic flute) +# tile 346 (flute / magic flute) { ................ ................ @@ -6564,7 +6621,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 344 (horn / tooled horn) +# tile 347 (horn / tooled horn) { ................ ................ @@ -6583,7 +6640,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 345 (horn / frost horn) +# tile 348 (horn / frost horn) { ................ ................ @@ -6602,7 +6659,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 346 (horn / fire horn) +# tile 349 (horn / fire horn) { ................ ................ @@ -6621,7 +6678,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 347 (horn / horn of blasting) +# tile 350 (horn / horn of blasting) { ................ ................ @@ -6640,7 +6697,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 348 (horn / horn of plenty) +# tile 351 (horn / horn of plenty) { ................ ................ @@ -6659,7 +6716,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 349 (harp / harp) +# tile 352 (harp / harp) { ................ ................ @@ -6678,7 +6735,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 350 (harp / magic harp) +# tile 353 (harp / magic harp) { ................ ................ @@ -6697,7 +6754,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 351 (bell) +# tile 354 (bell) { ................ .......KA....... @@ -6716,7 +6773,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 352 (bugle) +# tile 355 (bugle) { ................ ................ @@ -6735,7 +6792,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 353 (lute) +# tile 356 (lute) { ................ ................ @@ -6754,7 +6811,7 @@ Z = (195, 195, 195) .AJJAA.......... ..AA............ } -# tile 354 (bagpipe) +# tile 357 (bagpipe) { ................ ...PPP.......... @@ -6773,7 +6830,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 355 (drum / leather drum) +# tile 358 (drum / leather drum) { ................ ................ @@ -6792,7 +6849,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 356 (drum / drum of earthquake) +# tile 359 (drum / drum of earthquake) { ................ ................ @@ -6811,7 +6868,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 357 (pick-axe) +# tile 360 (pick-axe) { ................ ................ @@ -6830,7 +6887,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 358 (spoon) +# tile 361 (spoon) { ................ ................ @@ -6849,7 +6906,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 359 (fishing pole) +# tile 362 (fishing pole) { ................ ...........JJJA. @@ -6868,7 +6925,7 @@ Z = (195, 195, 195) .JJA.......OOA.. ................ } -# tile 360 (iron hook / grappling hook) +# tile 363 (iron hook / grappling hook) { .............N.. ..............P. @@ -6887,7 +6944,7 @@ Z = (195, 195, 195) ..OOA..OOOA..... ....OOOAA....... } -# tile 361 (torch) +# tile 364 (torch) { ................ ................ @@ -6906,7 +6963,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 362 (unicorn horn) +# tile 365 (unicorn horn) { ................ ................ @@ -6925,7 +6982,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 363 (bandage) +# tile 366 (bandage) { ................ ................ @@ -6944,7 +7001,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 364 (phial) +# tile 367 (phial) { ................ ................ @@ -6963,7 +7020,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 365 (candelabrum / Candelabrum of Invocation) +# tile 368 (candelabrum / Candelabrum of Invocation) { .......N........ .......D........ @@ -6982,7 +7039,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 366 (engraved silver bell / Bell of Opening) +# tile 369 (engraved silver bell / Bell of Opening) { ................ .......OA....... @@ -7001,7 +7058,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 367 (tripe ration) +# tile 370 (tripe ration) { ................ ................ @@ -7020,7 +7077,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 368 (corpse) +# tile 371 (corpse) { ................ .....D.DPLN..... @@ -7039,7 +7096,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 369 (eyeball) +# tile 372 (eyeball) { ................ ................ @@ -7058,7 +7115,7 @@ Z = (195, 195, 195) .......OOOPAAA.. ................ } -# tile 370 (severed hand) +# tile 373 (severed hand) { ................ ................ @@ -7077,7 +7134,7 @@ Z = (195, 195, 195) ........AAA..... ................ } -# tile 371 (egg) +# tile 374 (egg) { ................ ................ @@ -7096,7 +7153,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 372 (meatball) +# tile 375 (meatball) { ................ ................ @@ -7115,7 +7172,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 373 (meat stick) +# tile 376 (meat stick) { ................ ................ @@ -7134,7 +7191,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 374 (huge chunk of meat) +# tile 377 (huge chunk of meat) { ................ ................ @@ -7153,7 +7210,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 375 (meat ring) +# tile 378 (meat ring) { ................ ................ @@ -7172,7 +7229,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 376 (glob of gray ooze) +# tile 379 (glob of gray ooze) { ................ ................ @@ -7191,7 +7248,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 377 (glob of brown pudding) +# tile 380 (glob of brown pudding) { ................ ................ @@ -7210,7 +7267,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 378 (glob of green slime) +# tile 381 (glob of green slime) { ................ ................ @@ -7229,7 +7286,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 379 (glob of blood pudding) +# tile 382 (glob of blood pudding) { ................ ................ @@ -7248,7 +7305,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 380 (glob of gel) +# tile 383 (glob of gel) { ................ ................ @@ -7267,7 +7324,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 381 (glob of moldy pudding) +# tile 384 (glob of moldy pudding) { ................ ................ @@ -7286,7 +7343,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 382 (glob of black pudding) +# tile 385 (glob of black pudding) { ................ ................ @@ -7305,7 +7362,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 383 (kelp frond) +# tile 386 (kelp frond) { ....FA.......... ....FFA......... @@ -7324,7 +7381,7 @@ Z = (195, 195, 195) .....FFFFA...... ......FFFFA..... } -# tile 384 (eucalyptus leaf) +# tile 387 (eucalyptus leaf) { ................ ................ @@ -7343,7 +7400,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 385 (apple) +# tile 388 (apple) { ................ ................ @@ -7362,7 +7419,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 386 (orange) +# tile 389 (orange) { ................ ................ @@ -7381,7 +7438,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 387 (mushroom) +# tile 390 (mushroom) { ................ ................ @@ -7400,7 +7457,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 388 (pear) +# tile 391 (pear) { ................ ................ @@ -7419,7 +7476,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 389 (asian pear) +# tile 392 (asian pear) { ................ ................ @@ -7438,7 +7495,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 390 (melon) +# tile 393 (melon) { ................ ................ @@ -7457,7 +7514,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -#tile 391 (pineapple) +#tile 394 (pineapple) { ................ .........GA..... @@ -7476,7 +7533,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 392 (banana) +# tile 395 (banana) { ................ ................ @@ -7495,7 +7552,7 @@ Z = (195, 195, 195) .....AAAAA...... ................ } -# tile 393 (carrot) +# tile 396 (carrot) { ................ ..........F..F.. @@ -7514,7 +7571,7 @@ Z = (195, 195, 195) ...A............ ................ } -# tile 394 (sprig of catnip) +# tile 397 (sprig of catnip) { ................ ................ @@ -7533,7 +7590,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 395 (sprig of wolfsbane) +# tile 398 (sprig of wolfsbane) { ................ ................ @@ -7552,7 +7609,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 396 (clove of garlic) +# tile 399 (clove of garlic) { ................ ................ @@ -7571,7 +7628,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 397 (slime mold) +# tile 400 (slime mold) { ................ ................ @@ -7590,7 +7647,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 398 (lump of royal jelly) +# tile 401 (lump of royal jelly) { ................ ................ @@ -7609,7 +7666,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 399 (cream pie) +# tile 402 (cream pie) { ................ ................ @@ -7628,7 +7685,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 400 (apple pie) +# tile 403 (apple pie) { ................ ................ @@ -7647,7 +7704,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 401 (pumpkin pie) +# tile 404 (pumpkin pie) { ................ ................ @@ -7666,7 +7723,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 402 (sandwich) +# tile 405 (sandwich) { ................ ................ @@ -7685,7 +7742,7 @@ Z = (195, 195, 195) .......AAAAAA... ................ } -# tile 403 (candy bar) +# tile 406 (candy bar) { ................ ................ @@ -7704,7 +7761,7 @@ Z = (195, 195, 195) ....A........... ................ } -# tile 404 (slice of cake) +# tile 407 (slice of cake) { ................ ........D....... @@ -7723,7 +7780,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 405 (fruitcake) +# tile 408 (fruitcake) { ................ ........D....... @@ -7742,7 +7799,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 406 (fortune cookie) +# tile 409 (fortune cookie) { ................ ................ @@ -7761,7 +7818,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 407 (pancake) +# tile 410 (pancake) { ................ ................ @@ -7780,7 +7837,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 408 (tortilla) +# tile 411 (tortilla) { ................ ................ @@ -7800,7 +7857,7 @@ Z = (195, 195, 195) ................ } -# tile 409 (cheese) +# tile 412 (cheese) { ................ ................ @@ -7819,7 +7876,7 @@ Z = (195, 195, 195) ....AAAAAAA..... ................ } -# tile 410 (pill) +# tile 413 (pill) { ................ ................ @@ -7838,7 +7895,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 411 (holy wafer) +# tile 414 (holy wafer) { ................ ................ @@ -7857,7 +7914,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 412 (lembas wafer) +# tile 415 (lembas wafer) { ................ ................ @@ -7876,7 +7933,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 413 (cram ration) +# tile 416 (cram ration) { ................ ...JKA.......... @@ -7895,7 +7952,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 414 (food ration) +# tile 417 (food ration) { ...JJA.......... ...BPA.......... @@ -7914,7 +7971,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 415 (K-ration) +# tile 418 (K-ration) { ................ ................ @@ -7933,7 +7990,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 416 (C-ration) +# tile 419 (C-ration) { ................ ................ @@ -7952,7 +8009,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 417 (tin) +# tile 420 (tin) { ................ ................ @@ -7971,7 +8028,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 418 (ruby / gain ability) +# tile 421 (ruby / gain ability) { ................ ................ @@ -7990,7 +8047,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 419 (metallic / reflection) +# tile 422 (metallic / reflection) { ................ ................ @@ -8009,7 +8066,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 420 (purple-red / regeneration) { +# tile 423 (purple-red / regeneration) { ................ ................ ................ @@ -8027,7 +8084,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 421 (pink / restore ability) +# tile 424 (pink / restore ability) { ................ ................ @@ -8046,7 +8103,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 422 (orange / confusion) +# tile 425 (orange / confusion) { ................ ................ @@ -8065,7 +8122,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 423 (luminescent / clairvoyance) +# tile 426 (luminescent / clairvoyance) { ................ ................ @@ -8084,7 +8141,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 424 (yellow / blindness) +# tile 427 (yellow / blindness) { ................ ................ @@ -8103,7 +8160,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 425 (muddy / ESP) +# tile 428 (muddy / ESP) { ................ ................ @@ -8122,7 +8179,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 426 (emerald / paralysis) +# tile 429 (emerald / paralysis) { ................ ................ @@ -8141,7 +8198,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 427 (dark green / speed) +# tile 430 (dark green / speed) { ................ ................ @@ -8160,7 +8217,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 428 (cyan / levitation) +# tile 431 (cyan / levitation) { ................ ................ @@ -8179,7 +8236,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 429 (sky blue / hallucination) +# tile 432 (sky blue / hallucination) { ................ ................ @@ -8198,7 +8255,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 430 (indigo / invisibility) +# tile 433 (indigo / invisibility) { ................ ................ @@ -8217,7 +8274,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 431 (magenta / see invisible) +# tile 434 (magenta / see invisible) { ................ ................ @@ -8236,7 +8293,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 432 (amber / healing) +# tile 435 (amber / healing) { ................ ................ @@ -8255,7 +8312,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 433 (puce / extra healing) +# tile 436 (puce / extra healing) { ................ ................ @@ -8274,7 +8331,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 434 (milky / gain level) +# tile 437 (milky / gain level) { ................ ................ @@ -8293,7 +8350,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 435 (icy / invulnerability) +# tile 438 (icy / invulnerability) { ................ ................ @@ -8312,7 +8369,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 436 (swirly / enlightenment) +# tile 439 (swirly / enlightenment) { ................ ................ @@ -8331,7 +8388,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 437 (bubbly / monster detection) +# tile 440 (bubbly / monster detection) { ................ ................ @@ -8350,7 +8407,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 438 (smoky / object detection) +# tile 441 (smoky / object detection) { ................ ................ @@ -8369,7 +8426,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 439 (cloudy / gain energy) +# tile 442 (cloudy / gain energy) { ................ ................ @@ -8388,7 +8445,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 440 (effervescent / sleeping) +# tile 443 (effervescent / sleeping) { ................ ................ @@ -8407,7 +8464,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 441 (black / full healing) +# tile 444 (black / full healing) { ................ ................ @@ -8426,7 +8483,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 442 (golden / polymorph) +# tile 445 (golden / polymorph) { ................ ................ @@ -8445,7 +8502,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 443 (brown / booze) +# tile 446 (brown / booze) { ................ ................ @@ -8464,7 +8521,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 444 (fizzy / sickness) +# tile 447 (fizzy / sickness) { ................ ................ @@ -8483,7 +8540,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 445 (dark / fruit juice) +# tile 448 (dark / fruit juice) { ................ ................ @@ -8502,7 +8559,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 446 (white / acid) +# tile 449 (white / acid) { ................ ................ @@ -8521,7 +8578,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 447 (murky / oil) +# tile 450 (murky / oil) { ................ ................ @@ -8540,7 +8597,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 448 (clear / water) +# tile 451 (clear / water) { ................ ................ @@ -8559,7 +8616,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 449 (sparkling / amnesia) +# tile 452 (sparkling / amnesia) { ................ ................ @@ -8578,7 +8635,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 450 (blood-red / blood) +# tile 453 (blood-red / blood) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8597,7 +8654,7 @@ Z = (195, 195, 195) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 451 (blood-red / vampire blood) +# tile 454 (blood-red / vampire blood) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8616,7 +8673,7 @@ Z = (195, 195, 195) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 452 (ZELGO MER / enchant armor) +# tile 455 (ZELGO MER / enchant armor) { ................ ................ @@ -8635,7 +8692,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 453 (JUYED AWK YACC / destroy armor) +# tile 456 (JUYED AWK YACC / destroy armor) { ................ ................ @@ -8654,7 +8711,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 454 (NR 9 / confuse monster) +# tile 457 (NR 9 / confuse monster) { ................ ................ @@ -8673,7 +8730,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 455 (XIXAXA XOXAXA XUXAXA / scare monster) +# tile 458 (XIXAXA XOXAXA XUXAXA / scare monster) { ................ ................ @@ -8692,7 +8749,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 456 (PRATYAVAYAH / remove curse) +# tile 459 (PRATYAVAYAH / remove curse) { ................ ................ @@ -8711,7 +8768,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 457 (DAIYEN FOOELS / enchant weapon) +# tile 460 (DAIYEN FOOELS / enchant weapon) { ................ ................ @@ -8730,7 +8787,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 458 (LEP GEX VEN ZEA / create monster) +# tile 461 (LEP GEX VEN ZEA / create monster) { ................ ................ @@ -8749,7 +8806,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 459 (PRIRUTSENIE / taming) +# tile 462 (PRIRUTSENIE / taming) { ................ ................ @@ -8768,7 +8825,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 460 (ELBIB YLOH / genocide) +# tile 463 (ELBIB YLOH / genocide) { ................ ................ @@ -8787,7 +8844,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 461 (4OFAE OF9 SCC9 / elementalism) +# tile 464 (4OFAE OF9 SCC9 / elementalism) { ................ ................ @@ -8806,7 +8863,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 462 (VERR YED HORRE / light) +# tile 465 (VERR YED HORRE / light) { ................ ................ @@ -8825,7 +8882,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 463 (TEMP USF UGIT / time) +# tile 466 (TEMP USF UGIT / time) { ................ ................ @@ -8844,7 +8901,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 464 (VENZAR BORGAVVE / teleportation) +# tile 467 (VENZAR BORGAVVE / teleportation) { ................ ................ @@ -8863,7 +8920,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 465 (THARR / gold detection) +# tile 468 (THARR / gold detection) { ................ ................ @@ -8882,7 +8939,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 466 (YUM YUM / food detection) +# tile 469 (YUM YUM / food detection) { ................ ................ @@ -8901,7 +8958,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 467 (POTESTAS / knowledge) +# tile 470 (POTESTAS / knowledge) { ................ ................ @@ -8920,7 +8977,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 468 (KERNOD WEL / identify) +# tile 471 (KERNOD WEL / identify) { ................ ................ @@ -8939,7 +8996,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 469 (TRATS ARL / air) +# tile 472 (TRATS ARL / air) { ................ ................ @@ -8958,7 +9015,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 470 (TLON UQBAR / transmogrify) +# tile 473 (TLON UQBAR / transmogrify) { ................ ................ @@ -8977,7 +9034,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 471 (ELAM EBOW / magic mapping) +# tile 474 (ELAM EBOW / magic mapping) { ................ ................ @@ -8996,7 +9053,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 472 (DUAM XNAHT / amnesia) +# tile 475 (DUAM XNAHT / amnesia) { ................ ................ @@ -9015,7 +9072,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 473 (AQUE BRAGH / flood) +# tile 476 (AQUE BRAGH / flood) { ................ ................ @@ -9034,7 +9091,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 474 (ANDOVA BEGARIN / fire) +# tile 477 (ANDOVA BEGARIN / fire) { ................ ................ @@ -9053,7 +9110,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 475 (KIRJE / earth) +# tile 478 (KIRJE / earth) { ................ ................ @@ -9072,7 +9129,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 476 (VE FORBRYDERNE / punishment) +# tile 479 (VE FORBRYDERNE / punishment) { ................ ................ @@ -9091,7 +9148,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 477 (HACKEM MUCHE / charging) +# tile 480 (HACKEM MUCHE / charging) { ................ ................ @@ -9110,7 +9167,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 478 (TOYL ENT RUBLE / cloning) +# tile 481 (TOYL ENT RUBLE / cloning) { ................ ................ @@ -9129,7 +9186,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 479 (VELOX NEB / stinking cloud) +# tile 482 (VELOX NEB / stinking cloud) { ................ ................ @@ -9148,7 +9205,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 480 (HZLRC KSTSBD MPFNG / acquirement) +# tile 483 (HZLRC KSTSBD MPFNG / acquirement) { ................ ................ @@ -9167,7 +9224,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 481 (OOBID IBBOB / ice) +# tile 484 (OOBID IBBOB / ice) { ................ ................ @@ -9186,7 +9243,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 482 (FOOBIE BLETCH / magic detection) +# tile 485 (FOOBIE BLETCH / magic detection) { ................ ................ @@ -9205,7 +9262,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 483 (TEMOV) +# tile 486 (TEMOV) { ................ ................ @@ -9224,7 +9281,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 484 (GARVEN DEH) +# tile 487 (GARVEN DEH) { ................ ................ @@ -9243,7 +9300,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 485 (READ ME) +# tile 488 (READ ME) { ................ ................ @@ -9262,7 +9319,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 486 (ETAOIN SHRDLU) +# tile 489 (ETAOIN SHRDLU) { ................ ................ @@ -9281,7 +9338,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 487 (LOREM IPSUM) +# tile 490 (LOREM IPSUM) { ................ ................ @@ -9300,7 +9357,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 488 (FNORD) +# tile 491 (FNORD) { ................ ................ @@ -9319,7 +9376,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 489 (KO BATE) +# tile 492 (KO BATE) { ................ ................ @@ -9338,7 +9395,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 490 (ABRA KA DABRA) +# tile 493 (ABRA KA DABRA) { ................ ................ @@ -9357,7 +9414,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 491 (ASHPD SODALG) +# tile 494 (ASHPD SODALG) { ................ ................ @@ -9376,7 +9433,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 492 (ZLORFIK) +# tile 495 (ZLORFIK) { ................ ................ @@ -9395,7 +9452,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 493 (GNIK SISI VLE) +# tile 496 (GNIK SISI VLE) { ................ ................ @@ -9414,7 +9471,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 494 (HAPAX LEGOMENON) +# tile 497 (HAPAX LEGOMENON) { ................ ................ @@ -9433,7 +9490,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 495 (EIRIS SAZUN IDISI) +# tile 498 (EIRIS SAZUN IDISI) { ................ ................ @@ -9452,7 +9509,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 496 (PHOL ENDE WODAN) +# tile 499 (PHOL ENDE WODAN) { ................ ................ @@ -9471,7 +9528,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 497 (GHOTI) +# tile 500 (GHOTI) { ................ ................ @@ -9490,7 +9547,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 498 (MAPIRO MAHAMA DIROMAT) +# tile 501 (MAPIRO MAHAMA DIROMAT) { ................ ................ @@ -9509,7 +9566,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 499 (VAS CORP BET MANI) +# tile 502 (VAS CORP BET MANI) { ................ ................ @@ -9528,7 +9585,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 500 (XOR OTA) +# tile 503 (XOR OTA) { ................ ................ @@ -9547,7 +9604,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 501 (STRC PRST SKRZ KRK) +# tile 504 (STRC PRST SKRZ KRK) { ................ ................ @@ -9566,7 +9623,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 502 (NYEHEHE) +# tile 505 (NYEHEHE) { ................ ................ @@ -9585,7 +9642,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 503 (ELPHE MONATER) +# tile 506 (ELPHE MONATER) { ................ ................ @@ -9604,7 +9661,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 504 (ABAJ) +# tile 507 (ABAJ) { ................ ................ @@ -9623,7 +9680,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 505 (CONG LAT URAT ION) +# tile 508 (CONG LAT URAT ION) { ................ ................ @@ -9642,7 +9699,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 506 (DESUM TETRAL) +# tile 509 (DESUM TETRAL) { ................ ................ @@ -9661,7 +9718,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 507 (NHINRL) +# tile 510 (NHINRL) { ................ ................ @@ -9680,7 +9737,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 508 (ISAY INAY) +# tile 511 (ISAY INAY) { ................ ................ @@ -9699,7 +9756,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 509 (PEBCAK RTFM) +# tile 512 (PEBCAK RTFM) { ................ ................ @@ -9718,7 +9775,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 510 (KA TET) +# tile 513 (KA TET) { ................ ................ @@ -9737,7 +9794,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 511 (stamped / mail) +# tile 514 (stamped / mail) { ................ ................ @@ -9756,7 +9813,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 512 (unlabeled / blank paper) +# tile 515 (unlabeled / blank paper) { ................ ................ @@ -9775,7 +9832,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 513 (parchment / dig) +# tile 516 (parchment / dig) { ................ ................ @@ -9794,7 +9851,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 514 (vellum / magic missile) +# tile 517 (vellum / magic missile) { ................ ................ @@ -9813,7 +9870,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 515 (ragged / fireball) +# tile 518 (ragged / fireball) { ................ ................ @@ -9832,7 +9889,7 @@ Z = (195, 195, 195) ......OOJJAA.... ................ } -# tile 516 (dog eared / cone of cold) +# tile 519 (dog eared / cone of cold) { ................ ................ @@ -9851,7 +9908,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 517 (mottled / sleep) +# tile 520 (mottled / sleep) { ................ ................ @@ -9870,7 +9927,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 518 (stained / finger of death) +# tile 521 (stained / finger of death) { ................ ................ @@ -9889,7 +9946,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 519 (electric blue / lightning) +# tile 522 (electric blue / lightning) { ................ ................ @@ -9908,7 +9965,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 520 (olive green / poison blast) +# tile 523 (olive green / poison blast) { ................ ................ @@ -9927,7 +9984,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 521 (acid green / acid blast) +# tile 524 (acid green / acid blast) { ................ ................ @@ -9946,7 +10003,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 522 (ghostly / sonic boom) +# tile 525 (ghostly / sonic boom) { ................ ................ @@ -9965,7 +10022,7 @@ Z = (195, 195, 195) .......UUUAA.... ................ } -# tile 523 (worn / psionic wave) +# tile 526 (worn / psionic wave) { ................ ................ @@ -9984,7 +10041,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 524 (red / force bolt) +# tile 527 (red / force bolt) { ................ ................ @@ -10003,7 +10060,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 525 (velvet / drain life) +# tile 528 (velvet / drain life) { ................ ................ @@ -10022,7 +10079,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 526 (black / summon undead) +# tile 529 (black / summon undead) { ................ ................ @@ -10041,7 +10098,7 @@ Z = (195, 195, 195) .......AAA...... ................ } -# tile 527 (dark / command undead) +# tile 530 (dark / command undead) { ................ ................ @@ -10060,7 +10117,7 @@ Z = (195, 195, 195) ....AAABBBA..... .......AAA...... } -# tile 528 (pink / knock) +# tile 531 (pink / knock) { ................ ................ @@ -10079,7 +10136,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 529 (dark green / wizard lock) +# tile 532 (dark green / wizard lock) { ................ ................ @@ -10098,7 +10155,7 @@ Z = (195, 195, 195) .......FFFAA.... ................ } -# tile 530 (silver / polymorph) +# tile 533 (silver / polymorph) { ................ ................ @@ -10117,7 +10174,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 531 (platinum / repair armor) +# tile 534 (platinum / repair armor) { ................ ................ @@ -10136,7 +10193,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 532 (decrepit / reflection) +# tile 535 (decrepit / reflection) { ................ ................ @@ -10155,7 +10212,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 533 (canvas / flame sphere) +# tile 536 (canvas / flame sphere) { ................ ................ @@ -10174,7 +10231,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 534 (hardcover / freeze sphere) +# tile 537 (hardcover / freeze sphere) { ................ ................ @@ -10193,7 +10250,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 535 (shining / cancellation) +# tile 538 (shining / cancellation) { ....N........... .......N........ @@ -10212,7 +10269,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 536 (feathered / fire bolt) +# tile 539 (feathered / fire bolt) { ................ ................ @@ -10231,7 +10288,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 537 (light green / slow monster) +# tile 540 (light green / slow monster) { ................ ................ @@ -10250,7 +10307,7 @@ Z = (195, 195, 195) .......GGGAA.... ................ } -# tile 538 (light blue / cause fear) +# tile 541 (light blue / cause fear) { ................ ................ @@ -10269,7 +10326,7 @@ Z = (195, 195, 195) .......BBBAA.... ................ } -# tile 539 (magenta / charm monster) +# tile 542 (magenta / charm monster) { ................ ................ @@ -10288,7 +10345,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 540 (orange / confuse monster) +# tile 543 (orange / confuse monster) { ................ ................ @@ -10307,7 +10364,7 @@ Z = (195, 195, 195) .......CCCAA.... ................ } -# tile 541 (purple / haste self) +# tile 544 (purple / haste self) { ................ ................ @@ -10326,7 +10383,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 542 (tan / levitation) +# tile 545 (tan / levitation) { ................ ................ @@ -10345,7 +10402,7 @@ Z = (195, 195, 195) .......KKKAA.... ................ } -# tile 543 (gold / teleport away) +# tile 546 (gold / teleport away) { ................ ................ @@ -10364,7 +10421,7 @@ Z = (195, 195, 195) .......HHHAA.... ................ } -# tile 544 (ochre / passwall) +# tile 547 (ochre / passwall) { ................ ................ @@ -10383,7 +10440,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 545 (dark brown / invisibility) +# tile 548 (dark brown / invisibility) { ................ ................ @@ -10402,7 +10459,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 546 (thin / jumping) +# tile 549 (thin / jumping) { ................ ................ @@ -10421,7 +10478,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 547 (cloth / light) +# tile 550 (cloth / light) { ................ ................ @@ -10440,7 +10497,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 548 (leathery / detect monsters) +# tile 551 (leathery / detect monsters) { ................ ................ @@ -10459,7 +10516,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 549 (cyan / detect food) +# tile 552 (cyan / detect food) { ................ ................ @@ -10478,7 +10535,7 @@ Z = (195, 195, 195) .......BBBAA.... ................ } -# tile 550 (violet / detect unseen) +# tile 553 (violet / detect unseen) { ................ ................ @@ -10497,7 +10554,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 551 (gray / detect treasure) +# tile 554 (gray / detect treasure) { ................ ................ @@ -10516,7 +10573,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 552 (dark blue / clairvoyance) +# tile 555 (dark blue / clairvoyance) { ................ ................ @@ -10535,7 +10592,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 553 (faded / enlighten) +# tile 556 (faded / enlighten) { ................ ................ @@ -10554,7 +10611,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 554 (bronze / identify) +# tile 557 (bronze / identify) { ................ ................ @@ -10573,7 +10630,7 @@ Z = (195, 195, 195) .......CCCAA.... ................ } -# tile 555 (dusty / magic mapping) +# tile 558 (dusty / magic mapping) { ................ ................ @@ -10592,7 +10649,7 @@ Z = (195, 195, 195) .KAKA..JJJAA.... ................ } -# tile 556 (white / healing) +# tile 559 (white / healing) { ................ ................ @@ -10611,7 +10668,7 @@ Z = (195, 195, 195) .......PNNAA.... ................ } -# tile 557 (yellow / cure blindness) +# tile 560 (yellow / cure blindness) { ................ ................ @@ -10630,7 +10687,7 @@ Z = (195, 195, 195) .......HHHAA.... ................ } -# tile 558 (plaid / extra healing) +# tile 561 (plaid / extra healing) { ................ ................ @@ -10649,7 +10706,7 @@ Z = (195, 195, 195) .......EFDAA.... ................ } -# tile 559 (light brown / restore ability) +# tile 562 (light brown / restore ability) { ................ ................ @@ -10668,7 +10725,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 560 (thick / stone to flesh) +# tile 563 (thick / stone to flesh) { ................ ................ @@ -10687,7 +10744,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 561 (indigo / cure sickness) +# tile 564 (indigo / cure sickness) { ................ ................ @@ -10706,7 +10763,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 562 (turquoise / create monster) +# tile 565 (turquoise / create monster) { ................ ................ @@ -10725,7 +10782,7 @@ Z = (195, 195, 195) .......FBBAA.... ................ } -# tile 563 (wrinkled / remove curse) +# tile 566 (wrinkled / remove curse) { ................ ................ @@ -10744,7 +10801,7 @@ Z = (195, 195, 195) ......JJKKAA.... ................ } -# tile 564 (copper / turn undead) +# tile 567 (copper / turn undead) { ................ ................ @@ -10763,7 +10820,7 @@ Z = (195, 195, 195) .......JCJAA.... ................ } -# tile 565 (glittering / create familiar) +# tile 568 (glittering / create familiar) { ................ ................ @@ -10782,7 +10839,7 @@ Z = (195, 195, 195) .......PPPAN.... .......N........ } -# tile 566 (dull / protection) +# tile 569 (dull / protection) { ................ ................ @@ -10801,7 +10858,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 567 (deep) +# tile 570 (deep) { ................ ................ @@ -10820,7 +10877,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 568 (big) +# tile 571 (big) { ................ .....KD......... @@ -10839,7 +10896,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 569 (fuzzy) +# tile 572 (fuzzy) { ................ ................ @@ -10858,7 +10915,7 @@ Z = (195, 195, 195) ..A.AAAFFFA..... ....A..AAA...... } -# tile 570 (spotted) +# tile 573 (spotted) { ................ ................ @@ -10877,7 +10934,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 571 (colorful) +# tile 574 (colorful) { ................ ................ @@ -10896,7 +10953,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 572 (long) +# tile 575 (long) { ................ ................ @@ -10915,7 +10972,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 573 (rainbow) +# tile 576 (rainbow) { ................ ................ @@ -10934,7 +10991,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 574 (tattered) +# tile 577 (tattered) { ................ ................ @@ -10953,7 +11010,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 575 (wide) +# tile 578 (wide) { ................ ................ @@ -10972,7 +11029,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 576 (left-handed) +# tile 579 (left-handed) { ................ ................ @@ -10991,7 +11048,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 577 (psychedelic) +# tile 580 (psychedelic) { ................ ................ @@ -11010,7 +11067,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 578 (spiral-bound) +# tile 581 (spiral-bound) { ................ ................ @@ -11029,7 +11086,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 579 (stapled) +# tile 582 (stapled) { ................ ................ @@ -11048,7 +11105,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 580 (stylish) +# tile 583 (stylish) { ................ ................ @@ -11067,7 +11124,7 @@ Z = (195, 195, 195) .......DCDAA.... ................ } -# tile 581 (tartan) +# tile 584 (tartan) { ................ .....PPPPA...... @@ -11086,7 +11143,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 582 (chartreuse) +# tile 585 (chartreuse) { ................ ................ @@ -11105,7 +11162,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 583 (crimson) +# tile 586 (crimson) { ................ ................ @@ -11124,7 +11181,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 584 (charcoal) +# tile 587 (charcoal) { ................ ................ @@ -11143,7 +11200,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 585 (plain / blank paper) +# tile 588 (plain / blank paper) { ................ ................ @@ -11162,7 +11219,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 586 (paperback / novel) +# tile 589 (paperback / novel) { ................ ................ @@ -11181,7 +11238,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 587 (papyrus / Book of the Dead) +# tile 590 (papyrus / Book of the Dead) { ................ ................ @@ -11200,7 +11257,7 @@ Z = (195, 195, 195) .......AAA...... ................ } -# tile 588 (glass / light) +# tile 591 (glass / light) { ................ ................ @@ -11219,7 +11276,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 589 (balsa / detection) +# tile 592 (balsa / detection) { ................ ................ @@ -11238,7 +11295,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 590 (crystal / enlightenment) +# tile 593 (crystal / enlightenment) { ................ ................ @@ -11257,7 +11314,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 591 (bamboo / healing) +# tile 594 (bamboo / healing) { ................ .........F...... @@ -11276,7 +11333,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 592 (maple / create monster) +# tile 595 (maple / create monster) { ................ ................ @@ -11295,7 +11352,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 593 (crusty / fear) +# tile 596 (crusty / fear) { ................ ................ @@ -11314,7 +11371,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 594 (pine / wishing) +# tile 597 (pine / wishing) { ................ ................ @@ -11333,7 +11390,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 595 (oak / nothing) +# tile 598 (oak / nothing) { ................ ................ @@ -11352,7 +11409,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 596 (plastic / wonder) +# tile 599 (plastic / wonder) { ................ ................ @@ -11371,7 +11428,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 597 (green / wind) +# tile 600 (green / wind) { ................ ................ @@ -11390,7 +11447,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 598 (ebony / striking) +# tile 601 (ebony / striking) { ................ ................ @@ -11409,7 +11466,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 599 (marble / make invisible) +# tile 602 (marble / make invisible) { ................ ................ @@ -11428,7 +11485,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 600 (tin / slow monster) +# tile 603 (tin / slow monster) { ................ ................ @@ -11447,7 +11504,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 601 (brass / speed monster) +# tile 604 (brass / speed monster) { ................ ................ @@ -11466,7 +11523,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 602 (copper / undead turning) +# tile 605 (copper / undead turning) { ................ ................ @@ -11485,7 +11542,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 603 (ceramic / draining) +# tile 606 (ceramic / draining) { ................ ................ @@ -11504,7 +11561,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 604 (silver / polymorph) +# tile 607 (silver / polymorph) { ................ ................ @@ -11523,7 +11580,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 605 (platinum / cancellation) +# tile 608 (platinum / cancellation) { ................ ................ @@ -11542,7 +11599,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 606 (iridium / teleportation) +# tile 609 (iridium / teleportation) { ................ ................ @@ -11561,7 +11618,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 607 (black / create horde) +# tile 610 (black / create horde) { ................ ................ @@ -11580,7 +11637,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 608 (bronze / extra healing) +# tile 611 (bronze / extra healing) { ................ ................ @@ -11599,7 +11656,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 609 (zinc / opening) +# tile 612 (zinc / opening) { ................ ................ @@ -11618,7 +11675,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 610 (aluminum / locking) +# tile 613 (aluminum / locking) { ................ ................ @@ -11637,7 +11694,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 611 (uranium / probing) +# tile 614 (uranium / probing) { ................ ................ @@ -11656,7 +11713,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 612 (iron / digging) +# tile 615 (iron / digging) { ................ ................ @@ -11675,7 +11732,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 570 (forked / fireball) +# tile 616 (forked / fireball) { ................ ................ @@ -11694,7 +11751,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (steel / magic missile) +# tile 617 (steel / magic missile) { ................ ................ @@ -11713,7 +11770,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 614 (hexagonal / fire) +# tile 618 (hexagonal / fire) { ................ ................ @@ -11732,7 +11789,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 615 (short / cold) +# tile 619 (short / cold) { ................ ................ @@ -11751,7 +11808,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 616 (runed / sleep) +# tile 620 (runed / sleep) { ................ ................ @@ -11770,7 +11827,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (long / death) +# tile 621 (long / death) { ................ .............NO. @@ -11789,7 +11846,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (curved / lightning) +# tile 622 (curved / lightning) { ................ .......NO....... @@ -11808,7 +11865,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 619 (octagonal / poison gas) +# tile 623 (octagonal / poison gas) { ................ ................ @@ -11827,7 +11884,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 620 (twisted / corrosion) +# tile 624 (twisted / corrosion) { ................ .............KK. @@ -11846,7 +11903,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 621 (titanium / noise) +# tile 625 (titanium / noise) { ................ ................ @@ -11865,7 +11922,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 622 (driftwood / deluge) +# tile 626 (driftwood / deluge) { ................ ................ @@ -11885,7 +11942,7 @@ Z = (195, 195, 195) ................ } -# tile 570 (spiked) +# tile 627 (spiked) { ................ ................ @@ -11904,7 +11961,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 571 (jeweled) +# tile 628 (jeweled) { ................ ................ @@ -11923,7 +11980,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 572 (gold piece) +# tile 629 (gold piece) { ................ ................ @@ -11942,7 +11999,7 @@ Z = (195, 195, 195) .........HA..... ...........HA... } -# tile 573 (white / dilithium crystal) +# tile 630 (white / dilithium crystal) { ................ ................ @@ -11961,7 +12018,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 574 (white / diamond) +# tile 631 (white / diamond) { ................ ................ @@ -11980,7 +12037,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 575 (red / ruby) +# tile 632 (red / ruby) { ................ ................ @@ -11999,7 +12056,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 576 (orange / jacinth) +# tile 633 (orange / jacinth) { ................ ................ @@ -12018,7 +12075,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 577 (blue / sapphire) +# tile 634 (blue / sapphire) { ................ ................ @@ -12037,7 +12094,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 578 (black / black opal) +# tile 635 (black / black opal) { ................ ................ @@ -12056,7 +12113,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 579 (green / emerald) +# tile 636 (green / emerald) { ................ ................ @@ -12075,7 +12132,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 580 (green / turquoise) +# tile 637 (green / turquoise) { ................ ................ @@ -12094,7 +12151,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 581 (yellow / citrine) +# tile 638 (yellow / citrine) { ................ ................ @@ -12113,7 +12170,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 582 (green / aquamarine) +# tile 639 (green / aquamarine) { ................ ................ @@ -12132,7 +12189,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 583 (yellowish brown / amber) +# tile 640 (yellowish brown / amber) { ................ ................ @@ -12151,7 +12208,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 584 (yellowish brown / topaz) +# tile 641 (yellowish brown / topaz) { ................ ................ @@ -12170,7 +12227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 585 (black / jet) +# tile 642 (black / jet) { ................ ................ @@ -12189,7 +12246,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 586 (white / opal) +# tile 643 (white / opal) { ................ ................ @@ -12208,7 +12265,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 587 (yellow / chrysoberyl) +# tile 644 (yellow / chrysoberyl) { ................ ................ @@ -12227,7 +12284,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 588 (red / garnet) +# tile 645 (red / garnet) { ................ ................ @@ -12246,7 +12303,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 589 (violet / amethyst) +# tile 646 (violet / amethyst) { ................ ................ @@ -12265,7 +12322,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 590 (red / jasper) +# tile 647 (red / jasper) { ................ ................ @@ -12284,7 +12341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 591 (violet / fluorite) +# tile 648 (violet / fluorite) { ................ ................ @@ -12303,7 +12360,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 592 (black / obsidian) +# tile 649 (black / obsidian) { ................ ................ @@ -12322,7 +12379,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 593 (orange / agate) +# tile 650 (orange / agate) { ................ ................ @@ -12341,7 +12398,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 594 (green / jade) +# tile 651 (green / jade) { ................ ................ @@ -12360,7 +12417,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 595 (white / worthless piece of white glass) +# tile 652 (white / worthless piece of white glass) { ................ ................ @@ -12379,7 +12436,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 596 (blue / worthless piece of blue glass) +# tile 653 (blue / worthless piece of blue glass) { ................ ................ @@ -12398,7 +12455,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 597 (red / worthless piece of red glass) +# tile 654 (red / worthless piece of red glass) { ................ ................ @@ -12417,7 +12474,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 598 (yellowish brown / worthless piece of yellowish brown glass) +# tile 655 (yellowish brown / worthless piece of yellowish brown glass) { ................ ................ @@ -12436,7 +12493,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 599 (orange / worthless piece of orange glass) +# tile 656 (orange / worthless piece of orange glass) { ................ ................ @@ -12455,7 +12512,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 600 (yellow / worthless piece of yellow glass) +# tile 657 (yellow / worthless piece of yellow glass) { ................ ................ @@ -12474,7 +12531,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 601 (black / worthless piece of black glass) +# tile 658 (black / worthless piece of black glass) { ................ ................ @@ -12493,7 +12550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 602 (green / worthless piece of green glass) +# tile 659 (green / worthless piece of green glass) { ................ ................ @@ -12512,7 +12569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 603 (violet / worthless piece of violet glass) +# tile 660 (violet / worthless piece of violet glass) { ................ ................ @@ -12531,7 +12588,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 604 (gray / luckstone) +# tile 661 (gray / luckstone) { ................ ................ @@ -12550,7 +12607,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 605 (gray / healthstone) +# tile 662 (gray / healthstone) { ................ ................ @@ -12569,7 +12626,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 606 (gray / loadstone) +# tile 663 (gray / loadstone) { ................ ................ @@ -12588,7 +12645,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 607 (gray / touchstone) +# tile 664 (gray / touchstone) { ................ ................ @@ -12607,7 +12664,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 608 (gray / whetstone) +# tile 665 (gray / whetstone) { ................ ................ @@ -12626,7 +12683,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 609 (gray / flint) +# tile 666 (gray / flint) { ................ ................ @@ -12645,7 +12702,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 610 (shiny / sling bullet) +# tile 667 (shiny / sling bullet) { ................ ................ @@ -12664,7 +12721,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 611 (rock) +# tile 668 (rock) { ................ ................ @@ -12683,7 +12740,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 612 (boulder) +# tile 669 (boulder) { ................ ................ @@ -12702,7 +12759,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (statue) +# tile 670 (statue) { ................ ........JJ...... @@ -12721,7 +12778,7 @@ Z = (195, 195, 195) .....JJJJJJAA... ................ } -# tile 614 (heavy iron ball) +# tile 671 (heavy iron ball) { ................ ................ @@ -12740,7 +12797,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 615 (iron chain) +# tile 672 (iron chain) { ................ ................ @@ -12759,7 +12816,7 @@ Z = (195, 195, 195) ...........PP.PA ............AA.. } -# tile 616 (splash of venom / blinding venom) +# tile 673 (splash of venom / blinding venom) { ................ ................ @@ -12778,7 +12835,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (splash of venom / acid venom) +# tile 674 (splash of venom / acid venom) { ................ ................ @@ -12797,7 +12854,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (snowball) +# tile 675 (snowball) { ................ ................ @@ -12816,7 +12873,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 693 (spike) +# tile 676 (spike) { ................ ................ @@ -12835,7 +12892,7 @@ Z = (195, 195, 195) .......N........ ................ } -# tile 694 (spirit) +# tile 677 (spirit) { ABCDEFGHIJKLMNOP BAAAAAAAAAAAAAAO From d549ea99f756d9f91d4c8263341517e2a290d5b4 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 09:33:35 +0100 Subject: [PATCH 38/82] Revert "Converted Ozymandias' Tomb from a random vault room to a special level that can appear in the dungeon (reported by hothraxxa). This stemmed from an issue where the special room could appear more than once in a game - ruining the uniqueness of it." This reverts commit 15b542831e0d2a510271f7e37af9ad7a1f82746a. To avoid multiple Ozymandias rooms, I simply removed the engraving in the room saying it's Ozzy's room. But this special room works much better as a vault than an entire level. --- dat/dungeon.def | 1 - dat/ozzy.des | 79 ---------------------- dat/vaults.des | 33 ++++++++- sys/mac/Files.r | 2 - sys/unix/Makefile.dat | 2 - sys/unix/Makefile.top | 2 +- sys/unix/NetHack.xcodeproj/project.pbxproj | 8 +-- sys/winnt/Makefile.gcc | 3 - sys/winnt/Makefile.msc | 3 - util/lev_main.c | 1 - win/win32/vs2017/files.props | 2 - 11 files changed, 36 insertions(+), 100 deletions(-) delete mode 100644 dat/ozzy.des diff --git a/dat/dungeon.def b/dat/dungeon.def index 214ec31c1..1e718c900 100644 --- a/dat/dungeon.def +++ b/dat/dungeon.def @@ -39,7 +39,6 @@ BRANCH: "The Spider Caves" @ (26, 4) BRANCH: "The Sunless Sea" @ (28, 4) BRANCH: "The Temple of Moloch" @ (32, 4) BRANCH: "The Giant Caverns" @ (32, 4) -LEVEL: "ozzy" "N" @ (25, 10) 45 LEVEL: "nymph" "N" @ (8, 17) 45 RNDLEVEL: "bigrm" "B" @ (10, 20) 50 20 LEVEL: "stor" "S" @ (19, 8) 66 diff --git a/dat/ozzy.des b/dat/ozzy.des deleted file mode 100644 index 88f4abd50..000000000 --- a/dat/ozzy.des +++ /dev/null @@ -1,79 +0,0 @@ -LEVEL:"ozzy" -# Ozymandias' Tomb (from UnNetHack) -# Converted from a vault level to a proper dungeon level. - -GEOMETRY:random -#0 1 2 3 4 5 6 7 -#1234567890123456789012345678901234567890123456789012345678901234567890 -MAP ---------- -|.......| -|.......| -|.......| -|......\| -|.......| -|.......| -|.......| ---------- -ENDMAP - -REGION:(1,1,7,7),lit,"rndvault",filled { -ENGRAVING: (6,4), burn, "Look on my works, ye mighty, and despair" -[10%]: ENGRAVING: (5,4), burn, "My name is Ozymandias, king of kings" -[50%]: TRAP: "hole", (3,2) -[80%]: TRAP: "hole", (5,3) -[30%]: TRAP: "hole", (3,6) -[75%]: TRAP: "web", (1,1) -[75%]: TRAP: "web", (1,6) -TRAP: "web", (7,6) - -CONTAINER:"chest", (6,1), trapped { } -TRAP: "statue", (7,3) -TRAP: "statue", (7,7) -OBJECT:('`',"statue"),(7,3),montype:('d', "werejackal") -OBJECT:('`',"statue"),(7,7),montype:('@', "elven royal") -} - -ROOM: "ordinary" , random, random, random, random { - STAIR: random, up - OBJECT: random, random - LOOP [10] { GOLD: 1d200, random } - MONSTER: 'M', random, hostile - MONSTER: 'M', random, hostile -} - -ROOM: "ordinary" , random, random, random, random { - STAIR: random, down - - OBJECT: random, random - LOOP [10] { GOLD: 1d200, random } - TRAP: random, random - MONSTER: random, random, hostile - MONSTER: 'M', random, hostile -} - -ROOM: "ordinary" , random, random, random, random { - OBJECT: random, random - LOOP [10] { GOLD: 1d200, random } - OBJECT: random, random - MONSTER: random, random, hostile - -} - -ROOM: "ordinary" , random, random, random, random { - OBJECT: random, random - LOOP [10] { GOLD: 1d200, random } - TRAP: random, random - MONSTER: 'M', random, hostile - MONSTER: 'M', random, hostile -} - -ROOM: "ordinary" , random, random, random, random { - OBJECT: random, random - LOOP [10] { GOLD: 1d200, random } - TRAP: random, random - MONSTER: random, random, hostile - MONSTER: 'M', random, hostile -} - -RANDOM_CORRIDORS \ No newline at end of file diff --git a/dat/vaults.des b/dat/vaults.des index 6fbc55ccb..7c8cb0078 100644 --- a/dat/vaults.des +++ b/dat/vaults.des @@ -1334,13 +1334,44 @@ ROOM:"rndvault", unlit, random, random, (4,4) { OBJECT:('%', "corpse"), random, montype:'@' } +# Ozymandias' Tomb +LEVEL:"vlt-0075" +FLAGS:rndvault +MINDEPTH:20 +GEOMETRY:random +MAP +--------- +|.......| +|.......| +|.......| +|......\| +|.......| +|.......| +|.......| +--------- +ENDMAP +REGION:(1,1,7,7),lit,"rndvault",filled { } +ENGRAVING: (6,4), burn, "Look on my works, ye mighty, and despair" + +[50%]: TRAP: "hole", (3,2) +[80%]: TRAP: "hole", (5,3) +[30%]: TRAP: "hole", (3,6) +[75%]: TRAP: "web", (1,1) +[75%]: TRAP: "web", (1,6) +TRAP: "web", (7,6) + +CONTAINER:"chest", (6,1), trapped { } +TRAP: "statue", (7,3) +TRAP: "statue", (7,7) +LOOP [4] { [50%]: OBJECT:('`',"statue"),random } + # Default room # Because this is the last room this will show up regardless of MINLEVEL # (At least that's what some testing revealed.) # We'll make this room add some color to the dungeon but no dangerous # lava or deep water pools. -LEVEL:"vlt-0075" +LEVEL:"vlt-0076" FLAGS:rndvault ROOM:"rndvault", random, random, random, (3,3) { $terr = TERRAIN: {'I', 'T', 't', 's', 'w', 'C', ',' } diff --git a/sys/mac/Files.r b/sys/mac/Files.r index 979a5e92f..6e8cb3853 100644 --- a/sys/mac/Files.r +++ b/sys/mac/Files.r @@ -117,7 +117,6 @@ read 'File' (1069,"oracle-2.lev") "oracle-3.lev"; read 'File' (1070,"oracle-3.lev") "oracle-3.lev"; read 'File' (1070,"oracle-4.lev") "oracle-4.lev"; read 'File' (1071,"oracles") "oracles"; -read 'File' (1070,"ozzy.lev") "ozzy.lev"; read 'File' (1072,"orcus.lev") "orcus.lev"; //read 'File' (1073,"quest.dat") "quest.dat"; read 'File' (1074,"rumors") "rumors"; @@ -336,7 +335,6 @@ read 'File' (1070,"oracle-3.lev") ":lib:oracle-3.lev"; read 'File' (1070,"oracle-4.lev") ":lib:oracle-4.lev"; read 'File' (1071,"oracles") ":lib:oracles"; read 'File' (1072,"orcus.lev") ":lib:orcus.lev"; -read 'File' (1072,"ozzy.lev") ":lib:ozzy.lev"; read 'File' (1073,"quest.dat") ":lib:quest.dat"; read 'File' (1074,"rumors") ":lib:rumors"; read 'File' (1075,"sanctum.lev") ":lib:sanctum.lev"; diff --git a/sys/unix/Makefile.dat b/sys/unix/Makefile.dat index 7645c30d4..b30b4930e 100644 --- a/sys/unix/Makefile.dat +++ b/sys/unix/Makefile.dat @@ -146,7 +146,6 @@ spec_levs: ../util/lev_comp \ nkai.des \ nymph.des \ oracle.des \ - ozzy.des \ qchaos.des \ qlawful.des \ qneutral.des \ @@ -179,7 +178,6 @@ spec_levs: ../util/lev_comp \ ../util/lev_comp nkai.des ../util/lev_comp nymph.des ../util/lev_comp oracle.des - ../util/lev_comp ozzy.des ../util/lev_comp qchaos.des ../util/lev_comp qlawful.des ../util/lev_comp qneutral.des diff --git a/sys/unix/Makefile.top b/sys/unix/Makefile.top index 8f6d9c372..7551ed77e 100644 --- a/sys/unix/Makefile.top +++ b/sys/unix/Makefile.top @@ -93,7 +93,7 @@ SPEC_LEVS = bigrm-*.lev castle-?.lev fakewiz?.lev hellfill.lev \ rats-?.lev nymph.lev cavepass.lev sea.lev \ cavenest.lev cavefill.lev cavebegn.lev caveend.lev \ tomb.lev mtemple.lev grund.lev blkmar.lev \ - ozzy.lev qlawful.lev qneutral.lev qchaos.lev \ + qlawful.lev qneutral.lev qchaos.lev \ leth-*.lev nkai-*.lev ucastle.lev kobold-?.lev QUEST_LEVS = ???-goal.lev ???-fil?.lev ???-loca.lev ???-strt.lev diff --git a/sys/unix/NetHack.xcodeproj/project.pbxproj b/sys/unix/NetHack.xcodeproj/project.pbxproj index 290f6d5f4..4d8245e29 100644 --- a/sys/unix/NetHack.xcodeproj/project.pbxproj +++ b/sys/unix/NetHack.xcodeproj/project.pbxproj @@ -1246,7 +1246,6 @@ "$(NH_DAT_DIR)/mines.des", "$(NH_DAT_DIR)/nymph.des", "$(NH_DAT_DIR)/oracle.des", - "$(NH_DAT_DIR)/ozzy.des", "$(NH_DAT_DIR)/sokoban.des", "$(NH_DAT_DIR)/tower.des", "$(NH_DAT_DIR)/vaults.des", @@ -1260,7 +1259,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "cd ${NH_DAT_DIR}\n${NH_UTIL_DIR}/lev_comp bigroom.des\n${NH_UTIL_DIR}/lev_comp castle.des\n${NH_UTIL_DIR}/lev_comp endgame.des\n${NH_UTIL_DIR}/lev_comp gehennom.des\n${NH_UTIL_DIR}/lev_comp knox.des\n${NH_UTIL_DIR}/lev_comp medusa.des\n${NH_UTIL_DIR}/lev_comp mines.des\n${NH_UTIL_DIR}/lev_comp nymph.des\n${NH_UTIL_DIR}/lev_comp oracle.des\n${NH_UTIL_DIR}/lev_comp ozzy.des\n${NH_UTIL_DIR}/lev_comp sokoban.des\n${NH_UTIL_DIR}/lev_comp tower.des\n${NH_UTIL_DIR}/lev_comp vaults.des\n${NH_UTIL_DIR}/lev_comp yendor.des\ntouch spec_levs\n"; + shellScript = "cd ${NH_DAT_DIR}\n${NH_UTIL_DIR}/lev_comp bigroom.des\n${NH_UTIL_DIR}/lev_comp castle.des\n${NH_UTIL_DIR}/lev_comp endgame.des\n${NH_UTIL_DIR}/lev_comp gehennom.des\n${NH_UTIL_DIR}/lev_comp knox.des\n${NH_UTIL_DIR}/lev_comp medusa.des\n${NH_UTIL_DIR}/lev_comp mines.des\n${NH_UTIL_DIR}/lev_comp nymph.des\n${NH_UTIL_DIR}/lev_comp oracle.des\n${NH_UTIL_DIR}/lev_comp sokoban.des\n${NH_UTIL_DIR}/lev_comp tower.des\n${NH_UTIL_DIR}/lev_comp vaults.des\n${NH_UTIL_DIR}/lev_comp yendor.des\ntouch spec_levs\n"; }; 317E7C4B21A35F0500F6E4E5 /* Copy makedefs */ = { isa = PBXShellScriptBuildPhase; @@ -1619,7 +1618,6 @@ "$(NH_DAT_DIR)/oracle-4.lev", "$(NH_DAT_DIR)/oracles", "$(NH_DAT_DIR)/orcus.lev", - "$(NH_DAT_DIR)/ozzy.lev", "$(NH_DAT_DIR)/quest.dat", "$(NH_DAT_DIR)/rumors", "$(NH_DAT_DIR)/sanctum.lev", @@ -1703,9 +1701,9 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; <<<<<<< HEAD - shellScript = "cd ${NH_DAT_DIR}\n${NH_UTIL_DIR}/dlb cf nhdat help hh cmdhelp keyhelp history opthelp wizhelp dungeon tribute bigrm-*.lev castle-?.lev fakewiz?.lev hella-?.lev hellb-?.lev hellc-?.lev hellfill.lev knox-?.lev medusa-?.lev minend-?.lev minefill.lev minetn-?.lev oracle-1.lev oracle-2.lev oracle-3.lev oracle-4.lev orcus.lev ozzy.lev sanctum.lev soko?-*.lev tower?.lev valley.lev vlt-????.lev wizard?.lev astral.lev air.lev earth.lev fire.lev water.lev ???-goal.lev ???-fil?.lev ???-loca.lev ???-strt.lev cavefill.lev bogusmon data engrave epitaph oracles options quest.dat rumors vaults.dat\n\n"; + shellScript = "cd ${NH_DAT_DIR}\n${NH_UTIL_DIR}/dlb cf nhdat help hh cmdhelp keyhelp history opthelp wizhelp dungeon tribute bigrm-*.lev castle-?.lev fakewiz?.lev hella-?.lev hellb-?.lev hellc-?.lev hellfill.lev knox-?.lev medusa-?.lev minend-?.lev minefill.lev minetn-?.lev oracle-1.lev oracle-2.lev oracle-3.lev oracle-4.lev orcus.lev sanctum.lev soko?-*.lev tower?.lev valley.lev vlt-????.lev wizard?.lev astral.lev air.lev earth.lev fire.lev water.lev ???-goal.lev ???-fil?.lev ???-loca.lev ???-strt.lev cavefill.lev bogusmon data engrave epitaph oracles options quest.dat rumors vaults.dat\n\n"; ======= - shellScript = "cd ${NH_DAT_DIR}\n${NH_UTIL_DIR}/dlb cf nhdat help hh cmdhelp keyhelp history opthelp wizhelp dungeon tribute bigrm-*.lev castle-?.lev fakewiz?.lev hella-?.lev hellb-?.lev hellc-?.lev hellfill.lev knox-?.lev medusa-?.lev minend-?.lev minefill.lev minetn-?.lev nymph.lev oracle-1.lev oracle-2.lev oracle-3.lev oracle-4.lev orcus.lev ozzy.lev sanctum.lev soko?-?.lev tower?.lev valley.lev vlt-????.lev wizard?.lev astral.lev air.lev earth.lev fire.lev water.lev ???-goal.lev ???-fil?.lev ???-loca.lev ???-strt.lev cavefill.lev bogusmon data engrave epitaph oracles options quest.dat rumors vaults.dat\n\n"; + shellScript = "cd ${NH_DAT_DIR}\n${NH_UTIL_DIR}/dlb cf nhdat help hh cmdhelp keyhelp history opthelp wizhelp dungeon tribute bigrm-*.lev castle-?.lev fakewiz?.lev hella-?.lev hellb-?.lev hellc-?.lev hellfill.lev knox-?.lev medusa-?.lev minend-?.lev minefill.lev minetn-?.lev nymph.lev oracle-1.lev oracle-2.lev oracle-3.lev oracle-4.lev orcus.lev sanctum.lev soko?-?.lev tower?.lev valley.lev vlt-????.lev wizard?.lev astral.lev air.lev earth.lev fire.lev water.lev ???-goal.lev ???-fil?.lev ???-loca.lev ???-strt.lev cavefill.lev bogusmon data engrave epitaph oracles options quest.dat rumors vaults.dat\n\n"; >>>>>>> parent of 2a3f81bf8 (Consolidated nymph and jermlaine levels into the rats levels.) }; 3192867021A39F6A00325BEB /* Install */ = { diff --git a/sys/winnt/Makefile.gcc b/sys/winnt/Makefile.gcc index 1e7500e99..f26558b94 100644 --- a/sys/winnt/Makefile.gcc +++ b/sys/winnt/Makefile.gcc @@ -819,7 +819,6 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(DAT)/nkai.des \ $(DAT)/nymph.des \ $(DAT)/oracle.des \ - $(DAT)/ozzy.des \ $(DAT)/rats.des \ $(DAT)/sokoban.des \ $(DAT)/spiders.des \ @@ -871,7 +870,6 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(subst /,\,$(U)levcomp $(DAT)/mtemple.des $(subst /,\,$(U)levcomp $(DAT)/nymph.des) $(subst /,\,$(U)levcomp $(DAT)/oracle.des) - $(subst /,\,$(U)levcomp $(DAT)/ozzy.des) $(subst /,\,$(U)levcomp $(DAT)/rats.des $(subst /,\,$(U)levcomp $(DAT)/sokoban.des) $(subst /,\,$(U)levcomp $(DAT)/spiders.des @@ -1376,7 +1374,6 @@ ifneq "$(W_DAT)" "" if exist $(W_DAT)\oracle-4.lev del $(W_DAT)\oracle-4.lev if exist $(W_DAT)\oracles del $(W_DAT)\oracles if exist $(W_DAT)\orcus.lev del $(W_DAT)\orcus.lev - if exist $(W_DAT)\ozzy.lev del $(W_DAT)\ozzy.lev if exist $(W_DAT)\rumors del $(W_DAT)\rumors if exist $(W_DAT)\quest.dat del $(W_DAT)\quest.dat if exist $(W_DAT)\qlawful.lev del $(W_DAT)\qlawful.lev diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index 369049378..b6d617282 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -772,7 +772,6 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(DAT)\nkai.des \ $(DAT)\nymph.des \ $(DAT)\oracle.des \ - $(DAT)\ozzy.des \ $(DAT)\qchaos.des \ $(DAT)\qlawful.des \ $(DAT)\qneutral.des \ @@ -827,7 +826,6 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(U)levcomp nkai.des $(U)levcomp nymph.des $(U)levcomp oracle.des - $(U)levcomp ozzy.des $(U)levcomp qchaos.des $(U)levcomp qlawful.des $(U)levcomp qneutral.des @@ -1379,7 +1377,6 @@ spotless: clean if exist $(DAT)\oracle-?.lev del $(DAT)\oracle-?.lev if exist $(DAT)\oracles del $(DAT)\oracles if exist $(DAT)\orcus.lev del $(DAT)\orcus.lev - if exist $(DAT)\ozzy.lev del $(DAT)\ozzy.lev if exist $(DAT)\rumors del $(DAT)\rumors if exist $(DAT)\quest.dat del $(DAT)\quest.dat if exist $(DAT)\qlawful.lev del $(DAT)\qlawful.lev diff --git a/util/lev_main.c b/util/lev_main.c index 3a8aa4dd5..c42a28192 100644 --- a/util/lev_main.c +++ b/util/lev_main.c @@ -315,7 +315,6 @@ char **argv; ":dat:nkai.des", ":dat:nymph.des", ":dat:oracle.des", - ":dat:ozzy.des", ":dat:qchaos.des", ":dat:qlawful.des", ":dat:qneutral.des", diff --git a/win/win32/vs2017/files.props b/win/win32/vs2017/files.props index e12038eca..b43ab0e26 100644 --- a/win/win32/vs2017/files.props +++ b/win/win32/vs2017/files.props @@ -69,7 +69,6 @@ - @@ -129,7 +128,6 @@ - From c3e4e14b48235170c087f44781d4903c9615df26 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 11:33:09 +0100 Subject: [PATCH 39/82] Tweaks to mercenary weapon init. Added rocket/grenade launchers to the high level mercs. I also adjusted some of the solder items and bombs a bit. I also adjusted the difficulty of soldiers through generals up a bit so they appear later. The ranged weapons mercs got in EvilHack have been tweaked so that they get firearms instead of their racial equivalent, but they still get their racial based melee weapon for flavor. I also refactored the way lieutenants get a random wand. Now they can get any ray-based wand. --- src/makemon.c | 227 +++++++++++++++++++++++--------------------------- src/monst.c | 24 +++--- 2 files changed, 114 insertions(+), 137 deletions(-) diff --git a/src/makemon.c b/src/makemon.c index 31c186055..ed9974b8f 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -799,7 +799,7 @@ register struct monst *mtmp; register int mm = monsndx(ptr); struct obj* received; struct obj *otmp = mtmp->minvent; - int w1, w2, randwand, quan, hbold, spe2; + int w1, w2, quan, hbold, spe2; if (Is_rogue_level(&u.uz)) return; @@ -1176,167 +1176,138 @@ register struct monst *mtmp; w1 = w2 = 0; switch (mm) { case PM_WATCHMAN: + if (!rn2(3)) { + w1 = rn1(BEC_DE_CORBIN - PARTISAN + 1, PARTISAN); + w2 = rn2(2) ? DAGGER : KNIFE; + } else w1 = rn2(2) ? SPEAR : SHORT_SWORD; + break; + case PM_WATCH_CAPTAIN: + w1 = rn2(2) ? LONG_SWORD : SABER; + break; case PM_SOLDIER: + /* Primary weapon */ if (racial_elf(mtmp)) { - if (!rn2(3)) { - mongets(mtmp, ELVEN_BOW); - m_initthrow(mtmp, ELVEN_ARROW, 12); + if (!rn2(3)) mongets(mtmp, ELVEN_DAGGER); - } else + else w1 = rn2(2) ? ELVEN_SPEAR : ELVEN_SHORT_SWORD; + break; /* They can't get metal firearms */ } else if (racial_dwarf(mtmp)) { - if (!rn2(3)) { + if (!rn2(3)) w1 = rn1(BEC_DE_CORBIN - PARTISAN + 1, PARTISAN); - w2 = rn2(2) ? DAGGER : AXE; - } else + else w1 = rn2(2) ? DWARVISH_SPEAR : DWARVISH_SHORT_SWORD; } else if (racial_orc(mtmp)) { - if (!rn2(3)) { - mongets(mtmp, ORCISH_BOW); - m_initthrow(mtmp, ORCISH_ARROW, 12); - w1 = rn2(2) ? ORCISH_DAGGER : KNIFE; - } else - w1 = rn2(2) ? ORCISH_SPEAR - : rn2(2) ? ORCISH_SHORT_SWORD - : ORCISH_SCIMITAR; - } else { - if (!rn2(3)) { - w1 = rn1(BEC_DE_CORBIN - PARTISAN + 1, PARTISAN); - w2 = rn2(2) ? DAGGER : KNIFE; - } else - w1 = rn2(2) ? SPEAR : SHORT_SWORD; + w1 = rn2(3) ? ORCISH_DAGGER + : rn2(2) ? ORCISH_SPEAR + : rn2(2) ? ORCISH_SHORT_SWORD + : ORCISH_SCIMITAR; + } else + w1 = rn2(2) ? SPEAR : SHORT_SWORD; + + if (rn2(2)) { + w2 = rn2(2) ? RIFLE : SUBMACHINE_GUN; + m_initthrow(mtmp, BULLET, 25); + m_initthrow(mtmp, BULLET, 25); } break; case PM_SERGEANT: if (racial_elf(mtmp)) { w1 = rn2(2) ? ELVEN_BROADSWORD : QUARTERSTAFF; - if (Is_stronghold(&u.uz)) { - w2 = ELVEN_BOW; - m_initthrow(mtmp, ELVEN_ARROW, 30); - } - } else if (racial_dwarf(mtmp)) { + break; /* They can't get metal firearms */ + } else if (racial_dwarf(mtmp)) w1 = rn2(2) ? MORNING_STAR : DWARVISH_MATTOCK; - if (Is_stronghold(&u.uz)) { - w2 = BOW; - m_initthrow(mtmp, ARROW, 30); - } - } else if (racial_orc(mtmp)) { + else if (racial_orc(mtmp)) w1 = rn2(2) ? ORCISH_MORNING_STAR : ORCISH_SHORT_SWORD; - if (Is_stronghold(&u.uz)) { - w2 = ORCISH_BOW; - m_initthrow(mtmp, ORCISH_ARROW, 30); - } - } else if (racial_centaur(mtmp)) { - mongets(mtmp, CROSSBOW); - m_initthrow(mtmp, CROSSBOW_BOLT, 20); + else if (racial_centaur(mtmp)) w1 = rn2(2) ? CLUB : MACE; - } else if (racial_giant(mtmp)) { + else if (racial_giant(mtmp)) { w1 = rn2(2) ? HEAVY_WAR_HAMMER : BATTLE_AXE; mongets(mtmp, BOULDER); - } else { - if (rn2(2)) { - w1 = AUTO_SHOTGUN; - m_initthrow(mtmp, SHOTGUN_SHELL, 10); - m_initthrow(mtmp, SHOTGUN_SHELL, 10); - } else if (!rn2(3)) { - w1 = ASSAULT_RIFLE; - m_initthrow(mtmp, BULLET, 30); - m_initthrow(mtmp, BULLET, 30); - } else - w1 = rn2(2) ? FLAIL : MACE; - if (Is_stronghold(&u.uz)) { - w2 = BOW; - m_initthrow(mtmp, ARROW, 30); - } + } else + w1 = rn2(2) ? FLAIL : MACE; + + if (rn2(2)) { + w2 = SHOTGUN; + m_initthrow(mtmp, SHOTGUN_SHELL, 10); + m_initthrow(mtmp, SHOTGUN_SHELL, 10); + } else if (!rn2(3)) { + w2 = ASSAULT_RIFLE; + m_initthrow(mtmp, BULLET, 30); + m_initthrow(mtmp, BULLET, 30); } break; case PM_LIEUTENANT: if (racial_elf(mtmp)) { w1 = rn2(2) ? ELVEN_BROADSWORD : ELVEN_LONG_SWORD; - if (Is_stronghold(&u.uz)) { - w2 = ELVEN_BOW; - m_initthrow(mtmp, ELVEN_ARROW, 30); - } - } else if (racial_dwarf(mtmp)) { + (void) mongets(mtmp, WAN_MAGIC_MISSILE + rn2(9)); + break; /* They can't get metal firearms */ + } else if (racial_dwarf(mtmp)) w1 = rn2(2) ? DWARVISH_SHORT_SWORD : DWARVISH_BEARDED_AXE; - if (Is_stronghold(&u.uz)) { - w2 = BOW; - m_initthrow(mtmp, ARROW, 30); - } - } else if (racial_orc(mtmp)) { + else if (racial_orc(mtmp)) w1 = rn2(2) ? ORCISH_LONG_SWORD : ORCISH_SCIMITAR; - } else if (racial_giant(mtmp)) { + else if (racial_giant(mtmp)) { w1 = rn2(2) ? HALBERD : BATTLE_AXE; mongets(mtmp, BOULDER); - } else { + } else w1 = rn2(2) ? BROADSWORD : LONG_SWORD; - if (Is_stronghold(&u.uz)) { - if (rn2(2)) { - w1 = AUTO_SHOTGUN; - m_initthrow(mtmp, SHOTGUN_SHELL, 20); - m_initthrow(mtmp, SHOTGUN_SHELL, 20); - } else if (!rn2(3)) { - w1 = HEAVY_MACHINE_GUN; - m_initthrow(mtmp, BULLET, 60); - m_initthrow(mtmp, BULLET, 60); - m_initthrow(mtmp, BULLET, 60); - } else if (!rn2(3)){ - w1 = ASSAULT_RIFLE; - m_initthrow(mtmp, BULLET, 60); - m_initthrow(mtmp, BULLET, 60); - } else { - w2 = CROSSBOW; - m_initthrow(mtmp, CROSSBOW_BOLT, 30); - } - } - - do { - randwand = rn2(7); - } while (randwand > 5 && rn2(14)); - switch (randwand) { + + if (rn2(2)) { + w2 = HEAVY_MACHINE_GUN; + m_initthrow(mtmp, BULLET, 50); + m_initthrow(mtmp, BULLET, 50); + m_initthrow(mtmp, BULLET, 50); + } else if (rn2(2)){ + w2 = SUBMACHINE_GUN; + m_initthrow(mtmp, BULLET, 30); + m_initthrow(mtmp, BULLET, 30); + } else + /* Random ray-based wand */ + (void) mongets(mtmp, WAN_MAGIC_MISSILE + rn2(9)); + + break; + case PM_CAPTAIN: + case PM_GENERAL: + case PM_PRISON_GUARD: + (void) mongets(mtmp, rnd_offensive_item(mtmp)); + if (racial_elf(mtmp)) { + w1 = ELVEN_LONG_SWORD; + (void) mongets(mtmp, WAN_MAGIC_MISSILE + rn2(9)); + break; /* They can't get metal firearms */ + } else if (racial_dwarf(mtmp)) + w1 = rn2(4) ? DWARVISH_BEARDED_AXE : BATTLE_AXE; + else if (racial_giant(mtmp)) + w1 = rn2(2) ? TWO_HANDED_SWORD : BATTLE_AXE; + else + w1 = rn2(2) ? SABER : GLADIUS; + + switch (rnd(5)) { case 1: - randwand = WAN_MAGIC_MISSILE; + w2 = AUTO_SHOTGUN; + m_initthrow(mtmp, SHOTGUN_SHELL, 20); + m_initthrow(mtmp, SHOTGUN_SHELL, 20); break; case 2: - randwand = WAN_SLEEP; + w2 = HEAVY_MACHINE_GUN; + m_initthrow(mtmp, BULLET, 60); + m_initthrow(mtmp, BULLET, 60); + m_initthrow(mtmp, BULLET, 60); break; case 3: - randwand = WAN_FIRE; + w2 = ASSAULT_RIFLE; + m_initthrow(mtmp, BULLET, 60); + m_initthrow(mtmp, BULLET, 60); break; case 4: - randwand = WAN_COLD; + w2 = ROCKET_LAUNCHER; + m_initthrow(mtmp, ROCKET, 5); break; case 5: - randwand = WAN_LIGHTNING; - break; - case 6: - randwand = WAN_DEATH; - break; - case 0: - default: - randwand = WAN_STRIKING; + w2 = GRENADE_LAUNCHER; + m_initthrow(mtmp, FIRE_BOMB + rn2(3), 5); break; - } - (void) mongets(mtmp, randwand); } - break; - case PM_GENERAL: - (void) mongets(mtmp, rnd_offensive_item(mtmp)); - /* FALLTHRU */ - case PM_CAPTAIN: - case PM_WATCH_CAPTAIN: - case PM_PRISON_GUARD: - if (racial_elf(mtmp)) - w1 = ELVEN_LONG_SWORD; - else if (racial_dwarf(mtmp)) - w1 = rn2(4) ? DWARVISH_BEARDED_AXE : BATTLE_AXE; - else if (racial_giant(mtmp)) - w1 = rn2(2) ? TWO_HANDED_SWORD : BATTLE_AXE; - else - w1 = rn2(2) ? LONG_SWORD : SABER; mongets(mtmp, SKELETON_KEY); - if (!racial_elf(mtmp)) - (void) mongets(mtmp, rn2(2) ? FIRE_BOMB : GAS_BOMB); break; case PM_TEMPLAR: w1 = rn2(2) ? LONG_SWORD : SABER; @@ -1951,6 +1922,8 @@ register struct monst *mtmp; if (!rn2(3)) (void) mongets(mtmp, ORCISH_BOOTS); (void) mongets(mtmp, FIRE_BOMB); + if (!rn2(2)) + (void) mongets(mtmp, FIRE_BOMB); break; default: if (mm != PM_ORC_SHAMAN && rn2(2)) @@ -2519,7 +2492,7 @@ register struct monst *mtmp; otmp = mksobj(AMULET_OF_LIFE_SAVING, FALSE, FALSE); mpickobj(mtmp, otmp); (void) mongets(mtmp, SKELETON_KEY); - m_initthrow(mtmp, GAS_BOMB, 3); + m_initthrow(mtmp, FIRE_BOMB + rn2(3), 3); } else if (ptr->msound == MS_PRIEST || quest_mon_represents_role(ptr, PM_PRIEST)) { if (!racial_giant(mtmp)) { @@ -2820,8 +2793,12 @@ register struct monst *mtmp; /* Bomb distribution */ if (is_pirate(ptr) && !rn2(2)) { (void) mongets(mtmp, FIRE_BOMB); - } else if (is_mercenary(ptr) && !rn2(6) && !racial_elf(mtmp)) { - (void) mongets(mtmp, FIRE_BOMB + rn2(3)); + if (rn2(2)) + (void) mongets(mtmp, FIRE_BOMB); + } else if (is_mercenary(ptr) && !racial_elf(mtmp) && !rn2(2)) { + while (rn2(3)) { + (void) mongets(mtmp, FIRE_BOMB + rn2(3)); + } } /* ordinary soldiers rarely have access to magic (or gold :-) */ diff --git a/src/monst.c b/src/monst.c index 733725040..6fa7641bc 100644 --- a/src/monst.c +++ b/src/monst.c @@ -6345,21 +6345,21 @@ struct permonst _mons2[] = { | M2_MAGIC, M3_INFRAVISIBLE, 0, MH_HUMAN, 30, CLR_WHITE), MON("soldier", S_HUMAN, - LVL(6, 10, 10, 0, -2), (G_SGROUP | G_GENO | 1), + LVL(10, 10, 9, 0, -2), (G_SGROUP | G_GENO | 1), A(ATTK(AT_WEAP, AD_PHYS, 1, 8), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_MERC | M2_STALK - | M2_HOSTILE | M2_STRONG | M2_COLLECT | M2_FLANK, - M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 8, CLR_GRAY), + | M2_HOSTILE | M2_STRONG | M2_COLLECT | M2_FLANK, + M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 12, CLR_GRAY), MON("sergeant", S_HUMAN, - LVL(8, 10, 10, 5, -3), (G_SGROUP | G_GENO | 1), + LVL(12, 10, 8, 5, -3), (G_SGROUP | G_GENO | 1), A(ATTK(AT_WEAP, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_MERC | M2_STALK - | M2_HOSTILE | M2_STRONG | M2_COLLECT | M2_FLANK, - M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 10, CLR_RED), + | M2_HOSTILE | M2_STRONG | M2_COLLECT | M2_FLANK, + M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 14, CLR_RED), MON("stormtrooper", S_HUMAN, LVL(8, 10, 5, 25, -5), G_NOGEN, A(ATTK(AT_WEAP, AD_PHYS, 2, 4), @@ -6378,32 +6378,32 @@ struct permonst _mons2[] = { M2_NOPOLY | M2_HOSTILE, M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 13, HI_DOMESTIC), MON("lieutenant", S_HUMAN, - LVL(10, 10, 10, 15, -4), (G_GENO | 1), + LVL(14, 10, 7, 15, -4), (G_GENO | 1), A(ATTK(AT_WEAP, AD_PHYS, 3, 4), ATTK(AT_WEAP, AD_PHYS, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_MERC | M2_STALK | M2_HOSTILE | M2_STRONG | M2_COLLECT | M2_FLANK, - M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 12, CLR_GREEN), + M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 16, CLR_GREEN), MON("captain", S_HUMAN, - LVL(12, 10, 10, 15, -5), (G_GENO | 1), + LVL(16, 10, 6, 15, -5), (G_GENO | 1), A(ATTK(AT_WEAP, AD_PHYS, 4, 4), ATTK(AT_WEAP, AD_PHYS, 4, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_MERC | M2_STALK | M2_HOSTILE | M2_STRONG | M2_COLLECT | M2_FLANK, - M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 14, CLR_BLUE), + M3_ACCURATE | M3_INFRAVISIBLE, 0, MH_HUMAN, 18, CLR_BLUE), MON("general", S_HUMAN, /* SpliceHack */ - LVL(16, 10, 10, 15, -6), (G_GENO | 1), + LVL(20, 10, 5, 15, -6), (G_GENO | 1), A(ATTK(AT_WEAP, AD_PHYS, 5, 4), ATTK(AT_WEAP, AD_PHYS, 5, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(WT_HUMAN, 400, MS_SOLDIER, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_OMNIVORE, M2_NOPOLY | M2_MERC | M2_STALK | M2_HOSTILE | M2_STRONG | M2_COLLECT | M2_FLANK, - M3_INFRAVISIBLE, 0,MH_HUMAN, 18, CLR_MAGENTA), + M3_INFRAVISIBLE, 0, MH_HUMAN, 22, CLR_MAGENTA), /* Keep these separate - some of the mkroom code assumes that * all the soldiers are contiguous. */ From 6b2766e93a1ee8713e43980264edf9ecd303a0de Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 12:41:23 +0100 Subject: [PATCH 40/82] Reduce the odds of draugr getting hammers. Hammers are valuable for forging, lets keep them scarce - otherwise you'll always get one in the first group of draugr encountered! --- src/makemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/makemon.c b/src/makemon.c index ed9974b8f..67f326e24 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -2021,7 +2021,7 @@ register struct monst *mtmp; (void) mongets(mtmp, LIGHT_ARMOR); break; case PM_DRAUGR: - mongets(mtmp, (rn2(4) ? WAR_HAMMER : RUNESWORD)); + mongets(mtmp, (rn2(8) ? RUNESWORD : WAR_HAMMER)); if (!rn2(4)) (void) mongets(mtmp, LIGHT_ARMOR); break; From 97c937ddb58ffd14d9ad46590a7029795fbda6ba Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 13:50:58 +0100 Subject: [PATCH 41/82] Revenants get rocket launchers (from DOOM). Also, I fixed a bug where Z monsters were not getting their armor correctly initialized. I also removed revenant's vulnerability to fire for better compatibility with their rockets. --- src/makemon.c | 109 +++++++++++++++++++++++++++++++------------------- src/monst.c | 2 +- src/worn.c | 6 +-- 3 files changed, 71 insertions(+), 46 deletions(-) diff --git a/src/makemon.c b/src/makemon.c index 67f326e24..465a35b7a 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -2017,13 +2017,9 @@ register struct monst *mtmp; case PM_SKELETON: if (!rn2(4)) (void) mongets(mtmp, (rn2(3) ? PARAZONIUM : GLADIUS)); - if (!rn2(4)) - (void) mongets(mtmp, LIGHT_ARMOR); break; case PM_DRAUGR: mongets(mtmp, (rn2(8) ? RUNESWORD : WAR_HAMMER)); - if (!rn2(4)) - (void) mongets(mtmp, LIGHT_ARMOR); break; case PM_SKELETAL_PIRATE: otmp = rn2(2) ? mksobj(SCIMITAR, FALSE, FALSE) : @@ -2032,16 +2028,14 @@ register struct monst *mtmp; if (is_flammable(otmp) || is_rustprone(otmp)) otmp->oeroded = 1; (void) mpickobj(mtmp, otmp); - otmp = rn2(2) ? mksobj(HIGH_BOOTS, FALSE, FALSE) : - mksobj(JACKET, FALSE, FALSE); - curse(otmp); - if (is_rottable(otmp) || is_corrodeable(otmp)) - otmp->oeroded2 = 1; - (void) mpickobj(mtmp, otmp); break; + case PM_REVENANT: + /* They shoot rockets because DOOM */ + otmp = mksobj(ROCKET_LAUNCHER, FALSE, FALSE); + (void) mpickobj(mtmp, otmp); + m_initthrow(mtmp, ROCKET, 3 + rn2(4)); + /* FALLTHROUGH */ default: - if (!rn2(4)) - (void) mongets(mtmp, LIGHT_ARMOR); if (!rn2(4)) (void) mongets(mtmp, (rn2(3) ? KNIFE : SHORT_SWORD)); break; @@ -2464,35 +2458,35 @@ register struct monst *mtmp; } } else if (ptr == &mons[PM_ONE_EYED_SAM]) { - otmp = mksobj(LONG_SWORD, FALSE, FALSE); - otmp = oname(otmp, artiname(ART_THIEFBANE)); - bless(otmp); - otmp->oerodeproof = TRUE; - if (otmp->spe < 5) - otmp->spe += rnd(5); - (void) mpickobj(mtmp, otmp); + otmp = mksobj(LONG_SWORD, FALSE, FALSE); + otmp = oname(otmp, artiname(ART_THIEFBANE)); + bless(otmp); + otmp->oerodeproof = TRUE; + if (otmp->spe < 5) + otmp->spe += rnd(5); + (void) mpickobj(mtmp, otmp); - otmp = mksobj(SHIELD_OF_REFLECTION, FALSE, FALSE); - mpickobj(mtmp, otmp); - if (otmp->spe < 5) - otmp->spe += rnd(5); - /* Replacements for GDSM */ - otmp = mksobj(CRYSTAL_PLATE_MAIL, FALSE, FALSE); - mpickobj(mtmp, otmp); - if (otmp->spe < 5) - otmp->spe += rnd(5); - otmp = mksobj(CLOAK_OF_MAGIC_RESISTANCE, FALSE, FALSE); - mpickobj(mtmp, otmp); - if (otmp->spe < 5) - otmp->spe += rnd(5); - otmp = mksobj(SPEED_BOOTS, FALSE, FALSE); - mpickobj(mtmp, otmp); - if (otmp->spe < 5) - otmp->spe += rnd(5); - otmp = mksobj(AMULET_OF_LIFE_SAVING, FALSE, FALSE); - mpickobj(mtmp, otmp); - (void) mongets(mtmp, SKELETON_KEY); - m_initthrow(mtmp, FIRE_BOMB + rn2(3), 3); + otmp = mksobj(SHIELD_OF_REFLECTION, FALSE, FALSE); + mpickobj(mtmp, otmp); + if (otmp->spe < 5) + otmp->spe += rnd(5); + /* Replacements for GDSM */ + otmp = mksobj(CRYSTAL_PLATE_MAIL, FALSE, FALSE); + mpickobj(mtmp, otmp); + if (otmp->spe < 5) + otmp->spe += rnd(5); + otmp = mksobj(CLOAK_OF_MAGIC_RESISTANCE, FALSE, FALSE); + mpickobj(mtmp, otmp); + if (otmp->spe < 5) + otmp->spe += rnd(5); + otmp = mksobj(SPEED_BOOTS, FALSE, FALSE); + mpickobj(mtmp, otmp); + if (otmp->spe < 5) + otmp->spe += rnd(5); + otmp = mksobj(AMULET_OF_LIFE_SAVING, FALSE, FALSE); + mpickobj(mtmp, otmp); + (void) mongets(mtmp, SKELETON_KEY); + m_initthrow(mtmp, FIRE_BOMB + rn2(3), 3); } else if (ptr->msound == MS_PRIEST || quest_mon_represents_role(ptr, PM_PRIEST)) { if (!racial_giant(mtmp)) { @@ -2638,6 +2632,37 @@ register struct monst *mtmp; if (rn2(7)) (void) mongets(mtmp, MUMMY_WRAPPING); break; + case S_ZOMBIE: + switch (monsndx(ptr)) { + case PM_SKELETON: + if (!rn2(4)) + (void) mongets(mtmp, LIGHT_ARMOR); + break; + case PM_DRAUGR: + if (!rn2(4)) { + (void) mongets(mtmp, LIGHT_ARMOR); + } + break; + case PM_SKELETAL_PIRATE: + otmp = rn2(2) ? mksobj(HIGH_BOOTS, FALSE, FALSE) : + mksobj(JACKET, FALSE, FALSE); + curse(otmp); + if (is_rottable(otmp) || is_corrodeable(otmp)) + otmp->oeroded2 = 1; + (void) mpickobj(mtmp, otmp); + break; + case PM_REVENANT: + if (rn2(3)) + (void) mongets(mtmp, HIGH_BOOTS); + if (rn2(3)) + (void) mongets(mtmp, GAUNTLETS); + break; + default: + if (!rn2(4)) + (void) mongets(mtmp, LIGHT_ARMOR); + break; + } + break; case S_QUANTMECH: if (!rn2(20) && ptr == &mons[PM_QUANTUM_MECHANIC]) { struct obj *catcorpse; @@ -2746,7 +2771,6 @@ register struct monst *mtmp; else (void) mongets(mtmp, POT_BLOOD); } - break; case S_BAT: @@ -4243,7 +4267,8 @@ int otyp; * rerandomize it */ tryct = 0; if (otmp->oclass == WEAPON_CLASS - || is_weptool(otmp) || otmp->oclass == ARMOR_CLASS + || is_weptool(otmp) + || otmp->oclass == ARMOR_CLASS || otmp->oclass == AMULET_CLASS || (otmp->oclass == TOOL_CLASS && otmp->otyp != BELL_OF_OPENING)) { while (mon_hates_material(mtmp, otmp->material)) { diff --git a/src/monst.c b/src/monst.c index 6fa7641bc..9a3e7674c 100644 --- a/src/monst.c +++ b/src/monst.c @@ -5771,7 +5771,7 @@ struct permonst _mons2[] = { M1_BREATHLESS | M1_MINDLESS | M1_HUMANOID | M1_THICK_HIDE, M2_WANDER | M2_HOSTILE | M2_STRONG | M2_COLLECT | M2_NASTY, - M3_INFRAVISION, M4_VULNERABLE_FIRE, MH_UNDEAD, 15, CLR_BRIGHT_BLUE), + M3_INFRAVISION, 0, MH_UNDEAD, 20, CLR_BRIGHT_BLUE), MON("gug", S_ZOMBIE, /* Slash'EM */ LVL(15, 18, 5, 15, -4), (G_GENO | G_NOCORPSE | 1 | G_LGROUP), A(ATTK(AT_CLAW, AD_PHYS, 2, 6), diff --git a/src/worn.c b/src/worn.c index 92936ca7d..cbc6f8511 100644 --- a/src/worn.c +++ b/src/worn.c @@ -824,10 +824,10 @@ boolean creation; if (r_verysmall(mon) || nohands(mon->data) || is_animal(mon->data)) return; /* give mummies a chance to wear their wrappings - * and let skeletons wear their initial armor */ + * and let skeletons/Z wear their initial armor */ if (mindless(mon->data) - && (!creation || (mon->data->mlet != S_MUMMY - && mon->data != &mons[PM_SKELETON]))) + && (!creation || (mon->data->mlet != S_MUMMY + && mon->data->mlet != S_ZOMBIE))) return; m_dowear_type(mon, W_AMUL, creation, FALSE); From 5bf430e0ad413831ec6aeb78326464033173263e Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 15:25:17 +0100 Subject: [PATCH 42/82] Rope bridge levels from SpliceHack. From SpliceHack commit 26eee595d. I've been hoping to add these for a while, I think they'll add some really nice atmosphere to the latter half of the main dungeon. In SpliceHack, the chasms and bridges would start appearing after level 3, but we're going to delay them until at least level 15. This coincides with the quests and signals a change in the difficulty of the dungeon. Also, starting at level 25, the chasms can start being composed of pools or lava, adding more danger as the player advances. This commit also includes the follow-up commit 04b97eed45, which fixes some initial bugs with the bridges and generation. --- dat/symbols | 5 + include/extern.h | 4 + include/rm.h | 234 +++---- include/timeout.h | 1 + src/dbridge.c | 79 +++ src/display.c | 7 + src/do.c | 2 +- src/do_name.c | 1 + src/drawing.c | 1 + src/engrave.c | 2 +- src/hack.c | 30 +- src/invent.c | 2 + src/mklev.c | 67 ++ src/mkroom.c | 4 + src/muse.c | 1 + src/sit.c | 3 + src/sp_lev.c | 11 +- src/timeout.c | 3 +- src/zap.c | 9 +- win/share/monsters.txt | 1420 ++++++++++++++++++++-------------------- win/share/objects.txt | 124 ++-- win/share/other.txt | 463 ++++++------- win/share/tilemap.c | 1 + 23 files changed, 1356 insertions(+), 1118 deletions(-) diff --git a/dat/symbols b/dat/symbols index 146f83953..a12af1a1a 100644 --- a/dat/symbols +++ b/dat/symbols @@ -82,6 +82,7 @@ start: NHAccess S_sewage: \042 S_pool: \042 S_ice: \042 + S_bridge: \042 S_grass: \044 S_lava: \035 S_vodbridge: \035 @@ -220,6 +221,7 @@ start: Blank S_humanoid: \032 S_hwall: \032 S_ice: \032 + S_bridge: \032 S_grass: \044 S_imp: \032 S_invisible: \032 @@ -366,6 +368,7 @@ start: IBMgraphics S_sewage: \xf7 # meta-w, approx. equals S_pool: \xf7 # meta-w, approx. equals S_ice: \xfa # meta-z, centered dot + S_bridge: \xfa # meta-z, centered dot S_grass: \xfa # meta-z, comma S_lava: \xf7 # meta-w, approx. equals S_vodbridge: \xfa # meta-z, centered dot @@ -586,6 +589,7 @@ start: curses S_corr: \xe1 # meta-a, solid block S_litcorr: \xe1 # meta-a, solid block S_ice: \xfe # meta-z, centered dot + S_bridge: \xfe # meta-z, centered dot S_grass: \xfe # meta-z, comma S_vodbridge: \xfe # meta-z, centered dot S_hodbridge: \xfe # meta-z, centered dot @@ -626,6 +630,7 @@ start: DECgraphics S_sewage: \xe0 # meta-\, diamond S_pool: \xe0 # meta-\, diamond S_ice: \xfe # meta-~, centered dot + S_bridge: \xfe # meta-~, centered dot S_grass: \xfe # meta-~, comma S_lava: \xe0 # meta-\, diamond S_vodbridge: \xfe # meta-~, centered dot diff --git a/include/extern.h b/include/extern.h index 19f59852c..5c777e26f 100644 --- a/include/extern.h +++ b/include/extern.h @@ -311,6 +311,7 @@ E boolean FDECL(is_pool, (int, int)); E boolean FDECL(is_lava, (int, int)); E boolean FDECL(is_pool_or_lava, (int, int)); E boolean FDECL(is_ice, (int, int)); +E boolean FDECL(is_bridge, (int, int)); E boolean FDECL(is_moat, (int, int)); E boolean FDECL(is_open_air, (int, int)); E schar FDECL(db_under_typ, (int)); @@ -320,6 +321,9 @@ E boolean FDECL(find_drawbridge, (int *, int *)); E boolean FDECL(create_drawbridge, (int, int, int, BOOLEAN_P)); E void FDECL(open_drawbridge, (int, int)); E void FDECL(close_drawbridge, (int, int)); +E void FDECL(collapse_rope_bridge, (union any *, long)); +E void FDECL(create_rope_bridge, (int, int)); +E void FDECL(destroy_rope_bridge, (xchar, xchar)); E void FDECL(destroy_drawbridge, (int, int)); /* ### decl.c ### */ diff --git a/include/rm.h b/include/rm.h index e881a2cae..e2b0a282b 100644 --- a/include/rm.h +++ b/include/rm.h @@ -36,52 +36,53 @@ these, so needs to be kept in sync if any new types are added or existing ones renumbered.] */ enum levl_typ_types { - STONE = 0, - VWALL = 1, - HWALL = 2, - TLCORNER = 3, - TRCORNER = 4, - BLCORNER = 5, - BRCORNER = 6, - CROSSWALL = 7, /* For pretty mazes and special levels */ - TUWALL = 8, - TDWALL = 9, - TLWALL = 10, - TRWALL = 11, - DBWALL = 12, /* closed drawbridge in vertical wall */ - TREE = 13, - DEADTREE = 14, - SDOOR = 15, /* Secret door */ - SCORR = 16, /* Secret corridor */ - POOL = 17, - MOAT = 18, /* pool that doesn't boil, adjust messages */ - WATER = 19, - DRAWBRIDGE_UP = 20, - LAVAPOOL = 21, - IRONBARS = 22, - DOOR = 23, - CORR = 24, - ROOM = 25, - STAIRS = 26, - LADDER = 27, - FORGE = 28, - MAGIC_CHEST = 29, - FOUNTAIN = 30, - VENT = 31, - THRONE = 32, - SINK = 33, - TOILET = 34, - GRAVE = 35, - ALTAR = 36, - ICE = 37, - GRASS = 38, - DRAWBRIDGE_DOWN = 39, - AIR = 40, - CLOUD = 41, - PUDDLE = 42, - SEWAGE = 43, + STONE = 0, + VWALL = 1, + HWALL = 2, + TLCORNER = 3, + TRCORNER = 4, + BLCORNER = 5, + BRCORNER = 6, + CROSSWALL = 7, /* For pretty mazes and special levels */ + TUWALL = 8, + TDWALL = 9, + TLWALL = 10, + TRWALL = 11, + DBWALL = 12, /* closed drawbridge in vertical wall */ + TREE = 13, + DEADTREE = 14, + SDOOR = 15, /* Secret door */ + SCORR = 16, /* Secret corridor */ + POOL = 17, + MOAT = 18, /* pool that doesn't boil, adjust messages */ + WATER = 19, + DRAWBRIDGE_UP = 20, + LAVAPOOL = 21, + IRONBARS = 22, + DOOR = 23, + CORR = 24, + ROOM = 25, + STAIRS = 26, + LADDER = 27, + FORGE = 28, + MAGIC_CHEST = 29, + FOUNTAIN = 30, + VENT = 31, + THRONE = 32, + SINK = 33, + TOILET = 34, + GRAVE = 35, + ALTAR = 36, + ICE = 37, + BRIDGE = 38, + GRASS = 39, + DRAWBRIDGE_DOWN = 40, + AIR = 41, + CLOUD = 42, + PUDDLE = 43, + SEWAGE = 44, - MAX_TYPE = 44, + MAX_TYPE = 45, INVALID_TYPE = 127 }; @@ -171,89 +172,90 @@ enum screen_symbols { S_vent = 36, S_pool = 37, S_ice = 38, - S_grass = 39, - S_lava = 40, - S_vodbridge = 41, /* open drawbridge, vertical wall */ - S_hodbridge = 42, /* open drawbridge, horizontal wall */ - S_vcdbridge = 43, /* closed drawbridge, vertical wall */ - S_hcdbridge = 44, /* closed drawbridge, horizontal wall */ - S_air = 45, - S_cloud = 46, - S_puddle = 47, - S_sewage = 48, - S_water = 49, + S_bridge = 39, + S_grass = 40, + S_lava = 41, + S_vodbridge = 42, /* open drawbridge, vertical wall */ + S_hodbridge = 43, /* open drawbridge, horizontal wall */ + S_vcdbridge = 44, /* closed drawbridge, vertical wall */ + S_hcdbridge = 45, /* closed drawbridge, horizontal wall */ + S_air = 46, + S_cloud = 47, + S_puddle = 48, + S_sewage = 49, + S_water = 50, /* end dungeon characters, begin traps */ - S_arrow_trap = 50, - S_bolt_trap = 51, - S_dart_trap = 52, - S_falling_rock_trap = 53, - S_squeaky_board = 54, - S_bear_trap = 55, - S_land_mine = 56, - S_rolling_boulder_trap = 57, - S_sleeping_gas_trap = 58, - S_rust_trap = 59, - S_fire_trap = 60, - S_pit = 61, - S_spiked_pit = 62, - S_hole = 63, - S_trap_door = 64, - S_teleportation_trap = 65, - S_level_teleporter = 66, - S_magic_portal = 67, - S_web = 68, - S_statue_trap = 69, - S_magic_trap = 70, - S_anti_magic_trap = 71, - S_ice_trap = 72, - S_polymorph_trap = 73, - S_spear_trap = 74, - S_magic_beam_trap = 75, - S_vibrating_square = 76, /* for display rather than any trap effect */ + S_arrow_trap = 51, + S_bolt_trap = 52, + S_dart_trap = 53, + S_falling_rock_trap = 54, + S_squeaky_board = 55, + S_bear_trap = 56, + S_land_mine = 57, + S_rolling_boulder_trap = 58, + S_sleeping_gas_trap = 59, + S_rust_trap = 60, + S_fire_trap = 61, + S_pit = 62, + S_spiked_pit = 63, + S_hole = 64, + S_trap_door = 65, + S_teleportation_trap = 66, + S_level_teleporter = 67, + S_magic_portal = 68, + S_web = 69, + S_statue_trap = 70, + S_magic_trap = 71, + S_anti_magic_trap = 72, + S_ice_trap = 73, + S_polymorph_trap = 74, + S_spear_trap = 75, + S_magic_beam_trap = 76, + S_vibrating_square = 77, /* for display rather than any trap effect */ /* end traps, begin special effects */ - S_vbeam = 77, /* The 4 zap beam symbols. Do NOT separate. */ - S_hbeam = 78, /* To change order or add, see function */ - S_lslant = 79, /* zapdir_to_glyph() in display.c. */ - S_rslant = 80, - S_digbeam = 81, /* dig beam symbol */ - S_flashbeam = 82, /* camera flash symbol */ - S_boomleft = 83, /* thrown boomerang, open left, e.g ')' */ - S_boomright = 84, /* thrown boomerang, open right, e.g. '(' */ - S_ss1 = 85, /* 4 magic shield ("resistance sparkle") glyphs */ - S_ss2 = 86, - S_ss3 = 87, - S_ss4 = 88, - S_poisoncloud = 89, - S_goodpos = 90, /* valid position for targeting via getpos() */ + S_vbeam = 78, /* The 4 zap beam symbols. Do NOT separate. */ + S_hbeam = 79, /* To change order or add, see function */ + S_lslant = 80, /* zapdir_to_glyph() in display.c. */ + S_rslant = 81, + S_digbeam = 82, /* dig beam symbol */ + S_flashbeam = 83, /* camera flash symbol */ + S_boomleft = 84, /* thrown boomerang, open left, e.g ')' */ + S_boomright = 85, /* thrown boomerang, open right, e.g. '(' */ + S_ss1 = 86, /* 4 magic shield ("resistance sparkle") glyphs */ + S_ss2 = 87, + S_ss3 = 88, + S_ss4 = 89, + S_poisoncloud = 90, + S_goodpos = 91, /* valid position for targeting via getpos() */ /* The 8 swallow symbols. Do NOT separate. To change order or add, */ /* see the function swallow_to_glyph() in display.c. */ - S_sw_tl = 91, /* swallow top left [1] */ - S_sw_tc = 92, /* swallow top center [2] Order: */ - S_sw_tr = 93, /* swallow top right [3] */ - S_sw_ml = 94, /* swallow middle left [4] 1 2 3 */ - S_sw_mr = 95, /* swallow middle right [6] 4 5 6 */ - S_sw_bl = 96, /* swallow bottom left [7] 7 8 9 */ - S_sw_bc = 97, /* swallow bottom center [8] */ - S_sw_br = 98, /* swallow bottom right [9] */ - - S_explode1 = 99, /* explosion top left */ - S_explode2 = 100, /* explosion top center */ - S_explode3 = 101, /* explosion top right Ex. */ - S_explode4 = 102, /* explosion middle left */ - S_explode5 = 103, /* explosion middle center /-\ */ - S_explode6 = 104, /* explosion middle right |@| */ - S_explode7 = 105, /* explosion bottom left \-/ */ - S_explode8 = 106, /* explosion bottom center */ - S_explode9 = 107, /* explosion bottom right */ + S_sw_tl = 92, /* swallow top left [1] */ + S_sw_tc = 93, /* swallow top center [2] Order: */ + S_sw_tr = 94, /* swallow top right [3] */ + S_sw_ml = 95, /* swallow middle left [4] 1 2 3 */ + S_sw_mr = 96, /* swallow middle right [6] 4 5 6 */ + S_sw_bl = 97, /* swallow bottom left [7] 7 8 9 */ + S_sw_bc = 98, /* swallow bottom center [8] */ + S_sw_br = 99, /* swallow bottom right [9] */ + + S_explode1 = 100, /* explosion top left */ + S_explode2 = 101, /* explosion top center */ + S_explode3 = 102, /* explosion top right Ex. */ + S_explode4 = 103, /* explosion middle left */ + S_explode5 = 104, /* explosion middle center /-\ */ + S_explode6 = 105, /* explosion middle right |@| */ + S_explode7 = 106, /* explosion bottom left \-/ */ + S_explode8 = 107, /* explosion bottom center */ + S_explode9 = 108, /* explosion bottom right */ /* end effects */ - MAXPCHARS = 108 /* maximum number of mapped characters */ + MAXPCHARS = 109 /* maximum number of mapped characters */ }; diff --git a/include/timeout.h b/include/timeout.h index 0cce83148..d06efff36 100644 --- a/include/timeout.h +++ b/include/timeout.h @@ -39,6 +39,7 @@ enum timeout_types { SPIRIT_FADE, FERMENT, FIXTURE_ACTIVATE, + COLLAPSE_ROPE_BRIDGE, NUM_TIME_FUNCS }; diff --git a/src/dbridge.c b/src/dbridge.c index c09a1e8f8..2c118ab65 100644 --- a/src/dbridge.c +++ b/src/dbridge.c @@ -95,6 +95,13 @@ int x, y; return FALSE; } +boolean +is_bridge(int x, int y) +{ + schar ltyp = levl[x][y].typ; + return ltyp == BRIDGE; +} + boolean is_lava(x, y) int x, y; @@ -174,6 +181,8 @@ int mask; return LAVAPOOL; case DB_MOAT: return MOAT; + case DB_FLOOR: + return CORR; default: return STONE; } @@ -932,6 +941,76 @@ int x, y; nokiller(); } +void +collapse_rope_bridge(anything *arg, long timeout UNUSED) +{ + xchar x, y; + long where = arg->a_long; + y = (xchar) (where & 0xFFFF); + x = (xchar) ((where >> 16) & 0xFFFF); + destroy_rope_bridge(x, y); +} + +void +start_collapse_rope_bridge(xchar x, xchar y) +{ + if (x >= COLNO || y >= ROWNO || x < 0 || y < 0) + return; + if (!is_bridge(x, y)) return; + spot_stop_timers(x, y, COLLAPSE_ROPE_BRIDGE); + start_timer((long) (2 + rn2(3)), TIMER_LEVEL, COLLAPSE_ROPE_BRIDGE, long_to_any(((long) x << 16) | (long) y)); +} + +/* destroy the rope bridge located at x, y */ +void +destroy_rope_bridge(xchar x, xchar y) +{ + register struct rm *lev1; + struct trap *t; + + lev1 = &levl[x][y]; + if (!is_bridge(x, y)) + return; + if (cansee(x, y)) { + pline_The("bridge collapses!"); + } else if (!Deaf && !rn2(10)) { + /* Low chance of hearing this because oftentimes + a lot of bridges will be destroyed at once. */ + You_hear("something snap."); + } + + lev1->typ = db_under_typ(lev1->drawbridgemask); + if (lev1->typ == CORR) { + maketrap(x, y, HOLE); + t = t_at(u.ux, u.uy); + if (t) dotrap(t, FORCETRAP); + } + lev1->drawbridgemask = 0; + spot_stop_timers(x, y, COLLAPSE_ROPE_BRIDGE); + del_engr_at(x, y); + if (!does_block(x, y, lev1)) + unblock_point(x, y); + newsym(x, y); + + /* Nearby bridges begin collapsing as well */ + start_collapse_rope_bridge(x - 1, y); + start_collapse_rope_bridge(x + 1, y); + start_collapse_rope_bridge(x, y - 1); + start_collapse_rope_bridge(x, y + 1); +} + +void +create_rope_bridge(int x, int y) +{ + if (levl[x][y].typ == LAVAPOOL) + levl[x][y].drawbridgemask |= DB_LAVA; + else if (levl[x][y].typ == CORR) + levl[x][y].drawbridgemask |= DB_FLOOR; + else + levl[x][y].drawbridgemask |= DB_MOAT; + levl[x][y].typ = BRIDGE; +} + /* * Let's destroy the drawbridge located at x,y */ diff --git a/src/display.c b/src/display.c index b2fcfb100..d19a1f0ee 100644 --- a/src/display.c +++ b/src/display.c @@ -1846,6 +1846,9 @@ xchar x, y; idx = S_grass; /*engr_override = TRUE;*/ break; + case BRIDGE: + idx = S_bridge; + break; case AIR: idx = S_air; break; @@ -2101,6 +2104,9 @@ xchar x, y; case ICE: idx = S_ice; break; + case BRIDGE: + idx = S_bridge; + break; case GRASS: idx = S_grass; break; @@ -2194,6 +2200,7 @@ static const char *type_names[MAX_TYPE] = { "GRAVE", "ALTAR", "ICE", + "BRIDGE", "GRASS", "DRAWBRIDGE_DOWN", "AIR", diff --git a/src/do.c b/src/do.c index 087f4be98..a783d9f10 100644 --- a/src/do.c +++ b/src/do.c @@ -65,7 +65,7 @@ boolean pushing; if (fills_up) { struct trap *ttmp = t_at(rx, ry); - if (ltyp == DRAWBRIDGE_UP) { + if (ltyp == DRAWBRIDGE_UP || ltyp == BRIDGE) { levl[rx][ry].drawbridgemask &= ~DB_UNDER; /* clear lava */ levl[rx][ry].drawbridgemask |= DB_FLOOR; } else diff --git a/src/do_name.c b/src/do_name.c index 3098cb116..367f18275 100644 --- a/src/do_name.c +++ b/src/do_name.c @@ -395,6 +395,7 @@ int x, y, gloc; || glyph_to_cmap(glyph) == S_tree || glyph_to_cmap(glyph) == S_bars || glyph_to_cmap(glyph) == S_ice + || glyph_to_cmap(glyph) == S_bridge || glyph_to_cmap(glyph) == S_grass || glyph_to_cmap(glyph) == S_air || glyph_to_cmap(glyph) == S_cloud diff --git a/src/drawing.c b/src/drawing.c index 559ec4724..657cf5c31 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -182,6 +182,7 @@ const struct symdef defsyms[MAXPCHARS] = { { '#', "vent", C(CLR_BRIGHT_CYAN) }, /* vent */ { '}', "water", C(CLR_BLUE) }, /* pool */ { '.', "ice", C(CLR_CYAN) }, /* ice */ + { '.', "rope bridge", C(CLR_BROWN) }, /* rope bridge */ { ',', "grass", C(CLR_GREEN) }, /* grass */ { '}', "molten lava", C(CLR_RED) }, /* lava */ /*40*/ { '.', "lowered drawbridge", C(CLR_BROWN) }, /* vodbridge */ diff --git a/src/engrave.c b/src/engrave.c index f13797729..ce9e81811 100644 --- a/src/engrave.c +++ b/src/engrave.c @@ -195,7 +195,7 @@ register int x, y; return "ice"; else if (is_lava(x, y)) return hliquid("lava"); - else if (lev->typ == DRAWBRIDGE_DOWN) + else if (lev->typ == DRAWBRIDGE_DOWN || lev->typ == BRIDGE) return "bridge"; else if (IS_ALTAR(levl[x][y].typ)) return "altar"; diff --git a/src/hack.c b/src/hack.c index 926bb1ac7..ada26ff6b 100644 --- a/src/hack.c +++ b/src/hack.c @@ -1475,7 +1475,7 @@ domove_core() register xchar x, y; struct trap *trap = NULL; int wtcap; - boolean on_ice; + boolean on_ice, on_bridge; boolean walk_sewage; xchar chainx = 0, chainy = 0, ballx = 0, bally = 0; /* ball&chain new positions */ @@ -1570,6 +1570,19 @@ domove_core() if (!walk_sewage && (HSlow & FROMOUTSIDE)) HSlow &= ~FROMOUTSIDE; + /* check rickety bridge */ + on_bridge = !Levitation && is_bridge(u.ux, u.uy); + if (on_bridge) { + if (Flying || is_floater(youmonst.data) + || is_clinger(youmonst.data) || is_whirly(youmonst.data)) { + on_bridge = FALSE; + } else if (!rn2(5)) { + /* TODO: If the monster is heavy enough, then start the countdown to + snapping the bridge. */ + pline_The("bridge sways beneath you."); + } + } + x = u.ux + u.dx; y = u.uy + u.dy; if (Stunned || Afraid || (Confusion && !rn2(5))) { @@ -2700,6 +2713,21 @@ boolean pick; : (time_left < 10L) ? 1 : 0]); } + + if (Warning && is_bridge(u.ux, u.uy)) { + static const char *const bridgewarnings[] = { + "The bridge creaks ominously.", + "You feel the bridge shudder.", + "The bridge creaks." + }; + long time_left = spot_time_left(u.ux, u.uy, COLLAPSE_ROPE_BRIDGE); + + if (time_left && time_left < 15L) + pline("%s", bridgewarnings[(time_left < 2L) ? 2 + : (time_left < 5L) ? 1 + : 0]); + } + if ((mtmp = m_at(u.ux, u.uy)) != 0 && !u.uswallow) { mtmp->mundetected = mtmp->msleeping = 0; switch (mtmp->data->mlet) { diff --git a/src/invent.c b/src/invent.c index 3728f7bf6..4a166c284 100644 --- a/src/invent.c +++ b/src/invent.c @@ -3608,6 +3608,8 @@ char *buf; cmap = S_throne; /* "opulent throne" */ else if (is_lava(x, y)) cmap = S_lava; /* "molten lava" */ + else if (is_bridge(x, y)) + cmap = S_bridge; else if (is_ice(x, y)) cmap = S_ice; /* "ice" */ else if (is_pool(x, y)) diff --git a/src/mklev.c b/src/mklev.c index 4b6e931ec..2fbea75de 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -19,6 +19,7 @@ STATIC_DCL void FDECL(mktoilet,(struct mkroom *)); STATIC_DCL void FDECL(mkaltar, (struct mkroom *)); STATIC_DCL void FDECL(mkgrave, (struct mkroom *)); STATIC_DCL void NDECL(makevtele); +STATIC_DCL void NDECL(mkchasms); STATIC_DCL void mkgrass(void); STATIC_DCL void NDECL(clear_level_structures); STATIC_DCL void NDECL(makelevel); @@ -818,6 +819,67 @@ post_process_level() place_axe(); } +static void +mkchasms(void) +{ + int x, y, x2, y2; + boolean cells[COLNO][ROWNO]; + boolean cells2[COLNO][ROWNO]; + int passes, wallcnt; + int maxpasses = 5; + int pooltyp = CORR; + + /* Initial pass; randomly fill level. */ + for (x = 0; x < COLNO; x++) { + for (y = 0; y < ROWNO; y++) { + if (rn2(100) < 45) { cells[x][y] = 1; } + else cells[x][y] = 0; + cells2[x][y] = 0; + } + } + + /* Cellular automata */ + for (passes = 0; passes < maxpasses; passes++) { + for (x = 2; x < COLNO - 2; x++) { + for (y = 2; y < ROWNO - 2; y++) { + wallcnt = 0; + for (x2 = x - 1; x2 <= x + 1; x2++) { + for (y2 = y - 1; y2 <= y + 1; y2++) { + if (cells[x2][y2]) wallcnt += 1; + } + } + if (wallcnt >= 5) cells2[x][y] = 1; + else cells2[x][y] = 0; + } + } + /* Transfer array */ + for (x = 0; x < COLNO; x++) { + for (y = 0; y < ROWNO; y++) { + cells[x][y] = cells2[x][y]; + } + } + } + + /* Transfer cells to map */ + if (depth(&u.uz) >= 24) + pooltyp = rn2(2) ? MOAT : LAVAPOOL; + for (x = 0; x < COLNO; x++) { + for (y = 0; y < ROWNO; y++) { + if (cells[x][y]) { + if (levl[x][y].typ == CORR || levl[x][y].typ == SCORR) { + levl[x][y].typ = pooltyp; + create_rope_bridge(x, y); + } + else if (levl[x][y].typ == STONE) { + levl[x][y].typ = pooltyp; + if (pooltyp == CORR) maketrap(x, y, HOLE); + } + levl[x][y].lit = 1; + } + } + } +} + /* clear out various globals that keep information on the current level. * some of this is only necessary for some types of levels (maze, normal, * special) but it's easier to put it all in one place than make sure @@ -1029,6 +1091,11 @@ makelevel() if (!rn2(5)) make_ironbarwalls(rn2(20) ? rn2(20) : rn2(50)); + /* Generate chasms. We do this before generating vaults, since that way + the lit flag will carry over. */ + if (rn2(3) && depth(&u.uz) > 14) + mkchasms(); + /* make a secret treasure vault, not connected to the rest */ if (do_vault()) { xchar w, h; diff --git a/src/mkroom.c b/src/mkroom.c index 8ce3b97ec..2f985ba46 100644 --- a/src/mkroom.c +++ b/src/mkroom.c @@ -1249,6 +1249,7 @@ int xy_flags; && (levl[pos->x][pos->y].typ != CORR)) || ((levl[pos->x][pos->y].typ != ROOM) && (levl[pos->x][pos->y].typ != ICE) + && (levl[pos->x][pos->y].typ != BRIDGE) && (levl[pos->x][pos->y].typ != GRASS))) isok = FALSE; if ((xy_flags & 4) && (sobj_at(BOULDER, pos->x, pos->y))) @@ -1562,6 +1563,9 @@ int sym; case S_ice: typ = ICE; break; + case S_bridge: + typ = BRIDGE; + break; case S_grass: typ = GRASS; break; diff --git a/src/muse.c b/src/muse.c index 3cb8ee536..81f139691 100644 --- a/src/muse.c +++ b/src/muse.c @@ -724,6 +724,7 @@ struct monst *mtmp; && !(levl[x][y].wall_info & W_NONDIGGABLE) && !(Is_botlevel(&u.uz) || In_endgame(&u.uz)) && !(is_ice(x, y) || is_pool(x, y) || is_lava(x, y)) + && !(is_bridge(x, y)) && !(mtmp->data == &mons[PM_VLAD_THE_IMPALER] && In_V_tower(&u.uz))) { m.defensive = obj; diff --git a/src/sit.c b/src/sit.c index 0ef74bc53..39c85f859 100644 --- a/src/sit.c +++ b/src/sit.c @@ -201,6 +201,9 @@ dosit() You(sit_message, defsyms[S_ice].explanation); if (how_resistant(COLD_RES) < 100) pline_The("ice feels cold."); + } else if (typ == BRIDGE) { + You(sit_message, "bridge"); + pline_The("bridge sways."); } else if (typ == DRAWBRIDGE_DOWN) { You(sit_message, "drawbridge"); } else if (IS_THRONE(typ)) { diff --git a/src/sp_lev.c b/src/sp_lev.c index 7d9a47bcb..9833dd54f 100644 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -976,8 +976,15 @@ register int humidity; if (humidity & DRY) { typ = levl[x][y].typ; - if (typ == ROOM || typ == AIR || typ == CLOUD || typ == ICE - || typ == CORR || typ == PUDDLE || typ == SEWAGE || typ == GRASS) + if (typ == ROOM + || typ == AIR + || typ == CLOUD + || typ == ICE + || typ == CORR + || typ == PUDDLE + || typ == SEWAGE + || typ == BRIDGE + || typ == GRASS) return TRUE; } if ((humidity & SPACELOC) && SPACE_POS(levl[x][y].typ)) diff --git a/src/timeout.c b/src/timeout.c index 99ac2c6a1..a9a3bc85e 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -2375,7 +2375,8 @@ static const ttable timeout_funcs[NUM_TIME_FUNCS] = { TTAB(bomb_blow, (timeout_proc) 0, "bomb_blow"), TTAB(spirit_fade, (timeout_proc) 0, "spirit_fade"), TTAB(ferment, (timeout_proc) 0, "ferment"), - TTAB(fixture_activate, (timeout_proc) 0, "fixture_activate") + TTAB(fixture_activate, (timeout_proc) 0, "fixture_activate"), + TTAB(collapse_rope_bridge, (timeout_proc) 0, "collapse_rope_bridge") }; #undef TTAB diff --git a/src/zap.c b/src/zap.c index d7b4d33d9..6ebeac944 100644 --- a/src/zap.c +++ b/src/zap.c @@ -5986,7 +5986,8 @@ const char *msg; if (!msg) msg = "The ice crackles and melts."; - if (lev->typ == DRAWBRIDGE_UP || lev->typ == DRAWBRIDGE_DOWN) { + if (lev->typ == DRAWBRIDGE_UP || lev->typ == DRAWBRIDGE_DOWN + || lev->typ == BRIDGE) { lev->drawbridgemask &= ~DB_ICE; /* revert to DB_MOAT */ } else { /* lev->typ == ICE */ #ifdef STUPID @@ -6172,6 +6173,10 @@ boolean moncast; } if (is_ice(x, y)) { melt_ice(x, y, (char *) 0); + } else if (is_bridge(x, y)) { + if (cansee(x, y)) + pline_The("bridge catches fire!"); + destroy_rope_bridge(x, y); } else if (is_pool(x, y)) { const char *msgtxt = (!Deaf) ? "You hear hissing gas." /* Deaf-aware */ @@ -7572,7 +7577,7 @@ int x, y, rangemod; Strcpy(buf, waterbody_name(x, y)); /* for MOAT */ rangemod -= 3; - if (lev->typ == DRAWBRIDGE_UP) { + if (lev->typ == DRAWBRIDGE_UP || lev->typ == BRIDGE) { lev->drawbridgemask &= ~DB_UNDER; /* clear lava */ lev->drawbridgemask |= (lava ? DB_FLOOR : DB_ICE); } else { diff --git a/win/share/monsters.txt b/win/share/monsters.txt index 6cfdf5205..88490e599 100644 --- a/win/share/monsters.txt +++ b/win/share/monsters.txt @@ -1662,7 +1662,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 58 (dread eye) +# tile 86 (dread eye) { ................ ................ @@ -1681,7 +1681,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 86 (serval) +# tile 87 (serval) { ................ ................ @@ -1700,7 +1700,7 @@ Z = (195, 195, 195) .....HHHA.KHA... ................ } -# tile 87 (kitten) +# tile 88 (kitten) { ................ ................ @@ -1719,7 +1719,7 @@ Z = (195, 195, 195) ......CCA..CA... ................ } -# tile 88 (housecat) +# tile 89 (housecat) { ................ ................ @@ -1738,7 +1738,7 @@ Z = (195, 195, 195) .....CCA...CA... ................ } -# tile 89 (caterwaul) +# tile 90 (caterwaul) { ................ ................ @@ -1757,7 +1757,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 90 (jaguar) +# tile 91 (jaguar) { ................ ................ @@ -1776,7 +1776,7 @@ Z = (195, 195, 195) .....CCAA...CA.. ................ } -# tile 91 (lynx) +# tile 92 (lynx) { ................ ................ @@ -1795,7 +1795,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 92 (panther) +# tile 93 (panther) { ................ ................ @@ -1814,7 +1814,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 93 (werepanther) +# tile 94 (werepanther) { ................ ................ @@ -1833,7 +1833,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 94 (large cat) +# tile 95 (large cat) { ................ ................ @@ -1852,7 +1852,7 @@ Z = (195, 195, 195) .....CCAA...CA.. ................ } -# tile 95 (tiger) +# tile 96 (tiger) { ................ ................ @@ -1871,7 +1871,7 @@ Z = (195, 195, 195) .....CCAA..CCA.. ................ } -# tile 96 (weretiger) +# tile 97 (weretiger) { ................ ................ @@ -1890,7 +1890,7 @@ Z = (195, 195, 195) .....LLAA..LLA.. ................ } -# tile 97 (saber-toothed cat) +# tile 98 (saber-toothed cat) { ................ ................ @@ -1909,7 +1909,7 @@ Z = (195, 195, 195) .....KCAA..CKA.. ................ } -# tile 98 (lion) +# tile 99 (lion) { ................ ................ @@ -1928,7 +1928,7 @@ Z = (195, 195, 195) .....HKAA..HKA.. ................ } -# tile 99 (serpopard) +# tile 100 (serpopard) { .......HHHAJ.... ......HHJJAHH... @@ -1947,7 +1947,7 @@ Z = (195, 195, 195) .....HHAA....... ................ } -# tile 100 (fat cat) +# tile 101 (fat cat) { ................ ................ @@ -1966,7 +1966,7 @@ Z = (195, 195, 195) .....CCAAAAACA.. ................ } -# tile 101 (kamadan) +# tile 102 (kamadan) { ................ ........FGA..... @@ -1985,7 +1985,7 @@ Z = (195, 195, 195) ...CK.CKAAAACK.. ................ } -# tile 102 (saber-toothed tiger) +# tile 103 (saber-toothed tiger) { ................ ................ @@ -2004,7 +2004,7 @@ Z = (195, 195, 195) .....CCAA..CCA.. ................ } -# tile 103 (displacer beast) +# tile 104 (displacer beast) { ................ ........E....... @@ -2023,7 +2023,7 @@ Z = (195, 195, 195) ...AE.AE.EA.EA.. ................ } -# tile 104 (hellcat) +# tile 105 (hellcat) { ................ ................ @@ -2042,7 +2042,7 @@ Z = (195, 195, 195) .....DDAA..KDA.. ................ } -# tile 105 (jermlaine) +# tile 106 (jermlaine) { ................ ................ @@ -2061,7 +2061,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 106 (telamon) +# tile 107 (telamon) { ................ ................ @@ -2080,7 +2080,7 @@ Z = (195, 195, 195) ...UUUUUUUUUUU.. ................ } -# tile 107 (statue gargoyle) +# tile 108 (statue gargoyle) { ................ ...A..N.O..A.... @@ -2099,7 +2099,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 108 (galltrit) +# tile 109 (galltrit) { ................ ................ @@ -2118,7 +2118,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 109 (gremlin) +# tile 110 (gremlin) { ................ ................ @@ -2137,7 +2137,7 @@ Z = (195, 195, 195) ...GFA.FGA...... ................ } -# tile 110 (lava gremlin) +# tile 111 (lava gremlin) { ................ ................ @@ -2156,7 +2156,7 @@ Z = (195, 195, 195) ...DCA.CDA...... ................ } -# tile 111 (gargoyle) +# tile 112 (gargoyle) { ................ ................ @@ -2175,7 +2175,7 @@ Z = (195, 195, 195) ....PFA.FPA..... ................ } -# tile 112 (winged gargoyle) +# tile 113 (winged gargoyle) { ...K......K..... ...KJ....KJ..... @@ -2194,7 +2194,7 @@ Z = (195, 195, 195) ....PFA.FPA..... ................ } -# tile 113 (hobbit) +# tile 114 (hobbit) { ................ ................ @@ -2213,7 +2213,7 @@ Z = (195, 195, 195) ....LLL.LLL..... ................ } -# tile 114 (hobbit pickpocket) +# tile 115 (hobbit pickpocket) { ................ ................ @@ -2232,7 +2232,7 @@ Z = (195, 195, 195) ....LLL.LLL..... ................ } -# tile 115 (dwarf) +# tile 116 (dwarf) { ................ ................ @@ -2251,7 +2251,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 116 (dwarf thief) +# tile 117 (dwarf thief) { ................ ................ @@ -2270,7 +2270,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 117 (mountain dwarf) +# tile 118 (mountain dwarf) { ................ ................ @@ -2289,7 +2289,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 118 (dwarf noble) +# tile 119 (dwarf noble) { ................ ................ @@ -2308,7 +2308,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 119 (dwarf royal) +# tile 120 (dwarf royal) { ................ ................ @@ -2327,7 +2327,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 120 (duergar) +# tile 121 (duergar) { ................ ................ @@ -2346,7 +2346,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 121 (illithid) +# tile 122 (illithid) { ................ .......IIIIC.... @@ -2365,7 +2365,7 @@ Z = (195, 195, 195) ...EEECEEEAA.... ....IIC.IIA..... } -# tile 122 (deep one) +# tile 123 (deep one) { ................ ................ @@ -2384,7 +2384,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 123 (mind flayer) +# tile 124 (mind flayer) { ................ .......IIIIC.... @@ -2403,7 +2403,7 @@ Z = (195, 195, 195) ......CFFCAA.... ....IIC.IIA..... } -# tile 124 (planar pirate) +# tile 125 (planar pirate) { ................ .....HHCA....... @@ -2422,7 +2422,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 125 (deeper one) +# tile 126 (deeper one) { ................ ........J.J.J... @@ -2441,7 +2441,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 126 (master mind flayer) +# tile 127 (master mind flayer) { ................ .......IIIIC.... @@ -2460,7 +2460,7 @@ Z = (195, 195, 195) ...EEECEEEAA.... ....IIC.IIA..... } -# tile 127 (alhoon) +# tile 128 (alhoon) { ................ .......IIIIC.... @@ -2479,7 +2479,7 @@ Z = (195, 195, 195) ...EEECEEEAA.... ....IIC.IIA..... } -# tile 128 (deepest one) +# tile 129 (deepest one) { .....G.......... ....GGF.B.B.B... @@ -2498,7 +2498,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 129 (manes) +# tile 130 (manes) { ................ ................ @@ -2517,7 +2517,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 130 (lesser homunculus) +# tile 131 (lesser homunculus) { ................ ................ @@ -2536,7 +2536,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 131 (dretch) +# tile 132 (dretch) { ................ ................ @@ -2555,7 +2555,7 @@ Z = (195, 195, 195) ..AAANPAPN...... ................ } -# tile 132 (imp) +# tile 133 (imp) { ................ ................ @@ -2574,7 +2574,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 133 (homunculus) +# tile 134 (homunculus) { ................ ................ @@ -2593,7 +2593,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 134 (lemure) +# tile 135 (lemure) { ................ ................ @@ -2612,7 +2612,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 135 (rutterkin) +# tile 136 (rutterkin) { ................ ................ @@ -2631,7 +2631,7 @@ Z = (195, 195, 195) ...AABOAOB...... ................ } -# tile 136 (quasit) +# tile 137 (quasit) { ................ ................ @@ -2650,7 +2650,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 137 (tengu) +# tile 138 (tengu) { ................ .......PP....... @@ -2669,7 +2669,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 138 (greater homunculus) +# tile 139 (greater homunculus) { ................ ................ @@ -2688,7 +2688,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 139 (dust devil) +# tile 140 (dust devil) { ................ ....J.....J..... @@ -2707,7 +2707,7 @@ Z = (195, 195, 195) ....KKKK..K..... ................ } -# tile 140 (nupperibo) +# tile 141 (nupperibo) { ................ ................ @@ -2726,7 +2726,7 @@ Z = (195, 195, 195) ..A...AFAF...A.. ................ } -# tile 141 (redcap) +# tile 142 (redcap) { ................ ................ @@ -2745,7 +2745,7 @@ Z = (195, 195, 195) JA.LLAAAALLA.... ................ } -# tile 142 (blood imp) +# tile 143 (blood imp) { ................ ................ @@ -2764,7 +2764,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 143 (blue jelly) +# tile 144 (blue jelly) { ................ ................ @@ -2783,7 +2783,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 144 (spotted jelly) +# tile 145 (spotted jelly) { ................ ................ @@ -2802,7 +2802,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 145 (clear jelly) +# tile 146 (clear jelly) { ................ ................ @@ -2821,7 +2821,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 146 (ochre jelly) +# tile 147 (ochre jelly) { ................ ................ @@ -2840,7 +2840,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 147 (yellow jelly) +# tile 148 (yellow jelly) { ................ ................ @@ -2859,7 +2859,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 148 (orange jelly) +# tile 149 (orange jelly) { ................ ................ @@ -2878,7 +2878,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 149 (rancid jelly) +# tile 150 (rancid jelly) { ................ ................ @@ -2897,7 +2897,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 150 (kobold) +# tile 151 (kobold) { ................ ................ @@ -2916,7 +2916,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 151 (large kobold) +# tile 152 (large kobold) { ................ ................ @@ -2935,7 +2935,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 152 (kobold noble) +# tile 153 (kobold noble) { ................ ................ @@ -2954,7 +2954,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 153 (kobold shaman) +# tile 154 (kobold shaman) { ................ ................ @@ -2973,7 +2973,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 154 (swamp kobold) +# tile 155 (swamp kobold) { ................ ................ @@ -2992,7 +2992,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 155 (rock kobold) +# tile 156 (rock kobold) { ................ ................ @@ -3011,7 +3011,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 156 (kobold warrior) +# tile 157 (kobold warrior) { ................ ................ @@ -3030,7 +3030,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 157 (Kroo the Kobold King) +# tile 158 (Kroo the Kobold King) { ................ ................ @@ -3049,7 +3049,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 158 (leprechaun) +# tile 159 (leprechaun) { ................ ................ @@ -3068,7 +3068,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 159 (leprechaun wizard) +# tile 160 (leprechaun wizard) { ................ ................ @@ -3087,7 +3087,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 160 (small mimic) +# tile 161 (small mimic) { ................ ................ @@ -3106,7 +3106,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 161 (large mimic) +# tile 162 (large mimic) { ................ ................ @@ -3125,7 +3125,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 162 (giant mimic) +# tile 163 (giant mimic) { ................ ......NNO....... @@ -3144,7 +3144,7 @@ Z = (195, 195, 195) ...NNNO.NNOOA... ................ } -# tile 163 (nymph) +# tile 164 (nymph) { ................ ................ @@ -3163,7 +3163,7 @@ Z = (195, 195, 195) ....KJKJKJKJ.... ................ } -# tile 164 (wood nymph) +# tile 165 (wood nymph) { ................ ................ @@ -3182,7 +3182,7 @@ Z = (195, 195, 195) ....KJKJKJKJ.... ................ } -# tile 165 (water nymph) +# tile 166 (water nymph) { ................ ................ @@ -3201,7 +3201,7 @@ Z = (195, 195, 195) ....BPBPBPBP.... ................ } -# tile 166 (mountain nymph) +# tile 167 (mountain nymph) { ................ ................ @@ -3220,7 +3220,7 @@ Z = (195, 195, 195) ....OLOLOLOL.... ................ } -# tile 167 (ice nymph) +# tile 168 (ice nymph) { ................ ................ @@ -3239,7 +3239,7 @@ Z = (195, 195, 195) ....OLOLOLOL.... ................ } -# tile 168 (pixie) +# tile 169 (pixie) { ................ ................ @@ -3258,7 +3258,7 @@ Z = (195, 195, 195) .......AAAAAA... ................ } -# tile 169 (quickling) +# tile 170 (quickling) { ................ ................ @@ -3277,7 +3277,7 @@ Z = (195, 195, 195) ........A....... ................ } -# tile 170 (yuki-onna) +# tile 171 (yuki-onna) { ................ ................ @@ -3296,7 +3296,7 @@ Z = (195, 195, 195) ....ONONONON.... ................ } -# tile 171 (brownie) +# tile 172 (brownie) { ................ ................ @@ -3315,7 +3315,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 172 (lampad) +# tile 173 (lampad) { ................ ................ @@ -3334,7 +3334,7 @@ Z = (195, 195, 195) ....QRQRQRQR.... ................ } -# tile 173 (dream thief) +# tile 174 (dream thief) { ................ ................ @@ -3353,7 +3353,7 @@ Z = (195, 195, 195) ......AAEDEDAA.. .......AAAAAA... } -# tile 174 (thriae) +# tile 175 (thriae) { ................ ....OJ.......... @@ -3372,7 +3372,7 @@ Z = (195, 195, 195) ...AAAAACAAAA... .....AAAAAA..... } -# tile 175 (Aphrodite) +# tile 176 (Aphrodite) { ................ .........PCP.... @@ -3391,7 +3391,7 @@ Z = (195, 195, 195) ....OLOLOLOL.... ................ } -# tile 176 (goblin) +# tile 177 (goblin) { ................ ................ @@ -3410,7 +3410,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 177 (hobgoblin) +# tile 178 (hobgoblin) { ................ .....LK......... @@ -3429,7 +3429,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 178 (goblin shaman) +# tile 179 (goblin shaman) { ................ ................ @@ -3448,7 +3448,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 179 (goblin-captain) +# tile 180 (goblin-captain) { ................ ................ @@ -3467,7 +3467,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 180 (orc) +# tile 181 (orc) { ................ ................ @@ -3486,7 +3486,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 181 (hill orc) +# tile 182 (hill orc) { ................ ................ @@ -3505,7 +3505,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 182 (Mordor orc) +# tile 183 (Mordor orc) { ................ ................ @@ -3524,7 +3524,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 183 (Uruk-hai) +# tile 184 (Uruk-hai) { ................ ................ @@ -3543,7 +3543,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 184 (bugbear) +# tile 185 (bugbear) { ................ ................ @@ -3562,7 +3562,7 @@ Z = (195, 195, 195) ........CCA..... ................ } -# tile 185 (orc shaman) +# tile 186 (orc shaman) { ................ ................ @@ -3581,7 +3581,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 186 (orc-captain) +# tile 187 (orc-captain) { ................ ................ @@ -3600,7 +3600,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 187 (war orc) +# tile 188 (war orc) { ................ ..........P..... @@ -3619,7 +3619,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 188 (great orc) +# tile 189 (great orc) { .....O.......... ....NOP......... @@ -3638,7 +3638,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 189 (snow orc) +# tile 190 (snow orc) { ................ ................ @@ -3657,7 +3657,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 190 (demon orc) +# tile 191 (demon orc) { ................ ................ @@ -3676,7 +3676,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 191 (Grund the Orc King) +# tile 192 (Grund the Orc King) { ................ ...HAHAHA....... @@ -3695,7 +3695,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 192 (rock piercer) +# tile 193 (rock piercer) { .JKKKKKKKKJAAA.. ..JJGKGKJJAAAA.. @@ -3714,7 +3714,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 193 (iron piercer) +# tile 194 (iron piercer) { .BPPPPPPPP.AAA.. ..BBDPDP..AAAA.. @@ -3733,7 +3733,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 194 (glass piercer) +# tile 195 (glass piercer) { .NBBBBBBBBPAAA.. ..NNDBDBPPAAAA.. @@ -3752,7 +3752,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 195 (diamond piercer) +# tile 196 (diamond piercer) { .NNNNNNNNNOAAA.. ..NNDNDNOOAAAA.. @@ -3771,7 +3771,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 196 (god piercer) +# tile 197 (god piercer) { .NHHHHHHHHCAAA.. ..NNDHDHCCAAAA.. @@ -3790,7 +3790,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 197 (pig) +# tile 198 (pig) { ................ ................ @@ -3809,7 +3809,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 198 (lamb) +# tile 199 (lamb) { ................ ................ @@ -3828,7 +3828,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 199 (feral hog) +# tile 200 (feral hog) { ................ ................ @@ -3847,7 +3847,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 200 (sheep) +# tile 201 (sheep) { ................ ................ @@ -3866,7 +3866,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 201 (rothe) +# tile 202 (rothe) { ................ ...........K.... @@ -3885,7 +3885,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 202 (llama) +# tile 203 (llama) { ................ ................ @@ -3904,7 +3904,7 @@ Z = (195, 195, 195) ...OANAAAAAA.... ................ } -# tile 203 (goat) +# tile 204 (goat) { ................ ................ @@ -3923,7 +3923,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 204 (cow) +# tile 205 (cow) { ................ ................ @@ -3942,7 +3942,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 205 (black bear) +# tile 206 (black bear) { ................ ................ @@ -3961,7 +3961,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 206 (bull) +# tile 207 (bull) { ................ ................ @@ -3980,7 +3980,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 207 (leocrotta) +# tile 208 (leocrotta) { ................ ..A..A.......... @@ -3999,7 +3999,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 208 (landshark) +# tile 209 (landshark) { ................ ................ @@ -4018,7 +4018,7 @@ Z = (195, 195, 195) ....J.....J..... ................ } -# tile 209 (wumpus) +# tile 210 (wumpus) { ................ ............B... @@ -4037,7 +4037,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 210 (manticore) +# tile 211 (manticore) { .......M..M..... ........MOM..... @@ -4056,7 +4056,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 211 (mumak) +# tile 212 (mumak) { ................ ...........P.... @@ -4075,7 +4075,7 @@ Z = (195, 195, 195) PPPA............ .AA............. } -# tile 212 (chimera) +# tile 213 (chimera) { .............FD. ...........FFFFF @@ -4094,7 +4094,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 213 (grizzly bear) +# tile 214 (grizzly bear) { ................ ................ @@ -4113,7 +4113,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 214 (polar bear) +# tile 215 (polar bear) { ................ ................ @@ -4132,7 +4132,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 215 (werebear) +# tile 216 (werebear) { ................ ................ @@ -4151,7 +4151,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 216 (hippo) +# tile 217 (hippo) { ................ ................ @@ -4170,7 +4170,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 217 (titanothere) +# tile 218 (titanothere) { ................ ................ @@ -4189,7 +4189,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 218 (baluchitherium) +# tile 219 (baluchitherium) { ................ ................ @@ -4208,7 +4208,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 219 (hellbear) +# tile 220 (hellbear) { ................ ................ @@ -4227,7 +4227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 220 (mastodon) +# tile 221 (mastodon) { ................ ................ @@ -4246,7 +4246,7 @@ Z = (195, 195, 195) .......PPA...... ................ } -# tile 221 (woolly mammoth) +# tile 222 (woolly mammoth) { ................ ................ @@ -4265,7 +4265,7 @@ Z = (195, 195, 195) .......PPA...... ................ } -# tile 222 (juggernaut) +# tile 223 (juggernaut) { ................ ......P......... @@ -4284,7 +4284,7 @@ Z = (195, 195, 195) ..JKKA....AJKKAA ................ } -# tile 223 (Jumbo the Elephant) +# tile 224 (Jumbo the Elephant) { ................ ................ @@ -4303,7 +4303,7 @@ Z = (195, 195, 195) .BP...APPA...... ..PP...PP....... } -# tile 224 (catoblepas) +# tile 225 (catoblepas) { ................ ...A.BBB........ @@ -4322,7 +4322,7 @@ Z = (195, 195, 195) .........AA.AA.. ................ } -# tile 225 (rabbit) +# tile 226 (rabbit) { ................ ................ @@ -4341,7 +4341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 226 (hedgehog) +# tile 227 (hedgehog) { ................ ................ @@ -4360,7 +4360,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 227 (sewer rat) +# tile 228 (sewer rat) { ................ ................ @@ -4379,7 +4379,7 @@ Z = (195, 195, 195) .........JJA.... ................ } -# tile 228 (black rat) +# tile 229 (black rat) { ................ ................ @@ -4398,7 +4398,7 @@ Z = (195, 195, 195) .............A.. ................ } -# tile 229 (giant rat) +# tile 230 (giant rat) { ................ ................ @@ -4417,7 +4417,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 230 (pack rat) +# tile 231 (pack rat) { ................ ................ @@ -4436,7 +4436,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 231 (wererat) +# tile 232 (wererat) { ................ ................ @@ -4455,7 +4455,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 232 (rabid rat) +# tile 233 (rabid rat) { ................ ................ @@ -4474,7 +4474,7 @@ Z = (195, 195, 195) .OOOOOOOO.JJA... ................ } -# tile 233 (hellrat) +# tile 234 (hellrat) { ................ ....A......A.... @@ -4493,7 +4493,7 @@ Z = (195, 195, 195) ............JA.. ................ } -# tile 234 (enormous rat) +# tile 235 (enormous rat) { ................ ................ @@ -4512,7 +4512,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 235 (rodent of unusual size) +# tile 236 (rodent of unusual size) { ................ ................ @@ -4531,7 +4531,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 236 (skunk) +# tile 237 (skunk) { ................ ............AAA. @@ -4550,7 +4550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 237 (rabid rabbit) +# tile 238 (rabid rabbit) { ................ ................ @@ -4569,7 +4569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 238 (rock mole) +# tile 239 (rock mole) { ................ ................ @@ -4588,7 +4588,7 @@ Z = (195, 195, 195) AN.NAA.AA...AA.. .AAAA........... } -# tile 239 (woodchuck) +# tile 240 (woodchuck) { ................ ................ @@ -4607,7 +4607,7 @@ Z = (195, 195, 195) .....JJAAJJAA... ................ } -# tile 240 (giant badger) +# tile 241 (giant badger) { ................ ................ @@ -4626,7 +4626,7 @@ Z = (195, 195, 195) ......AJJAAK.... ................ } -# tile 241 (honey badger) +# tile 242 (honey badger) { ................ ................ @@ -4645,7 +4645,7 @@ Z = (195, 195, 195) ..........JJA... ................ } -# tile 242 (cave spider) +# tile 243 (cave spider) { ................ ................ @@ -4664,7 +4664,7 @@ Z = (195, 195, 195) .....PAA.APA.... ................ } -# tile 243 (centipede) +# tile 244 (centipede) { ................ ................ @@ -4683,7 +4683,7 @@ Z = (195, 195, 195) ...B............ ................ } -# tile 244 (recluse spider) +# tile 245 (recluse spider) { ................ ................ @@ -4702,7 +4702,7 @@ Z = (195, 195, 195) .....KAA.AKA.... ................ } -# tile 245 (jumping spider) +# tile 246 (jumping spider) { ................ ................ @@ -4721,7 +4721,7 @@ Z = (195, 195, 195) .....PAA.APA.... ................ } -# tile 246 (barking spider) +# tile 247 (barking spider) { ................ ................ @@ -4740,7 +4740,7 @@ Z = (195, 195, 195) .....PAA.APA.... ................ } -# tile 247 (giant spider) +# tile 248 (giant spider) { ................ ................ @@ -4759,7 +4759,7 @@ Z = (195, 195, 195) .....JAA.AJA.... ................ } -# tile 248 (scorpion) +# tile 249 (scorpion) { ................ ................ @@ -4778,7 +4778,7 @@ Z = (195, 195, 195) .......JAAJA.... ................ } -# tile 249 (nickelpede) +# tile 250 (nickelpede) { ................ ................ @@ -4797,7 +4797,7 @@ Z = (195, 195, 195) ...BA........... ................ } -# tile 250 (phase spider) +# tile 251 (phase spider) { ................ ........P....... @@ -4816,7 +4816,7 @@ Z = (195, 195, 195) .....PAA.APA.... ................ } -# tile 251 (monstrous spider) +# tile 252 (monstrous spider) { ................ ................ @@ -4835,7 +4835,7 @@ Z = (195, 195, 195) .....RAA.ARA.... ................ } -# tile 252 (werespider) +# tile 253 (werespider) { ................ ................ @@ -4854,7 +4854,7 @@ Z = (195, 195, 195) .....LAA.ALA.... ................ } -# tile 253 (carrion crawler) +# tile 254 (carrion crawler) { ................ ................ @@ -4873,7 +4873,7 @@ Z = (195, 195, 195) ...HAHA......... ................ } -# tile 254 (giant scorpion) +# tile 255 (giant scorpion) { .......JJJJ..... .....JJJAKKJA... @@ -4892,7 +4892,7 @@ Z = (195, 195, 195) .A.DAAAJAAJA.J.. ...A....J..JA... } -# tile 255 (giant centipede) +# tile 256 (giant centipede) { ................ ................ @@ -4911,7 +4911,7 @@ Z = (195, 195, 195) ...B............ ................ } -# tile 256 (Girtab) +# tile 257 (Girtab) { ..AA.......AA... .A...AAAAA...A.. @@ -4930,7 +4930,7 @@ Z = (195, 195, 195) ..A.A.....A.A... ..A..A...A..A... } -# tile 257 (Shelob) +# tile 258 (Shelob) { ..EEA.....AEEA.. .EAA.POPOP..AEA. @@ -4949,7 +4949,7 @@ Z = (195, 195, 195) ..EAEAI.IAEAEA.. ..EA.EA.AEAAEA.. } -# tile 258 (lurker above) +# tile 259 (lurker above) { .AAAAAAAAAAAAAAA ...AAGFAAGFAAA.. @@ -4968,7 +4968,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 259 (trapper) +# tile 260 (trapper) { ................ ................ @@ -4987,7 +4987,7 @@ Z = (195, 195, 195) ...AAGFAAGFAAA.. .AAAAAAAAAAAAAAA } -# tile 260 (pony) +# tile 261 (pony) { ................ ................ @@ -5006,7 +5006,7 @@ Z = (195, 195, 195) .....LA...L..... ................ } -# tile 261 (lesser nightmare) +# tile 262 (lesser nightmare) { ................ ................ @@ -5025,7 +5025,7 @@ Z = (195, 195, 195) .....LA...L..... ................ } -# tile 262 (white unicorn) +# tile 263 (white unicorn) { ................ ..HP............ @@ -5044,7 +5044,7 @@ Z = (195, 195, 195) .....LA...L..... ................ } -# tile 263 (gray unicorn) +# tile 264 (gray unicorn) { ................ ..HP............ @@ -5063,7 +5063,7 @@ Z = (195, 195, 195) .....LA...L..... ................ } -# tile 264 (black unicorn) +# tile 265 (black unicorn) { ................ ..HP............ @@ -5082,7 +5082,7 @@ Z = (195, 195, 195) .....LP...L..... ................ } -# tile 265 (horse) +# tile 266 (horse) { ................ ................ @@ -5101,7 +5101,7 @@ Z = (195, 195, 195) .....LA....L.... ................ } -# tile 266 (greater nightmare) +# tile 267 (greater nightmare) { ................ ................ @@ -5120,7 +5120,7 @@ Z = (195, 195, 195) .....LA....L.... ................ } -# tile 267 (warhorse) +# tile 268 (warhorse) { ................ .....JJJ........ @@ -5139,7 +5139,7 @@ Z = (195, 195, 195) .....LC....LC... ................ } -# tile 268 (cauchemar) +# tile 269 (cauchemar) { ................ .....FFF........ @@ -5158,7 +5158,7 @@ Z = (195, 195, 195) .....LC....LC... ................ } -# tile 269 (selkie) +# tile 270 (selkie) { ................ .....FFF........ @@ -5177,7 +5177,7 @@ Z = (195, 195, 195) ....DDC...DDC... ................ } -# tile 270 (pegasus) +# tile 271 (pegasus) { ................ ................ @@ -5196,7 +5196,7 @@ Z = (195, 195, 195) ..CA..........CA ................ } -# tile 271 (greater pegasus) +# tile 272 (greater pegasus) { ................ ................ @@ -5216,7 +5216,7 @@ Z = (195, 195, 195) ................ } -# tile 272 (fog cloud) +# tile 273 (fog cloud) { .......P........ ....P..P........ @@ -5235,7 +5235,7 @@ Z = (195, 195, 195) ..P..P.P..P..... ................ } -# tile 273 (dust vortex) +# tile 274 (dust vortex) { ................ ................ @@ -5254,7 +5254,7 @@ Z = (195, 195, 195) ....KKKK..K..... ................ } -# tile 274 (ice vortex) +# tile 275 (ice vortex) { ................ ................ @@ -5273,7 +5273,7 @@ Z = (195, 195, 195) ....NNNN..N..... ................ } -# tile 275 (energy vortex) +# tile 276 (energy vortex) { ................ ................ @@ -5292,7 +5292,7 @@ Z = (195, 195, 195) ....EEEE..E..... ................ } -# tile 276 (steam vortex) +# tile 277 (steam vortex) { ................ ................ @@ -5311,7 +5311,7 @@ Z = (195, 195, 195) ....PPPP..P..... ................ } -# tile 277 (fire vortex) +# tile 278 (fire vortex) { ................ ................ @@ -5330,7 +5330,7 @@ Z = (195, 195, 195) ....DDDD..D..... ................ } -# tile 278 (antimatter vortex) +# tile 279 (antimatter vortex) { ................ ................ @@ -5349,7 +5349,7 @@ Z = (195, 195, 195) ....PPPP..P..... ................ } -# tile 279 (larva) +# tile 280 (larva) { ................ ................ @@ -5368,7 +5368,7 @@ Z = (195, 195, 195) ..........AAA... ................ } -# tile 280 (maggot) +# tile 281 (maggot) { ................ ................ @@ -5387,7 +5387,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 281 (dung worm) +# tile 282 (dung worm) { ................ ................ @@ -5406,7 +5406,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 282 (rot worm) +# tile 283 (rot worm) { ................ ................ @@ -5425,7 +5425,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 283 (baby long worm) +# tile 284 (baby long worm) { ................ ................ @@ -5444,7 +5444,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 284 (acid worm) +# tile 285 (acid worm) { ................ ................ @@ -5463,7 +5463,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 285 (bloodworm) +# tile 286 (bloodworm) { ................ ................ @@ -5482,7 +5482,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 286 (tunnel worm) +# tile 287 (tunnel worm) { ................ ................ @@ -5501,7 +5501,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 287 (giant leech) +# tile 288 (giant leech) { ................ ................ @@ -5520,7 +5520,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 288 (baby purple worm) +# tile 289 (baby purple worm) { ................ ................ @@ -5539,7 +5539,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 289 (long worm) +# tile 290 (long worm) { ................ ................ @@ -5558,7 +5558,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 290 (purple worm) +# tile 291 (purple worm) { ................ ................ @@ -5577,7 +5577,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 291 (neothelid) +# tile 292 (neothelid) { ................ ................ @@ -5596,7 +5596,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 292 (hellminth) +# tile 293 (hellminth) { ................ ................ @@ -5615,7 +5615,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 293 (grid bug) +# tile 294 (grid bug) { ................ ................ @@ -5634,7 +5634,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 294 (spark bug) +# tile 295 (spark bug) { ................ ........E....... @@ -5653,7 +5653,7 @@ Z = (195, 195, 195) ..I..AAAAAA..... ......AA.A...... } -# tile 295 (arc bug) +# tile 296 (arc bug) { .....EPE........ ...PBNNNBE...... @@ -5672,7 +5672,7 @@ Z = (195, 195, 195) ..D..AAAAAA..... ......AA.A...... } -# tile 296 (lightning bug) +# tile 297 (lightning bug) { ................ ................ @@ -5691,7 +5691,7 @@ Z = (195, 195, 195) ..F..AAAAAA..... ......AA.A...... } -# tile 297 (xan) +# tile 298 (xan) { ................ ................ @@ -5710,7 +5710,7 @@ Z = (195, 195, 195) ..G..AAAAAA..... ......AA.AA..... } -# tile 298 (yellow light) +# tile 299 (yellow light) { ................ ......NA........ @@ -5729,7 +5729,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 299 (black light) +# tile 300 (black light) { ................ ......AA........ @@ -5748,7 +5748,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 300 (ethereal light) +# tile 301 (ethereal light) { ................ ......PE........ @@ -5767,7 +5767,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 301 (will-o'-the-wisp) +# tile 302 (will-o'-the-wisp) { ................ ................ @@ -5786,7 +5786,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 302 (echidna) +# tile 303 (echidna) { ................ ................ @@ -5805,7 +5805,7 @@ Z = (195, 195, 195) ....CJKACJKA.... ................ } -# tile 303 (drop bear) +# tile 304 (drop bear) { ................ ................ @@ -5824,7 +5824,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 304 (platypus) +# tile 305 (platypus) { ................ ................ @@ -5843,7 +5843,7 @@ Z = (195, 195, 195) ....CCAACCAC.... ................ } -# tile 305 (wombat) +# tile 306 (wombat) { ................ ................ @@ -5862,7 +5862,7 @@ Z = (195, 195, 195) ....KCAA.KKAA... ................ } -# tile 306 (wallaby) +# tile 307 (wallaby) { ................ ................ @@ -5881,7 +5881,7 @@ Z = (195, 195, 195) ..KCAAAKKKKAA... ................ } -# tile 307 (koala) +# tile 308 (koala) { ................ ................ @@ -5900,7 +5900,7 @@ Z = (195, 195, 195) .....JJA.JJA.... ................ } -# tile 308 (wallaroo) +# tile 309 (wallaroo) { ................ ................ @@ -5919,7 +5919,7 @@ Z = (195, 195, 195) ..JKAAAJJJJAA... ................ } -# tile 309 (Tasmanian devil) +# tile 310 (Tasmanian devil) { ................ ................ @@ -5938,7 +5938,7 @@ Z = (195, 195, 195) .....CJA.CKA.... ................ } -# tile 310 (kangaroo) +# tile 311 (kangaroo) { ................ ......KAKA...... @@ -5957,7 +5957,7 @@ Z = (195, 195, 195) ..KJAAACJKCAA... ................ } -# tile 311 (couatl) +# tile 312 (couatl) { ................ ................ @@ -5976,7 +5976,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 312 (Aleax) +# tile 313 (Aleax) { ................ ......BBBB..I... @@ -5995,7 +5995,7 @@ Z = (195, 195, 195) ..BF.LLAALLAFB.. ................ } -# tile 313 (lamassu) +# tile 314 (lamassu) { ................ ..HHHH.......... @@ -6014,7 +6014,7 @@ Z = (195, 195, 195) .....HKAA..HKA.. ................ } -# tile 314 (Angel) +# tile 315 (Angel) { ................ ................ @@ -6033,7 +6033,7 @@ Z = (195, 195, 195) ....BNNNNNNP.... ................ } -# tile 315 (ki-rin) +# tile 316 (ki-rin) { ................ ................ @@ -6052,7 +6052,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 316 (movanic deva) +# tile 317 (movanic deva) { ................ ......BBBB..I... @@ -6071,7 +6071,7 @@ Z = (195, 195, 195) ..BF.LLAALLAFB.. ................ } -# tile 317 (eldritch ki-rin) +# tile 318 (eldritch ki-rin) { ................ ................ @@ -6090,7 +6090,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 318 (monadic deva) +# tile 319 (monadic deva) { ................ ......BBBB..I... @@ -6109,7 +6109,7 @@ Z = (195, 195, 195) ..BF.JJAAJJAFB.. ................ } -# tile 319 (astral deva) +# tile 320 (astral deva) { ................ ......BBBB..I... @@ -6128,7 +6128,7 @@ Z = (195, 195, 195) ..BF.HHPPHHPFB.. ................ } -# tile 320 (Archangel) +# tile 321 (Archangel) { ................ ................ @@ -6147,7 +6147,7 @@ Z = (195, 195, 195) ....BNNNNNNP.... ................ } -# tile 321 (Archon) +# tile 322 (Archon) { ................ ......OOOO...... @@ -6166,7 +6166,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 322 (Planetar) +# tile 323 (Planetar) { ................ ......BBBB..I... @@ -6185,7 +6185,7 @@ Z = (195, 195, 195) ..BF.FFAAFFAFB.. ................ } -# tile 323 (Solar) +# tile 324 (Solar) { ................ ......BBBB..I... @@ -6204,7 +6204,7 @@ Z = (195, 195, 195) ..BF.BBAABBAFB.. ................ } -# tile 324 (bat) +# tile 325 (bat) { ................ ................ @@ -6223,7 +6223,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 325 (giant bat) +# tile 326 (giant bat) { ................ ................ @@ -6242,7 +6242,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 326 (zoo bat) +# tile 327 (zoo bat) { ................ ......BBB....... @@ -6261,7 +6261,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 327 (rhumbat) +# tile 328 (rhumbat) { ................ ................ @@ -6280,7 +6280,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 328 (raven) +# tile 329 (raven) { ..AAAA...AAA.... .AAAAAA.AAA..... @@ -6299,7 +6299,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 329 (vampire bat) +# tile 330 (vampire bat) { ................ ................ @@ -6318,7 +6318,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 330 (hellbat) +# tile 331 (hellbat) { ................ ................ @@ -6337,7 +6337,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 331 (mongbat) +# tile 332 (mongbat) { ................ ................ @@ -6356,7 +6356,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 332 (athol) +# tile 333 (athol) { ................ ................ @@ -6375,7 +6375,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 333 (gaol bat) +# tile 334 (gaol bat) { .....BDBDB...... ....BAAAAAB..... @@ -6394,7 +6394,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 334 (mobat) +# tile 335 (mobat) { ................ ................ @@ -6413,7 +6413,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 335 (harpy) +# tile 336 (harpy) { ................ ......AAA....... @@ -6432,7 +6432,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 336 (phoenix) +# tile 337 (phoenix) { ................ ..............D. @@ -6451,7 +6451,7 @@ Z = (195, 195, 195) .........CDDD..C ........DC.H.I.. } -# tile 337 (byakhee) +# tile 338 (byakhee) { ................ ...........KKKK. @@ -6470,7 +6470,7 @@ Z = (195, 195, 195) ......K.AAAA.... .....AAAAAAAA... } -# tile 338 (nightgaunt) +# tile 339 (nightgaunt) { ................ ...........EEEE. @@ -6489,7 +6489,7 @@ Z = (195, 195, 195) ......E.AAAA.... .....AAAAAAAA... } -# tile 339 (centaur) +# tile 340 (centaur) { ................ ...KKA.......... @@ -6508,7 +6508,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 340 (plains centaur) +# tile 341 (plains centaur) { ................ ...KKA.......... @@ -6527,7 +6527,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 341 (forest centaur) +# tile 342 (forest centaur) { ................ ................ @@ -6546,7 +6546,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 342 (mountain centaur) +# tile 343 (mountain centaur) { ................ ................ @@ -6565,7 +6565,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 343 (pseudodragon) +# tile 344 (pseudodragon) { ................ .JKKJA.......... @@ -6584,7 +6584,7 @@ Z = (195, 195, 195) .JAAJJJJJAAA.... ................ } -# tile 344 (elder pseudodragon) +# tile 345 (elder pseudodragon) { ................ .JKKJA.......... @@ -6603,7 +6603,7 @@ Z = (195, 195, 195) .JAAJJJJJAAA.... ................ } -# tile 345 (ancient pseudodragon) +# tile 346 (ancient pseudodragon) { ................ .JKKJA.......... @@ -6622,7 +6622,7 @@ Z = (195, 195, 195) .JAAJJJJJAAA.... ................ } -# tile 346 (baby gray dragon) +# tile 347 (baby gray dragon) { ................ ................ @@ -6641,7 +6641,7 @@ Z = (195, 195, 195) .....BPAA..PPAA. ...........PAA.. } -# tile 347 (baby silver dragon) +# tile 348 (baby silver dragon) { ................ ................ @@ -6660,7 +6660,7 @@ Z = (195, 195, 195) .....PBAA..BBAA. ...........BAA.. } -# tile 348 (baby shimmering dragon) +# tile 349 (baby shimmering dragon) { .I.............. ...BBBBBBB.I.... @@ -6679,7 +6679,7 @@ Z = (195, 195, 195) B....BPAA..PPAAB .B.........PAAB. } -# tile 349 (baby deep dragon) +# tile 350 (baby deep dragon) { ................ ................ @@ -6698,7 +6698,7 @@ Z = (195, 195, 195) .....ONAA..NNAA. ...........NAA.. } -# tile 350 (baby red dragon) +# tile 351 (baby red dragon) { ................ ................ @@ -6717,7 +6717,7 @@ Z = (195, 195, 195) .....IDAA..DDAA. ...........DAA.. } -# tile 351 (baby white dragon) +# tile 352 (baby white dragon) { ................ ................ @@ -6736,7 +6736,7 @@ Z = (195, 195, 195) .....NOAA..OOAA. ...........OAA.. } -# tile 352 (baby orange dragon) +# tile 353 (baby orange dragon) { ................ ................ @@ -6755,7 +6755,7 @@ Z = (195, 195, 195) .....LCAA..CCAA. ...........CAA.. } -# tile 353 (baby violet dragon) +# tile 354 (baby violet dragon) { ................ ................ @@ -6774,7 +6774,7 @@ Z = (195, 195, 195) .....DIAA..IIAA. ...........IAA.. } -# tile 354 (baby black dragon) +# tile 355 (baby black dragon) { ................ ................ @@ -6793,7 +6793,7 @@ Z = (195, 195, 195) .....AAP...AAPP. ...........APP.. } -# tile 355 (baby blue dragon) +# tile 356 (baby blue dragon) { ................ ................ @@ -6812,7 +6812,7 @@ Z = (195, 195, 195) .....BEAA..EEAA. ...........EAA.. } -# tile 356 (baby green dragon) +# tile 357 (baby green dragon) { ................ ................ @@ -6831,7 +6831,7 @@ Z = (195, 195, 195) .....GFAA..FFAA. ...........FAA.. } -# tile 357 (baby gold dragon) +# tile 358 (baby gold dragon) { ................ ................ @@ -6850,7 +6850,7 @@ Z = (195, 195, 195) .....PHAA..DDAA. ...........DAA.. } -# tile 358 (baby sea dragon) +# tile 359 (baby sea dragon) { ................ ................ @@ -6869,7 +6869,7 @@ Z = (195, 195, 195) .....BEAA..EEAA. ...........EAA.. } -# tile 359 (baby yellow dragon) +# tile 360 (baby yellow dragon) { ................ ................ @@ -6888,7 +6888,7 @@ Z = (195, 195, 195) .....NHAA..HHAA. ...........HAA.. } -# tile 360 (gray dragon) +# tile 361 (gray dragon) { ......BBBPA..... .....NPNPPPA.... @@ -6907,7 +6907,7 @@ Z = (195, 195, 195) ....BPAA...PP.A. ........PPPP.A.. } -# tile 361 (silver dragon) +# tile 362 (silver dragon) { ......PPPBA..... .....OBOBBBA.... @@ -6926,7 +6926,7 @@ Z = (195, 195, 195) ....PBAA...BB.A. ........BBBB.A.. } -# tile 362 (shimmering dragon) +# tile 363 (shimmering dragon) { .I.BF.BBBPAFB... ..BF.NPNPPPAFB.I @@ -6945,7 +6945,7 @@ Z = (195, 195, 195) ....BPAA...PP.AB ........PPPP.AB. } -# tile 363 (deep dragon) +# tile 364 (deep dragon) { ......OOONA..... .....DNDNNNA.... @@ -6964,7 +6964,7 @@ Z = (195, 195, 195) ....ONAA...NNJA. ........NNNNJA.. } -# tile 364 (red dragon) +# tile 365 (red dragon) { ......IIIDA..... .....NDNDDDA.... @@ -6983,7 +6983,7 @@ Z = (195, 195, 195) ....IDAAJJJDDJA. ........DDDDJA.. } -# tile 365 (white dragon) +# tile 366 (white dragon) { ......NNNOA..... .....IOIOOOA.... @@ -7002,7 +7002,7 @@ Z = (195, 195, 195) ....NOAA...OOJA. ........OOOOJA.. } -# tile 366 (orange dragon) +# tile 367 (orange dragon) { ......LLLCA..... .....NCNCCCA.... @@ -7021,7 +7021,7 @@ Z = (195, 195, 195) ....LCAA.KKCCJA. ........CCCCJA.. } -# tile 367 (violet dragon) +# tile 368 (violet dragon) { ......DDDIA..... .....NINIIIA.... @@ -7040,7 +7040,7 @@ Z = (195, 195, 195) ....DIAA...IIJA. ...P....IIIIJA.. } -# tile 368 (black dragon) +# tile 369 (black dragon) { ......AAAA...... .....NANAAA..... @@ -7059,7 +7059,7 @@ Z = (195, 195, 195) ....AAPP...AAAP. ........AAAAA... } -# tile 369 (blue dragon) +# tile 370 (blue dragon) { ......BBBEA..... .....NENEEEA.... @@ -7078,7 +7078,7 @@ Z = (195, 195, 195) ....BEAA...EEJA. ...P....EEEEJA.. } -# tile 370 (green dragon) +# tile 371 (green dragon) { ......GGGFA..... .....NFNFFFA.... @@ -7097,7 +7097,7 @@ Z = (195, 195, 195) ....GFAA...FFJA. ........FFFFJA.. } -# tile 371 (gold dragon) +# tile 372 (gold dragon) { ......HHHDA..... .....OHOHHDA.... @@ -7116,7 +7116,7 @@ Z = (195, 195, 195) ....PDAA...HD.A. ........DDHD.A.. } -# tile 372 (sea dragon) +# tile 373 (sea dragon) { ......BBBEA..... .....NENEEEA.... @@ -7135,7 +7135,7 @@ Z = (195, 195, 195) ....BEAA...EEJA. ...P....EEEEJA.. } -# tile 373 (yellow dragon) +# tile 374 (yellow dragon) { ......NNNHA..... .....DHDHHHA.... @@ -7154,7 +7154,7 @@ Z = (195, 195, 195) ....NHAAJJJHHJA. ........HHHHJA.. } -# tile 374 (wyvern) +# tile 375 (wyvern) { ................ .FGGFA.......... @@ -7173,7 +7173,7 @@ Z = (195, 195, 195) .FAAFFFFFAAA.... ................ } -# tile 375 (hydra) +# tile 376 (hydra) { .......GFA...... ..DKA.HGGHA.BEA. @@ -7192,7 +7192,7 @@ Z = (195, 195, 195) .....AOA.OAA.... .....AA..AA..... } -# tile 376 (stalker) +# tile 377 (stalker) { ................ .......PPP...... @@ -7211,7 +7211,7 @@ Z = (195, 195, 195) .....PP..PP..... ................ } -# tile 377 (air elemental) +# tile 378 (air elemental) { ................ ...P.PPP..P..... @@ -7230,7 +7230,7 @@ Z = (195, 195, 195) ...PP.APPPA..... ................ } -# tile 378 (fire elemental) +# tile 379 (fire elemental) { ................ .H..LDDD........ @@ -7249,7 +7249,7 @@ Z = (195, 195, 195) ..LDDCADDDA..... ................ } -# tile 379 (earth elemental) +# tile 380 (earth elemental) { ..F............. ....CKKK..F..... @@ -7268,7 +7268,7 @@ Z = (195, 195, 195) ..CKKJAKKKA..... ................ } -# tile 380 (mud elemental) +# tile 381 (mud elemental) { ..I............. ....KJJJ..I..... @@ -7287,7 +7287,7 @@ Z = (195, 195, 195) ..KJJJAJJJA..... ................ } -# tile 381 (acid elemental) +# tile 382 (acid elemental) { ................ ...G.GGG..G..... @@ -7306,7 +7306,7 @@ Z = (195, 195, 195) ...GG.AGGGA..... ................ } -# tile 382 (ice elemental) +# tile 383 (ice elemental) { ................ ....PUUU..V..... @@ -7325,7 +7325,7 @@ Z = (195, 195, 195) ..PUUVAUUUA..... ................ } -# tile 383 (magma elemental) +# tile 384 (magma elemental) { ................ .H..LCCC........ @@ -7344,7 +7344,7 @@ Z = (195, 195, 195) ..LCCDACCCA..... ................ } -# tile 384 (water elemental) +# tile 385 (water elemental) { ................ ....PBBB..E..... @@ -7363,7 +7363,7 @@ Z = (195, 195, 195) ..PBBEABBBA..... ................ } -# tile 385 (lichen) +# tile 386 (lichen) { ................ ................ @@ -7382,7 +7382,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 386 (brown mold) +# tile 387 (brown mold) { ................ ................ @@ -7401,7 +7401,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 387 (yellow mold) +# tile 388 (yellow mold) { ................ ................ @@ -7420,7 +7420,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 388 (green mold) +# tile 389 (green mold) { ................ ................ @@ -7439,7 +7439,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 389 (red mold) +# tile 390 (red mold) { ................ ................ @@ -7459,7 +7459,7 @@ Z = (195, 195, 195) ................ } -# tile 390 (orange mold) +# tile 391 (orange mold) { ................ ................ @@ -7478,7 +7478,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 391 (shrieker) +# tile 392 (shrieker) { ................ ................ @@ -7497,7 +7497,7 @@ Z = (195, 195, 195) ...AAAAAAAAAA... ................ } -# tile 392 (violet fungus) +# tile 393 (violet fungus) { ................ ................ @@ -7516,7 +7516,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 393 (screamer) +# tile 394 (screamer) { ................ ................ @@ -7535,7 +7535,7 @@ Z = (195, 195, 195) ...AAAAAAAAAA... ................ } -# tile 394 (gray fungus) +# tile 395 (gray fungus) { ................ ................ @@ -7554,7 +7554,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 395 (black mold) +# tile 396 (black mold) { ................ ................ @@ -7573,7 +7573,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 396 (volatile mushroom) +# tile 397 (volatile mushroom) { ................ ................ @@ -7592,7 +7592,7 @@ Z = (195, 195, 195) ...AAAAAAAAAA... ................ } -# tile 397 (brown moldier) +# tile 398 (brown moldier) { ................ ................ @@ -7611,7 +7611,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 398 (yellow moldier) +# tile 399 (yellow moldier) { ................ ................ @@ -7630,7 +7630,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 399 (green moldier) +# tile 400 (green moldier) { ................ ................ @@ -7649,7 +7649,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 400 (red moldier) +# tile 401 (red moldier) { ................ ................ @@ -7668,7 +7668,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 401 (orange moldier) +# tile 402 (orange moldier) { ................ ................ @@ -7687,7 +7687,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 402 (gray moldier) +# tile 403 (gray moldier) { ................ ................ @@ -7706,7 +7706,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 403 (black moldier) +# tile 404 (black moldier) { ................ ................ @@ -7725,7 +7725,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 404 (dungeon fern) +# tile 405 (dungeon fern) { ..F............. ...AF.F......... @@ -7744,7 +7744,7 @@ Z = (195, 195, 195) ..FAAFGFAFGFAF.. ..FAAAFGFAFA.F.. } -# tile 405 (dungeon fern sprout) +# tile 406 (dungeon fern sprout) { ................ ................ @@ -7763,7 +7763,7 @@ Z = (195, 195, 195) ......FGFA...... ................ } -# tile 406 (dungeon fern spore) +# tile 407 (dungeon fern spore) { ................ ................ @@ -7782,7 +7782,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 407 (arctic fern) +# tile 408 (arctic fern) { ..N............. ...AN.N......... @@ -7801,7 +7801,7 @@ Z = (195, 195, 195) ..NAANBNANBNAN.. ..NAAANBNANA.N.. } -# tile 408 (arctic fern sprout) +# tile 409 (arctic fern sprout) { ................ ................ @@ -7820,7 +7820,7 @@ Z = (195, 195, 195) ......NBNA...... ................ } -# tile 409 (arctic fern spore) +# tile 410 (arctic fern spore) { ................ ................ @@ -7840,7 +7840,7 @@ Z = (195, 195, 195) ................ } -# tile 410 (blazing fern) +# tile 411 (blazing fern) { ..D............. ...AD.D......... @@ -7859,7 +7859,7 @@ Z = (195, 195, 195) ..DAADCDADCDAD.. ..DAAADCDADA.D.. } -# tile 411 (blazing fern sprout) +# tile 412 (blazing fern sprout) { ................ ................ @@ -7878,7 +7878,7 @@ Z = (195, 195, 195) ......DCDA...... ................ } -# tile 412 (blazing fern spore) +# tile 413 (blazing fern spore) { ................ ................ @@ -7897,7 +7897,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 413 (swamp fern) +# tile 414 (swamp fern) { ..D............. ...AD.D......... @@ -7916,7 +7916,7 @@ Z = (195, 195, 195) ..DAADIDADIDAD.. ..DAAADIDADA.D.. } -# tile 414 (swamp fern sprout) +# tile 415 (swamp fern sprout) { ................ ................ @@ -7935,7 +7935,7 @@ Z = (195, 195, 195) ......DIDA...... ................ } -# tile 415 (swamp fern spore) +# tile 416 (swamp fern spore) { ................ ................ @@ -7954,7 +7954,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 416 (fern spore) +# tile 417 (fern spore) { ................ ................ @@ -7974,7 +7974,7 @@ Z = (195, 195, 195) ................ } -# tile 417 (gnome) +# tile 418 (gnome) { ................ ................ @@ -7993,7 +7993,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 418 (gnome thief) +# tile 419 (gnome thief) { ................ ................ @@ -8012,7 +8012,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 419 (rock gnome) +# tile 420 (rock gnome) { ................ ................ @@ -8031,7 +8031,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 420 (gnome noble) +# tile 421 (gnome noble) { ................ ................ @@ -8050,7 +8050,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 421 (gnomish wizard) +# tile 422 (gnomish wizard) { ................ ................ @@ -8069,7 +8069,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 422 (gnomish psyker) +# tile 423 (gnomish psyker) { ................ ................ @@ -8088,7 +8088,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 423 (deep gnome) +# tile 424 (deep gnome) { ................ ................ @@ -8107,7 +8107,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 424 (gnome warrior) +# tile 425 (gnome warrior) { ................ ................ @@ -8126,7 +8126,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 425 (gnome royal) +# tile 426 (gnome royal) { ................ ................ @@ -8145,7 +8145,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 426 (Ruggo the Gnome King) +# tile 427 (Ruggo the Gnome King) { ................ ................ @@ -8164,7 +8164,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 427 (gnoll) +# tile 428 (gnoll) { ................ ................ @@ -8183,7 +8183,7 @@ Z = (195, 195, 195) .....CCACCAAAA.. ................ } -# tile 428 (gnoll warrior) +# tile 429 (gnoll warrior) { .........P...... ...K.PAJ.P...... @@ -8202,7 +8202,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 429 (gnoll chieftain) +# tile 430 (gnoll chieftain) { .........P...... ...K.BAJ.P...... @@ -8221,7 +8221,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 430 (gnoll shaman) +# tile 431 (gnoll shaman) { .........P...... ...K.NAK.P...... @@ -8240,7 +8240,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 431 (flind) +# tile 432 (flind) { ................ ................ @@ -8259,7 +8259,7 @@ Z = (195, 195, 195) ...CCACCAAAA.... ................ } -# tile 432 (marrashi) +# tile 433 (marrashi) { ................ ...H.HAH........ @@ -8278,7 +8278,7 @@ Z = (195, 195, 195) ....JJJJ........ ................ } -# tile 433 (giant) +# tile 434 (giant) { ......JJJJAA.... ....JJJJJJJJA... @@ -8297,7 +8297,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.CLLLKAA } -# tile 434 (stone giant) +# tile 435 (stone giant) { ......JJJJAA.... ....JJJJJJJJA... @@ -8316,7 +8316,7 @@ Z = (195, 195, 195) .....ALJACLJAAAA ...LLLLJ.CLLLKAA } -# tile 435 (hill giant shaman) +# tile 436 (hill giant shaman) { ......JJJJAA.... ....JJJJJJJJA... @@ -8335,7 +8335,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.LLLLKAA } -# tile 436 (hill giant) +# tile 437 (hill giant) { ......JJJJAA.... ....JJJJJJJJA... @@ -8354,7 +8354,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.LLLLKAA } -# tile 437 (fire giant) +# tile 438 (fire giant) { ....PPDDDDAA.... ....PDDDDDDDA... @@ -8373,7 +8373,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.LLLLKAA } -# tile 438 (frost giant) +# tile 439 (frost giant) { .....KJJJJAA.... ....KJJJJJJJA... @@ -8392,7 +8392,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.CLLLKAA } -# tile 439 (ettin) +# tile 440 (ettin) { ....NN..ONOP.... ..NNOOPNNOOPP... @@ -8411,7 +8411,7 @@ Z = (195, 195, 195) .....BPAABPAAAAA ...PPPPA.BPPPFAA } -# tile 440 (storm giant) +# tile 441 (storm giant) { ......JJJJAA.... ....JJJJJJJJA... @@ -8430,7 +8430,7 @@ Z = (195, 195, 195) .....CLJACCJAAAA ...LLLLJ.LLLLKAA } -# tile 441 (titan) +# tile 442 (titan) { .....AAAAAAA.... ....AALLLLAAA... @@ -8449,7 +8449,7 @@ Z = (195, 195, 195) .....CLJACLJAAAA ...LLLLJ.CLLLKAA } -# tile 442 (the Largest Giant) +# tile 443 (the Largest Giant) { ....JJJJJJJJA... ...JJLLLLLLJJA.. @@ -8468,7 +8468,7 @@ Z = (195, 195, 195) ...OLLLJAOLLCAAA ..LLLLLJAOLLLCAA } -# tile 443 (minotaur) +# tile 444 (minotaur) { ................ .O..........O... @@ -8487,7 +8487,7 @@ Z = (195, 195, 195) ....CLCACLCAAAAA ..LLLLL.LLLLLAA. } -# tile 444 (elder minotaur) +# tile 445 (elder minotaur) { ................ .O..........O... @@ -8506,7 +8506,7 @@ Z = (195, 195, 195) ....CLCACLCAAAAA ..LLLLL.LLLLLAA. } -# tile 445 (hecatoncheire) +# tile 446 (hecatoncheire) { .....AAAAAAA.... ....AAPPPPAAAAA. @@ -8525,7 +8525,7 @@ Z = (195, 195, 195) ..AAAVPWWAAWWPAA ..AAPPPWWAAPWWWA } -# tile 446 (Father Dagon) +# tile 447 (Father Dagon) { .....G.......... ....III.B.B.B... @@ -8544,7 +8544,7 @@ Z = (195, 195, 195) ...GFAGFAABA.... ..GGFAGFFABA.... } -# tile 447 (Mother Hydra) +# tile 448 (Mother Hydra) { .....G.......... ....DDD.B.B.B... @@ -8563,7 +8563,7 @@ Z = (195, 195, 195) ...GFAGFAABA.... ..GGFAGFFABA.... } -# tile 448 (snark) +# tile 449 (snark) { ................ ...DP........... @@ -8582,7 +8582,7 @@ Z = (195, 195, 195) ...IDAA..ID..... ................ } -# tile 449 (jabberwock) +# tile 450 (jabberwock) { ................ ...DP........... @@ -8601,7 +8601,7 @@ Z = (195, 195, 195) ...IDAA..ID..... ................ } -# tile 450 (boojum) +# tile 451 (boojum) { ................ ...DP........... @@ -8620,7 +8620,7 @@ Z = (195, 195, 195) ...IDAA..ID..... ................ } -# tile 451 (vorpal jabberwock) +# tile 452 (vorpal jabberwock) { ................ ...GP........... @@ -8639,7 +8639,7 @@ Z = (195, 195, 195) ...FGAA..FG..... ................ } -# tile 452 (Keystone Kop) +# tile 453 (Keystone Kop) { ................ ....AA.......... @@ -8658,7 +8658,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 453 (Kop Sergeant) +# tile 454 (Kop Sergeant) { ................ ....AA.......... @@ -8677,7 +8677,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 454 (Kop Lieutenant) +# tile 455 (Kop Lieutenant) { ................ ....AA.......... @@ -8696,7 +8696,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 455 (Kop Kaptain) +# tile 456 (Kop Kaptain) { ................ ....AA....C..... @@ -8715,7 +8715,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 456 (Kop Kommissioner) +# tile 457 (Kop Kommissioner) { ................ ....AA.......... @@ -8734,7 +8734,7 @@ Z = (195, 195, 195) ..AA....AA...... ................ } -# tile 457 (lich) +# tile 458 (lich) { ................ ................ @@ -8753,7 +8753,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 458 (worm that walks) +# tile 459 (worm that walks) { ................ ...RRR.......... @@ -8772,7 +8772,7 @@ Z = (195, 195, 195) ......FFF..FF... FF............FF } -# tile 459 (demilich) +# tile 460 (demilich) { ................ ................ @@ -8791,7 +8791,7 @@ Z = (195, 195, 195) ......LLL....... ................ } -# tile 460 (eye of fear and flame) +# tile 461 (eye of fear and flame) { ................ ................ @@ -8810,7 +8810,7 @@ Z = (195, 195, 195) .......OO....... ................ } -# tile 461 (master lich) +# tile 462 (master lich) { ...H............ ...HCH.H........ @@ -8829,7 +8829,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 462 (arch-lich) +# tile 463 (arch-lich) { ................ ................ @@ -8848,7 +8848,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 463 (Vecna) +# tile 464 (Vecna) { ................ ................ @@ -8867,7 +8867,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 464 (kobold mummy) +# tile 465 (kobold mummy) { ................ ................ @@ -8886,7 +8886,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 465 (gnome mummy) +# tile 466 (gnome mummy) { ................ ................ @@ -8905,7 +8905,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 466 (orc mummy) +# tile 467 (orc mummy) { ................ ................ @@ -8924,7 +8924,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 467 (dwarf mummy) +# tile 468 (dwarf mummy) { ................ ................ @@ -8943,7 +8943,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 468 (hobbit mummy) +# tile 469 (hobbit mummy) { ................ ................ @@ -8962,7 +8962,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 469 (elf mummy) +# tile 470 (elf mummy) { ................ ................ @@ -8981,7 +8981,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 470 (human mummy) +# tile 471 (human mummy) { ................ ................ @@ -9000,7 +9000,7 @@ Z = (195, 195, 195) ..NNN.NNNA...... ................ } -# tile 471 (centaur mummy) +# tile 472 (centaur mummy) { ................ ................ @@ -9019,7 +9019,7 @@ Z = (195, 195, 195) ....MA...M...... ................ } -# tile 472 (ettin mummy) +# tile 473 (ettin mummy) { .....NN..ONOO... ...NNOOONNOOOO.. @@ -9038,7 +9038,7 @@ Z = (195, 195, 195) .....NOOANOOAAAA ...OOOOO.OOOOKAA } -# tile 473 (adherer) +# tile 474 (adherer) { ................ ................ @@ -9057,7 +9057,7 @@ Z = (195, 195, 195) ..VVV.VVVA...... ................ } -# tile 474 (giant mummy) +# tile 475 (giant mummy) { ......ONOOAA.... ....ONNNOOOOA... @@ -9076,7 +9076,7 @@ Z = (195, 195, 195) .....NOOANOOAAAA ...OOOOO.OOOOKAA } -# tile 475 (troll mummy) +# tile 476 (troll mummy) { ................ ....OOO......... @@ -9095,7 +9095,7 @@ Z = (195, 195, 195) ..OOA..OA....... ................ } -# tile 476 (red naga hatchling) +# tile 477 (red naga hatchling) { ................ ................ @@ -9114,7 +9114,7 @@ Z = (195, 195, 195) ....IIDDDDDA.... ................ } -# tile 477 (black naga hatchling) +# tile 478 (black naga hatchling) { ................ ................ @@ -9133,7 +9133,7 @@ Z = (195, 195, 195) ....AAAAAAAA.... ................ } -# tile 478 (golden naga hatchling) +# tile 479 (golden naga hatchling) { ................ ................ @@ -9152,7 +9152,7 @@ Z = (195, 195, 195) ....NNHHHHHA.... ................ } -# tile 479 (guardian naga hatchling) +# tile 480 (guardian naga hatchling) { ................ ................ @@ -9171,7 +9171,7 @@ Z = (195, 195, 195) ....GGFFFFFA.... ................ } -# tile 480 (red naga) +# tile 481 (red naga) { ................ ....KK.......... @@ -9190,7 +9190,7 @@ Z = (195, 195, 195) .....DDAA..DDA.. ..........DA.... } -# tile 481 (black naga) +# tile 482 (black naga) { ................ ....KK.......... @@ -9209,7 +9209,7 @@ Z = (195, 195, 195) .....AAPP..AAP.. ..........AP.... } -# tile 482 (golden naga) +# tile 483 (golden naga) { ................ ....KK.......... @@ -9228,7 +9228,7 @@ Z = (195, 195, 195) .....HHAA..HHA.. ..........HA.... } -# tile 483 (guardian naga) +# tile 484 (guardian naga) { ................ ....KK.......... @@ -9247,7 +9247,7 @@ Z = (195, 195, 195) .....FFAA..FFA.. ..........FA.... } -# tile 484 (ha-naga) +# tile 485 (ha-naga) { ................ ....KK.......... @@ -9266,7 +9266,7 @@ Z = (195, 195, 195) .....FFAA..FFA.. ..........FA.... } -# tile 485 (ogre) +# tile 486 (ogre) { ................ ................ @@ -9285,7 +9285,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 486 (ogre noble) +# tile 487 (ogre noble) { ................ ................ @@ -9304,7 +9304,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 487 (ogre mage) +# tile 488 (ogre mage) { ................ ................ @@ -9323,7 +9323,7 @@ Z = (195, 195, 195) ....KJJJKOAAAAAA ..OOOOO.OOOOOAA. } -# tile 488 (ogre royal) +# tile 489 (ogre royal) { ...H..C..H...... ...HDCHCDH...... @@ -9342,7 +9342,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 489 (shadow ogre) +# tile 490 (shadow ogre) { ................ ................ @@ -9361,7 +9361,7 @@ Z = (195, 195, 195) ....NFFFNOPPPPPP ..OOOOO.OOOOOPP. } -# tile 490 (gray ooze) +# tile 491 (gray ooze) { ................ ................ @@ -9380,7 +9380,7 @@ Z = (195, 195, 195) .........KCCCJ.. ................ } -# tile 491 (brown pudding) +# tile 492 (brown pudding) { ................ ................ @@ -9399,7 +9399,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 492 (green slime) +# tile 493 (green slime) { ................ ................ @@ -9418,7 +9418,7 @@ Z = (195, 195, 195) NGGFGGF..GF..... ..GGF..GGF..G... } -# tile 493 (blood pudding) +# tile 494 (blood pudding) { ................ ................ @@ -9437,7 +9437,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 494 (gel) +# tile 495 (gel) { ................ ................ @@ -9456,7 +9456,7 @@ Z = (195, 195, 195) ...........AAAAA ..............AA } -# tile 495 (moldy pudding) +# tile 496 (moldy pudding) { ................ ................ @@ -9475,7 +9475,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 496 (black pudding) +# tile 497 (black pudding) { ........A....... ........AA...... @@ -9495,7 +9495,7 @@ Z = (195, 195, 195) ..........AAAA.. } -# tile 497 (shoggoth) +# tile 498 (shoggoth) { ................ ................ @@ -9514,7 +9514,7 @@ Z = (195, 195, 195) .AAAAAAAAAAAAAA. ................ } -# tile 498 (giant shoggoth) +# tile 499 (giant shoggoth) { ....AAAAA....... ..AAAEEEAAA..... @@ -9533,7 +9533,7 @@ Z = (195, 195, 195) .AAAAAAAAAAAAEA. AAAAAAAAAAAAAAAA } -# tile 499 (scramper) +# tile 500 (scramper) { ................ ................ @@ -9552,7 +9552,7 @@ Z = (195, 195, 195) ..........AAA... ................ } -# tile 500 (squealer) +# tile 501 (squealer) { ................ ................ @@ -9571,7 +9571,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 501 (mangler) +# tile 502 (mangler) { ................ ......AO.AO..... @@ -9590,7 +9590,7 @@ Z = (195, 195, 195) APPPFANAAFFPAAOP ....ANP......... } -# tile 502 (quantum mechanic) +# tile 503 (quantum mechanic) { ................ ......LLLL...... @@ -9609,7 +9609,7 @@ Z = (195, 195, 195) ....NAAEBAANN... ................ } -# tile 503 (alchemist) +# tile 504 (alchemist) { ................ ......LLLL...... @@ -9628,7 +9628,7 @@ Z = (195, 195, 195) ....NAAEBAANN... ................ } -# tile 504 (genetic engineer) +# tile 505 (genetic engineer) { ................ ......LLLL...... @@ -9647,7 +9647,7 @@ Z = (195, 195, 195) ..AANAAEPAANN... ................ } -# tile 505 (rust monster) +# tile 506 (rust monster) { ................ ....EEEE........ @@ -9666,7 +9666,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 506 (disenchanter) +# tile 507 (disenchanter) { ................ ....PPPP........ @@ -9685,7 +9685,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 507 (garter snake) +# tile 508 (garter snake) { ................ ................ @@ -9704,7 +9704,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 508 (snake) +# tile 509 (snake) { ................ ................ @@ -9723,7 +9723,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 509 (water moccasin) +# tile 510 (water moccasin) { ................ ................ @@ -9742,7 +9742,7 @@ Z = (195, 195, 195) .....AAAAA...... ................ } -# tile 510 (python) +# tile 511 (python) { ................ ................ @@ -9761,7 +9761,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 511 (pit viper) +# tile 512 (pit viper) { ................ ................ @@ -9780,7 +9780,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 512 (cobra) +# tile 513 (cobra) { ................ ................ @@ -9799,7 +9799,7 @@ Z = (195, 195, 195) .....AAAAAAAAA.. ................ } -# tile 513 (cerastes) +# tile 514 (cerastes) { ................ ..M..M.......... @@ -9818,7 +9818,7 @@ Z = (195, 195, 195) ......FSFF...... ................ } -# tile 514 (asphynx) +# tile 515 (asphynx) { ................ ................ @@ -9837,7 +9837,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 515 (king cobra) +# tile 516 (king cobra) { ................ ................ @@ -9856,7 +9856,7 @@ Z = (195, 195, 195) .....AAAAAAAAA.. ................ } -# tile 516 (weresnake) +# tile 517 (weresnake) { ................ ................ @@ -9875,7 +9875,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 517 (amphisbaena) +# tile 518 (amphisbaena) { ................ ................ @@ -9894,7 +9894,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 518 (giant anaconda) +# tile 519 (giant anaconda) { ................ ................ @@ -9913,7 +9913,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 519 (troll) +# tile 520 (troll) { ................ ..AAAAAA........ @@ -9932,7 +9932,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 520 (ice troll) +# tile 521 (ice troll) { ................ ..OONOOO........ @@ -9951,7 +9951,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 521 (rock troll) +# tile 522 (rock troll) { ................ ...AAAAA........ @@ -9970,7 +9970,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 522 (two-headed troll) +# tile 523 (two-headed troll) { ................ .AAAAAAAAAA..... @@ -9989,7 +9989,7 @@ Z = (195, 195, 195) ..CJA..KA....... ................ } -# tile 523 (water troll) +# tile 524 (water troll) { ................ ...AAAAA........ @@ -10008,7 +10008,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 524 (grave troll) +# tile 525 (grave troll) { ................ ..FFFFFF........ @@ -10027,7 +10027,7 @@ Z = (195, 195, 195) ..UPA..UA....... ................ } -# tile 525 (Olog-hai) +# tile 526 (Olog-hai) { ...PPPPP........ ..PPAAAPP....... @@ -10046,7 +10046,7 @@ Z = (195, 195, 195) ..AAA.AAA....... ................ } -# tile 526 (cave troll) +# tile 527 (cave troll) { ................ ..AAAAAA........ @@ -10065,7 +10065,7 @@ Z = (195, 195, 195) ..CKA..CA....... ................ } -# tile 527 (black troll) +# tile 528 (black troll) { ................ ..NNNNNN........ @@ -10084,7 +10084,7 @@ Z = (195, 195, 195) ..EAP..EP....... ................ } -# tile 528 (umber hulk) +# tile 529 (umber hulk) { ................ ...AAAAA........ @@ -10103,7 +10103,7 @@ Z = (195, 195, 195) .AAAP..AAP...... ................ } -# tile 529 (umbral hulk) +# tile 530 (umbral hulk) { AAAA.....AAAAAAA AAA.AAAAA.AAAAAA @@ -10122,7 +10122,7 @@ Z = (195, 195, 195) A.AAA...AAA.AAAA AA....A....AAAAA } -# tile 530 (hunger hulk) +# tile 531 (hunger hulk) { ................ ...DDDDJ........ @@ -10141,7 +10141,7 @@ Z = (195, 195, 195) .DDJA..DDJA..... ................ } -# tile 531 (slumber hulk) +# tile 532 (slumber hulk) { ................ ...BBBBB........ @@ -10160,7 +10160,7 @@ Z = (195, 195, 195) .BBBA..BBA...... ................ } -# tile 532 (water hulk) +# tile 533 (water hulk) { ................ ...EEEEE........ @@ -10179,7 +10179,7 @@ Z = (195, 195, 195) .EEEA..EEA...... ................ } -# tile 533 (shambling horror) +# tile 534 (shambling horror) { ................ ...AAAAA........ @@ -10198,7 +10198,7 @@ Z = (195, 195, 195) .AAAP..AAP...... ................ } -# tile 534 (vampiric) +# tile 535 (vampiric) { ................ ................ @@ -10217,7 +10217,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 535 (vampire) +# tile 536 (vampire) { ................ ................ @@ -10236,7 +10236,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 536 (vampire noble) +# tile 537 (vampire noble) { ................ .....AAAA....... @@ -10255,7 +10255,7 @@ Z = (195, 195, 195) .N..AAPP..AP.... ................ } -# tile 537 (vampire royal) +# tile 538 (vampire royal) { ................ .....AAAA....... @@ -10274,7 +10274,7 @@ Z = (195, 195, 195) .N..AAPP..AP.... ................ } -# tile 538 (fire vampire) +# tile 539 (fire vampire) { ................ ....PHP..PP..... @@ -10293,7 +10293,7 @@ Z = (195, 195, 195) ................ AAAAAAAAAAAAAAAA } -# tile 539 (vampire mage) +# tile 540 (vampire mage) { ................ ................ @@ -10312,7 +10312,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 540 (star vampire) +# tile 541 (star vampire) { ................ ......KP....P... @@ -10331,7 +10331,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 541 (nosferatu) +# tile 542 (nosferatu) { ................ ................ @@ -10350,7 +10350,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 542 (Vlad the Impaler) +# tile 543 (Vlad the Impaler) { ................ ..N..AAAA....... @@ -10369,7 +10369,7 @@ Z = (195, 195, 195) ..N.AAPP..AP.... ................ } -# tile 543 (barrow wight) +# tile 544 (barrow wight) { ................ ................ @@ -10388,7 +10388,7 @@ Z = (195, 195, 195) .J.....LLAA..... ................ } -# tile 544 (wight) +# tile 545 (wight) { ................ ................ @@ -10407,7 +10407,7 @@ Z = (195, 195, 195) .......OOAA..... ................ } -# tile 545 (wraith) +# tile 546 (wraith) { ................ ................ @@ -10426,7 +10426,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 546 (bodak) +# tile 547 (bodak) { ......OOO....... .....OHOHO...... @@ -10445,7 +10445,7 @@ Z = (195, 195, 195) ......VAVA...... ................ } -# tile 547 (banshee) +# tile 548 (banshee) { .....BBB........ ....BANNB....... @@ -10464,7 +10464,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 548 (slaughter wight) +# tile 549 (slaughter wight) { ................ ................ @@ -10483,7 +10483,7 @@ Z = (195, 195, 195) ....F.AAAJAD.... .....JADAAAA.... } -# tile 549 (Nazgul) +# tile 550 (Nazgul) { ................ ................ @@ -10502,7 +10502,7 @@ Z = (195, 195, 195) ......PPPPA..... ................ } -# tile 550 (xorn) +# tile 551 (xorn) { ................ ................ @@ -10521,7 +10521,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 551 (lemur) +# tile 552 (lemur) { ................ ................ @@ -10540,7 +10540,7 @@ Z = (195, 195, 195) .......ARRRRAAA. ......ARARAARAA. } -# tile 552 (monkey) +# tile 553 (monkey) { ................ ................ @@ -10559,7 +10559,7 @@ Z = (195, 195, 195) .....JJA.JJA.... ................ } -# tile 553 (baby owlbear) +# tile 554 (baby owlbear) { ................ ....K.....K..... @@ -10578,7 +10578,7 @@ Z = (195, 195, 195) ...PJPJAJPJPA... ................ } -# tile 554 (ape) +# tile 555 (ape) { ................ ................ @@ -10597,7 +10597,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 555 (owlbear) +# tile 556 (owlbear) { ................ ....K.....K..... @@ -10616,7 +10616,7 @@ Z = (195, 195, 195) ...PJPJAJPJPA... ................ } -# tile 556 (yeti) +# tile 557 (yeti) { ................ ....BNNN........ @@ -10635,7 +10635,7 @@ Z = (195, 195, 195) ..BNNA..NNA..... ................ } -# tile 557 (carnivorous ape) +# tile 558 (carnivorous ape) { ................ ................ @@ -10654,7 +10654,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 558 (sasquatch) +# tile 559 (sasquatch) { ................ ....CCCCC....... @@ -10673,7 +10673,7 @@ Z = (195, 195, 195) .CJJJKACKJJKA... ................ } -# tile 559 (zruty) +# tile 560 (zruty) { ................ ......FFGF...... @@ -10692,7 +10692,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 560 (kobold zombie) +# tile 561 (kobold zombie) { ................ ................ @@ -10711,7 +10711,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 561 (gnome zombie) +# tile 562 (gnome zombie) { ................ ................ @@ -10730,7 +10730,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 562 (orc zombie) +# tile 563 (orc zombie) { ................ ................ @@ -10749,7 +10749,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 563 (dwarf zombie) +# tile 564 (dwarf zombie) { ................ ................ @@ -10768,7 +10768,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 564 (hobbit zombie) +# tile 565 (hobbit zombie) { ................ ................ @@ -10787,7 +10787,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 565 (elf zombie) +# tile 566 (elf zombie) { ................ ................ @@ -10806,7 +10806,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 566 (human zombie) +# tile 567 (human zombie) { ......AAA....... .....FFGAA...... @@ -10825,7 +10825,7 @@ Z = (195, 195, 195) ....GGAGGA...... ................ } -# tile 567 (draugr) +# tile 568 (draugr) { ................ ....O........... @@ -10844,7 +10844,7 @@ Z = (195, 195, 195) ......JJJ....... ................ } -# tile 568 (gnoll witherling) +# tile 569 (gnoll witherling) { ................ ................ @@ -10863,7 +10863,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 569 (centaur zombie) +# tile 570 (centaur zombie) { ................ ...FGA.......... @@ -10882,7 +10882,7 @@ Z = (195, 195, 195) ....GA...G...... ................ } -# tile 570 (ettin zombie) +# tile 571 (ettin zombie) { ....NN..ONOP.... ..NNOOPNNOOPP... @@ -10901,7 +10901,7 @@ Z = (195, 195, 195) .....GFAAGFAAAAA ...FFFFA.GFFFFAA } -# tile 571 (giant zombie) +# tile 572 (giant zombie) { ......JJJJAA.... ....JJJJJJJJA... @@ -10921,7 +10921,7 @@ Z = (195, 195, 195) ...GFFAAGFFFAAAA } -# tile 572 (ghoul) +# tile 573 (ghoul) { ......AAA....... .....OOOAA...... @@ -10940,7 +10940,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 573 (vomitous ghoul) +# tile 574 (vomitous ghoul) { ......AAA....... .....OOOAA...... @@ -10959,7 +10959,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 574 (skeletal pirate) +# tile 575 (skeletal pirate) { ................ ......OOA....... @@ -10978,7 +10978,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 575 (ghast) +# tile 576 (ghast) { ......AAA....... .....OOOAA...... @@ -10997,7 +10997,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 576 (ghoul mage) +# tile 577 (ghoul mage) { ......NO........ .....NOOO....... @@ -11016,7 +11016,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 577 (skeleton) +# tile 578 (skeleton) { ................ ................ @@ -11035,7 +11035,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 578 (revenant) +# tile 579 (revenant) { ................ ................ @@ -11054,7 +11054,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 579 (gug) +# tile 580 (gug) { ................ ................ @@ -11073,7 +11073,7 @@ Z = (195, 195, 195) ......OOLA...... ................ } -# tile 580 (ghoul queen) +# tile 581 (ghoul queen) { ......NO........ .....HHHH....... @@ -11092,7 +11092,7 @@ Z = (195, 195, 195) ...OOOA.OOA..... ................ } -# tile 581 (dragon zombie) +# tile 582 (dragon zombie) { ......JJJIA..... .....NFNFFIA.... @@ -11111,7 +11111,7 @@ Z = (195, 195, 195) ....JFAAJJJFFJA. ........FFFFJA.. } -# tile 582 (droid) +# tile 583 (droid) { ...A.AAAAAA..... ..AOAPUPUPUA.... @@ -11130,7 +11130,7 @@ Z = (195, 195, 195) AMYMA.......AYMA AAAAA.......AAAA } -# tile 583 (straw golem) +# tile 584 (straw golem) { ......LJ........ ......LJHJ...... @@ -11149,7 +11149,7 @@ Z = (195, 195, 195) ....HALA.AHAAL.. ..........L..... } -# tile 584 (paper golem) +# tile 585 (paper golem) { ................ .......OA....... @@ -11168,7 +11168,7 @@ Z = (195, 195, 195) ....OOA...OOA... ................ } -# tile 585 (wax golem) +# tile 586 (wax golem) { ................ .........PA..... @@ -11187,7 +11187,7 @@ Z = (195, 195, 195) .PA.NOAA..NNAPA. ..PPNOA...OPPA.. } -# tile 586 (plastic golem) +# tile 587 (plastic golem) { ................ ................ @@ -11206,7 +11206,7 @@ Z = (195, 195, 195) .....CA...CA.... ................ } -# tile 587 (rope golem) +# tile 588 (rope golem) { ................ ................ @@ -11225,7 +11225,7 @@ Z = (195, 195, 195) ...O.A....OAA... ....OA.......... } -# tile 588 (gold golem) +# tile 589 (gold golem) { ................ ......HNH....... @@ -11244,7 +11244,7 @@ Z = (195, 195, 195) H...HNC.AHNC.A.H ..H............. } -# tile 589 (leather golem) +# tile 590 (leather golem) { ......KKKK...... .....KHKHJ...... @@ -11263,7 +11263,7 @@ Z = (195, 195, 195) ...KJJA..KJJA... ....KA....KA.... } -# tile 590 (wood golem) +# tile 591 (wood golem) { ................ ......KCKJ...... @@ -11282,7 +11282,7 @@ Z = (195, 195, 195) ....KCKJAKCKJA.. ................ } -# tile 591 (flesh golem) +# tile 592 (flesh golem) { ................ ................ @@ -11301,7 +11301,7 @@ Z = (195, 195, 195) ..LLDDD..DDDDD.. ................ } -# tile 592 (clay golem) +# tile 593 (clay golem) { ................ ................ @@ -11320,7 +11320,7 @@ Z = (195, 195, 195) ..CKKKA.CKKKAA.. ................ } -# tile 593 (stone golem) +# tile 594 (stone golem) { ................ ................ @@ -11339,7 +11339,7 @@ Z = (195, 195, 195) ...PPAA.PPPA.... ................ } -# tile 594 (glass golem) +# tile 595 (glass golem) { ................ .....BBBBBBA.... @@ -11358,7 +11358,7 @@ Z = (195, 195, 195) ..BNPA....NPAA.. ...BA.....BPA... } -# tile 595 (iron golem) +# tile 596 (iron golem) { ................ ......PBP....... @@ -11377,7 +11377,7 @@ Z = (195, 195, 195) ....PBP.APBP.A.. ................ } -# tile 596 (snow golem) +# tile 597 (snow golem) { ................ .....BBBBBBA.... @@ -11397,7 +11397,7 @@ Z = (195, 195, 195) ...BA.....BPA... } -# tile 597 (ruby golem) +# tile 598 (ruby golem) { ................ ......CDC....... @@ -11416,7 +11416,7 @@ Z = (195, 195, 195) ....CDK.ACDK.A.. ................ } -# tile 598 (diamond golem) +# tile 599 (diamond golem) { ................ ......ONO....... @@ -11435,7 +11435,7 @@ Z = (195, 195, 195) ....ONO.AONO.A.. ................ } -# tile 599 (sapphire golem) +# tile 600 (sapphire golem) { ................ ......BEB....... @@ -11454,7 +11454,7 @@ Z = (195, 195, 195) ....BEB.ABEB.A.. ................ } -# tile 600 (steel golem) +# tile 601 (steel golem) { ................ ......PBP....... @@ -11473,7 +11473,7 @@ Z = (195, 195, 195) ....PBP.APBP.A.. ................ } -# tile 601 (crystal golem) +# tile 602 (crystal golem) { ................ ......OLO....... @@ -11492,7 +11492,7 @@ Z = (195, 195, 195) ....OLO.AOLO.A.. ................ } -# tile 602 (human) +# tile 603 (human) { ................ ................ @@ -11511,7 +11511,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 603 (peasant) +# tile 604 (peasant) { ................ ................ @@ -11530,7 +11530,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 604 (miner) +# tile 605 (miner) { ................ ................ @@ -11549,7 +11549,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 605 (mugger) +# tile 606 (mugger) { ................ ................ @@ -11568,7 +11568,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 606 (bandit) +# tile 607 (bandit) { ................ ................ @@ -11587,7 +11587,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 607 (street thug) +# tile 608 (street thug) { ................ ................ @@ -11606,7 +11606,7 @@ Z = (195, 195, 195) ....JJA.JJA..... ................ } -# tile 608 (prison guard) +# tile 609 (prison guard) { ................ .....BBPPPAA.... @@ -11625,7 +11625,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ....BPPP.BPPPAAA } -# tile 609 (wererat) +# tile 610 (wererat) { ................ ................ @@ -11644,7 +11644,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 610 (werejackal) +# tile 611 (werejackal) { ................ ................ @@ -11663,7 +11663,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 611 (werewolf) +# tile 612 (werewolf) { ................ ................ @@ -11682,7 +11682,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 612 (werepanther) +# tile 613 (werepanther) { ................ ................ @@ -11701,7 +11701,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (champion) +# tile 614 (champion) { ................ ................ @@ -11720,7 +11720,7 @@ Z = (195, 195, 195) .....LLA.PPPJA.. ..........PPA... } -# tile 614 (agent) +# tile 615 (agent) { ................ ................ @@ -11739,7 +11739,7 @@ Z = (195, 195, 195) .....RRR.RRR.... ................ } -# tile 615 (elf) +# tile 616 (elf) { ................ .........G...... @@ -11758,7 +11758,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 616 (Woodland-elf) +# tile 617 (Woodland-elf) { ................ ................ @@ -11777,7 +11777,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (Green-elf) +# tile 618 (Green-elf) { ................ ................ @@ -11796,7 +11796,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (weretiger) +# tile 619 (weretiger) { ................ ................ @@ -11815,7 +11815,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 619 (Grey-elf) +# tile 620 (Grey-elf) { ................ ................ @@ -11834,7 +11834,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 620 (gibberling) +# tile 621 (gibberling) { ................ ................ @@ -11853,7 +11853,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 621 (werebear) +# tile 622 (werebear) { ................ ................ @@ -11872,7 +11872,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 622 (weresnake) +# tile 623 (weresnake) { ................ ................ @@ -11891,7 +11891,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 623 (werespider) +# tile 624 (werespider) { ................ ................ @@ -11910,7 +11910,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 624 (street thug leader) +# tile 625 (street thug leader) { ................ ................ @@ -11929,7 +11929,7 @@ Z = (195, 195, 195) .....AAA.AAA.... ................ } -# tile 625 (elven noble) +# tile 626 (elven noble) { ................ ................ @@ -11948,7 +11948,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 626 (grimlock) +# tile 627 (grimlock) { ................ ................ @@ -11967,7 +11967,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 627 (elven wizard) +# tile 628 (elven wizard) { ................ ................ @@ -11986,7 +11986,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 628 (elven royal) +# tile 629 (elven royal) { ................ ................ @@ -12005,7 +12005,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 629 (doppelganger) +# tile 630 (doppelganger) { ................ ......CCCC..I... @@ -12024,7 +12024,7 @@ Z = (195, 195, 195) ..CD.LLAALLADC.. ................ } -# tile 630 (shopkeeper) +# tile 631 (shopkeeper) { ................ ................ @@ -12043,7 +12043,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 631 (One-eyed Sam) +# tile 632 (One-eyed Sam) { ................ ................ @@ -12062,7 +12062,7 @@ Z = (195, 195, 195) ....KKKKCKCK.... ................ } -# tile 632 (guard) +# tile 633 (guard) { ................ .....BBPPPAA.... @@ -12081,7 +12081,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ....BPPP.BPPPAAA } -# tile 633 (prisoner) +# tile 634 (prisoner) { ................ ................ @@ -12100,7 +12100,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 634 (Oracle) +# tile 635 (Oracle) { ................ ................ @@ -12119,7 +12119,7 @@ Z = (195, 195, 195) ....LELLLLELAA.. ................ } -# tile 635 (aligned priest) +# tile 636 (aligned priest) { ................ INI............. @@ -12138,7 +12138,7 @@ Z = (195, 195, 195) .JACCCJJCCCAA... ................ } -# tile 636 (high priest) +# tile 637 (high priest) { .INI............ IIIII.KCCK...... @@ -12157,7 +12157,7 @@ Z = (195, 195, 195) ..HACCCJJCCCAA.. ................ } -# tile 637 (soldier) +# tile 638 (soldier) { .....J.......... .....JAAA....... @@ -12176,7 +12176,7 @@ Z = (195, 195, 195) .....JJ.JJ...... ................ } -# tile 638 (sergeant) +# tile 639 (sergeant) { .....J.......... .....JFFF....... @@ -12195,7 +12195,7 @@ Z = (195, 195, 195) .....AA.AA...... ................ } -# tile 639 (stormtrooper) +# tile 640 (stormtrooper) { .....AAAAAA..... ....AVNNNNNA.... @@ -12214,7 +12214,7 @@ Z = (195, 195, 195) ...AAVNNNNAA.A.. ...ANAAVNNNNANA. } -# tile 640 (nurse) +# tile 641 (nurse) { ................ .......NO....... @@ -12234,7 +12234,7 @@ Z = (195, 195, 195) ................ } -# tile 641 (lieutenant) +# tile 642 (lieutenant) { ................ .......FFF...... @@ -12253,7 +12253,7 @@ Z = (195, 195, 195) .....AA.AA...... ................ } -# tile 642 (captain) +# tile 643 (captain) { ................ ......FHHF...... @@ -12272,7 +12272,7 @@ Z = (195, 195, 195) .....AA.AAAAA... ................ } -# tile 643 (general) +# tile 644 (general) { ................ ......FHHF...... @@ -12291,7 +12291,7 @@ Z = (195, 195, 195) .....AA.AAAAA... ................ } -# tile 644 (watchman) +# tile 645 (watchman) { ................ ......PPP....... @@ -12310,7 +12310,7 @@ Z = (195, 195, 195) ....JJJ.JJJ..... ................ } -# tile 645 (watch captain) +# tile 646 (watch captain) { ......PPP....... .....PHHHP...... @@ -12329,7 +12329,7 @@ Z = (195, 195, 195) ....JJJ.JJJ..... ................ } -# tile 646 (Medusa) +# tile 647 (Medusa) { ................ ..GA...GA....... @@ -12348,7 +12348,7 @@ Z = (195, 195, 195) ..IIKIKIKIA..... ................ } -# tile 647 (Wizard of Yendor) +# tile 648 (Wizard of Yendor) { .EEE.......EEE.. EFFAE..E..EAFFE. @@ -12367,7 +12367,7 @@ Z = (195, 195, 195) .EEEEEEEEEEEAAA. EEEEEEEEEEEEEEA. } -# tile 648 (Croesus) +# tile 649 (Croesus) { ....H..H..H..... ....HCHEHCH..... @@ -12386,7 +12386,7 @@ Z = (195, 195, 195) .GIIIKJJKKIIIGG. ................ } -# tile 649 (Charon) +# tile 650 (Charon) { ................ .......J........ @@ -12405,7 +12405,7 @@ Z = (195, 195, 195) .JJJJJJJJJJJAAA. JJJJJJJJJJJJJJA. } -# tile 650 (Rat King) +# tile 651 (Rat King) { ................ ................ @@ -12424,7 +12424,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 651 (shadow) +# tile 652 (shadow) { ................ ...........A.... @@ -12443,7 +12443,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 652 (ghost) +# tile 653 (ghost) { ................ ................ @@ -12462,7 +12462,7 @@ Z = (195, 195, 195) .O...P....P..... ........P....... } -# tile 653 (spectre) +# tile 654 (spectre) { ................ ................ @@ -12481,7 +12481,7 @@ Z = (195, 195, 195) .O...P....P..... ........P....... } -# tile 654 (shade) +# tile 655 (shade) { ................ ................ @@ -12500,7 +12500,7 @@ Z = (195, 195, 195) AAAA.AAAAJA..... ................ } -# tile 655 (water demon) +# tile 656 (water demon) { ................ ................ @@ -12519,7 +12519,7 @@ Z = (195, 195, 195) ....EEAEEA...... ................ } -# tile 656 (lava demon) +# tile 657 (lava demon) { ................ ................ @@ -12538,7 +12538,7 @@ Z = (195, 195, 195) ....CCACCA...... ................ } -# tile 657 (succubus) +# tile 658 (succubus) { DD.OHHD......... DDOHHDGD........ @@ -12557,7 +12557,7 @@ Z = (195, 195, 195) ....DDAA..DDAA.. ...DDJA...DDDA.. } -# tile 658 (incubus) +# tile 659 (incubus) { DD.OHHD......... DDOHHDGD........ @@ -12576,7 +12576,7 @@ Z = (195, 195, 195) ...DDKAA..DDAA.. ..DDKAA...DDDA.. } -# tile 659 (horned devil) +# tile 660 (horned devil) { ................ ................ @@ -12595,7 +12595,7 @@ Z = (195, 195, 195) ..CDDAA.DDK..... ................ } -# tile 660 (erinys) +# tile 661 (erinys) { ..GA...GA....... ...FA.FA..GA.... @@ -12614,7 +12614,7 @@ Z = (195, 195, 195) ..BBEBEBEBA..... ................ } -# tile 661 (barbed devil) +# tile 662 (barbed devil) { ................ ................ @@ -12633,7 +12633,7 @@ Z = (195, 195, 195) .CCDDAA.DDKK.... ................ } -# tile 662 (spined devil) +# tile 663 (spined devil) { ................ ................ @@ -12652,7 +12652,7 @@ Z = (195, 195, 195) ..CODAA.DOK..... ................ } -# tile 663 (marilith) +# tile 664 (marilith) { .D..HHH.....D... DD.HHHHHA...DD.. @@ -12671,7 +12671,7 @@ Z = (195, 195, 195) ..FGFFFFFFFFFA.. ....GFFFFFFAA... } -# tile 664 (vrock) +# tile 665 (vrock) { ................ ......OPP.O..... @@ -12690,7 +12690,7 @@ Z = (195, 195, 195) .....DDA.DDA.... ................ } -# tile 665 (bearded devil) +# tile 666 (bearded devil) { ................ ................ @@ -12709,7 +12709,7 @@ Z = (195, 195, 195) ..CDDAA.DDK..... ................ } -# tile 666 (hezrou) +# tile 667 (hezrou) { ................ ................ @@ -12728,7 +12728,7 @@ Z = (195, 195, 195) ...........FFFA. ................ } -# tile 667 (bar-lgura) +# tile 668 (bar-lgura) { ................ ................ @@ -12747,7 +12747,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 668 (bone devil) +# tile 669 (bone devil) { ................ ................ @@ -12766,7 +12766,7 @@ Z = (195, 195, 195) ..NOOAA.OOL..... ................ } -# tile 669 (armanite) +# tile 670 (armanite) { ................ ..N..N.......... @@ -12785,7 +12785,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 670 (damned pirate) +# tile 671 (damned pirate) { ................ ......O.O....... @@ -12804,7 +12804,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 671 (ice devil) +# tile 672 (ice devil) { ................ ................ @@ -12823,7 +12823,7 @@ Z = (195, 195, 195) ..BNNAA.NNP..... ................ } -# tile 672 (chasme) +# tile 673 (chasme) { ................ ................ @@ -12842,7 +12842,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 673 (nalfeshnee) +# tile 674 (nalfeshnee) { ................ ................ @@ -12861,7 +12861,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 674 (spibrawulf) +# tile 675 (spibrawulf) { ................ ................ @@ -12880,7 +12880,7 @@ Z = (195, 195, 195) .AAALOAA.AOA.... ................ } -# tile 675 (sandestin) +# tile 676 (sandestin) { .....CCCCC..I... .I..CD....C..... @@ -12899,7 +12899,7 @@ Z = (195, 195, 195) .CD.DDAADDDADC.. ................ } -# tile 676 (babau) +# tile 677 (babau) { ...P............ ....P........... @@ -12918,7 +12918,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 677 (pit fiend) +# tile 678 (pit fiend) { ................ .K.O.......O.K.. @@ -12937,7 +12937,7 @@ Z = (195, 195, 195) ...CDDAA.DDK.... ................ } -# tile 678 (nabassu) +# tile 679 (nabassu) { ...K......K..... ...KJ....KJ..... @@ -12956,7 +12956,7 @@ Z = (195, 195, 195) ....BFA.FBA..... ................ } -# tile 679 (weredemon) +# tile 680 (weredemon) { ................ ................ @@ -12975,7 +12975,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 680 (balrog) +# tile 681 (balrog) { ................ .K..O.....O..K.. @@ -12994,7 +12994,7 @@ Z = (195, 195, 195) ..CDDDAA.DDDK.AA ................ } -# tile 681 (Juiblex) +# tile 682 (Juiblex) { ................ DD.........DD... @@ -13013,7 +13013,7 @@ Z = (195, 195, 195) .CCCCCCCCCCCKA.. ................ } -# tile 682 (Baphomet) +# tile 683 (Baphomet) { .O..........O... .O..........O... @@ -13032,7 +13032,7 @@ Z = (195, 195, 195) ....CDCACDCAAAAA ..DDDDD.DDDDDAA. } -# tile 683 (Yeenoghu) +# tile 684 (Yeenoghu) { ....B.HHP....... ....BPPPP....... @@ -13051,7 +13051,7 @@ Z = (195, 195, 195) ...BPAA.PPA..... ................ } -# tile 684 (Lolth) +# tile 685 (Lolth) { ................ ................ @@ -13070,7 +13070,7 @@ Z = (195, 195, 195) .....JAA.AJA.... ................ } -# tile 685 (Geryon) +# tile 686 (Geryon) { .K...........K.. .K....JJJ....KJ. @@ -13089,7 +13089,7 @@ Z = (195, 195, 195) ....FGGGFFFFFFFA .....FFFFFFFFFA. } -# tile 686 (Dispater) +# tile 687 (Dispater) { ................ ......OJJO...... @@ -13108,7 +13108,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 687 (Baalzebub) +# tile 688 (Baalzebub) { ......F...F..... .......F.F...... @@ -13127,7 +13127,7 @@ Z = (195, 195, 195) .....FFA..FF.... ................ } -# tile 688 (Mephistopheles) +# tile 689 (Mephistopheles) { ................ .K.O.......O.K.. @@ -13146,7 +13146,7 @@ Z = (195, 195, 195) ....GFAAAFGA.... ................ } -# tile 689 (Orcus) +# tile 690 (Orcus) { ................ .K..O.....O..K.. @@ -13165,7 +13165,7 @@ Z = (195, 195, 195) ...OOPPAOOPPAGA. ................ } -# tile 690 (Tiamat) +# tile 691 (Tiamat) { ......GGGFA..... .....NFNFEEA.... @@ -13184,7 +13184,7 @@ Z = (195, 195, 195) ....GFAA...CCJA. ........FFFFJA.. } -# tile 691 (Graz'zt) +# tile 692 (Graz'zt) { AA.OJJA......... AAOJJAGA........ @@ -13203,7 +13203,7 @@ Z = (195, 195, 195) .N.AAKPP..AAPP.. ..AAKPP...AAAP.. } -# tile 692 (Asmodeus) +# tile 693 (Asmodeus) { ................ ......OJJO...... @@ -13222,7 +13222,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 693 (Demogorgon) +# tile 694 (Demogorgon) { ...KKK..KKK..... ..KBKBK.BKBK.... @@ -13241,7 +13241,7 @@ Z = (195, 195, 195) ..GAGFAFFFAFA... ................ } -# tile 694 (Cthulhu) +# tile 695 (Cthulhu) { ................ .....FFFFC...... @@ -13260,7 +13260,7 @@ Z = (195, 195, 195) ....CFFCAA...... ..FFC.FFA....... } -# tile 695 (Death) +# tile 696 (Death) { .BBBB....JJJ.... .BPPPP.JJJJ..... @@ -13279,7 +13279,7 @@ Z = (195, 195, 195) .CJJAAAAAAAAJJA. ACJAAAAAAAAAAAJ. } -# tile 696 (Pestilence) +# tile 697 (Pestilence) { F........JJJ.... ..F....JJJJ..... @@ -13298,7 +13298,7 @@ Z = (195, 195, 195) ..JJFBFAFFAJJJA. .JJAAFAFAAAAAAJ. } -# tile 697 (Famine) +# tile 698 (Famine) { .........JJJ.... .......JJJ...... @@ -13317,7 +13317,7 @@ Z = (195, 195, 195) K...JJAAAJJAA... K..JJAAAAAJJJA.. } -# tile 698 (mail daemon) +# tile 699 (mail daemon) { ...OP.BEEE.PO... ...OOEBEEEEOOD.. @@ -13336,7 +13336,7 @@ Z = (195, 195, 195) ..CDDDAAA.DDDK.. ................ } -# tile 699 (djinni) +# tile 700 (djinni) { .LL..NNN..LL.... ..L..NGNA.L..... @@ -13355,7 +13355,7 @@ Z = (195, 195, 195) .........IFED... ................ } -# tile 700 (demon) +# tile 701 (demon) { ................ .....O....O..... @@ -13374,7 +13374,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 701 (jellyfish) +# tile 702 (jellyfish) { ................ .....PBPA....... @@ -13393,7 +13393,7 @@ Z = (195, 195, 195) ..PEE.P.E..E.... .P..E.P..E...... } -# tile 702 (piranha) +# tile 703 (piranha) { ................ ................ @@ -13412,7 +13412,7 @@ Z = (195, 195, 195) .....E..P....... ....E..E...E.... } -# tile 703 (giant eel) +# tile 704 (giant eel) { ................ ................ @@ -13431,7 +13431,7 @@ Z = (195, 195, 195) ...EE.AAAAE.E... ..E...EE.E...E.. } -# tile 704 (mind flayer larva) +# tile 705 (mind flayer larva) { ................ .....ICIA....... @@ -13450,7 +13450,7 @@ Z = (195, 195, 195) ..IEE.I.E..E.... .I..E.I..E...... } -# tile 705 (swordfish) +# tile 706 (swordfish) { ................ ................ @@ -13469,7 +13469,7 @@ Z = (195, 195, 195) .....E..B....... ....E..E...E.... } -# tile 706 (sea horse) +# tile 707 (sea horse) { ................ ................ @@ -13488,7 +13488,7 @@ Z = (195, 195, 195) .....LA...FFAB.. ................ } -# tile 707 (shark) +# tile 708 (shark) { ................ ................ @@ -13507,7 +13507,7 @@ Z = (195, 195, 195) PDNPPEE..EE..... .PPPE..EEE..E... } -# tile 708 (giant crab) +# tile 709 (giant crab) { ................ ................ @@ -13526,7 +13526,7 @@ Z = (195, 195, 195) ..KKAACAACAAKKA. ................ } -# tile 709 (electric eel) +# tile 710 (electric eel) { ................ ................ @@ -13545,7 +13545,7 @@ Z = (195, 195, 195) ...EE.AAADE.E... ..E...EE.E...E.. } -# tile 710 (mermaid) +# tile 711 (mermaid) { ................ ................ @@ -13564,7 +13564,7 @@ Z = (195, 195, 195) ........FBAFFA.. .........FFBA... } -# tile 711 (kraken) +# tile 712 (kraken) { ................ ................ @@ -13583,7 +13583,7 @@ Z = (195, 195, 195) EEEEEEE..EE..... ..EEE..EEE..E... } -# tile 712 (thing from below) +# tile 713 (thing from below) { ......MMM....... .....MO......... @@ -13602,7 +13602,7 @@ Z = (195, 195, 195) EEEEEEE..EE..... ..EEE..EEE..E... } -# tile 713 (tortle) +# tile 714 (tortle) { ................ ................ @@ -13621,7 +13621,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 714 (newt) +# tile 715 (newt) { ................ ................ @@ -13640,7 +13640,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 715 (gecko) +# tile 716 (gecko) { ................ ................ @@ -13659,7 +13659,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 716 (iguana) +# tile 717 (iguana) { ................ ................ @@ -13678,7 +13678,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 717 (compsognathus) +# tile 718 (compsognathus) { ................ ................ @@ -13697,7 +13697,7 @@ Z = (195, 195, 195) .......LL....... ................ } -# tile 718 (sea tortle) +# tile 719 (sea tortle) { ................ ................ @@ -13716,7 +13716,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 719 (baby crocodile) +# tile 720 (baby crocodile) { ................ ................ @@ -13735,7 +13735,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 720 (lizard) +# tile 721 (lizard) { ................ ................ @@ -13754,7 +13754,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 721 (tortle shaman) +# tile 722 (tortle shaman) { ................ ................ @@ -13773,7 +13773,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 722 (rhaumbusun) +# tile 723 (rhaumbusun) { FA.....FA....... .GFA..FA.FA..... @@ -13792,7 +13792,7 @@ Z = (195, 195, 195) ........KCA..DA. ................ } -# tile 723 (chameleon) +# tile 724 (chameleon) { ................ ................ @@ -13811,7 +13811,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 724 (crocodile) +# tile 725 (crocodile) { ................ ................ @@ -13830,7 +13830,7 @@ Z = (195, 195, 195) .DF............. ................ } -# tile 725 (velociraptor) +# tile 726 (velociraptor) { ................ ................ @@ -13849,7 +13849,7 @@ Z = (195, 195, 195) ........JGGAA... ................ } -# tile 726 (giant turtle) +# tile 727 (giant turtle) { ................ ................ @@ -13868,7 +13868,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 727 (gila monster) +# tile 728 (gila monster) { ................ ................ @@ -13887,7 +13887,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 728 (komodo dragon) +# tile 729 (komodo dragon) { ................ ................ @@ -13906,7 +13906,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 729 (salamander) +# tile 730 (salamander) { ................ ................ @@ -13925,7 +13925,7 @@ Z = (195, 195, 195) ..ACCA.......... ...AAA.......... } -# tile 730 (T-Rex) +# tile 731 (T-Rex) { ...KKKK......... .KKKKNKJ........ @@ -13944,7 +13944,7 @@ Z = (195, 195, 195) ..AAAAJKAAAAKJA. ...AJJKKAAAAKKJJ } -# tile 731 (frost salamander) +# tile 732 (frost salamander) { ................ ................ @@ -13963,7 +13963,7 @@ Z = (195, 195, 195) ..ACCA.......... ...AAA.......... } -# tile 732 (giant crocodile) +# tile 733 (giant crocodile) { ................ ................ @@ -13982,7 +13982,7 @@ Z = (195, 195, 195) .DF............. ................ } -# tile 733 (bad egg) +# tile 734 (bad egg) { ................ ................ @@ -14001,7 +14001,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 734 (killer tripe ration) +# tile 735 (killer tripe ration) { ................ ................ @@ -14020,7 +14020,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 735 (killer food ration) +# tile 736 (killer food ration) { ...JJA.......... ...BPA.......... @@ -14039,7 +14039,7 @@ Z = (195, 195, 195) ....KKCKKKCKKA.. .....AAAAAAAA... } -# tile 736 (pile of killer coins) +# tile 737 (pile of killer coins) { ................ ................ @@ -14058,7 +14058,7 @@ Z = (195, 195, 195) .........HA..... ...........HA... } -# tile 737 (large pile of killer coins) +# tile 738 (large pile of killer coins) { ................ ................ @@ -14077,7 +14077,7 @@ Z = (195, 195, 195) .........HA...HA ......HA...HA... } -# tile 738 (huge pile of killer coins) +# tile 739 (huge pile of killer coins) { ................ ................ @@ -14096,7 +14096,7 @@ Z = (195, 195, 195) .........HCA.HCA .......HCA.HCA.. } -# tile 739 (archeologist) +# tile 740 (archeologist) { ................ ................ @@ -14115,7 +14115,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 740 (barbarian) +# tile 741 (barbarian) { ................ ................ @@ -14134,7 +14134,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 741 (bard) +# tile 742 (bard) { ................ ................ @@ -14153,7 +14153,7 @@ Z = (195, 195, 195) ....BPPPPPPE.... ................ } -# tile 742 (caveman) +# tile 743 (caveman) { ................ ................ @@ -14172,7 +14172,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 743 (cavewoman) +# tile 744 (cavewoman) { ................ ................ @@ -14191,7 +14191,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 744 (convict) +# tile 745 (convict) { ................ ................ @@ -14210,7 +14210,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 745 (flame mage) +# tile 746 (flame mage) { ................ .........HD..... @@ -14229,7 +14229,7 @@ Z = (195, 195, 195) ....HDDDDDDC.... ................ } -# tile 746 (healer) +# tile 747 (healer) { ................ .......NN....... @@ -14248,7 +14248,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 747 (ice mage) +# tile 748 (ice mage) { ................ .........PN..... @@ -14267,7 +14267,7 @@ Z = (195, 195, 195) ....PNNNNNNB.... ................ } -# tile 748 (infidel) +# tile 749 (infidel) { ................ ................ @@ -14286,7 +14286,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 749 (jedi) +# tile 750 (jedi) { .......BBB...... ......BBB....... @@ -14305,7 +14305,7 @@ Z = (195, 195, 195) ......AMMMMMMMMA .......AAMMMMMA. } -# tile 750 (knight) +# tile 751 (knight) { ................ ................ @@ -14324,7 +14324,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 751 (monk) +# tile 752 (monk) { ................ ................ @@ -14343,7 +14343,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 752 (necromancer) +# tile 753 (necromancer) { ................ .........AAP.... @@ -14362,7 +14362,7 @@ Z = (195, 195, 195) ....AAAAAAAA.... ................ } -# tile 753 (priest) +# tile 754 (priest) { ................ ................ @@ -14381,7 +14381,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 754 (priestess) +# tile 755 (priestess) { ................ .......JJ....... @@ -14400,7 +14400,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 755 (pirate) +# tile 756 (pirate) { ................ .....ADDD....... @@ -14419,7 +14419,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 756 (ranger) +# tile 757 (ranger) { ................ ................ @@ -14438,7 +14438,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 757 (rogue) +# tile 758 (rogue) { ................ ................ @@ -14457,7 +14457,7 @@ Z = (195, 195, 195) .....KKA.KKA.... ................ } -# tile 758 (samurai) +# tile 759 (samurai) { ................ ................ @@ -14476,7 +14476,7 @@ Z = (195, 195, 195) .....IIA.IIA.... ................ } -# tile 759 (tourist) +# tile 760 (tourist) { ................ ................ @@ -14495,7 +14495,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 760 (undead slayer) +# tile 761 (undead slayer) { ................ ................ @@ -14514,7 +14514,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 761 (valkyrie) +# tile 762 (valkyrie) { ................ ................ @@ -14533,7 +14533,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 762 (yeoman) +# tile 763 (yeoman) { ................ .......OHA...... @@ -14552,7 +14552,7 @@ Z = (195, 195, 195) .....DDA.DDA.... ................ } -# tile 763 (wizard) +# tile 764 (wizard) { ................ .........BP..... @@ -14571,7 +14571,7 @@ Z = (195, 195, 195) ....BPPPPPPE.... ................ } -# tile 764 (long worm tail) +# tile 765 (long worm tail) { ........ILLLL... ......IILLAA.... @@ -14590,7 +14590,7 @@ Z = (195, 195, 195) .LLLIIIILLLA.... ...LLLLLAAA..... } -# tile 765 (Nightmare) +# tile 766 (Nightmare) { ................ ................ @@ -14610,7 +14610,7 @@ Z = (195, 195, 195) ................ } -# tile 766 (Beholder) +# tile 767 (Beholder) { ....OA..OA...... ..OA.DADA.OA.OA. @@ -14629,7 +14629,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 767 (Lord Carnarvon) +# tile 768 (Lord Carnarvon) { .......JJ....... ......KJJJ...... @@ -14648,7 +14648,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 768 (Pelias) +# tile 769 (Pelias) { ................ .......JJ....... @@ -14667,7 +14667,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 769 (Shaman Karnov) +# tile 770 (Shaman Karnov) { ................ .......JJA...... @@ -14686,7 +14686,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 770 (Earendil) +# tile 771 (Earendil) { .........G...... ....B..GGF..B... @@ -14705,7 +14705,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 771 (Elwing) +# tile 772 (Elwing) { .........G...... ....B..GGF..B... @@ -14724,7 +14724,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 772 (High Flame Mage) +# tile 773 (High Flame Mage) { .........HD..... ......HHHDC..... @@ -14743,7 +14743,7 @@ Z = (195, 195, 195) ...ADDDDDDDC.... ................ } -# tile 773 (Robert the Lifer) +# tile 774 (Robert the Lifer) { ................ ................ @@ -14762,7 +14762,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 774 (Hippocrates) +# tile 775 (Hippocrates) { ................ ....LLLCCD...... @@ -14781,7 +14781,7 @@ Z = (195, 195, 195) .LCCCCCCCDA..... ................ } -# tile 775 (High Ice Mage) +# tile 776 (High Ice Mage) { .........PN..... ......PPPNB..... @@ -14800,7 +14800,7 @@ Z = (195, 195, 195) ...ANNNNNNNB.... ................ } -# tile 776 (Archbishop of Moloch) +# tile 777 (Archbishop of Moloch) { .INI............ IIIII.KDDK...... @@ -14819,7 +14819,7 @@ Z = (195, 195, 195) ..CADDDJJDDDAA.. ................ } -# tile 777 (Jedi Master) +# tile 778 (Jedi Master) { ......AAAAA..... .....AKLKKLA.... @@ -14838,7 +14838,7 @@ Z = (195, 195, 195) ALLLLLALLLLLLALA ALLLLLALLLLLALA. } -# tile 778 (King Arthur) +# tile 779 (King Arthur) { ................ ................ @@ -14857,7 +14857,7 @@ Z = (195, 195, 195) ....PPAA.PPA.... ................ } -# tile 779 (Master Po) +# tile 780 (Master Po) { ................ .......LL....... @@ -14876,7 +14876,7 @@ Z = (195, 195, 195) ..JACCCCCCCCAA.. ................ } -# tile 780 (Dark Lord) +# tile 781 (Dark Lord) { .........AA..... ......AAAAA..... @@ -14895,7 +14895,7 @@ Z = (195, 195, 195) ...AAAAAAAAA.... ................ } -# tile 781 (Mayor Cummerbund) +# tile 782 (Mayor Cummerbund) { ......AOA....... ....AAOAAAA..... @@ -14914,7 +14914,7 @@ Z = (195, 195, 195) ....JJA.JJA..... ................ } -# tile 782 (Arch Priest) +# tile 783 (Arch Priest) { ..N............. .NNN..JLLJ...... @@ -14933,7 +14933,7 @@ Z = (195, 195, 195) ..HACCCJJCCCAA.. ................ } -# tile 783 (Orion) +# tile 784 (Orion) { ................ ................ @@ -14952,7 +14952,7 @@ Z = (195, 195, 195) ......BPAPAA.A.. .....PPA.PPA.... } -# tile 784 (Master of Thieves) +# tile 785 (Master of Thieves) { ................ ...H.....H...... @@ -14971,7 +14971,7 @@ Z = (195, 195, 195) ...JJA..JJA..... ................ } -# tile 785 (Lord Sato) +# tile 786 (Lord Sato) { .....AAA........ .....AAA........ @@ -14990,7 +14990,7 @@ Z = (195, 195, 195) ..IIIA.IIIAA.... ................ } -# tile 786 (Twoflower) +# tile 787 (Twoflower) { ................ ................ @@ -15009,7 +15009,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 787 (Van Helsing) +# tile 788 (Van Helsing) { ................ .......CDA...... @@ -15028,7 +15028,7 @@ Z = (195, 195, 195) ....KKJA.KJKA... ................ } -# tile 788 (Norn) +# tile 789 (Norn) { ................ ................ @@ -15047,7 +15047,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 789 (Neferet the Green) +# tile 790 (Neferet the Green) { ................ ................ @@ -15066,7 +15066,7 @@ Z = (195, 195, 195) ...BPPPPPPPE.... ................ } -# tile 790 (Chief Yeoman Warder) +# tile 791 (Chief Yeoman Warder) { .......AAA...... .......AAA...... @@ -15085,7 +15085,7 @@ Z = (195, 195, 195) .....HHA.HHA.... ................ } -# tile 791 (Minion of Huhetotl) +# tile 792 (Minion of Huhetotl) { ...OP......PO... ...OODDDDDDOOD.. @@ -15104,7 +15104,7 @@ Z = (195, 195, 195) ..CDDDAAA.DDDK.. ................ } -# tile 792 (Thoth Amon) +# tile 793 (Thoth Amon) { ................ ......OJJO...... @@ -15123,7 +15123,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 793 (Annam) +# tile 794 (Annam) { ....PPDDDDAA.... ....PDDDDDDDA... @@ -15142,7 +15142,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ...LLLLJ.BLLLKAA } -# tile 794 (Warden Arianna) +# tile 795 (Warden Arianna) { ................ ................ diff --git a/win/share/objects.txt b/win/share/objects.txt index dad01beec..f6681a086 100644 --- a/win/share/objects.txt +++ b/win/share/objects.txt @@ -11675,7 +11675,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 570 (forked / fireball) +# tile 613 (forked / fireball) { ................ ................ @@ -11694,7 +11694,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (steel / magic missile) +# tile 614 (steel / magic missile) { ................ ................ @@ -11713,7 +11713,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 614 (hexagonal / fire) +# tile 615 (hexagonal / fire) { ................ ................ @@ -11732,7 +11732,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 615 (short / cold) +# tile 616 (short / cold) { ................ ................ @@ -11751,7 +11751,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 616 (runed / sleep) +# tile 617 (runed / sleep) { ................ ................ @@ -11770,7 +11770,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (long / death) +# tile 618 (long / death) { ................ .............NO. @@ -11789,7 +11789,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (curved / lightning) +# tile 619 (curved / lightning) { ................ .......NO....... @@ -11808,7 +11808,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 619 (octagonal / poison gas) +# tile 620 (octagonal / poison gas) { ................ ................ @@ -11827,7 +11827,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 620 (twisted / corrosion) +# tile 621 (twisted / corrosion) { ................ .............KK. @@ -11846,7 +11846,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 621 (titanium / noise) +# tile 622 (titanium / noise) { ................ ................ @@ -11865,7 +11865,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 622 (driftwood / deluge) +# tile 623 (driftwood / deluge) { ................ ................ @@ -11885,7 +11885,7 @@ Z = (195, 195, 195) ................ } -# tile 570 (spiked) +# tile 624 (spiked) { ................ ................ @@ -11904,7 +11904,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 571 (jeweled) +# tile 625 (jeweled) { ................ ................ @@ -11923,7 +11923,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 572 (gold piece) +# tile 626 (gold piece) { ................ ................ @@ -11942,7 +11942,7 @@ Z = (195, 195, 195) .........HA..... ...........HA... } -# tile 573 (white / dilithium crystal) +# tile 627 (white / dilithium crystal) { ................ ................ @@ -11961,7 +11961,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 574 (white / diamond) +# tile 628 (white / diamond) { ................ ................ @@ -11980,7 +11980,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 575 (red / ruby) +# tile 629 (red / ruby) { ................ ................ @@ -11999,7 +11999,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 576 (orange / jacinth) +# tile 630 (orange / jacinth) { ................ ................ @@ -12018,7 +12018,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 577 (blue / sapphire) +# tile 631 (blue / sapphire) { ................ ................ @@ -12037,7 +12037,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 578 (black / black opal) +# tile 632 (black / black opal) { ................ ................ @@ -12056,7 +12056,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 579 (green / emerald) +# tile 633 (green / emerald) { ................ ................ @@ -12075,7 +12075,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 580 (green / turquoise) +# tile 634 (green / turquoise) { ................ ................ @@ -12094,7 +12094,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 581 (yellow / citrine) +# tile 635 (yellow / citrine) { ................ ................ @@ -12113,7 +12113,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 582 (green / aquamarine) +# tile 636 (green / aquamarine) { ................ ................ @@ -12132,7 +12132,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 583 (yellowish brown / amber) +# tile 637 (yellowish brown / amber) { ................ ................ @@ -12151,7 +12151,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 584 (yellowish brown / topaz) +# tile 638 (yellowish brown / topaz) { ................ ................ @@ -12170,7 +12170,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 585 (black / jet) +# tile 639 (black / jet) { ................ ................ @@ -12189,7 +12189,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 586 (white / opal) +# tile 640 (white / opal) { ................ ................ @@ -12208,7 +12208,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 587 (yellow / chrysoberyl) +# tile 641 (yellow / chrysoberyl) { ................ ................ @@ -12227,7 +12227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 588 (red / garnet) +# tile 642 (red / garnet) { ................ ................ @@ -12246,7 +12246,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 589 (violet / amethyst) +# tile 643 (violet / amethyst) { ................ ................ @@ -12265,7 +12265,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 590 (red / jasper) +# tile 644 (red / jasper) { ................ ................ @@ -12284,7 +12284,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 591 (violet / fluorite) +# tile 645 (violet / fluorite) { ................ ................ @@ -12303,7 +12303,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 592 (black / obsidian) +# tile 646 (black / obsidian) { ................ ................ @@ -12322,7 +12322,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 593 (orange / agate) +# tile 647 (orange / agate) { ................ ................ @@ -12341,7 +12341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 594 (green / jade) +# tile 648 (green / jade) { ................ ................ @@ -12360,7 +12360,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 595 (white / worthless piece of white glass) +# tile 649 (white / worthless piece of white glass) { ................ ................ @@ -12379,7 +12379,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 596 (blue / worthless piece of blue glass) +# tile 650 (blue / worthless piece of blue glass) { ................ ................ @@ -12398,7 +12398,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 597 (red / worthless piece of red glass) +# tile 651 (red / worthless piece of red glass) { ................ ................ @@ -12417,7 +12417,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 598 (yellowish brown / worthless piece of yellowish brown glass) +# tile 652 (yellowish brown / worthless piece of yellowish brown glass) { ................ ................ @@ -12436,7 +12436,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 599 (orange / worthless piece of orange glass) +# tile 653 (orange / worthless piece of orange glass) { ................ ................ @@ -12455,7 +12455,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 600 (yellow / worthless piece of yellow glass) +# tile 654 (yellow / worthless piece of yellow glass) { ................ ................ @@ -12474,7 +12474,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 601 (black / worthless piece of black glass) +# tile 655 (black / worthless piece of black glass) { ................ ................ @@ -12493,7 +12493,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 602 (green / worthless piece of green glass) +# tile 656 (green / worthless piece of green glass) { ................ ................ @@ -12512,7 +12512,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 603 (violet / worthless piece of violet glass) +# tile 657 (violet / worthless piece of violet glass) { ................ ................ @@ -12531,7 +12531,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 604 (gray / luckstone) +# tile 658 (gray / luckstone) { ................ ................ @@ -12550,7 +12550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 605 (gray / healthstone) +# tile 659 (gray / healthstone) { ................ ................ @@ -12569,7 +12569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 606 (gray / loadstone) +# tile 660 (gray / loadstone) { ................ ................ @@ -12588,7 +12588,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 607 (gray / touchstone) +# tile 661 (gray / touchstone) { ................ ................ @@ -12607,7 +12607,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 608 (gray / whetstone) +# tile 662 (gray / whetstone) { ................ ................ @@ -12626,7 +12626,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 609 (gray / flint) +# tile 663 (gray / flint) { ................ ................ @@ -12645,7 +12645,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 610 (shiny / sling bullet) +# tile 664 (shiny / sling bullet) { ................ ................ @@ -12664,7 +12664,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 611 (rock) +# tile 665 (rock) { ................ ................ @@ -12683,7 +12683,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 612 (boulder) +# tile 666 (boulder) { ................ ................ @@ -12702,7 +12702,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (statue) +# tile 667 (statue) { ................ ........JJ...... @@ -12721,7 +12721,7 @@ Z = (195, 195, 195) .....JJJJJJAA... ................ } -# tile 614 (heavy iron ball) +# tile 668 (heavy iron ball) { ................ ................ @@ -12740,7 +12740,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 615 (iron chain) +# tile 669 (iron chain) { ................ ................ @@ -12759,7 +12759,7 @@ Z = (195, 195, 195) ...........PP.PA ............AA.. } -# tile 616 (splash of venom / blinding venom) +# tile 670 (splash of venom / blinding venom) { ................ ................ @@ -12778,7 +12778,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (splash of venom / acid venom) +# tile 671 (splash of venom / acid venom) { ................ ................ @@ -12797,7 +12797,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (snowball) +# tile 672 (snowball) { ................ ................ @@ -12816,7 +12816,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 693 (spike) +# tile 673 (spike) { ................ ................ @@ -12835,7 +12835,7 @@ Z = (195, 195, 195) .......N........ ................ } -# tile 694 (spirit) +# tile 674 (spirit) { ABCDEFGHIJKLMNOP BAAAAAAAAAAAAAAO diff --git a/win/share/other.txt b/win/share/other.txt index 57659030f..be7df2dec 100644 --- a/win/share/other.txt +++ b/win/share/other.txt @@ -768,7 +768,26 @@ Z = (195, 195, 195) NNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNN } -# tile 39 (grass) +# tile 39 (bridge) +{ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJ..JJJJJJJ + JJJJJJ.JJ.JJJJJJ + JJJJJJ.JJ.JJJJJJ + JJJJJJJ..JJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ + JJJJJJJJJJJJJJJJ +} +# tile 40 (grass) { GFFFGFFFFFFGFFFF FFFFFFFFGFFFFGFF @@ -787,7 +806,7 @@ Z = (195, 195, 195) FFFFFFFFFGFFFFFG GFFFGFFFFFFGFFFG } -# tile 40 (molten lava) +# tile 41 (molten lava) { DDDDDDCDDDDDDDDD DDDDDCDKDDDDDDDD @@ -806,7 +825,7 @@ Z = (195, 195, 195) DDDDKKDDDDCDDDDD DDDDDDDDDDDKDDDD } -# tile 41 (vertical open drawbridge) +# tile 42 (vertical open drawbridge) { EKKAKKKKKKKAKKAE EJKKKKKKKKKKKJAA @@ -825,7 +844,7 @@ Z = (195, 195, 195) EEJJJJJJJJJJJAAA EJKKKKKKKKKKKJAA } -# tile 42 (horizontal open drawbridge) +# tile 43 (horizontal open drawbridge) { EEEEEEEEEEEEEEEE JEJKJEJKJEJKJEJK @@ -844,7 +863,7 @@ Z = (195, 195, 195) AAAAAAAAAAAAAAAA AAAEAAAEAAAEAAAE } -# tile 43 (vertical closed drawbridge) +# tile 44 (vertical closed drawbridge) { ................ ..JKJ.JKJ.JKJ... @@ -863,7 +882,7 @@ Z = (195, 195, 195) ...AAA.AAA.AAA.. ................ } -# tile 44 (horizontal closed drawbridge) +# tile 45 (horizontal closed drawbridge) { ................ ..JJJJJJJJJJJ... @@ -882,7 +901,7 @@ Z = (195, 195, 195) ...AAAAAAAAAAA.. ................ } -# tile 45 (air) +# tile 46 (air) { BBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBB @@ -901,7 +920,7 @@ Z = (195, 195, 195) BBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBB } -# tile 46 (cloud) +# tile 47 (cloud) { BBBBBBBBBBBBBBBB BBBBBNNNNNNNBBBB @@ -920,7 +939,7 @@ Z = (195, 195, 195) BBBBBBOOOOBBBBBB BBBBBBBBBBBBBBBB } -# tile 47 (shallow water) +# tile 48 (shallow water) { ..........NNN... .BBBB....NB.BN.. @@ -939,7 +958,7 @@ Z = (195, 195, 195) .B..BB...B..BBB. BB....BBB.....BB } -# tile 48 (sewage) +# tile 49 (sewage) { ..........NNN... .FFFF....NF.FN.. @@ -958,7 +977,7 @@ Z = (195, 195, 195) .F..FF...F..FFF. FF....FFF.....FF } -# tile 49 (water) +# tile 50 (water) { EEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEE @@ -977,7 +996,7 @@ Z = (195, 195, 195) EEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEE } -# tile 50 (arrow trap) +# tile 51 (arrow trap) { ................ .....DDDDD...... @@ -996,7 +1015,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 51 (bolt trap) +# tile 52 (bolt trap) { ................ .....DDDDD...... @@ -1015,7 +1034,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 52 (dart trap) +# tile 53 (dart trap) { ................ .....DDDDD...... @@ -1034,7 +1053,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 53 (falling rock trap) +# tile 54 (falling rock trap) { ................ .....DDDDD...... @@ -1053,7 +1072,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 54 (squeaky board) +# tile 55 (squeaky board) { ................ .....DDDDD...... @@ -1072,7 +1091,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 55 (bear trap) +# tile 56 (bear trap) { ................ .....DDDDD...... @@ -1091,7 +1110,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 56 (land mine) +# tile 57 (land mine) { ................ .....DDDDD...... @@ -1110,7 +1129,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 57 (rolling boulder trap) +# tile 58 (rolling boulder trap) { ................ .....DDDDD...... @@ -1129,7 +1148,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 58 (sleeping gas trap) +# tile 59 (sleeping gas trap) { ................ .....DDDDD...... @@ -1148,7 +1167,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 59 (rust trap) +# tile 60 (rust trap) { ................ .....DDDDD...... @@ -1167,7 +1186,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 60 (fire trap) +# tile 61 (fire trap) { ................ .....DDDDD...... @@ -1186,7 +1205,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 61 (pit) +# tile 62 (pit) { AAAAAAAAAAAAAAAA A.AAAAAAAAAAAABA @@ -1205,7 +1224,7 @@ Z = (195, 195, 195) A.PPPPPPPPPPPPPA AAAAAAAAAAAAAAAA } -# tile 62 (spiked pit) +# tile 63 (spiked pit) { AAAAAAAAAAAAAAAA A.AAAAAAAAAAAABA @@ -1224,7 +1243,7 @@ Z = (195, 195, 195) A.PPPPPPPPPPPPPA AAAAAAAAAAAAAAAA } -# tile 63 (hole) +# tile 64 (hole) { ................ ......AAAA...... @@ -1243,7 +1262,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 64 (trap door) +# tile 65 (trap door) { AAAAAAAAAAAAAAAA A.AAAAAAAAAAAABA @@ -1262,7 +1281,7 @@ Z = (195, 195, 195) A.PPPPPPPPPPPPPA AAAAAAAAAAAAAAAA } -# tile 65 (teleportation trap) +# tile 66 (teleportation trap) { ................ .....DDDDD...... @@ -1281,7 +1300,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 66 (level teleporter) +# tile 67 (level teleporter) { ................ .....DDADD...... @@ -1300,7 +1319,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 67 (magic portal) +# tile 68 (magic portal) { ................ .....DDDDD...... @@ -1319,7 +1338,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 68 (web) +# tile 69 (web) { OAOA.OA...O....O .O.NNNN.NOA..OOA @@ -1338,7 +1357,7 @@ Z = (195, 195, 195) .OA............. OA.............. } -# tile 69 (statue trap) +# tile 70 (statue trap) { ................ .....DDDDD...... @@ -1357,7 +1376,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 70 (magic trap) +# tile 71 (magic trap) { ................ .....DDDDD...... @@ -1376,7 +1395,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 71 (anti-magic field) +# tile 72 (anti-magic field) { ................ ......DDDDD..... @@ -1395,7 +1414,7 @@ Z = (195, 195, 195) .....AAAAA...... ................ } -# tile 72 (polymorph trap) +# tile 73 (polymorph trap) { ................ .....DDDDD...... @@ -1414,7 +1433,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 73 (ice trap) +# tile 74 (ice trap) { ................ ......DDDDD..... @@ -1433,7 +1452,7 @@ Z = (195, 195, 195) .....AAAAA...... ................ } -# tile 74 (spear trap) +# tile 75 (spear trap) { ................ .....DDDDD...... @@ -1452,7 +1471,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 75 (magic beam trap) +# tile 76 (magic beam trap) { ................ .....DDDDD...... @@ -1471,7 +1490,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 76 (vibrating square) +# tile 77 (vibrating square) { ................ ................ @@ -1490,7 +1509,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 77 (vertical beam) +# tile 78 (vertical beam) { .......NN....... ......NN........ @@ -1509,7 +1528,7 @@ Z = (195, 195, 195) .........NN..... ........NN...... } -# tile 78 (horizontal beam) +# tile 79 (horizontal beam) { ................ ................ @@ -1528,7 +1547,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 79 (left slant beam) +# tile 80 (left slant beam) { NNNNN........... ....N........... @@ -1547,7 +1566,7 @@ Z = (195, 195, 195) ............N... ............NNNN } -# tile 80 (right slant beam) +# tile 81 (right slant beam) { ............NNNN ............N... @@ -1566,7 +1585,7 @@ Z = (195, 195, 195) ....N........... NNNNN........... } -# tile 81 (dig beam) +# tile 82 (dig beam) { ....AAAA........ ..A....AA..AA... @@ -1585,7 +1604,7 @@ Z = (195, 195, 195) ....AA....AAA... ................ } -# tile 82 (flash beam) +# tile 83 (flash beam) { ................ .....NNNNNN..... @@ -1604,7 +1623,7 @@ Z = (195, 195, 195) .....NNNNNN..... ................ } -# tile 83 (boom left) +# tile 84 (boom left) { ................ ................ @@ -1623,7 +1642,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 84 (boom right) +# tile 85 (boom right) { ................ ................ @@ -1642,7 +1661,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 85 (shield1) +# tile 86 (shield1) { ................ .....I....I..... @@ -1661,7 +1680,7 @@ Z = (195, 195, 195) .....I....I..... ................ } -# tile 86 (shield2) +# tile 87 (shield2) { ................ .CCCCCCCCCCCCCCC @@ -1680,7 +1699,7 @@ Z = (195, 195, 195) .CCCCCCCCCCCCCC. ................ } -# tile 87 (shield3) +# tile 88 (shield3) { .......HH....... .......HH....... @@ -1699,7 +1718,7 @@ Z = (195, 195, 195) .......HH....... .......HH....... } -# tile 88 (shield4) +# tile 89 (shield4) { ................ ......NNNNN..... @@ -1718,7 +1737,7 @@ Z = (195, 195, 195) .....NNNNN...... ................ } -# tile 89 (poison cloud) +# tile 90 (poison cloud) { BBBBBBBBBBBBBBBB BBBBBFFFFFFFBBBB @@ -1737,7 +1756,7 @@ Z = (195, 195, 195) BBBBBBGGGGBBBBBB BBBBBBBBBBBBBBBB } -# tile 90 (valid position) +# tile 91 (valid position) { ................ ................ @@ -1756,7 +1775,7 @@ Z = (195, 195, 195) .......FF....... ................ } -# tile 91 (swallow top left) +# tile 92 (swallow top left) { AAAAAAADDDDDDAAA AAAAADDDDDDDDDDD @@ -1775,7 +1794,7 @@ Z = (195, 195, 195) AAAADDDDDD...... AAAADDDDDD...... } -# tile 92 (swallow top center) +# tile 93 (swallow top center) { AAAAAAAAAAAAAAAA DDAAAAAAAAAAAAAA @@ -1794,7 +1813,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 93 (swallow top right) +# tile 94 (swallow top right) { AAAAAAAAAAAAAAAA AAADDDDDAAAAAAAA @@ -1813,7 +1832,7 @@ Z = (195, 195, 195) ....DDDDDDDDDDDD ....DDDDDDDDDDDA } -# tile 94 (swallow middle left) +# tile 95 (swallow middle left) { AAAADDDDDD...... AAAADDDDDDD..... @@ -1832,7 +1851,7 @@ Z = (195, 195, 195) DDDDDDD......... DDCCDDD......... } -# tile 95 (swallow middle right) +# tile 96 (swallow middle right) { ....DDDDDDDDDDDA ....DDDDDDDDDDDA @@ -1851,7 +1870,7 @@ Z = (195, 195, 195) ......DDDDDDDDAA .......DDDDDDDAA } -# tile 96 (swallow bottom left ) +# tile 97 (swallow bottom left ) { DDDCDDD......... DDDCDDD......... @@ -1870,7 +1889,7 @@ Z = (195, 195, 195) AAAAAAAAAAAADDDD AAAAAAAAAAAAAADD } -# tile 97 (swallow bottom center) +# tile 98 (swallow bottom center) { ................ ................ @@ -1889,7 +1908,7 @@ Z = (195, 195, 195) DDDDDDDDDDDDDDDD DDDDDDDDDDDDDDAA } -# tile 98 (swallow bottom right) +# tile 99 (swallow bottom right) { ......DDDDDDDDAA ......DDDDDDDDDA @@ -1908,7 +1927,7 @@ Z = (195, 195, 195) DDAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA } -# tile 99 (explosion top left) +# tile 100 (explosion top left) { ................ ................ @@ -1927,7 +1946,7 @@ Z = (195, 195, 195) ..AAAA..AAAA.... ..AAA..AAAAA.... } -# tile 100 (explosion top centre) +# tile 101 (explosion top centre) { ................ ................ @@ -1946,7 +1965,7 @@ Z = (195, 195, 195) ........A.A.APAA .PA...APAAAAAAAA } -# tile 101 (explosion top right) +# tile 102 (explosion top right) { ................ ................ @@ -1965,7 +1984,7 @@ Z = (195, 195, 195) AA.A..A.AAAA.... A.AA..A.AAAAA... } -# tile 102 (explosion middle left) +# tile 103 (explosion middle left) { ..AAA.A.AAA..... ..AAA.AAAAA.AP.. @@ -1984,7 +2003,7 @@ Z = (195, 195, 195) ..A.A...AAP...PA ....A.........PA } -# tile 103 (explosion middle center) +# tile 104 (explosion middle center) { APAAA..PPAPAAAAA .APA..A.AAAPAAA. @@ -2003,7 +2022,7 @@ Z = (195, 195, 195) AAAAAAAAAAAAA.AA AAAAAAAAAAA.HH.. } -# tile 104 (explosion middle right) +# tile 105 (explosion middle right) { ..AAA.A.A.AAAA.. ..AAAAA.A.AAAA.. @@ -2022,7 +2041,7 @@ Z = (195, 195, 195) AAA...AAAAAAA... ....PPAAAAAAAA.. } -# tile 105 (explosion bottom left) +# tile 106 (explosion bottom left) { ....A.......A..P ....A.......AA.. @@ -2041,7 +2060,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 106 (explosion bottom center) +# tile 107 (explosion bottom center) { PPPAAAAAPAAA.A.. AAPPAAPPPPA.A... @@ -2060,7 +2079,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 107 (explosion bottom right) +# tile 108 (explosion bottom right) { ....P..AAAAAAA.. ..A..A.AA.A.AA.. @@ -2079,7 +2098,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 108 (explosion noxious 0) +# tile 109 (explosion noxious 0) { ................ ................ @@ -2098,7 +2117,7 @@ Z = (195, 195, 195) ..FFFF..FFFF.... ..FFF..FFFFF.... } -# tile 109 (explosion noxious 1) +# tile 110 (explosion noxious 1) { ................ ................ @@ -2117,7 +2136,7 @@ Z = (195, 195, 195) ........F.F.FGFF .GH...HGHHFFFFFF } -# tile 110 (explosion noxious 2) +# tile 111 (explosion noxious 2) { ................ ................ @@ -2136,7 +2155,7 @@ Z = (195, 195, 195) FF.F..F.FFFF.... F.FF..F.FFFFF... } -# tile 111 (explosion noxious 3) +# tile 112 (explosion noxious 3) { ..FFF.F.FFF..... ..FFF.FFFFF.FG.. @@ -2155,7 +2174,7 @@ Z = (195, 195, 195) ..F.F...FHG...GH ....F.........GH } -# tile 112 (explosion noxious 4) +# tile 113 (explosion noxious 4) { FGHFF..GGFGHFFFF .HGH..F.FFHGFHF. @@ -2174,7 +2193,7 @@ Z = (195, 195, 195) HHHHNHNHN.GGG.GF GGGGNHHHGGG.HH.. } -# tile 113 (explosion noxious 5) +# tile 114 (explosion noxious 5) { ..FFF.F.F.FFFF.. ..FFFFF.F.FFFF.. @@ -2193,7 +2212,7 @@ Z = (195, 195, 195) HFH...FFFFFFF... ....GGFFFFFFFF.. } -# tile 114 (explosion noxious 6) +# tile 115 (explosion noxious 6) { ....F.......H..G ....F.......FH.. @@ -2212,7 +2231,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 115 (explosion noxious 7) +# tile 116 (explosion noxious 7) { GGGHHHHHGHHH.H.. HHGGHHGGGGH.F... @@ -2231,7 +2250,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 116 (explosion noxious 8) +# tile 117 (explosion noxious 8) { ....G..FFFFFFF.. ..F..F.FF.F.FF.. @@ -2250,7 +2269,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 117 (explosion muddy 0) +# tile 118 (explosion muddy 0) { ................ ................ @@ -2269,7 +2288,7 @@ Z = (195, 195, 195) ..JJJJKKJJJJKKKK ..JJJKKJJJJJKKKK } -# tile 118 (explosion muddy 1) +# tile 119 (explosion muddy 1) { ................ ................ @@ -2288,7 +2307,7 @@ Z = (195, 195, 195) KKKKKKKKJKJKJCJJ KCLKKKLCLLJJJJJJ } -# tile 119 (explosion muddy 2) +# tile 120 (explosion muddy 2) { ................ ................ @@ -2307,7 +2326,7 @@ Z = (195, 195, 195) JJKJKKJKJJJJ.... JKJJKKJKJJJJJ... } -# tile 120 (explosion muddy 3) +# tile 121 (explosion muddy 3) { ..JJJKJKJJJKKKKK ..JJJKJJJJJKJCKK @@ -2326,7 +2345,7 @@ Z = (195, 195, 195) ..J.JKKKJLCKKKCL ....JKKKKKKKKKCL } -# tile 121 (explosion muddy 4) +# tile 122 (explosion muddy 4) { JCLJJKKCCJCLJJJJ KLCLKKJKJJLCJLJK @@ -2345,7 +2364,7 @@ Z = (195, 195, 195) LLLLCLCLCKCCCKCJ CCCCCLLLCCCKLLKK } -# tile 122 (explosion muddy 5) +# tile 123 (explosion muddy 5) { KKJJJKJKJKJJJJ.. KKJJJJJKJKJJJJ.. @@ -2364,7 +2383,7 @@ Z = (195, 195, 195) LJLKKKJJJJJJJ... KKKKCCJJJJJJJJ.. } -# tile 123 (explosion muddy 6) +# tile 124 (explosion muddy 6) { ....JKKKKKKKLKKC ....JKKKKKKKJLKK @@ -2383,7 +2402,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 124 (explosion muddy 7) +# tile 125 (explosion muddy 7) { CCCLLLLLCLLLKLKK LLCCLLCCCCLKJKKK @@ -2402,7 +2421,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 125 (explosion muddy 8) +# tile 126 (explosion muddy 8) { KKKKCKKJJJJJJJ.. KKJKKJKJJKJKJJ.. @@ -2421,7 +2440,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 126 (explosion wet 0) +# tile 127 (explosion wet 0) { ................ ................ @@ -2440,7 +2459,7 @@ Z = (195, 195, 195) ..EEEEPPEEEEPPPP ..EEEPPEEEEEPPPP } -# tile 127 (explosion wet 1) +# tile 128 (explosion wet 1) { ................ ................ @@ -2459,7 +2478,7 @@ Z = (195, 195, 195) PPPPPPPPEPEPEBEE PBNPPPNBEEEEEEEE } -# tile 128 (explosion wet 2) +# tile 129 (explosion wet 2) { ................ ................ @@ -2478,7 +2497,7 @@ Z = (195, 195, 195) EEPEPPEPEEEE.... EPEEPPEPEEEEE... } -# tile 129 (explosion wet 3) +# tile 130 (explosion wet 3) { ..EEEPEPEEEPPPPP ..EEEPEEEEEPEBPP @@ -2497,7 +2516,7 @@ Z = (195, 195, 195) ..E.EPPPENBPPPBE ....EPPPPPPPPPBE } -# tile 130 (explosion wet 4) +# tile 131 (explosion wet 4) { EBNEEPPBBEBNEEEE PNBNPPEPEEEBENEP @@ -2516,7 +2535,7 @@ Z = (195, 195, 195) EEEEEEEEEPBBBPBE BBBBEEEEBBBPNNPP } -# tile 131 (explosion wet 5) +# tile 132 (explosion wet 5) { PPEEEPEPEPEEEE.. PPEEEEEPEPEEEE.. @@ -2535,7 +2554,7 @@ Z = (195, 195, 195) NENPPPEEEEEEE... PPPPBBEEEEEEEE.. } -# tile 132 (explosion wet 6) +# tile 133 (explosion wet 6) { ....EPPPPPPPNPPB ....EPPPPPPPENPP @@ -2554,7 +2573,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 133 (explosion wet 7) +# tile 134 (explosion wet 7) { BBBEEEEEBEEEPEPP EEBBEEBBBBEPEPPP @@ -2573,7 +2592,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 134 (explosion wet 8) +# tile 135 (explosion wet 8) { PPPPBPPEEEEEEE.. PPEPPEPEEPEPEE.. @@ -2592,7 +2611,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 135 (explosion magical 0) +# tile 136 (explosion magical 0) { ................ ................ @@ -2611,7 +2630,7 @@ Z = (195, 195, 195) ..EEEEIIEEEEIIII ..EEEIIEEEEEIIII } -# tile 136 (explosion magical 1) +# tile 137 (explosion magical 1) { ................ ................ @@ -2630,7 +2649,7 @@ Z = (195, 195, 195) IIIIIIIIEIEIELEE ILHIIIHLHHEEEEEE } -# tile 137 (explosion magical 2) +# tile 138 (explosion magical 2) { ................ ................ @@ -2649,7 +2668,7 @@ Z = (195, 195, 195) EEIEIIEIEEEE.... EIEEIIEIEEEEE... } -# tile 138 (explosion magical 3) +# tile 139 (explosion magical 3) { ..EEEIEIEEEIIIII ..EEEIEEEEEIEIII @@ -2668,7 +2687,7 @@ Z = (195, 195, 195) ..E.EIIIENIIIIIN ....EIIIIIIIIIIN } -# tile 139 (explosion magical 4) +# tile 140 (explosion magical 4) { EINEEIIIIEINEEEE ININIIEIEENIENEI @@ -2687,7 +2706,7 @@ Z = (195, 195, 195) NNNNNNNNNIIIIIIE IIIINNNNIIIINNII } -# tile 140 (explosion magical 5) +# tile 141 (explosion magical 5) { IIEEEIEIEIEEEE.. IIEEEEEIEIEEEE.. @@ -2706,7 +2725,7 @@ Z = (195, 195, 195) NENIIIEEEEEEE... IIIIIIEEEEEEEE.. } -# tile 141 (explosion magical 6) +# tile 142 (explosion magical 6) { ....EIIIIIIIHIII ....EIIIIIIIEHII @@ -2725,7 +2744,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 142 (explosion magical 7) +# tile 143 (explosion magical 7) { IIINNNNNINNNINII NNIINNIIIINIEIII @@ -2744,7 +2763,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 143 (explosion magical 8) +# tile 144 (explosion magical 8) { IIIIIIIEEEEEEE.. IIEIIEIEEIEIEE.. @@ -2763,7 +2782,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 144 (explosion fiery 0) +# tile 145 (explosion fiery 0) { ................ ................ @@ -2782,7 +2801,7 @@ Z = (195, 195, 195) ..DDDDCCDDDDCCCC ..DDDCCDDDDDCCCC } -# tile 145 (explosion fiery 1) +# tile 146 (explosion fiery 1) { ................ ................ @@ -2801,7 +2820,7 @@ Z = (195, 195, 195) CCCCCCCCDCDCDLDD CLHCCCHLHHDDDDDD } -# tile 146 (explosion fiery 2) +# tile 147 (explosion fiery 2) { ................ ................ @@ -2820,7 +2839,7 @@ Z = (195, 195, 195) DDCDCCDCDDDD.... DCDDCCDCDDDDD... } -# tile 147 (explosion fiery 3) +# tile 148 (explosion fiery 3) { ..DDDCDCDDDCCCCC ..DDDCDDDDDCDLCC @@ -2839,7 +2858,7 @@ Z = (195, 195, 195) ..D.DCCCDHLCCCLH ....DCCCCCCCCCLH } -# tile 148 (explosion fiery 4) +# tile 149 (explosion fiery 4) { DLHDDCCLLDLHDDDD CHLHCCDCDDHLDHDC @@ -2858,7 +2877,7 @@ Z = (195, 195, 195) HHHHNHNHNCLLLCLD LLLLNHHHLLLCHHCC } -# tile 149 (explosion fiery 5) +# tile 150 (explosion fiery 5) { CCDDDCDCDCDDDD.. CCDDDDDCDCDDDD.. @@ -2877,7 +2896,7 @@ Z = (195, 195, 195) HDHCCCDDDDDDD... CCCCLLDDDDDDDD.. } -# tile 150 (explosion fiery 6) +# tile 151 (explosion fiery 6) { ....DCCCCCCCHCCL ....DCCCCCCCDHCC @@ -2896,7 +2915,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 151 (explosion fiery 7) +# tile 152 (explosion fiery 7) { LLLHHHHHLHHHCHCC HHLLHHLLLLHCDCCC @@ -2915,7 +2934,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 152 (explosion fiery 8) +# tile 153 (explosion fiery 8) { CCCCLCCDDDDDDD.. CCDCCDCDDCDCDD.. @@ -2934,7 +2953,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 153 (explosion frosty 0) +# tile 154 (explosion frosty 0) { ................ ................ @@ -2953,7 +2972,7 @@ Z = (195, 195, 195) ..EEEEPPNBEEPPPP ..EEEPPEEEEEPPPP } -# tile 154 (explosion frosty 1) +# tile 155 (explosion frosty 1) { ................ ................ @@ -2972,7 +2991,7 @@ Z = (195, 195, 195) PPPPPPPPEPEPEBEE PBNPPPNBNNEEEEEE } -# tile 155 (explosion frosty 2) +# tile 156 (explosion frosty 2) { ................ ................ @@ -2991,7 +3010,7 @@ Z = (195, 195, 195) EEPEPPEPEEEE.... EPEEPPEPEEEEE... } -# tile 156 (explosion frosty 3) +# tile 157 (explosion frosty 3) { ..EEEPEPEEEPPPPP ..EEEPEEEEEPEBPP @@ -3010,7 +3029,7 @@ Z = (195, 195, 195) ..E.EPPPENBPPPBN ....EPPPPPPPPPBN } -# tile 157 (explosion frosty 4) +# tile 158 (explosion frosty 4) { EBNEEPPBBEBNEEEE PNBNPPEPEENBENEP @@ -3029,7 +3048,7 @@ Z = (195, 195, 195) NNNNNNNNNPBBBPBE BBBBNNNNBBBPNNPP } -# tile 158 (explosion frosty 5) +# tile 159 (explosion frosty 5) { PPEEEPEPEPEEEE.. PPEEEEEPEPEEEE.. @@ -3048,7 +3067,7 @@ Z = (195, 195, 195) NENPPPEEEEEEE... PPPPBBEEEEEEEE.. } -# tile 159 (explosion frosty 6) +# tile 160 (explosion frosty 6) { ....EPPPPPPPNPPB ....EPPPPPPPENPP @@ -3067,7 +3086,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 160 (explosion frosty 7) +# tile 161 (explosion frosty 7) { BBBNNNNNBNNNPNPP NNBBNNBBBBNPEPPP @@ -3086,7 +3105,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 161 (explosion frosty 8) +# tile 162 (explosion frosty 8) { PPPPBPPEEEEEEE.. PPEPPEPEEPEPEE.. @@ -3105,7 +3124,7 @@ Z = (195, 195, 195) ...........N.... ................ } -# tile 162 (explosion acid 0) +# tile 163 (explosion acid 0) { ................ ................ @@ -3124,7 +3143,7 @@ Z = (195, 195, 195) ..FFFF..FFFF.... ..FFF..FFFFF.... } -# tile 163 (explosion acid 1) +# tile 164 (explosion acid 1) { ................ ................ @@ -3143,7 +3162,7 @@ Z = (195, 195, 195) ........F.F.FGFF .GH...HGHHFFFFFF } -# tile 164 (explosion acid 2) +# tile 165 (explosion acid 2) { ................ ................ @@ -3162,7 +3181,7 @@ Z = (195, 195, 195) FF.F..F.FFFF.... F.FF..F.FFFFF... } -# tile 165 (explosion acid 3) +# tile 166 (explosion acid 3) { ..FFF.F.FFF..... ..FFF.FFFFF.FG.. @@ -3181,7 +3200,7 @@ Z = (195, 195, 195) ..F.F...FHG...GH ....F.........GH } -# tile 166 (explosion acid 4) +# tile 167 (explosion acid 4) { FGHFF..GGFGHFFFF .HGH..F.FFHGFHF. @@ -3200,7 +3219,7 @@ Z = (195, 195, 195) HHHHNHNHN.GGG.GF GGGGNHHHGGG.HH.. } -# tile 167 (explosion acid 5) +# tile 168 (explosion acid 5) { ..FFF.F.F.FFFF.. ..FFFFF.F.FFFF.. @@ -3219,7 +3238,7 @@ Z = (195, 195, 195) HFH...FFFFFFF... ....GGFFFFFFFF.. } -# tile 168 (explosion acid 6) +# tile 169 (explosion acid 6) { ....F.......H..G ....F.......FH.. @@ -3238,7 +3257,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 169 (explosion acid 7) +# tile 170 (explosion acid 7) { GGGHHHHHGHHH.H.. HHGGHHGGGGH.F... @@ -3257,7 +3276,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 170 (explosion acid 8) +# tile 171 (explosion acid 8) { ....G..FFFFFFF.. ..F..F.FF.F.FF.. @@ -3276,7 +3295,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 171 (zap 0 0) +# tile 172 (zap 0 0) { .......II....... ......IIII...... @@ -3295,7 +3314,7 @@ Z = (195, 195, 195) ......IIII...... .......II....... } -# tile 172 (zap 0 1) +# tile 173 (zap 0 1) { ................ ................ @@ -3314,7 +3333,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 173 (zap 0 2) +# tile 174 (zap 0 2) { III............. IIII............ @@ -3333,7 +3352,7 @@ Z = (195, 195, 195) ............IIII .............III } -# tile 174 (zap 0 3) +# tile 175 (zap 0 3) { .............III ............IIII @@ -3352,7 +3371,7 @@ Z = (195, 195, 195) IIII............ III............. } -# tile 175 (zap 1 0) +# tile 176 (zap 1 0) { .......CC....... ......CCCC...... @@ -3371,7 +3390,7 @@ Z = (195, 195, 195) ......CCCC...... .......CC....... } -# tile 176 (zap 1 1) +# tile 177 (zap 1 1) { ................ ................ @@ -3390,7 +3409,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 177 (zap 1 2) +# tile 178 (zap 1 2) { CCC............. CCCC............ @@ -3409,7 +3428,7 @@ Z = (195, 195, 195) ............CCCC .............CCC } -# tile 178 (zap 1 3) +# tile 179 (zap 1 3) { .............CCC ............CCCC @@ -3428,7 +3447,7 @@ Z = (195, 195, 195) CCCC............ CCC............. } -# tile 179 (zap 2 0) +# tile 180 (zap 2 0) { .......NN....... ......NNNN...... @@ -3447,7 +3466,7 @@ Z = (195, 195, 195) ......NNNN...... .......NN....... } -# tile 180 (zap 2 1) +# tile 181 (zap 2 1) { ................ ................ @@ -3466,7 +3485,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 181 (zap 2 2) +# tile 182 (zap 2 2) { NNN............. NNNN............ @@ -3485,7 +3504,7 @@ Z = (195, 195, 195) ............NNNN .............NNN } -# tile 182 (zap 2 3) +# tile 183 (zap 2 3) { .............NNN ............NNNN @@ -3504,7 +3523,7 @@ Z = (195, 195, 195) NNNN............ NNN............. } -# tile 183 (zap 3 0) +# tile 184 (zap 3 0) { .......BB....... ......BBBB...... @@ -3523,7 +3542,7 @@ Z = (195, 195, 195) ......BBBB...... .......BB....... } -# tile 184 (zap 3 1) +# tile 185 (zap 3 1) { ................ ................ @@ -3542,7 +3561,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 185 (zap 3 2) +# tile 186 (zap 3 2) { BBB............. BBBB............ @@ -3561,7 +3580,7 @@ Z = (195, 195, 195) ............BBBB .............BBB } -# tile 186 (zap 3 3) +# tile 187 (zap 3 3) { .............BBB ............BBBB @@ -3580,7 +3599,7 @@ Z = (195, 195, 195) BBBB............ BBB............. } -# tile 187 (zap 4 0) +# tile 188 (zap 4 0) { .......AA....... ......AAAA...... @@ -3599,7 +3618,7 @@ Z = (195, 195, 195) ......AAAA...... .......AA....... } -# tile 188 (zap 4 1) +# tile 189 (zap 4 1) { ................ ................ @@ -3618,7 +3637,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 189 (zap 4 2) +# tile 190 (zap 4 2) { AAA............. AAAA............ @@ -3637,7 +3656,7 @@ Z = (195, 195, 195) ............AAAA .............AAA } -# tile 190 (zap 4 3) +# tile 191 (zap 4 3) { .............AAA ............AAAA @@ -3656,7 +3675,7 @@ Z = (195, 195, 195) AAAA............ AAA............. } -# tile 191 (zap 5 0) +# tile 192 (zap 5 0) { .......NN....... ......NNNN...... @@ -3675,7 +3694,7 @@ Z = (195, 195, 195) ......NNNN...... .......NN....... } -# tile 192 (zap 5 1) +# tile 193 (zap 5 1) { ................ ................ @@ -3694,7 +3713,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 193 (zap 5 2) +# tile 194 (zap 5 2) { NNN............. NNNN............ @@ -3713,7 +3732,7 @@ Z = (195, 195, 195) ............NNNN .............NNN } -# tile 194 (zap 5 3) +# tile 195 (zap 5 3) { .............NNN ............NNNN @@ -3732,7 +3751,7 @@ Z = (195, 195, 195) NNNN............ NNN............. } -# tile 195 (zap 6 0) +# tile 196 (zap 6 0) { .......FF....... ......FFFF...... @@ -3751,7 +3770,7 @@ Z = (195, 195, 195) ......FFFF...... .......FF....... } -# tile 196 (zap 6 1) +# tile 197 (zap 6 1) { ................ ................ @@ -3770,7 +3789,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 197 (zap 6 2) +# tile 198 (zap 6 2) { FFF............. FFFF............ @@ -3789,7 +3808,7 @@ Z = (195, 195, 195) ............FFFF .............FFF } -# tile 198 (zap 6 3) +# tile 199 (zap 6 3) { .............FFF ............FFFF @@ -3808,7 +3827,7 @@ Z = (195, 195, 195) FFFF............ FFF............. } -# tile 199 (zap 7 0) +# tile 200 (zap 7 0) { .......GG....... ......GGGG...... @@ -3827,7 +3846,7 @@ Z = (195, 195, 195) ......GGGG...... .......GG....... } -# tile 200 (zap 7 1) +# tile 201 (zap 7 1) { ................ ................ @@ -3846,7 +3865,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 201 (zap 7 2) +# tile 202 (zap 7 2) { GGG............. GGGG............ @@ -3865,7 +3884,7 @@ Z = (195, 195, 195) ............GGGG .............GGG } -# tile 202 (zap 7 3) +# tile 203 (zap 7 3) { .............GGG ............GGGG @@ -3884,7 +3903,7 @@ Z = (195, 195, 195) GGGG............ GGG............. } -# tile 203 (zap 8 0) +# tile 204 (zap 8 0) { .......PP....... ......PPPP...... @@ -3903,7 +3922,7 @@ Z = (195, 195, 195) ......PPPP...... .......PP....... } -# tile 204 (zap 8 1) +# tile 205 (zap 8 1) { ................ ................ @@ -3922,7 +3941,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 205 (zap 8 2) +# tile 206 (zap 8 2) { PPP............. PPPP............ @@ -3941,7 +3960,7 @@ Z = (195, 195, 195) ............PPPP .............PPP } -# tile 206 (zap 8 3) +# tile 207 (zap 8 3) { .............PPP ............PPPP @@ -3960,7 +3979,7 @@ Z = (195, 195, 195) PPPP............ PPP............. } -# tile 207 (zap 9 0) +# tile 208 (zap 9 0) { .......NN....... ......NNNN...... @@ -3979,7 +3998,7 @@ Z = (195, 195, 195) ......NNNN...... .......NN....... } -# tile 208 (zap 9 1) +# tile 209 (zap 9 1) { ................ ................ @@ -3998,7 +4017,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 209 (zap 9 2) +# tile 210 (zap 9 2) { NNN............. NNNN............ @@ -4017,7 +4036,7 @@ Z = (195, 195, 195) ............NNNN .............NNN } -# tile 210 (zap 9 3) +# tile 211 (zap 9 3) { .............NNN ............NNNN @@ -4036,7 +4055,7 @@ Z = (195, 195, 195) NNNN............ NNN............. } -# tile 211 (warning 0) +# tile 212 (warning 0) { ................ ................ @@ -4055,7 +4074,7 @@ Z = (195, 195, 195) .......AA....... ................ } -# tile 212 (warning 1) +# tile 213 (warning 1) { ................ ................ @@ -4074,7 +4093,7 @@ Z = (195, 195, 195) .......AA....... ................ } -# tile 213 (warning 2) +# tile 214 (warning 2) { ................ ................ @@ -4093,7 +4112,7 @@ Z = (195, 195, 195) .......AA....... ................ } -# tile 214 (warning 3) +# tile 215 (warning 3) { ................ ................ @@ -4112,7 +4131,7 @@ Z = (195, 195, 195) .......AA....... ................ } -# tile 215 (warning 4) +# tile 216 (warning 4) { ................ ................ @@ -4131,7 +4150,7 @@ Z = (195, 195, 195) .......AA....... ................ } -# tile 216 (warning 5) +# tile 217 (warning 5) { ................ ................ @@ -4150,7 +4169,7 @@ Z = (195, 195, 195) .......AA....... ................ } -# tile 217 (sub mine walls 0) +# tile 218 (sub mine walls 0) { AJJKKKACJAAJJJAA AJKKKACLJJAJJJJA @@ -4169,7 +4188,7 @@ Z = (195, 195, 195) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 218 (sub mine walls 1) +# tile 219 (sub mine walls 1) { AJAAAAAAJJAAAJAA JJJAAAJJJJJAAAAJ @@ -4188,7 +4207,7 @@ Z = (195, 195, 195) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 219 (sub mine walls 2) +# tile 220 (sub mine walls 2) { AAAAAAKCCKKJAAAA AAAAKKCLCJKJJAAA @@ -4207,7 +4226,7 @@ Z = (195, 195, 195) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 220 (sub mine walls 3) +# tile 221 (sub mine walls 3) { AAAAAAKCCKKJAAAA AAAAKKCLCJKJJAAA @@ -4226,7 +4245,7 @@ Z = (195, 195, 195) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 221 (sub mine walls 4) +# tile 222 (sub mine walls 4) { AKKKAAKKKKAAJJJA AKKAAKCCCJJJAAJA @@ -4245,7 +4264,7 @@ Z = (195, 195, 195) AJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 222 (sub mine walls 5) +# tile 223 (sub mine walls 5) { AKKAAAKKAAAAJJJA AKAAKKLCKAAAAAJA @@ -4264,7 +4283,7 @@ Z = (195, 195, 195) JJJJJJJJJJJJJJJA AAAAAAAAAAAAAAAA } -# tile 223 (sub mine walls 6) +# tile 224 (sub mine walls 6) { AAAAAAKCCKKJAAAA AAAAKCCLCJKJJAAA @@ -4283,7 +4302,7 @@ Z = (195, 195, 195) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 224 (sub mine walls 7) +# tile 225 (sub mine walls 7) { AKKAAAKKKKAAJJJA AKAAKKLCCJJJAAJA @@ -4302,7 +4321,7 @@ Z = (195, 195, 195) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 225 (sub mine walls 8) +# tile 226 (sub mine walls 8) { AAAAAAKCCKKJAAAA AAAAKCCLCJKJJAAA @@ -4321,7 +4340,7 @@ Z = (195, 195, 195) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 226 (sub mine walls 9) +# tile 227 (sub mine walls 9) { AKKAACKCCKKJAJJA AKACKKKLLJKJJAJA @@ -4340,7 +4359,7 @@ Z = (195, 195, 195) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 227 (sub mine walls 10) +# tile 228 (sub mine walls 10) { AKKAACKCCKKJAJJA AKACKKCLCJKJJAJA @@ -4359,7 +4378,7 @@ Z = (195, 195, 195) AAJACKCKKJJJAJAA AAJCKKJAAAJJJJJA } -# tile 228 (sub gehennom walls 0) +# tile 229 (sub gehennom walls 0) { ALLDAJ11111JLLDA ADDDAJ1J11JJDDDA @@ -4378,7 +4397,7 @@ Z = (195, 195, 195) AJJJAJJ1111JJJJA AD11AJJ1111JD1JA } -# tile 229 (sub gehennom walls 1) +# tile 230 (sub gehennom walls 1) { AAALDDAAAAALDDAA DDDLDDAJDDDLDDAJ @@ -4397,7 +4416,7 @@ Z = (195, 195, 195) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 230 (sub gehennom walls 2) +# tile 231 (sub gehennom walls 2) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4416,7 +4435,7 @@ Z = (195, 195, 195) AJJJAJJ1111JJJJA AD11AJJ1111JD1JA } -# tile 231 (sub gehennom walls 3) +# tile 232 (sub gehennom walls 3) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4435,7 +4454,7 @@ Z = (195, 195, 195) AJJJAJJ1111JJJJA AD11AJJ1111JD1JA } -# tile 232 (sub gehennom walls 4) +# tile 233 (sub gehennom walls 4) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4454,7 +4473,7 @@ Z = (195, 195, 195) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 233 (sub gehennom walls 5) +# tile 234 (sub gehennom walls 5) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4473,7 +4492,7 @@ Z = (195, 195, 195) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 234 (sub gehennom walls 6) +# tile 235 (sub gehennom walls 6) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4492,7 +4511,7 @@ Z = (195, 195, 195) AJJJAJJ1111JJJJA AD11AJJ1111JD1JA } -# tile 235 (sub gehennom walls 7) +# tile 236 (sub gehennom walls 7) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4511,7 +4530,7 @@ Z = (195, 195, 195) JJJJJJJJJJJJJJJJ AAAAAAAAAAAAAAAA } -# tile 236 (sub gehennom walls 8) +# tile 237 (sub gehennom walls 8) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4530,7 +4549,7 @@ Z = (195, 195, 195) AJJJAJJ1111JJJJA AD11AJJ1111JD1JA } -# tile 237 (sub gehennom walls 9) +# tile 238 (sub gehennom walls 9) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4549,7 +4568,7 @@ Z = (195, 195, 195) AJJJAJJ1111JJJJA AD11AJJ1111JD1JA } -# tile 238 (sub gehennom walls 10) +# tile 239 (sub gehennom walls 10) { AAALLLLDDDDDDAAA LLLLAAJJ1111DJJJ @@ -4568,7 +4587,7 @@ Z = (195, 195, 195) AJJJAJJ1111JJJJA AD11AJJ1111JD1JA } -# tile 239 (sub knox walls 0) +# tile 240 (sub knox walls 0) { AJJJAAACJAAAJJJA AJJJAACLJJAAJJJA @@ -4587,7 +4606,7 @@ Z = (195, 195, 195) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 240 (sub knox walls 1) +# tile 241 (sub knox walls 1) { AJAAAJAAAJAAAJAA JJJAAAJAJJJAAAJA @@ -4606,7 +4625,7 @@ Z = (195, 195, 195) KJJACJJAKJJACJJA AAAAAAAAAAAAAAAA } -# tile 241 (sub knox walls 2) +# tile 242 (sub knox walls 2) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4625,7 +4644,7 @@ Z = (195, 195, 195) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 242 (sub knox walls 3) +# tile 243 (sub knox walls 3) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4644,7 +4663,7 @@ Z = (195, 195, 195) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 243 (sub knox walls 4) +# tile 244 (sub knox walls 4) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4663,7 +4682,7 @@ Z = (195, 195, 195) KJJACJJAKJJACJJA AAAAAAAAAAAAAAAA } -# tile 244 (sub knox walls 5) +# tile 245 (sub knox walls 5) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4682,7 +4701,7 @@ Z = (195, 195, 195) KJJACJJAKJJACJJA AAAAAAAAAAAAAAAA } -# tile 245 (sub knox walls 6) +# tile 246 (sub knox walls 6) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4701,7 +4720,7 @@ Z = (195, 195, 195) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 246 (sub knox walls 7) +# tile 247 (sub knox walls 7) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4720,7 +4739,7 @@ Z = (195, 195, 195) KJJACJJAKJJACJJA AAAAAAAAAAAAAAAA } -# tile 247 (sub knox walls 8) +# tile 248 (sub knox walls 8) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4739,7 +4758,7 @@ Z = (195, 195, 195) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 248 (sub knox walls 9) +# tile 249 (sub knox walls 9) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4758,7 +4777,7 @@ Z = (195, 195, 195) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 249 (sub knox walls 10) +# tile 250 (sub knox walls 10) { AAAAAAKCJKAAAAAA AAAAKKCLKJKKAAAA @@ -4777,7 +4796,7 @@ Z = (195, 195, 195) AAJAAACKKJAAAJAA ACJJAAAAAAAACJJA } -# tile 250 (sub sokoban walls 0) +# tile 251 (sub sokoban walls 0) { ANNBA1EEEEE1NNBA ABBBA1E1EE11BBBA @@ -4796,7 +4815,7 @@ Z = (195, 195, 195) A111A11EEEE1111A ABEEA11EEEE1BE1A } -# tile 251 (sub sokoban walls 1) +# tile 252 (sub sokoban walls 1) { AAANBBAAAAANBBAA BBBNBBA1BBBNBBA1 @@ -4815,7 +4834,7 @@ Z = (195, 195, 195) 1111111111111111 AAAAAAAAAAAAAAAA } -# tile 252 (sub sokoban walls 2) +# tile 253 (sub sokoban walls 2) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 @@ -4834,7 +4853,7 @@ Z = (195, 195, 195) A111A11EEEE1111A ABEEA11EEEE1BE1A } -# tile 253 (sub sokoban walls 3) +# tile 254 (sub sokoban walls 3) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 @@ -4853,7 +4872,7 @@ Z = (195, 195, 195) A111A11EEEE1111A ABEEA11EEEE1BE1A } -# tile 254 (sub sokoban walls 4) +# tile 255 (sub sokoban walls 4) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 @@ -4872,7 +4891,7 @@ Z = (195, 195, 195) 1111111111111111 AAAAAAAAAAAAAAAA } -# tile 255 (sub sokoban walls 5) +# tile 256 (sub sokoban walls 5) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 @@ -4891,7 +4910,7 @@ Z = (195, 195, 195) 1111111111111111 AAAAAAAAAAAAAAAA } -# tile 256 (sub sokoban walls 6) +# tile 257 (sub sokoban walls 6) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 @@ -4910,7 +4929,7 @@ Z = (195, 195, 195) A111A11EEEE1111A ABEEA11EEEE1BE1A } -# tile 257 (sub sokoban walls 7) +# tile 258 (sub sokoban walls 7) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 @@ -4929,7 +4948,7 @@ Z = (195, 195, 195) 1111111111111111 AAAAAAAAAAAAAAAA } -# tile 258 (sub sokoban walls 8) +# tile 259 (sub sokoban walls 8) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 @@ -4948,7 +4967,7 @@ Z = (195, 195, 195) A111A11EEEE1111A ABEEA11EEEE1BE1A } -# tile 259 (sub sokoban walls 9) +# tile 260 (sub sokoban walls 9) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 @@ -4967,7 +4986,7 @@ Z = (195, 195, 195) A111A11EEEE1111A ABEEA11EEEE1BE1A } -# tile 260 (sub sokoban walls 10) +# tile 261 (sub sokoban walls 10) { AAANNNNBBBBBBAAA NNNNAA11EEEEB111 diff --git a/win/share/tilemap.c b/win/share/tilemap.c index e2ba84d7d..7f3c7e20f 100644 --- a/win/share/tilemap.c +++ b/win/share/tilemap.c @@ -556,6 +556,7 @@ struct { {S_vent, "vent", "vent"}, {S_pool, "pool", "water"}, {S_ice, "ice", "ice"}, +{S_bridge, "rope bridge", "rope bridge"}, {S_grass, "grass", "grass"}, {S_lava, "lava", "molten lava"}, {S_vodbridge, "vertical open drawbridge", "lowered drawbridge"}, From a91e3558872516d231ca9b52b888836e4ffe3ae8 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 15:46:50 +0100 Subject: [PATCH 43/82] Fix: Possible bad weap check in spec_dbon. --- src/artifact.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/artifact.c b/src/artifact.c index 8e434e550..2f0946874 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -1594,7 +1594,7 @@ int tmp; int dbon = 0, adtype; spec_dbon_applies = FALSE; - if (weap->otyp == CRYSKNIFE && otmp->otyp != CRYSKNIFE) + if (weap && weap->otyp == CRYSKNIFE && otmp->otyp != CRYSKNIFE) return 0; if (!weap && otmp->oprops From da170ac4d5bdfddbdb185ed14eee7f3211aeb177 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 19:49:01 +0100 Subject: [PATCH 44/82] Fix: calculate_flankers: youflanker and youattack both TRUE! Fixes #523. Applied the same fix as for issue #397. --- src/monst.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/monst.c b/src/monst.c index 9a3e7674c..242977167 100644 --- a/src/monst.c +++ b/src/monst.c @@ -1674,9 +1674,9 @@ NEARDATA struct permonst mons[] = { * replaced it with stealing. */ MON("dream thief", S_NYMPH, /* SpliceHack */ LVL(14, 15, 4, 40, 0), (G_NOHELL | 1), - A(ATTK(AT_CLAW, AD_CURS, 0, 0), - ATTK(AT_MAGC, AD_PSYC, 5, 5), + A(ATTK(AT_CLAW, AD_CURS, 0, 0), ATTK(AT_CLAW, AD_SITM, 0, 0), + ATTK(AT_MAGC, AD_PSYC, 5, 5), NO_ATTK, NO_ATTK, NO_ATTK), SIZ(600, 300, MS_SEDUCE, MZ_HUMAN), 0, 0, M1_HUMANOID | M1_TPORT | M1_FLY, From 589af2d97e83fe16ea5bdca4616708a218b50549 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 21:54:06 +0100 Subject: [PATCH 45/82] Ported drain life and stun rays over from EvilHack. Implemented them into deep dragons and shimmering dragons. --- include/display.h | 2 +- include/hack.h | 5 ++- include/monattk.h | 16 +++++----- src/decl.c | 22 ++++++++------ src/explode.c | 2 +- src/monst.c | 4 +-- src/mthrowu.c | 14 ++++----- src/pager.c | 4 +-- src/polyself.c | 5 ++- src/trap.c | 31 ++++++++----------- src/u_init.c | 5 +-- src/zap.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 131 insertions(+), 56 deletions(-) diff --git a/include/display.h b/include/display.h index a35864578..5a80520b1 100644 --- a/include/display.h +++ b/include/display.h @@ -295,7 +295,7 @@ * * The following are offsets used to convert to and from a glyph. */ -#define NUM_ZAP 10 /* number of zap beam types */ +#define NUM_ZAP 12 /* number of zap beam types */ #define GLYPH_MON_OFF 0 #define GLYPH_PET_OFF (NUMMONS + GLYPH_MON_OFF) diff --git a/include/hack.h b/include/hack.h index 4115daa4f..01199420c 100644 --- a/include/hack.h +++ b/include/hack.h @@ -206,8 +206,11 @@ enum bhit_call_types { #define ZT_ACID (AD_ACID - 1) #define ZT_SONIC (AD_LOUD - 1) #define ZT_WATER (AD_WATR - 1) +#define ZT_DRAIN (AD_DRLI - 1) +#define ZT_STUN (AD_STUN - 1) -#define MAX_ZT (ZT_WATER + 1) +#define MAX_AD (AD_STUN) +#define MAX_ZT (ZT_STUN + 1) #define BASE_ZT(x) ((x) % MAX_ZT) diff --git a/include/monattk.h b/include/monattk.h index fa10410da..fc1c57873 100644 --- a/include/monattk.h +++ b/include/monattk.h @@ -48,13 +48,15 @@ #define AD_DRST 7 /* drains str (poison) */ #define AD_ACID 8 /* acid damage */ #define AD_LOUD 9 /* sound damage */ -#define AD_WATR 10 /* water (physical) attack (prev AD_SPC1 of buzz() */ -#define AD_PSYC 11 /* psionic attack (prev AD_SPC2 of buzz() */ -#define AD_BLND 12 /* blinds (yellow light) */ -#define AD_STUN 13 /* stuns */ -#define AD_SLOW 14 /* slows */ -#define AD_PLYS 15 /* paralyses */ -#define AD_DRLI 16 /* drains life levels (Vampire) */ +#define AD_WATR 10 /* water (physical) attack */ +#define AD_DRLI 11 /* drains life levels (Vampire) */ +#define AD_STUN 12 /* stuns */ +/* End of ray attacks */ + +#define AD_PSYC 13 /* psionic attack */ +#define AD_BLND 14 /* blinds (yellow light) */ +#define AD_SLOW 15 /* slows */ +#define AD_PLYS 16 /* paralyses */ #define AD_DREN 17 /* drains magic energy */ #define AD_LEGS 18 /* damages legs (xan) */ #define AD_STON 19 /* petrifies (Medusa, cockatrice) */ diff --git a/src/decl.c b/src/decl.c index 813425829..161ae02d2 100644 --- a/src/decl.c +++ b/src/decl.c @@ -179,18 +179,20 @@ NEARDATA int force_mintrap = 0; * (They're only used in mapglyph.c so probably shouldn't be here.) */ const int zapcolors[NUM_ZAP] = { - HI_ZAP, /* 0 - missile */ - CLR_ORANGE, /* 1 - fire */ - CLR_WHITE, /* 2 - frost */ - HI_ZAP, /* 3 - sleep */ - CLR_BLACK, /* 4 - death */ - CLR_WHITE, /* 5 - lightning */ + HI_ZAP, /* 0 - missile */ + CLR_ORANGE, /* 1 - fire */ + CLR_BRIGHT_CYAN,/* 2 - frost */ + HI_ZAP, /* 3 - sleep */ + CLR_BLACK, /* 4 - death */ + CLR_WHITE, /* 5 - lightning */ /* 3.6.3: poison gas zap used to be yellow and acid zap was green, which conflicted with the corresponding dragon colors */ - CLR_GREEN, /* 6 - poison gas */ - CLR_YELLOW, /* 7 - acid */ - CLR_CYAN, /* 8 - sonic */ - CLR_BLUE, /* 9 - water */ + CLR_GREEN, /* 6 - poison gas */ + CLR_YELLOW, /* 7 - acid */ + CLR_CYAN, /* 8 - sonic */ + CLR_BLUE, /* 9 - water */ + CLR_MAGENTA, /* 10 - drain life */ + CLR_RED, /* 11 - stun */ }; #endif /* text color */ diff --git a/src/explode.c b/src/explode.c index b21c2fe9b..fa946713e 100644 --- a/src/explode.c +++ b/src/explode.c @@ -1024,7 +1024,7 @@ struct attack *mattk; if (mattk->adtyp == AD_PHYS) { type = PHYS_EXPL_TYPE; - } else if (mattk->adtyp >= AD_MAGM && mattk->adtyp <= AD_WATR) { + } else if (mattk->adtyp >= AD_MAGM && mattk->adtyp <= MAX_AD) { /* Set it up as a 'monster breath' type for the explosions (it isn't, * but this is the closest analogue). */ type = -(ZT_BREATH(mattk->adtyp - 1)); diff --git a/src/monst.c b/src/monst.c index 242977167..a4a303ad4 100644 --- a/src/monst.c +++ b/src/monst.c @@ -3482,7 +3482,7 @@ NEARDATA struct permonst mons[] = { 0, 0, MH_DRAGON, 30, DRAGON_SILVER), MON("shimmering dragon", S_DRAGON, /* Evilhack/Slash'EM */ LVL(17, 9, -1, 20, 4), (G_GENO | 1), - A(ATTK(AT_BREA, AD_MAGM, 4, 6), + A(ATTK(AT_BREA, AD_STUN, 4, 6), ATTK(AT_BITE, AD_PHYS, 4, 8), ATTK(AT_CLAW, AD_PHYS, 4, 4), ATTK(AT_CLAW, AD_PHYS, 4, 4), @@ -3495,7 +3495,7 @@ NEARDATA struct permonst mons[] = { 0, 0, MH_DRAGON, 30, CLR_CYAN), MON("deep dragon", S_DRAGON, /* Slash'EM */ LVL(20, 9, -4, 20, -6), (G_GENO | 3), - A(ATTK(AT_BREA, AD_DRST, 4, 6), + A(ATTK(AT_BREA, AD_DRLI, 4, 6), ATTK(AT_BITE, AD_DRLI, 4, 8), ATTK(AT_CLAW, AD_PHYS, 4, 4), ATTK(AT_CLAW, AD_PHYS, 4, 4), diff --git a/src/mthrowu.c b/src/mthrowu.c index 67bcc3a37..c53dc086d 100644 --- a/src/mthrowu.c +++ b/src/mthrowu.c @@ -22,8 +22,8 @@ STATIC_DCL int FDECL(drop_throw, (struct monst *, struct obj *, BOOLEAN_P, int, */ STATIC_OVL NEARDATA const char *breathwep[] = { "fragments", "fire", "frost", "sleep gas", "a disintegration blast", - "lightning", "poison gas", "acid", "sound", - "water" + "lightning", "poison gas", "acid", "noise", "water", + "a dark energy blast", "a disorienting blast", "strange breath #12" }; extern boolean notonhead; /* for long worms */ @@ -1214,8 +1214,7 @@ breamm(mtmp, mattk, mtarg) struct monst *mtmp, *mtarg; struct attack *mattk; { - /* if new breath types are added, change AD_ACID to max type */ - int typ = (mattk->adtyp == AD_RBRE) ? rnd(AD_WATR) : mattk->adtyp ; + int typ = (mattk->adtyp == AD_RBRE) ? rnd(MAX_AD) : mattk->adtyp ; boolean player_resists = FALSE; if (mlined_up(mtmp, mtarg, TRUE)) { @@ -1239,7 +1238,7 @@ struct attack *mattk; } if (!mtmp->mspec_used && rn2(3)) { - if ((typ >= AD_MAGM) && (typ <= AD_WATR)) { + if ((typ >= AD_MAGM) && (typ <= MAX_AD)) { if (canseemon(mtmp)) pline("%s breathes %s!", Monnam(mtmp), breathwep[typ - 1]); dobuzz((int) -ZT_BREATH(typ - 1), (int) mattk->damn, @@ -1479,8 +1478,7 @@ breamu(mtmp, mattk) struct monst *mtmp; struct attack *mattk; { - /* if new breath types are added, change max type */ - int typ = (mattk->adtyp == AD_RBRE) ? rnd(AD_WATR) : mattk->adtyp; + int typ = (mattk->adtyp == AD_RBRE) ? rnd(MAX_AD) : mattk->adtyp; if (lined_up(mtmp)) { if (mtmp->mcan) { @@ -1493,7 +1491,7 @@ struct attack *mattk; return 0; } if (!mtmp->mspec_used && rn2(3)) { - if ((typ >= AD_MAGM) && (typ <= AD_WATR)) { + if ((typ >= AD_MAGM) && (typ <= MAX_AD)) { if (canseemon(mtmp)) pline("%s breathes %s!", Monnam(mtmp), breathwep[typ - 1]); diff --git a/src/pager.c b/src/pager.c index 49d668e43..6faacae2a 100644 --- a/src/pager.c +++ b/src/pager.c @@ -725,9 +725,9 @@ static const char * damagetypes[] = { "shock", "strength poison", "acid", - "sonic", /* prev AD_SPC2 */ + "sonic", "water", - "psionic", /* prev AD_SPC1 */ + "psionic", "blind", "stun", "slow", diff --git a/src/polyself.c b/src/polyself.c index 32f2eab7d..414627b1c 100644 --- a/src/polyself.c +++ b/src/polyself.c @@ -1447,9 +1447,8 @@ dobreathe() else if (!u.dx && !u.dy && !u.dz) ubreatheu(mattk); else if (youmonst.data == &mons[PM_CRYSTAL_GOLEM]) { - /* Extra handling for AD_RBRE - player might poly into a crystal - * golem. */ - uchar adtyp = mattk->adtyp == AD_RBRE ? rnd(AD_WATR) : mattk->adtyp; + /* Extra handling for AD_RBRE - crystal golem. */ + uchar adtyp = mattk->adtyp == AD_RBRE ? rnd(MAX_AD) : mattk->adtyp; buzz((int) ZT_BREATH(AD_to_ZT(adtyp)), (int) mattk->damn, u.ux, u.uy, u.dx, u.dy); } else diff --git a/src/trap.c b/src/trap.c index 850e97122..ddf49fa57 100644 --- a/src/trap.c +++ b/src/trap.c @@ -6842,25 +6842,18 @@ randomray() { /* Here we can randomize the beam type, so it isn't the same */ /* no AD_DISN, thanks */ - switch (rn2(10)) { - case 0: - return -ZT_BREATH(ZT_FIRE); - case 1: - return -ZT_SPELL(ZT_COLD); - case 2: - return -ZT_SPELL(ZT_SLEEP); - case 3: - return -ZT_BREATH(ZT_LIGHTNING); - case 4: - return -ZT_BREATH(ZT_POISON_GAS); - case 5: - return -ZT_BREATH(ZT_ACID); - case 6: - return -ZT_SPELL(ZT_SONIC); - case 7: - return -ZT_SPELL(ZT_WATER); - default: - return -ZT_SPELL(ZT_MAGIC_MISSILE); + switch (rn2(12)) { + case 0: return -ZT_BREATH(ZT_FIRE); + case 1: return -ZT_SPELL(ZT_COLD); + case 2: return -ZT_SPELL(ZT_SLEEP); + case 3: return -ZT_BREATH(ZT_LIGHTNING); + case 4: return -ZT_BREATH(ZT_POISON_GAS); + case 5: return -ZT_BREATH(ZT_ACID); + case 6: return -ZT_SPELL(ZT_SONIC); + case 7: return -ZT_SPELL(ZT_WATER); + case 8: return -ZT_BREATH(ZT_DRAIN); + case 9: return -ZT_BREATH(ZT_STUN); + default: return -ZT_SPELL(ZT_MAGIC_MISSILE); } } diff --git a/src/u_init.c b/src/u_init.c index da05afb1a..24929783a 100644 --- a/src/u_init.c +++ b/src/u_init.c @@ -1766,8 +1766,9 @@ int damg_melee_types [] = int damg_breath_types [] = { AD_MAGM, AD_FIRE, AD_COLD, AD_SLEE, AD_ELEC, - AD_DRST, AD_WATR, AD_ACID, AD_LOUD - }; + AD_DRST, AD_ACID, AD_LOUD, AD_WATR, AD_DRLI, + AD_STUN + }; int damg_spit_types [] = { AD_BLND, AD_ACID, AD_DRST }; diff --git a/src/zap.c b/src/zap.c index fa7f0627a..2b6af22fc 100644 --- a/src/zap.c +++ b/src/zap.c @@ -55,6 +55,8 @@ const char *const flash_types[] = /* also used in buzzmu(mcastu.c) */ "acid stream", /*ZT_ACID*/ "sonic beam", /*ZT_SONIC*/ "water stream", /*ZT_WATER*/ + "drain beam", /*ZT_*/ + "stun beam", "magic missile", "fireball", @@ -66,6 +68,8 @@ const char *const flash_types[] = /* also used in buzzmu(mcastu.c) */ "blast of acid", "sonic beam", "water stream", + "blast of dark energy", + "disorienting blast", "blast of missiles", "blast of fire", @@ -77,6 +81,8 @@ const char *const flash_types[] = /* also used in buzzmu(mcastu.c) */ "blast of acid", "sonic blast", "blast of water", + "blast of dark energy", + "disorienting blast" }; /* @@ -5169,6 +5175,27 @@ struct obj **ootmp; /* to return worn armor for caller to disintegrate */ case ZT_WATER: tmp = delugehitsm(mon, d(nd, 8)); break; + case ZT_DRAIN: { + int drain = monhp_per_lvl(mon); + + tmp = d(nd, 6); + if (resists_drli(mon) || defended(mon, AD_DRLI)) { + sho_shieldeff = TRUE; + /* physical damage still occurs */ + break; + } + mon_losexp(mon, drain, TRUE); + break; + } + case ZT_STUN: + if (resists_stun(mon->data) || defended(mon, AD_STUN)) { + sho_shieldeff = TRUE; + break; + } + tmp = d(nd, 6); + if (!mon->mstun) + mon->mstun = 1; + break; } if (elemental_shift(mon, abstype)) { sho_shieldeff = TRUE; @@ -5416,6 +5443,44 @@ xchar sx, sy; case ZT_WATER: dam = delugehitsu(nd); break; + case ZT_DRAIN: { + const char *life = nonliving(youmonst.data) ? "animating force" + : "life"; + + /* will still take physical damage from the force of + the breath attack, even if drain resistant */ + dam = d(nd, 6); + if (Half_physical_damage) + dam = (dam + 1) / 2; + if (Drain_resistance) { + ugolemeffects(AD_DRLI, d(nd, 6)); + break; + } + + if (Reflecting) { + You("feel drained..."); + u.uhpmax -= dam / 2 + rn2(5); + } else { + if (Blind) + You_feel("a dark energy blast draining your %s!", + life); + else + pline_The("dark energy blast drains your %s!", + life); + losexp("life drainage"); + } + break; + } + case ZT_STUN: + /* will still take physical damage from the force of + the breath attack, even if stun resistant */ + dam = d(nd, 6); + if (Half_physical_damage) + dam = (dam + 1) / 2; + if (Stun_resistance) + shieldeff(sx, sy); /* resistance handled in make_stunned() */ + make_stunned((HStun & TIMEOUT) + (long) dam / (Reflecting ? 4 : 2), TRUE); + break; } /* Half_spell_damage protection yields half-damage for wands & spells, @@ -5818,6 +5883,18 @@ boolean say; /* Announce out of sight hit/miss events if true */ pline("%s resists the death magic, but appears drained!", Monnam(mon)); } + if (abstype == ZT_DRAIN) { + const char *life = nonliving(mon->data) ? "animating force" + : "life"; + + if (canseemon(mon)) { + if (resists_drli(mon) || defended(mon, AD_DRLI)) + pline("%s appears unaffected.", Monnam(mon)); + else + pline_The("blast draws the %s from %s!", + life, mon_nam(mon)); + } + } print_mon_wounded(mon, saved_mhp); } } else { From 6a008495eddd19ada0b6c40bf1eca1e98406a79e Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 23:37:21 +0100 Subject: [PATCH 46/82] New item: flash bombs. Acts as a stun grenade, stunning and blinding those caught in it's blast. --- include/obj.h | 1 + src/apply.c | 3 +- src/explode.c | 45 ++ src/objects.c | 1 + src/pager.c | 5 +- src/shknam.c | 3 +- src/weapon.c | 1 + src/zap.c | 3 + win/share/objects.txt | 1131 +++++++++++++++++++++-------------------- 9 files changed, 632 insertions(+), 561 deletions(-) diff --git a/include/obj.h b/include/obj.h index c9762f65d..c14a409a9 100644 --- a/include/obj.h +++ b/include/obj.h @@ -211,6 +211,7 @@ struct obj { #define is_bomb(otmp) \ (otmp->otyp == FIRE_BOMB \ || otmp->otyp == SONIC_BOMB \ + || otmp->otyp == FLASH_BOMB \ || otmp->otyp == GAS_BOMB) #define matching_launcher(a, l) \ ((l) && objects[(a)->otyp].oc_skill == -objects[(l)->otyp].oc_skill) diff --git a/src/apply.c b/src/apply.c index 20fdcb206..7e1a3def5 100644 --- a/src/apply.c +++ b/src/apply.c @@ -5302,8 +5302,9 @@ doapply() (obj->altmode ? "semi-automatic" : "full automatic")); break; case FIRE_BOMB: - case GAS_BOMB: case SONIC_BOMB: + case FLASH_BOMB: + case GAS_BOMB: handle_bomb(obj, TRUE); break; case SPOON: diff --git a/src/explode.c b/src/explode.c index fa946713e..60ad811ac 100644 --- a/src/explode.c +++ b/src/explode.c @@ -187,6 +187,10 @@ int expltype; adstr = "sonic boom"; adtyp = AD_LOUD; break; + case 11: + adstr = "stun blast"; + adtyp = AD_STUN; + break; default: impossible("explosion base type %d?", type); return; @@ -239,6 +243,10 @@ int expltype; explmask[i][j] = (how_resistant(SONIC_RES) > 50); physical_dmg = TRUE; break; + case AD_STUN: + explmask[i][j] = !!Stun_resistance; + physical_dmg = TRUE; + break; default: impossible("explosion type %d?", adtyp); break; @@ -289,6 +297,10 @@ int expltype; explmask[i][j] |= resists_sonic(mtmp) || defended(mtmp, AD_LOUD); break; + case AD_STUN: + explmask[i][j] |= resists_stun(mtmp->data) + || defended(mtmp, AD_STUN); + break; default: impossible("explosion type %d?", adtyp); break; @@ -434,6 +446,9 @@ int expltype; case AD_LOUD: adj = "a case of the hiccups"; break; + case AD_STUN: + adj = "indigestion"; + break; default: adj = "fried"; break; @@ -465,6 +480,9 @@ int expltype; case AD_LOUD: adj = "blasted"; break; + case AD_STUN: + adj = "flashed"; + break; default: adj = "fried"; break; @@ -481,6 +499,21 @@ int expltype; if (adtyp == AD_FIRE) { (void) burnarmor(mtmp); } + if (adtyp == AD_STUN) { + if (!mtmp->mstun) + mtmp->mstun = 1; + + if (can_blnd(&youmonst, mtmp, AT_EXPL, (struct obj *) 0)) { + int tmp = dam; + if (!Blind && mtmp->mcansee) + pline("%s is blinded.", Monnam(mtmp)); + mtmp->mcansee = 0; + tmp += mtmp->mblinded; + if (tmp > 127) + tmp = 127; + mtmp->mblinded = tmp; + } + } if (mon_underwater(mtmp) && (adtyp == AD_FIRE || adtyp == AD_ACID || adtyp == AD_LOUD)) { ; /* nothing happens */ @@ -582,6 +615,17 @@ int expltype; if (!Underwater) burn_away_slime(); } + if (adtyp == AD_STUN) { + make_stunned((HStun & TIMEOUT) + (long) damu, FALSE); + if (can_blnd(mtmp, &youmonst, AT_EXPL, (struct obj *) 0)) { + if (uarmh && uarmh->otyp == PLASTEEL_HELM) { + Your("shaded visor protects you from the flash."); + } else if (!Blind) { + You("are blinded by the flash!"); + make_blinded(Blinded + (long) damu, FALSE); + } + } + } if (Invulnerable) { damu = 0; You("are unharmed!"); @@ -981,6 +1025,7 @@ const int adtyp; case AD_SPEL: case AD_DREN: case AD_ENCH: + case AD_STUN: return EXPL_MAGICAL; case AD_LOUD: return EXPL_DARK; diff --git a/src/objects.c b/src/objects.c index 1742bd645..4dceb324f 100644 --- a/src/objects.c +++ b/src/objects.c @@ -421,6 +421,7 @@ BULLET("shotgun shell", "red tube", 1, 1, 2, 7, 30, 45, 0, WP_SHELL, P, IRO BULLET("rocket", None, 1, 0,100,450, 45, 60, 0, WP_ROCKET, P, IRON, -P_FIREARM, CLR_GREEN), BULLET("fire bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, -P_FIREARM, CLR_GREEN), /* Slash'EM */ BULLET("sonic bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, -P_FIREARM, CLR_BLACK), /* Slash'EM */ +BULLET("flash bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, -P_FIREARM, CLR_BLACK), /* Slash'EM */ BULLET("gas bomb", "bomb", 0, 1,10, 50, 0, 0, 0, WP_BOMB, B, IRON, -P_FIREARM, CLR_ORANGE), /* Slash'EM */ #undef P diff --git a/src/pager.c b/src/pager.c index 6faacae2a..31be0ce93 100644 --- a/src/pager.c +++ b/src/pager.c @@ -1195,9 +1195,8 @@ char *usr_text; if (skill == 0) { /* TODO: We can't use is_bomb(dummy) or is_bomb(&dummy) */ if ((obj && is_bomb(obj)) || - (otyp == FIRE_BOMB \ - || otyp == SONIC_BOMB \ - || otyp == GAS_BOMB) ) + (otyp == FIRE_BOMB || otyp == SONIC_BOMB \ + || otyp == FLASH_BOMB || otyp == GAS_BOMB)) Sprintf(buf, "Thrown bomb using no specific skill."); else Sprintf(buf, "%s-handed weapon%s using no weapon skill.", diff --git a/src/shknam.c b/src/shknam.c index 7b9901f70..ecc96b816 100644 --- a/src/shknam.c +++ b/src/shknam.c @@ -417,7 +417,8 @@ const struct shclass shtypes[] = { { 13, -SHOTGUN_SHELL }, { 2, -FIRE_BOMB }, { 2, -GAS_BOMB }, - { 2, -SONIC_BOMB }, + { 1, -SONIC_BOMB }, + { 1, -FLASH_BOMB }, { 1, -CAN_OF_GREASE }, { 1, -POT_OIL }, { 1, -TOWEL }, diff --git a/src/weapon.c b/src/weapon.c index 268cdd035..dbf6546ec 100644 --- a/src/weapon.c +++ b/src/weapon.c @@ -946,6 +946,7 @@ int x; static NEARDATA const int rwep[] = { FIRE_BOMB, SONIC_BOMB, + FLASH_BOMB, GAS_BOMB, ROCKET, DWARVISH_SPEAR, diff --git a/src/zap.c b/src/zap.c index 2b6af22fc..c39c1b95e 100644 --- a/src/zap.c +++ b/src/zap.c @@ -7587,6 +7587,9 @@ bomb_explode(struct obj *obj, int x, int y, boolean isyou) } else if (obj->otyp == SONIC_BOMB) { ztype = ZT_SPELL(ZT_SONIC) * yours; expltype = EXPL_FROSTY * yours * -1; + } else if (obj->otyp == FLASH_BOMB) { + ztype = ZT_SPELL(ZT_STUN) * yours; + expltype = EXPL_MAGICAL * yours * -1; } else impossible("Invalid bomb otyp for bomb_explode!"); diff --git a/win/share/objects.txt b/win/share/objects.txt index 5aaf34d47..6725695a6 100644 --- a/win/share/objects.txt +++ b/win/share/objects.txt @@ -2345,7 +2345,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 122 (bomb / gas bomb) +# tile 122 (bomb / flash bomb) { ................ ................ @@ -2364,7 +2364,26 @@ Z = (195, 195, 195) ................ ................ } -# tile 123 (conical hat / dunce cap) +# tile 123 (bomb / gas bomb) +{ + ................ + ................ + ................ + ..........N..... + ..........N..... + ...........N.... + ..........N..... + .......FFF...... + ......FGGFF..... + .....FGNGFFF.... + .....FGGFFFF.... + .....FFFFFFA.... + ......FFFFFA.... + .......FFFA..... + ................ + ................ +} +# tile 124 (conical hat / dunce cap) { ................ .......E........ @@ -2383,7 +2402,7 @@ Z = (195, 195, 195) ....EEEEEEE..... ................ } -# tile 124 (conical hat / cornuthaum) +# tile 125 (conical hat / cornuthaum) { ................ .......E........ @@ -2402,7 +2421,7 @@ Z = (195, 195, 195) ....EEEEEEE..... ................ } -# tile 125 (fedora) +# tile 126 (fedora) { ................ ................ @@ -2421,7 +2440,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 126 (toque) +# tile 127 (toque) { ................ ................ @@ -2440,7 +2459,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 127 (hat / elven helm) +# tile 128 (hat / elven helm) { ................ ................ @@ -2459,7 +2478,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 128 (skull cap / orcish helm) +# tile 129 (skull cap / orcish helm) { ................ ................ @@ -2478,7 +2497,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 129 (hard hat / dwarvish helm) +# tile 130 (hard hat / dwarvish helm) { ................ ................ @@ -2497,7 +2516,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 130 (plasteel helm) +# tile 131 (plasteel helm) { ................ ................ @@ -2516,7 +2535,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 131 (dented pot) +# tile 132 (dented pot) { ................ ................ @@ -2535,7 +2554,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 132 (plumed helmet / helmet) +# tile 133 (plumed helmet / helmet) { .......DID...... ......DIBI...... @@ -2554,7 +2573,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 133 (etched helmet / helm of brilliance) +# tile 134 (etched helmet / helm of brilliance) { ................ ................ @@ -2573,7 +2592,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 134 (crested helmet / helm of opposite alignment) +# tile 135 (crested helmet / helm of opposite alignment) { ................ ................ @@ -2592,7 +2611,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 135 (winged helmet / helm of speed) +# tile 136 (winged helmet / helm of speed) { ................ ................ @@ -2611,7 +2630,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 136 (fearsome helmet / tinfoil hat) +# tile 137 (fearsome helmet / tinfoil hat) { ................ ................ @@ -2630,7 +2649,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 137 (top hat / helm of madness) +# tile 138 (top hat / helm of madness) { ................ ................ @@ -2649,7 +2668,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 138 (visored helmet / helm of telepathy) +# tile 139 (visored helmet / helm of telepathy) { ................ ................ @@ -2668,7 +2687,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 139 (gray dragon scales) +# tile 140 (gray dragon scales) { ................ ................ @@ -2687,7 +2706,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 140 (silver dragon scales) +# tile 141 (silver dragon scales) { ................ ................ @@ -2706,7 +2725,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 141 (shimmering dragon scales) +# tile 142 (shimmering dragon scales) { ................ ................ @@ -2725,7 +2744,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 142 (deep dragon scales) +# tile 143 (deep dragon scales) { ................ ................ @@ -2744,7 +2763,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 143 (red dragon scales) +# tile 144 (red dragon scales) { ................ ................ @@ -2763,7 +2782,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 144 (white dragon scales) +# tile 145 (white dragon scales) { ................ ................ @@ -2782,7 +2801,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 145 (orange dragon scales) +# tile 146 (orange dragon scales) { ................ ................ @@ -2801,7 +2820,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 146 (violet dragon scales) +# tile 147 (violet dragon scales) { ................ ................ @@ -2820,7 +2839,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 147 (black dragon scales) +# tile 148 (black dragon scales) { ................ ................ @@ -2839,7 +2858,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 148 (blue dragon scales) +# tile 149 (blue dragon scales) { ................ ................ @@ -2858,7 +2877,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 149 (green dragon scales) +# tile 150 (green dragon scales) { ................ ................ @@ -2877,7 +2896,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 150 (gold dragon scales) +# tile 151 (gold dragon scales) { ................ ................ @@ -2896,7 +2915,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 151 (sea dragon scales) +# tile 152 (sea dragon scales) { ................ ................ @@ -2915,7 +2934,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 152 (yellow dragon scales) +# tile 153 (yellow dragon scales) { ................ ................ @@ -2934,7 +2953,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 153 (plate mail) +# tile 154 (plate mail) { ................ ................ @@ -2953,7 +2972,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 154 (crystal plate mail) +# tile 155 (crystal plate mail) { ................ ................ @@ -2972,7 +2991,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 155 (splint mail) +# tile 156 (splint mail) { ................ ................ @@ -2991,7 +3010,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 156 (large splint mail) +# tile 157 (large splint mail) { ................ ................ @@ -3010,7 +3029,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 157 (banded mail) +# tile 158 (banded mail) { ................ ................ @@ -3029,7 +3048,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 158 (plasteel armor) +# tile 159 (plasteel armor) { .AUNUAA......... AUUUNUAAAA...... @@ -3048,7 +3067,7 @@ Z = (195, 195, 195) ...AAUNA........ ....AAAA........ } -# tile 159 (chain mail) +# tile 160 (chain mail) { ................ ................ @@ -3067,7 +3086,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 160 (dwarvish chain mail) +# tile 161 (dwarvish chain mail) { ................ ................ @@ -3086,7 +3105,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 161 (elven chain mail) +# tile 162 (elven chain mail) { ................ ...N.N.NO.O.O... @@ -3105,7 +3124,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 162 (crude chain mail / orcish chain mail) +# tile 163 (crude chain mail / orcish chain mail) { ................ ................ @@ -3124,7 +3143,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 163 (scale mail) +# tile 164 (scale mail) { ................ ................ @@ -3143,7 +3162,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 164 (studded armor) +# tile 165 (studded armor) { ................ ................ @@ -3162,7 +3181,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 165 (ring mail) +# tile 166 (ring mail) { ................ ................ @@ -3181,7 +3200,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 166 (crude ring mail / orcish ring mail) +# tile 167 (crude ring mail / orcish ring mail) { ................ ................ @@ -3200,7 +3219,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 167 (light armor) +# tile 168 (light armor) { ................ ................ @@ -3219,7 +3238,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 168 (jacket) +# tile 169 (jacket) { ................ ................ @@ -3238,7 +3257,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 169 (red robe / robe) +# tile 170 (red robe / robe) { ................ ......OOO....... @@ -3257,7 +3276,7 @@ Z = (195, 195, 195) ....OOOOOOOOA... ................ } -# tile 170 (large robe) +# tile 171 (large robe) { ................ ......XXX....... @@ -3276,7 +3295,7 @@ Z = (195, 195, 195) ...AXXXXXXAAA... ....AAAAAAAA.... } -# tile 171 (blue robe / robe of protection) +# tile 172 (blue robe / robe of protection) { ................ ......OOO....... @@ -3295,7 +3314,7 @@ Z = (195, 195, 195) ....OOOOOOOOA... ................ } -# tile 172 (orange robe / robe of power) +# tile 173 (orange robe / robe of power) { ................ ......OOO....... @@ -3314,7 +3333,7 @@ Z = (195, 195, 195) ....OOOOOOOOA... ................ } -# tile 173 (green robe / robe of weakness) +# tile 174 (green robe / robe of weakness) { ................ ......OOO....... @@ -3333,7 +3352,7 @@ Z = (195, 195, 195) ....OOOOOOOOA... ................ } -# tile 174 (Hawaiian shirt) +# tile 175 (Hawaiian shirt) { ................ ................ @@ -3352,7 +3371,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 175 (striped shirt) +# tile 176 (striped shirt) { ................ ................ @@ -3371,7 +3390,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 176 (ruffled shirt) +# tile 177 (ruffled shirt) { ................ ................ @@ -3390,7 +3409,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 177 (T-shirt) +# tile 178 (T-shirt) { ................ ................ @@ -3409,7 +3428,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 178 (mummy wrapping) +# tile 179 (mummy wrapping) { ................ ................ @@ -3428,7 +3447,7 @@ Z = (195, 195, 195) ..N.AAN.NA.OO... ................ } -# tile 179 (faded pall / elven cloak) +# tile 180 (faded pall / elven cloak) { ................ ................ @@ -3447,7 +3466,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 180 (coarse mantelet / orcish cloak) +# tile 181 (coarse mantelet / orcish cloak) { ................ ................ @@ -3466,7 +3485,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 181 (hooded cloak / dwarvish cloak) +# tile 182 (hooded cloak / dwarvish cloak) { ................ ................ @@ -3485,7 +3504,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 182 (slippery cloak / oilskin cloak) +# tile 183 (slippery cloak / oilskin cloak) { ................ ................ @@ -3504,7 +3523,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 183 (apron / alchemy smock) +# tile 184 (apron / alchemy smock) { ................ ................ @@ -3523,7 +3542,7 @@ Z = (195, 195, 195) .....NNNNNAA.... ......AAAAA..... } -# tile 184 (green coat) +# tile 185 (green coat) { ................ ................ @@ -3542,7 +3561,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 185 (plain cloak) +# tile 186 (plain cloak) { ................ ................ @@ -3561,7 +3580,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 186 (tattered cape / cloak of protection) +# tile 187 (tattered cape / cloak of protection) { ................ ................ @@ -3580,7 +3599,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 187 (opera cloak / cloak of invisibility) +# tile 188 (opera cloak / cloak of invisibility) { ................ ......NNN....... @@ -3599,7 +3618,7 @@ Z = (195, 195, 195) ..AANNNNNNAOOAA. ....AAAAAAAAAA.. } -# tile 188 (feathery cloak / cloak of flight) +# tile 189 (feathery cloak / cloak of flight) { ................ ......EEE....... @@ -3618,7 +3637,7 @@ Z = (195, 195, 195) ..AAEEEEEEOEEAA. ....AAAAAAAAAA.. } -# tile 189 (ornamental cope / cloak of magic resistance) +# tile 190 (ornamental cope / cloak of magic resistance) { ................ ................ @@ -3637,7 +3656,7 @@ Z = (195, 195, 195) ..AAAAAAAAAAAP.. ...PPPPPPPPPPP.. } -# tile 190 (dirty rag / poisonous cloak) +# tile 191 (dirty rag / poisonous cloak) { ................ ................ @@ -3656,7 +3675,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 191 (funeral shroud / mana cloak) +# tile 192 (funeral shroud / mana cloak) { ................ ......SSS....... @@ -3675,7 +3694,7 @@ Z = (195, 195, 195) ..RRSSSSSSRSSRR. ....RRRRRRRRRR.. } -# tile 192 (dusty cloak / cloak of displacement) +# tile 193 (dusty cloak / cloak of displacement) { ................ ................ @@ -3694,7 +3713,7 @@ Z = (195, 195, 195) .....PPPPPAA.... .......PPAA..... } -# tile 193 (small shield) +# tile 194 (small shield) { ................ ................ @@ -3713,7 +3732,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 194 (blue and green shield / elven shield) +# tile 195 (blue and green shield / elven shield) { ................ ................ @@ -3732,7 +3751,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 195 (tower shield) +# tile 196 (tower shield) { ...N........O... ...NNNNNOOOOO... @@ -3751,7 +3770,7 @@ Z = (195, 195, 195) ...NNNNNNOOOOA.. ...AAAAAAAAAAA.. } -# tile 196 (white-handed shield / Uruk-hai shield) +# tile 197 (white-handed shield / Uruk-hai shield) { ................ ...K.KKKJJJ.J... @@ -3770,7 +3789,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 197 (red-eyed shield / orcish shield) +# tile 198 (red-eyed shield / orcish shield) { ................ ................ @@ -3789,7 +3808,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 198 (large shield) +# tile 199 (large shield) { ................ ...N.NNNOOO.O... @@ -3808,7 +3827,7 @@ Z = (195, 195, 195) ........AA...... ................ } -# tile 199 (hide shield) +# tile 200 (hide shield) { ................ ................ @@ -3827,7 +3846,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 200 (large round shield / dwarvish roundshield) +# tile 201 (large round shield / dwarvish roundshield) { ................ ................ @@ -3846,7 +3865,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 201 (polished shield / shield of reflection) +# tile 202 (polished shield / shield of reflection) { ................ ................ @@ -3865,7 +3884,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 202 (shiny shield / shield of light) +# tile 203 (shiny shield / shield of light) { ................ ................ @@ -3884,7 +3903,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 203 (humming shield / resonant shield) +# tile 204 (humming shield / resonant shield) { ................ ................ @@ -3903,7 +3922,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 204 (slippery shield / shield of mobility) +# tile 205 (slippery shield / shield of mobility) { ................ ................ @@ -3922,7 +3941,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 205 (old gloves / gloves) +# tile 206 (old gloves / gloves) { ................ ................ @@ -3941,7 +3960,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 206 (falconry gloves / gauntlets) +# tile 207 (falconry gloves / gauntlets) { ................ ................ @@ -3960,7 +3979,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 207 (riding gloves / gauntlets of power) +# tile 208 (riding gloves / gauntlets of power) { ................ ................ @@ -3979,7 +3998,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 208 (fine gloves / rogues gloves) +# tile 209 (fine gloves / rogues gloves) { ................ ................ @@ -3998,7 +4017,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 209 (boxing gloves / gauntlets of force) +# tile 210 (boxing gloves / gauntlets of force) { ................ ................ @@ -4017,7 +4036,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 210 (gardening gloves / gauntlets of protection) +# tile 211 (gardening gloves / gauntlets of protection) { ................ ................ @@ -4036,7 +4055,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 211 (padded gloves / gauntlets of fumbling) +# tile 212 (padded gloves / gauntlets of fumbling) { ................ ................ @@ -4055,7 +4074,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 212 (black gloves / gauntlets of swimming) +# tile 213 (black gloves / gauntlets of swimming) { ................ ................ @@ -4074,7 +4093,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 213 (fencing gloves / gauntlets of dexterity) +# tile 214 (fencing gloves / gauntlets of dexterity) { ................ ................ @@ -4093,7 +4112,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 214 (white gloves / plasteel gloves) +# tile 215 (white gloves / plasteel gloves) { ................ ................ @@ -4112,7 +4131,7 @@ Z = (195, 195, 195) .........AAA.... ................ } -# tile 215 (walking shoes / low boots) +# tile 216 (walking shoes / low boots) { ................ ................ @@ -4131,7 +4150,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 216 (white boots / plasteel boots) +# tile 217 (white boots / plasteel boots) { ................ ................ @@ -4150,7 +4169,7 @@ Z = (195, 195, 195) .AAONNA...AAAA.. ...AAAA......... } -# tile 217 (hard shoes / dwarvish boots) +# tile 218 (hard shoes / dwarvish boots) { ................ ................ @@ -4169,7 +4188,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 218 (crude shoes / orcish boots) +# tile 219 (crude shoes / orcish boots) { ................ ................ @@ -4189,7 +4208,7 @@ Z = (195, 195, 195) ................ } -# tile 219 (jackboots / high boots) +# tile 220 (jackboots / high boots) { .......CCKKKK... ......CKAAAAJJ.. @@ -4208,7 +4227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 220 (combat boots / speed boots) +# tile 221 (combat boots / speed boots) { ................ ................ @@ -4227,7 +4246,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 221 (jungle boots / water walking boots) +# tile 222 (jungle boots / water walking boots) { ................ ................ @@ -4246,7 +4265,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 222 (hiking boots / jumping boots) +# tile 223 (hiking boots / jumping boots) { ................ ................ @@ -4265,7 +4284,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 223 (steel-toed boots / stomping boots) +# tile 224 (steel-toed boots / stomping boots) { ................ ................ @@ -4284,7 +4303,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 224 (mud boots / elven boots) +# tile 225 (mud boots / elven boots) { ................ ................ @@ -4303,7 +4322,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 225 (buckled boots / kicking boots) +# tile 226 (buckled boots / kicking boots) { ................ ................ @@ -4322,7 +4341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 226 (riding boots / fumble boots) +# tile 227 (riding boots / fumble boots) { ................ ................ @@ -4341,7 +4360,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 227 (snow boots / levitation boots) +# tile 228 (snow boots / levitation boots) { ................ ................ @@ -4360,7 +4379,7 @@ Z = (195, 195, 195) ...A.A.A.A.A.A.. ................ } -# tile 228 (spiral / adornment) +# tile 229 (spiral / adornment) { ................ ................ @@ -4379,7 +4398,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 229 (puzzle / gain constitution) +# tile 230 (puzzle / gain constitution) { ................ ................ @@ -4398,7 +4417,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 230 (pyramid / gain strength) +# tile 231 (pyramid / gain strength) { ................ ................ @@ -4417,7 +4436,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 231 (rhombus / increase accuracy) +# tile 232 (rhombus / increase accuracy) { ................ ................ @@ -4436,7 +4455,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 232 (teardrop / increase damage) +# tile 233 (teardrop / increase damage) { ................ ................ @@ -4455,7 +4474,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 233 (knotted / protection) +# tile 234 (knotted / protection) { ................ ................ @@ -4474,7 +4493,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 234 (glittery / carrying) +# tile 235 (glittery / carrying) { ................ ................ @@ -4493,7 +4512,7 @@ Z = (195, 195, 195) ...N............ ................ } -# tile 235 (mobius / regeneration) +# tile 236 (mobius / regeneration) { ................ ................ @@ -4512,7 +4531,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 236 (infinity / searching) +# tile 237 (infinity / searching) { ................ ................ @@ -4531,7 +4550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 237 (viney / stealth) +# tile 238 (viney / stealth) { ................ ................ @@ -4550,7 +4569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 238 (braided / sustain ability) +# tile 239 (braided / sustain ability) { ................ ................ @@ -4569,7 +4588,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 239 (antique / levitation) +# tile 240 (antique / levitation) { ................ ................ @@ -4588,7 +4607,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 240 (scaled / hunger) +# tile 241 (scaled / hunger) { ................ ................ @@ -4607,7 +4626,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 241 (crescent / aggravate monster) +# tile 242 (crescent / aggravate monster) { ................ ................ @@ -4626,7 +4645,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 242 (chunky / conflict) +# tile 243 (chunky / conflict) { ................ ................ @@ -4645,7 +4664,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 243 (tribal / warning) +# tile 244 (tribal / warning) { ................ ................ @@ -4664,7 +4683,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 244 (rustic / poison resistance) +# tile 245 (rustic / poison resistance) { ................ ................ @@ -4683,7 +4702,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 245 (retro / fire resistance) +# tile 246 (retro / fire resistance) { ................ ................ @@ -4702,7 +4721,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 246 (exotic / cold resistance) +# tile 247 (exotic / cold resistance) { ................ ................ @@ -4721,7 +4740,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 247 (embossed / sonic resistance) +# tile 248 (embossed / sonic resistance) { ................ ................ @@ -4740,7 +4759,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 248 (floral / shock resistance) +# tile 249 (floral / shock resistance) { ................ ................ @@ -4759,7 +4778,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 249 (twisted / free action) +# tile 250 (twisted / free action) { ................ ................ @@ -4778,7 +4797,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 250 (bohemian / slow digestion) +# tile 251 (bohemian / slow digestion) { ................ ................ @@ -4797,7 +4816,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 251 (vintage / teleportation) +# tile 252 (vintage / teleportation) { ................ ................ @@ -4816,7 +4835,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 252 (cosmic / teleport control) +# tile 253 (cosmic / teleport control) { ................ ................ @@ -4835,7 +4854,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 253 (star / polymorph) +# tile 254 (star / polymorph) { ................ ................ @@ -4854,7 +4873,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 254 (minimalist / polymorph control) +# tile 255 (minimalist / polymorph control) { ................ ................ @@ -4873,7 +4892,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 255 (wire / invisibility) +# tile 256 (wire / invisibility) { ................ ................ @@ -4892,7 +4911,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 256 (engagement / see invisible) +# tile 257 (engagement / see invisible) { ................ ................ @@ -4911,7 +4930,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 257 (ridged / mood) +# tile 258 (ridged / mood) { ................ ................ @@ -4930,7 +4949,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 258 (wedding / sleeping) +# tile 259 (wedding / sleeping) { ................ ................ @@ -4949,7 +4968,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 259 (neon / displacement) +# tile 260 (neon / displacement) { ................ ................ @@ -4968,7 +4987,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 260 (shiny / protection from shape changers) +# tile 261 (shiny / protection from shape changers) { ................ ................ @@ -4987,7 +5006,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 261 (cubic) +# tile 262 (cubic) { ................ ................ @@ -5006,7 +5025,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 262 (angular) +# tile 263 (angular) { ................ ................ @@ -5025,7 +5044,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 263 (zodiac) +# tile 264 (zodiac) { ................ ................ @@ -5044,7 +5063,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 264 (dainty) +# tile 265 (dainty) { ................ ................ @@ -5063,7 +5082,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 265 (tri-band) +# tile 266 (tri-band) { ................ ................ @@ -5082,7 +5101,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 266 (bezeled) +# tile 267 (bezeled) { ................ ................ @@ -5101,7 +5120,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 267 (clustered) +# tile 268 (clustered) { ................ ................ @@ -5120,7 +5139,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 268 (abstract) +# tile 269 (abstract) { ................ ................ @@ -5139,7 +5158,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 269 (ancient) +# tile 270 (ancient) { ................ ................ @@ -5158,7 +5177,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 270 (gothic) +# tile 271 (gothic) { ................ ................ @@ -5177,7 +5196,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 271 (celtic) +# tile 272 (celtic) { ................ ................ @@ -5196,7 +5215,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 272 (plain) +# tile 273 (plain) { ................ ................ @@ -5215,7 +5234,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 273 (wavey) +# tile 274 (wavey) { ................ ................ @@ -5234,7 +5253,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 274 (roman) +# tile 275 (roman) { ................ ................ @@ -5253,7 +5272,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 275 (tapered) +# tile 276 (tapered) { ................ ................ @@ -5272,7 +5291,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 276 (circular / amulet of ESP) +# tile 277 (circular / amulet of ESP) { ................ ......LLLLLAA... @@ -5291,7 +5310,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 277 (warped / amulet of drain resistance) +# tile 278 (warped / amulet of drain resistance) { .......LLAA..... .....LLAALAAA... @@ -5310,7 +5329,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 278 (spherical / amulet of life saving) +# tile 279 (spherical / amulet of life saving) { ................ ......LLLLLAA... @@ -5329,7 +5348,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 279 (oval / amulet of strangulation) +# tile 280 (oval / amulet of strangulation) { ................ ......LLLLLLAA.. @@ -5348,7 +5367,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 280 (pentagonal / amulet of nausea) +# tile 281 (pentagonal / amulet of nausea) { ................ ......LLLLLAA... @@ -5367,7 +5386,7 @@ Z = (195, 195, 195) ........AA...... ................ } -# tile 281 (triangular / amulet of restful sleep) +# tile 282 (triangular / amulet of restful sleep) { ................ ......LLLLLAA... @@ -5386,7 +5405,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 282 (pyramidal / amulet versus poison) +# tile 283 (pyramidal / amulet versus poison) { ................ ......LLLLLAA... @@ -5405,7 +5424,7 @@ Z = (195, 195, 195) ....KJJJJJJJJA.. .......AAAAAAA.. } -# tile 283 (skull-shaped / amulet of danger) +# tile 284 (skull-shaped / amulet of danger) { ................ ......LLLLLAA... @@ -5424,7 +5443,7 @@ Z = (195, 195, 195) ........KKA..... ........AA...... } -# tile 284 (lunate / amulet versus stone) +# tile 285 (lunate / amulet versus stone) { ................ ......EEEEEAA... @@ -5443,7 +5462,7 @@ Z = (195, 195, 195) ........BAA..... ................ } -# tile 285 (square / amulet of change) +# tile 286 (square / amulet of change) { ................ ......LLLLLAA... @@ -5462,7 +5481,7 @@ Z = (195, 195, 195) .......AAAAA.... ................ } -# tile 286 (concave / amulet of unchanging) +# tile 287 (concave / amulet of unchanging) { ................ ......LLLLLAA... @@ -5481,7 +5500,7 @@ Z = (195, 195, 195) .......KCCAA.... ........AAA..... } -# tile 287 (hexagonal / amulet of reflection) +# tile 288 (hexagonal / amulet of reflection) { ................ ......LLLLLAA... @@ -5500,7 +5519,7 @@ Z = (195, 195, 195) ........AAA..... ................ } -# tile 288 (octagonal / amulet of magical breathing) +# tile 289 (octagonal / amulet of magical breathing) { ................ ......LLLLLAA... @@ -5519,7 +5538,7 @@ Z = (195, 195, 195) .......KKKAA.... ........AAA..... } -# tile 289 (oblong / amulet of magic resistance) +# tile 290 (oblong / amulet of magic resistance) { ................ ......LLLLLAA... @@ -5538,7 +5557,7 @@ Z = (195, 195, 195) .......KKKAA.... ........AAA..... } -# tile 290 (perforated / amulet of guarding) +# tile 291 (perforated / amulet of guarding) { ................ ......LLLLLAA... @@ -5557,7 +5576,7 @@ Z = (195, 195, 195) .......KKKAA.... ........AAA..... } -# tile 291 (cubical / amulet of flying) +# tile 292 (cubical / amulet of flying) { ................ ......LLLLLAA... @@ -5576,7 +5595,7 @@ Z = (195, 195, 195) ......CKKKKA.... .......AAAAA.... } -# tile 292 (convex) +# tile 293 (convex) { ................ ......LLLLLAA... @@ -5595,7 +5614,7 @@ Z = (195, 195, 195) .......KJJAA.... ........AAA..... } -# tile 293 (spiked) +# tile 294 (spiked) { ................ ................ @@ -5614,7 +5633,7 @@ Z = (195, 195, 195) ........DAA..... ................ } -# tile 294 (rectangular) +# tile 295 (rectangular) { ................ ......LLLLLAA... @@ -5633,7 +5652,7 @@ Z = (195, 195, 195) ....AAAAAAAAAA.. ................ } -# tile 295 (elliptic) +# tile 296 (elliptic) { ................ ......LLLLLAA... @@ -5652,7 +5671,7 @@ Z = (195, 195, 195) .....AAAAAAA.... ................ } -# tile 296 (Amulet of Yendor / cheap plastic imitation of the Amulet of Yendor) +# tile 297 (Amulet of Yendor / cheap plastic imitation of the Amulet of Yendor) { ................ ......HHHHHAA... @@ -5671,7 +5690,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 297 (Amulet of Yendor / Amulet of Yendor) +# tile 298 (Amulet of Yendor / Amulet of Yendor) { ................ ......HHHHHAA... @@ -5690,7 +5709,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 298 (large box) +# tile 299 (large box) { ................ ................ @@ -5709,7 +5728,7 @@ Z = (195, 195, 195) CKKKKKKKKKKJAA.. .AAAAAAAAAAAA... } -# tile 299 (chest) +# tile 300 (chest) { ................ ................ @@ -5728,7 +5747,7 @@ Z = (195, 195, 195) CKKKKKKKKKKJAA.. .AAAAAAAAAAAA... } -# tile 300 (iron safe) +# tile 301 (iron safe) { ................ ................ @@ -5747,7 +5766,7 @@ Z = (195, 195, 195) CKKKKKKKKKKJAA.. .AAAAAAAAAAAA... } -# tile 301 (crystal chest) +# tile 302 (crystal chest) { ................ ................ @@ -5766,7 +5785,7 @@ Z = (195, 195, 195) NBBBBBBBBBBPAA.. .AAAAAAAAAAAA... } -# tile 302 (ice box) +# tile 303 (ice box) { ................ ................ @@ -5785,7 +5804,7 @@ Z = (195, 195, 195) NBBBBBBBBBBPAA.. .AAAAAAAAAAAA... } -# tile 303 (magic chest / hidden chest) +# tile 304 (magic chest / hidden chest) { ................ ................ @@ -5804,7 +5823,7 @@ Z = (195, 195, 195) NIIIIIIIIIIPAA.. .AAAAAAAAAAAA... } -# tile 304 (bag / medical kit) +# tile 305 (bag / medical kit) { ................ ................ @@ -5823,7 +5842,7 @@ Z = (195, 195, 195) ........APP..... ................ } -# tile 305 (bag / sack) +# tile 306 (bag / sack) { ................ ................ @@ -5842,7 +5861,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 306 (bag / oilskin sack) +# tile 307 (bag / oilskin sack) { ................ ................ @@ -5861,7 +5880,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 307 (bag / bag of holding) +# tile 308 (bag / bag of holding) { ................ ................ @@ -5880,7 +5899,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 308 (bag / bag of rats) +# tile 309 (bag / bag of rats) { ................ ................ @@ -5899,7 +5918,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 309 (bag / bag of tricks) +# tile 310 (bag / bag of tricks) { ................ ................ @@ -5918,7 +5937,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 310 (key / skeleton key) +# tile 311 (key / skeleton key) { ................ ................ @@ -5937,7 +5956,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 311 (lock pick) +# tile 312 (lock pick) { ................ ................ @@ -5956,7 +5975,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 312 (credit card) +# tile 313 (credit card) { ................ ................ @@ -5975,7 +5994,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 313 (ornate key / magic key) +# tile 314 (ornate key / magic key) { ................ ................ @@ -5994,7 +6013,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 314 (candle / tallow candle) +# tile 315 (candle / tallow candle) { ................ ................ @@ -6013,7 +6032,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 315 (candle / wax candle) +# tile 316 (candle / wax candle) { ................ ................ @@ -6032,7 +6051,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 316 (candle / magic candle) +# tile 317 (candle / magic candle) { ................ ................ @@ -6051,7 +6070,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 317 (lantern) +# tile 318 (lantern) { ................ ................ @@ -6070,7 +6089,7 @@ Z = (195, 195, 195) .....AAAAAAA.... ................ } -# tile 318 (lamp / oil lamp) +# tile 319 (lamp / oil lamp) { ................ ................ @@ -6089,7 +6108,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 319 (lamp / magic lamp) +# tile 320 (lamp / magic lamp) { ................ ................ @@ -6108,7 +6127,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 320 (expensive camera) +# tile 321 (expensive camera) { ................ ................ @@ -6127,7 +6146,7 @@ Z = (195, 195, 195) ...PPPPPPPPPPPP. ................ } -# tile 321 (looking glass / mirror) +# tile 322 (looking glass / mirror) { ................ ................ @@ -6146,7 +6165,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 322 (wooden barrel / keg) +# tile 323 (wooden barrel / keg) { ................ ................ @@ -6165,7 +6184,7 @@ Z = (195, 195, 195) .AKKKJKKKJKKKAAA ..AAAAAAAAAAAA.. } -# tile 323 (glass orb / crystal ball) +# tile 324 (glass orb / crystal ball) { ................ ................ @@ -6184,7 +6203,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 324 (plastic orb / eight ball) +# tile 325 (plastic orb / eight ball) { ................ ................ @@ -6203,7 +6222,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 325 (lenses) +# tile 326 (lenses) { ................ ................ @@ -6222,7 +6241,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 326 (goggles) +# tile 327 (goggles) { ................ ................ @@ -6241,7 +6260,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 327 (blindfold) +# tile 328 (blindfold) { ................ ................ @@ -6260,7 +6279,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 328 (towel) +# tile 329 (towel) { ................ ................ @@ -6279,7 +6298,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 329 (saddle) +# tile 330 (saddle) { ................ ................ @@ -6298,7 +6317,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 330 (barding) +# tile 331 (barding) { ................ ................ @@ -6317,7 +6336,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 331 (spiked barding) +# tile 332 (spiked barding) { ................ ................ @@ -6336,7 +6355,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 332 (polished barding / barding of reflection) +# tile 333 (polished barding / barding of reflection) { ................ ................ @@ -6355,7 +6374,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 333 (leash) +# tile 334 (leash) { ................ ................ @@ -6374,7 +6393,7 @@ Z = (195, 195, 195) .....AAAA....... ................ } -# tile 334 (stethoscope) +# tile 335 (stethoscope) { ................ ................ @@ -6393,7 +6412,7 @@ Z = (195, 195, 195) ........AAA..... ................ } -# tile 335 (tinning kit) +# tile 336 (tinning kit) { ................ ................ @@ -6412,7 +6431,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 336 (tin opener) +# tile 337 (tin opener) { ................ ................ @@ -6431,7 +6450,7 @@ Z = (195, 195, 195) ........AA...... ................ } -# tile 337 (can of grease) +# tile 338 (can of grease) { ................ ................ @@ -6450,7 +6469,7 @@ Z = (195, 195, 195) .......AAAA..... ................ } -# tile 338 (figurine) +# tile 339 (figurine) { ................ ................ @@ -6469,7 +6488,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 339 (mask) +# tile 340 (mask) { ................ ................ @@ -6488,7 +6507,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 340 (marker / magic marker) +# tile 341 (marker / magic marker) { ................ ................ @@ -6507,7 +6526,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 341 (land mine) +# tile 342 (land mine) { ................ ................ @@ -6526,7 +6545,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 342 (beartrap) +# tile 343 (beartrap) { ................ ................ @@ -6545,7 +6564,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 343 (whistle / pea whistle) +# tile 344 (whistle / pea whistle) { ................ ................ @@ -6564,7 +6583,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 344 (whistle / magic whistle) +# tile 345 (whistle / magic whistle) { ................ ................ @@ -6583,7 +6602,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 345 (flute / flute) +# tile 346 (flute / flute) { ................ ................ @@ -6602,7 +6621,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 346 (flute / magic flute) +# tile 347 (flute / magic flute) { ................ ................ @@ -6621,7 +6640,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 347 (horn / tooled horn) +# tile 348 (horn / tooled horn) { ................ ................ @@ -6640,7 +6659,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 348 (horn / frost horn) +# tile 349 (horn / frost horn) { ................ ................ @@ -6659,7 +6678,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 349 (horn / fire horn) +# tile 350 (horn / fire horn) { ................ ................ @@ -6678,7 +6697,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 350 (horn / horn of blasting) +# tile 351 (horn / horn of blasting) { ................ ................ @@ -6697,7 +6716,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 351 (horn / horn of plenty) +# tile 352 (horn / horn of plenty) { ................ ................ @@ -6716,7 +6735,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 352 (harp / harp) +# tile 353 (harp / harp) { ................ ................ @@ -6735,7 +6754,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 353 (harp / magic harp) +# tile 354 (harp / magic harp) { ................ ................ @@ -6754,7 +6773,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 354 (bell) +# tile 355 (bell) { ................ .......KA....... @@ -6773,7 +6792,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 355 (bugle) +# tile 356 (bugle) { ................ ................ @@ -6792,7 +6811,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 356 (lute) +# tile 357 (lute) { ................ ................ @@ -6811,7 +6830,7 @@ Z = (195, 195, 195) .AJJAA.......... ..AA............ } -# tile 357 (bagpipe) +# tile 358 (bagpipe) { ................ ...PPP.......... @@ -6830,7 +6849,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 358 (drum / leather drum) +# tile 359 (drum / leather drum) { ................ ................ @@ -6849,7 +6868,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 359 (drum / drum of earthquake) +# tile 360 (drum / drum of earthquake) { ................ ................ @@ -6868,7 +6887,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 360 (pick-axe) +# tile 361 (pick-axe) { ................ ................ @@ -6887,7 +6906,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 361 (spoon) +# tile 362 (spoon) { ................ ................ @@ -6906,7 +6925,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 362 (fishing pole) +# tile 363 (fishing pole) { ................ ...........JJJA. @@ -6925,7 +6944,7 @@ Z = (195, 195, 195) .JJA.......OOA.. ................ } -# tile 363 (iron hook / grappling hook) +# tile 364 (iron hook / grappling hook) { .............N.. ..............P. @@ -6944,7 +6963,7 @@ Z = (195, 195, 195) ..OOA..OOOA..... ....OOOAA....... } -# tile 364 (torch) +# tile 365 (torch) { ................ ................ @@ -6963,7 +6982,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 365 (unicorn horn) +# tile 366 (unicorn horn) { ................ ................ @@ -6982,7 +7001,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 366 (bandage) +# tile 367 (bandage) { ................ ................ @@ -7001,7 +7020,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 367 (phial) +# tile 368 (phial) { ................ ................ @@ -7020,7 +7039,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 368 (candelabrum / Candelabrum of Invocation) +# tile 369 (candelabrum / Candelabrum of Invocation) { .......N........ .......D........ @@ -7039,7 +7058,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 369 (engraved silver bell / Bell of Opening) +# tile 370 (engraved silver bell / Bell of Opening) { ................ .......OA....... @@ -7058,7 +7077,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 370 (tripe ration) +# tile 371 (tripe ration) { ................ ................ @@ -7077,7 +7096,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 371 (corpse) +# tile 372 (corpse) { ................ .....D.DPLN..... @@ -7096,7 +7115,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 372 (eyeball) +# tile 373 (eyeball) { ................ ................ @@ -7115,7 +7134,7 @@ Z = (195, 195, 195) .......OOOPAAA.. ................ } -# tile 373 (severed hand) +# tile 374 (severed hand) { ................ ................ @@ -7134,7 +7153,7 @@ Z = (195, 195, 195) ........AAA..... ................ } -# tile 374 (egg) +# tile 375 (egg) { ................ ................ @@ -7153,7 +7172,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 375 (meatball) +# tile 376 (meatball) { ................ ................ @@ -7172,7 +7191,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 376 (meat stick) +# tile 377 (meat stick) { ................ ................ @@ -7191,7 +7210,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 377 (huge chunk of meat) +# tile 378 (huge chunk of meat) { ................ ................ @@ -7210,7 +7229,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 378 (meat ring) +# tile 379 (meat ring) { ................ ................ @@ -7229,7 +7248,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 379 (glob of gray ooze) +# tile 380 (glob of gray ooze) { ................ ................ @@ -7248,7 +7267,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 380 (glob of brown pudding) +# tile 381 (glob of brown pudding) { ................ ................ @@ -7267,7 +7286,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 381 (glob of green slime) +# tile 382 (glob of green slime) { ................ ................ @@ -7286,7 +7305,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 382 (glob of blood pudding) +# tile 383 (glob of blood pudding) { ................ ................ @@ -7305,7 +7324,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 383 (glob of gel) +# tile 384 (glob of gel) { ................ ................ @@ -7324,7 +7343,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 384 (glob of moldy pudding) +# tile 385 (glob of moldy pudding) { ................ ................ @@ -7343,7 +7362,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 385 (glob of black pudding) +# tile 386 (glob of black pudding) { ................ ................ @@ -7362,7 +7381,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 386 (kelp frond) +# tile 387 (kelp frond) { ....FA.......... ....FFA......... @@ -7381,7 +7400,7 @@ Z = (195, 195, 195) .....FFFFA...... ......FFFFA..... } -# tile 387 (eucalyptus leaf) +# tile 388 (eucalyptus leaf) { ................ ................ @@ -7400,7 +7419,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 388 (apple) +# tile 389 (apple) { ................ ................ @@ -7419,7 +7438,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 389 (orange) +# tile 390 (orange) { ................ ................ @@ -7438,7 +7457,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 390 (mushroom) +# tile 391 (mushroom) { ................ ................ @@ -7457,7 +7476,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 391 (pear) +# tile 392 (pear) { ................ ................ @@ -7476,7 +7495,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 392 (asian pear) +# tile 393 (asian pear) { ................ ................ @@ -7495,7 +7514,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 393 (melon) +# tile 394 (melon) { ................ ................ @@ -7514,7 +7533,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -#tile 394 (pineapple) +#tile 395 (pineapple) { ................ .........GA..... @@ -7533,7 +7552,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 395 (banana) +# tile 396 (banana) { ................ ................ @@ -7552,7 +7571,7 @@ Z = (195, 195, 195) .....AAAAA...... ................ } -# tile 396 (carrot) +# tile 397 (carrot) { ................ ..........F..F.. @@ -7571,7 +7590,7 @@ Z = (195, 195, 195) ...A............ ................ } -# tile 397 (sprig of catnip) +# tile 398 (sprig of catnip) { ................ ................ @@ -7590,7 +7609,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 398 (sprig of wolfsbane) +# tile 399 (sprig of wolfsbane) { ................ ................ @@ -7609,7 +7628,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 399 (clove of garlic) +# tile 400 (clove of garlic) { ................ ................ @@ -7628,7 +7647,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 400 (slime mold) +# tile 401 (slime mold) { ................ ................ @@ -7647,7 +7666,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 401 (lump of royal jelly) +# tile 402 (lump of royal jelly) { ................ ................ @@ -7666,7 +7685,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 402 (cream pie) +# tile 403 (cream pie) { ................ ................ @@ -7685,7 +7704,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 403 (apple pie) +# tile 404 (apple pie) { ................ ................ @@ -7704,7 +7723,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 404 (pumpkin pie) +# tile 405 (pumpkin pie) { ................ ................ @@ -7723,7 +7742,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 405 (sandwich) +# tile 406 (sandwich) { ................ ................ @@ -7742,7 +7761,7 @@ Z = (195, 195, 195) .......AAAAAA... ................ } -# tile 406 (candy bar) +# tile 407 (candy bar) { ................ ................ @@ -7761,7 +7780,7 @@ Z = (195, 195, 195) ....A........... ................ } -# tile 407 (slice of cake) +# tile 408 (slice of cake) { ................ ........D....... @@ -7780,7 +7799,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 408 (fruitcake) +# tile 409 (fruitcake) { ................ ........D....... @@ -7799,7 +7818,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 409 (fortune cookie) +# tile 410 (fortune cookie) { ................ ................ @@ -7818,7 +7837,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 410 (pancake) +# tile 411 (pancake) { ................ ................ @@ -7837,7 +7856,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 411 (tortilla) +# tile 412 (tortilla) { ................ ................ @@ -7857,7 +7876,7 @@ Z = (195, 195, 195) ................ } -# tile 412 (cheese) +# tile 413 (cheese) { ................ ................ @@ -7876,7 +7895,7 @@ Z = (195, 195, 195) ....AAAAAAA..... ................ } -# tile 413 (pill) +# tile 414 (pill) { ................ ................ @@ -7895,7 +7914,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 414 (holy wafer) +# tile 415 (holy wafer) { ................ ................ @@ -7914,7 +7933,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 415 (lembas wafer) +# tile 416 (lembas wafer) { ................ ................ @@ -7933,7 +7952,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 416 (cram ration) +# tile 417 (cram ration) { ................ ...JKA.......... @@ -7952,7 +7971,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 417 (food ration) +# tile 418 (food ration) { ...JJA.......... ...BPA.......... @@ -7971,7 +7990,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 418 (K-ration) +# tile 419 (K-ration) { ................ ................ @@ -7990,7 +8009,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 419 (C-ration) +# tile 420 (C-ration) { ................ ................ @@ -8009,7 +8028,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 420 (tin) +# tile 421 (tin) { ................ ................ @@ -8028,7 +8047,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 421 (ruby / gain ability) +# tile 422 (ruby / gain ability) { ................ ................ @@ -8047,7 +8066,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 422 (metallic / reflection) +# tile 423 (metallic / reflection) { ................ ................ @@ -8066,7 +8085,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 423 (purple-red / regeneration) { +# tile 424 (purple-red / regeneration) { ................ ................ ................ @@ -8084,7 +8103,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 424 (pink / restore ability) +# tile 425 (pink / restore ability) { ................ ................ @@ -8103,7 +8122,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 425 (orange / confusion) +# tile 426 (orange / confusion) { ................ ................ @@ -8122,7 +8141,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 426 (luminescent / clairvoyance) +# tile 427 (luminescent / clairvoyance) { ................ ................ @@ -8141,7 +8160,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 427 (yellow / blindness) +# tile 428 (yellow / blindness) { ................ ................ @@ -8160,7 +8179,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 428 (muddy / ESP) +# tile 429 (muddy / ESP) { ................ ................ @@ -8179,7 +8198,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 429 (emerald / paralysis) +# tile 430 (emerald / paralysis) { ................ ................ @@ -8198,7 +8217,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 430 (dark green / speed) +# tile 431 (dark green / speed) { ................ ................ @@ -8217,7 +8236,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 431 (cyan / levitation) +# tile 432 (cyan / levitation) { ................ ................ @@ -8236,7 +8255,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 432 (sky blue / hallucination) +# tile 433 (sky blue / hallucination) { ................ ................ @@ -8255,7 +8274,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 433 (indigo / invisibility) +# tile 434 (indigo / invisibility) { ................ ................ @@ -8274,7 +8293,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 434 (magenta / see invisible) +# tile 435 (magenta / see invisible) { ................ ................ @@ -8293,7 +8312,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 435 (amber / healing) +# tile 436 (amber / healing) { ................ ................ @@ -8312,7 +8331,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 436 (puce / extra healing) +# tile 437 (puce / extra healing) { ................ ................ @@ -8331,7 +8350,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 437 (milky / gain level) +# tile 438 (milky / gain level) { ................ ................ @@ -8350,7 +8369,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 438 (icy / invulnerability) +# tile 439 (icy / invulnerability) { ................ ................ @@ -8369,7 +8388,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 439 (swirly / enlightenment) +# tile 440 (swirly / enlightenment) { ................ ................ @@ -8388,7 +8407,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 440 (bubbly / monster detection) +# tile 441 (bubbly / monster detection) { ................ ................ @@ -8407,7 +8426,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 441 (smoky / object detection) +# tile 442 (smoky / object detection) { ................ ................ @@ -8426,7 +8445,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 442 (cloudy / gain energy) +# tile 443 (cloudy / gain energy) { ................ ................ @@ -8445,7 +8464,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 443 (effervescent / sleeping) +# tile 444 (effervescent / sleeping) { ................ ................ @@ -8464,7 +8483,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 444 (black / full healing) +# tile 445 (black / full healing) { ................ ................ @@ -8483,7 +8502,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 445 (golden / polymorph) +# tile 446 (golden / polymorph) { ................ ................ @@ -8502,7 +8521,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 446 (brown / booze) +# tile 447 (brown / booze) { ................ ................ @@ -8521,7 +8540,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 447 (fizzy / sickness) +# tile 448 (fizzy / sickness) { ................ ................ @@ -8540,7 +8559,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 448 (dark / fruit juice) +# tile 449 (dark / fruit juice) { ................ ................ @@ -8559,7 +8578,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 449 (white / acid) +# tile 450 (white / acid) { ................ ................ @@ -8578,7 +8597,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 450 (murky / oil) +# tile 451 (murky / oil) { ................ ................ @@ -8597,7 +8616,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 451 (clear / water) +# tile 452 (clear / water) { ................ ................ @@ -8616,7 +8635,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 452 (sparkling / amnesia) +# tile 453 (sparkling / amnesia) { ................ ................ @@ -8635,7 +8654,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 453 (blood-red / blood) +# tile 454 (blood-red / blood) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8654,7 +8673,7 @@ Z = (195, 195, 195) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 454 (blood-red / vampire blood) +# tile 455 (blood-red / vampire blood) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8673,7 +8692,7 @@ Z = (195, 195, 195) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 455 (ZELGO MER / enchant armor) +# tile 456 (ZELGO MER / enchant armor) { ................ ................ @@ -8692,7 +8711,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 456 (JUYED AWK YACC / destroy armor) +# tile 457 (JUYED AWK YACC / destroy armor) { ................ ................ @@ -8711,7 +8730,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 457 (NR 9 / confuse monster) +# tile 458 (NR 9 / confuse monster) { ................ ................ @@ -8730,7 +8749,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 458 (XIXAXA XOXAXA XUXAXA / scare monster) +# tile 459 (XIXAXA XOXAXA XUXAXA / scare monster) { ................ ................ @@ -8749,7 +8768,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 459 (PRATYAVAYAH / remove curse) +# tile 460 (PRATYAVAYAH / remove curse) { ................ ................ @@ -8768,7 +8787,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 460 (DAIYEN FOOELS / enchant weapon) +# tile 461 (DAIYEN FOOELS / enchant weapon) { ................ ................ @@ -8787,7 +8806,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 461 (LEP GEX VEN ZEA / create monster) +# tile 462 (LEP GEX VEN ZEA / create monster) { ................ ................ @@ -8806,7 +8825,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 462 (PRIRUTSENIE / taming) +# tile 463 (PRIRUTSENIE / taming) { ................ ................ @@ -8825,7 +8844,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 463 (ELBIB YLOH / genocide) +# tile 464 (ELBIB YLOH / genocide) { ................ ................ @@ -8844,7 +8863,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 464 (4OFAE OF9 SCC9 / elementalism) +# tile 465 (4OFAE OF9 SCC9 / elementalism) { ................ ................ @@ -8863,7 +8882,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 465 (VERR YED HORRE / light) +# tile 466 (VERR YED HORRE / light) { ................ ................ @@ -8882,7 +8901,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 466 (TEMP USF UGIT / time) +# tile 467 (TEMP USF UGIT / time) { ................ ................ @@ -8901,7 +8920,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 467 (VENZAR BORGAVVE / teleportation) +# tile 468 (VENZAR BORGAVVE / teleportation) { ................ ................ @@ -8920,7 +8939,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 468 (THARR / gold detection) +# tile 469 (THARR / gold detection) { ................ ................ @@ -8939,7 +8958,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 469 (YUM YUM / food detection) +# tile 470 (YUM YUM / food detection) { ................ ................ @@ -8958,7 +8977,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 470 (POTESTAS / knowledge) +# tile 471 (POTESTAS / knowledge) { ................ ................ @@ -8977,7 +8996,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 471 (KERNOD WEL / identify) +# tile 472 (KERNOD WEL / identify) { ................ ................ @@ -8996,7 +9015,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 472 (TRATS ARL / air) +# tile 473 (TRATS ARL / air) { ................ ................ @@ -9015,7 +9034,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 473 (TLON UQBAR / transmogrify) +# tile 474 (TLON UQBAR / transmogrify) { ................ ................ @@ -9034,7 +9053,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 474 (ELAM EBOW / magic mapping) +# tile 475 (ELAM EBOW / magic mapping) { ................ ................ @@ -9053,7 +9072,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 475 (DUAM XNAHT / amnesia) +# tile 476 (DUAM XNAHT / amnesia) { ................ ................ @@ -9072,7 +9091,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 476 (AQUE BRAGH / flood) +# tile 477 (AQUE BRAGH / flood) { ................ ................ @@ -9091,7 +9110,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 477 (ANDOVA BEGARIN / fire) +# tile 478 (ANDOVA BEGARIN / fire) { ................ ................ @@ -9110,7 +9129,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 478 (KIRJE / earth) +# tile 479 (KIRJE / earth) { ................ ................ @@ -9129,7 +9148,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 479 (VE FORBRYDERNE / punishment) +# tile 480 (VE FORBRYDERNE / punishment) { ................ ................ @@ -9148,7 +9167,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 480 (HACKEM MUCHE / charging) +# tile 481 (HACKEM MUCHE / charging) { ................ ................ @@ -9167,7 +9186,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 481 (TOYL ENT RUBLE / cloning) +# tile 482 (TOYL ENT RUBLE / cloning) { ................ ................ @@ -9186,7 +9205,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 482 (VELOX NEB / stinking cloud) +# tile 483 (VELOX NEB / stinking cloud) { ................ ................ @@ -9205,7 +9224,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 483 (HZLRC KSTSBD MPFNG / acquirement) +# tile 484 (HZLRC KSTSBD MPFNG / acquirement) { ................ ................ @@ -9224,7 +9243,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 484 (OOBID IBBOB / ice) +# tile 485 (OOBID IBBOB / ice) { ................ ................ @@ -9243,7 +9262,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 485 (FOOBIE BLETCH / magic detection) +# tile 486 (FOOBIE BLETCH / magic detection) { ................ ................ @@ -9262,7 +9281,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 486 (TEMOV) +# tile 487 (TEMOV) { ................ ................ @@ -9281,7 +9300,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 487 (GARVEN DEH) +# tile 488 (GARVEN DEH) { ................ ................ @@ -9300,7 +9319,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 488 (READ ME) +# tile 489 (READ ME) { ................ ................ @@ -9319,7 +9338,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 489 (ETAOIN SHRDLU) +# tile 490 (ETAOIN SHRDLU) { ................ ................ @@ -9338,7 +9357,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 490 (LOREM IPSUM) +# tile 491 (LOREM IPSUM) { ................ ................ @@ -9357,7 +9376,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 491 (FNORD) +# tile 492 (FNORD) { ................ ................ @@ -9376,7 +9395,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 492 (KO BATE) +# tile 493 (KO BATE) { ................ ................ @@ -9395,7 +9414,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 493 (ABRA KA DABRA) +# tile 494 (ABRA KA DABRA) { ................ ................ @@ -9414,7 +9433,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 494 (ASHPD SODALG) +# tile 495 (ASHPD SODALG) { ................ ................ @@ -9433,7 +9452,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 495 (ZLORFIK) +# tile 496 (ZLORFIK) { ................ ................ @@ -9452,7 +9471,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 496 (GNIK SISI VLE) +# tile 497 (GNIK SISI VLE) { ................ ................ @@ -9471,7 +9490,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 497 (HAPAX LEGOMENON) +# tile 498 (HAPAX LEGOMENON) { ................ ................ @@ -9490,7 +9509,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 498 (EIRIS SAZUN IDISI) +# tile 499 (EIRIS SAZUN IDISI) { ................ ................ @@ -9509,7 +9528,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 499 (PHOL ENDE WODAN) +# tile 500 (PHOL ENDE WODAN) { ................ ................ @@ -9528,7 +9547,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 500 (GHOTI) +# tile 501 (GHOTI) { ................ ................ @@ -9547,7 +9566,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 501 (MAPIRO MAHAMA DIROMAT) +# tile 502 (MAPIRO MAHAMA DIROMAT) { ................ ................ @@ -9566,7 +9585,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 502 (VAS CORP BET MANI) +# tile 503 (VAS CORP BET MANI) { ................ ................ @@ -9585,7 +9604,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 503 (XOR OTA) +# tile 504 (XOR OTA) { ................ ................ @@ -9604,7 +9623,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 504 (STRC PRST SKRZ KRK) +# tile 505 (STRC PRST SKRZ KRK) { ................ ................ @@ -9623,7 +9642,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 505 (NYEHEHE) +# tile 506 (NYEHEHE) { ................ ................ @@ -9642,7 +9661,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 506 (ELPHE MONATER) +# tile 507 (ELPHE MONATER) { ................ ................ @@ -9661,7 +9680,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 507 (ABAJ) +# tile 508 (ABAJ) { ................ ................ @@ -9680,7 +9699,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 508 (CONG LAT URAT ION) +# tile 509 (CONG LAT URAT ION) { ................ ................ @@ -9699,7 +9718,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 509 (DESUM TETRAL) +# tile 510 (DESUM TETRAL) { ................ ................ @@ -9718,7 +9737,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 510 (NHINRL) +# tile 511 (NHINRL) { ................ ................ @@ -9737,7 +9756,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 511 (ISAY INAY) +# tile 512 (ISAY INAY) { ................ ................ @@ -9756,7 +9775,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 512 (PEBCAK RTFM) +# tile 513 (PEBCAK RTFM) { ................ ................ @@ -9775,7 +9794,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 513 (KA TET) +# tile 514 (KA TET) { ................ ................ @@ -9794,7 +9813,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 514 (stamped / mail) +# tile 515 (stamped / mail) { ................ ................ @@ -9813,7 +9832,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 515 (unlabeled / blank paper) +# tile 516 (unlabeled / blank paper) { ................ ................ @@ -9832,7 +9851,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 516 (parchment / dig) +# tile 517 (parchment / dig) { ................ ................ @@ -9851,7 +9870,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 517 (vellum / magic missile) +# tile 518 (vellum / magic missile) { ................ ................ @@ -9870,7 +9889,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 518 (ragged / fireball) +# tile 519 (ragged / fireball) { ................ ................ @@ -9889,7 +9908,7 @@ Z = (195, 195, 195) ......OOJJAA.... ................ } -# tile 519 (dog eared / cone of cold) +# tile 520 (dog eared / cone of cold) { ................ ................ @@ -9908,7 +9927,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 520 (mottled / sleep) +# tile 521 (mottled / sleep) { ................ ................ @@ -9927,7 +9946,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 521 (stained / finger of death) +# tile 522 (stained / finger of death) { ................ ................ @@ -9946,7 +9965,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 522 (electric blue / lightning) +# tile 523 (electric blue / lightning) { ................ ................ @@ -9965,7 +9984,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 523 (olive green / poison blast) +# tile 524 (olive green / poison blast) { ................ ................ @@ -9984,7 +10003,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 524 (acid green / acid blast) +# tile 525 (acid green / acid blast) { ................ ................ @@ -10003,7 +10022,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 525 (ghostly / sonic boom) +# tile 526 (ghostly / sonic boom) { ................ ................ @@ -10022,7 +10041,7 @@ Z = (195, 195, 195) .......UUUAA.... ................ } -# tile 526 (worn / psionic wave) +# tile 527 (worn / psionic wave) { ................ ................ @@ -10041,7 +10060,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 527 (red / force bolt) +# tile 528 (red / force bolt) { ................ ................ @@ -10060,7 +10079,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 528 (velvet / drain life) +# tile 529 (velvet / drain life) { ................ ................ @@ -10079,7 +10098,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 529 (black / summon undead) +# tile 530 (black / summon undead) { ................ ................ @@ -10098,7 +10117,7 @@ Z = (195, 195, 195) .......AAA...... ................ } -# tile 530 (dark / command undead) +# tile 531 (dark / command undead) { ................ ................ @@ -10117,7 +10136,7 @@ Z = (195, 195, 195) ....AAABBBA..... .......AAA...... } -# tile 531 (pink / knock) +# tile 532 (pink / knock) { ................ ................ @@ -10136,7 +10155,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 532 (dark green / wizard lock) +# tile 533 (dark green / wizard lock) { ................ ................ @@ -10155,7 +10174,7 @@ Z = (195, 195, 195) .......FFFAA.... ................ } -# tile 533 (silver / polymorph) +# tile 534 (silver / polymorph) { ................ ................ @@ -10174,7 +10193,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 534 (platinum / repair armor) +# tile 535 (platinum / repair armor) { ................ ................ @@ -10193,7 +10212,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 535 (decrepit / reflection) +# tile 536 (decrepit / reflection) { ................ ................ @@ -10212,7 +10231,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 536 (canvas / flame sphere) +# tile 537 (canvas / flame sphere) { ................ ................ @@ -10231,7 +10250,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 537 (hardcover / freeze sphere) +# tile 538 (hardcover / freeze sphere) { ................ ................ @@ -10250,7 +10269,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 538 (shining / cancellation) +# tile 539 (shining / cancellation) { ....N........... .......N........ @@ -10269,7 +10288,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 539 (feathered / fire bolt) +# tile 540 (feathered / fire bolt) { ................ ................ @@ -10288,7 +10307,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 540 (light green / slow monster) +# tile 541 (light green / slow monster) { ................ ................ @@ -10307,7 +10326,7 @@ Z = (195, 195, 195) .......GGGAA.... ................ } -# tile 541 (light blue / cause fear) +# tile 542 (light blue / cause fear) { ................ ................ @@ -10326,7 +10345,7 @@ Z = (195, 195, 195) .......BBBAA.... ................ } -# tile 542 (magenta / charm monster) +# tile 543 (magenta / charm monster) { ................ ................ @@ -10345,7 +10364,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 543 (orange / confuse monster) +# tile 544 (orange / confuse monster) { ................ ................ @@ -10364,7 +10383,7 @@ Z = (195, 195, 195) .......CCCAA.... ................ } -# tile 544 (purple / haste self) +# tile 545 (purple / haste self) { ................ ................ @@ -10383,7 +10402,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 545 (tan / levitation) +# tile 546 (tan / levitation) { ................ ................ @@ -10402,7 +10421,7 @@ Z = (195, 195, 195) .......KKKAA.... ................ } -# tile 546 (gold / teleport away) +# tile 547 (gold / teleport away) { ................ ................ @@ -10421,7 +10440,7 @@ Z = (195, 195, 195) .......HHHAA.... ................ } -# tile 547 (ochre / passwall) +# tile 548 (ochre / passwall) { ................ ................ @@ -10440,7 +10459,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 548 (dark brown / invisibility) +# tile 549 (dark brown / invisibility) { ................ ................ @@ -10459,7 +10478,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 549 (thin / jumping) +# tile 550 (thin / jumping) { ................ ................ @@ -10478,7 +10497,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 550 (cloth / light) +# tile 551 (cloth / light) { ................ ................ @@ -10497,7 +10516,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 551 (leathery / detect monsters) +# tile 552 (leathery / detect monsters) { ................ ................ @@ -10516,7 +10535,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 552 (cyan / detect food) +# tile 553 (cyan / detect food) { ................ ................ @@ -10535,7 +10554,7 @@ Z = (195, 195, 195) .......BBBAA.... ................ } -# tile 553 (violet / detect unseen) +# tile 554 (violet / detect unseen) { ................ ................ @@ -10554,7 +10573,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 554 (gray / detect treasure) +# tile 555 (gray / detect treasure) { ................ ................ @@ -10573,7 +10592,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 555 (dark blue / clairvoyance) +# tile 556 (dark blue / clairvoyance) { ................ ................ @@ -10592,7 +10611,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 556 (faded / enlighten) +# tile 557 (faded / enlighten) { ................ ................ @@ -10611,7 +10630,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 557 (bronze / identify) +# tile 558 (bronze / identify) { ................ ................ @@ -10630,7 +10649,7 @@ Z = (195, 195, 195) .......CCCAA.... ................ } -# tile 558 (dusty / magic mapping) +# tile 559 (dusty / magic mapping) { ................ ................ @@ -10649,7 +10668,7 @@ Z = (195, 195, 195) .KAKA..JJJAA.... ................ } -# tile 559 (white / healing) +# tile 560 (white / healing) { ................ ................ @@ -10668,7 +10687,7 @@ Z = (195, 195, 195) .......PNNAA.... ................ } -# tile 560 (yellow / cure blindness) +# tile 561 (yellow / cure blindness) { ................ ................ @@ -10687,7 +10706,7 @@ Z = (195, 195, 195) .......HHHAA.... ................ } -# tile 561 (plaid / extra healing) +# tile 562 (plaid / extra healing) { ................ ................ @@ -10706,7 +10725,7 @@ Z = (195, 195, 195) .......EFDAA.... ................ } -# tile 562 (light brown / restore ability) +# tile 563 (light brown / restore ability) { ................ ................ @@ -10725,7 +10744,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 563 (thick / stone to flesh) +# tile 564 (thick / stone to flesh) { ................ ................ @@ -10744,7 +10763,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 564 (indigo / cure sickness) +# tile 565 (indigo / cure sickness) { ................ ................ @@ -10763,7 +10782,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 565 (turquoise / create monster) +# tile 566 (turquoise / create monster) { ................ ................ @@ -10782,7 +10801,7 @@ Z = (195, 195, 195) .......FBBAA.... ................ } -# tile 566 (wrinkled / remove curse) +# tile 567 (wrinkled / remove curse) { ................ ................ @@ -10801,7 +10820,7 @@ Z = (195, 195, 195) ......JJKKAA.... ................ } -# tile 567 (copper / turn undead) +# tile 568 (copper / turn undead) { ................ ................ @@ -10820,7 +10839,7 @@ Z = (195, 195, 195) .......JCJAA.... ................ } -# tile 568 (glittering / create familiar) +# tile 569 (glittering / create familiar) { ................ ................ @@ -10839,7 +10858,7 @@ Z = (195, 195, 195) .......PPPAN.... .......N........ } -# tile 569 (dull / protection) +# tile 570 (dull / protection) { ................ ................ @@ -10858,7 +10877,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 570 (deep) +# tile 571 (deep) { ................ ................ @@ -10877,7 +10896,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 571 (big) +# tile 572 (big) { ................ .....KD......... @@ -10896,7 +10915,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 572 (fuzzy) +# tile 573 (fuzzy) { ................ ................ @@ -10915,7 +10934,7 @@ Z = (195, 195, 195) ..A.AAAFFFA..... ....A..AAA...... } -# tile 573 (spotted) +# tile 574 (spotted) { ................ ................ @@ -10934,7 +10953,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 574 (colorful) +# tile 575 (colorful) { ................ ................ @@ -10953,7 +10972,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 575 (long) +# tile 576 (long) { ................ ................ @@ -10972,7 +10991,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 576 (rainbow) +# tile 577 (rainbow) { ................ ................ @@ -10991,7 +11010,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 577 (tattered) +# tile 578 (tattered) { ................ ................ @@ -11010,7 +11029,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 578 (wide) +# tile 579 (wide) { ................ ................ @@ -11029,7 +11048,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 579 (left-handed) +# tile 580 (left-handed) { ................ ................ @@ -11048,7 +11067,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 580 (psychedelic) +# tile 581 (psychedelic) { ................ ................ @@ -11067,7 +11086,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 581 (spiral-bound) +# tile 582 (spiral-bound) { ................ ................ @@ -11086,7 +11105,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 582 (stapled) +# tile 583 (stapled) { ................ ................ @@ -11105,7 +11124,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 583 (stylish) +# tile 584 (stylish) { ................ ................ @@ -11124,7 +11143,7 @@ Z = (195, 195, 195) .......DCDAA.... ................ } -# tile 584 (tartan) +# tile 585 (tartan) { ................ .....PPPPA...... @@ -11143,7 +11162,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 585 (chartreuse) +# tile 586 (chartreuse) { ................ ................ @@ -11162,7 +11181,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 586 (crimson) +# tile 587 (crimson) { ................ ................ @@ -11181,7 +11200,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 587 (charcoal) +# tile 588 (charcoal) { ................ ................ @@ -11200,7 +11219,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 588 (plain / blank paper) +# tile 589 (plain / blank paper) { ................ ................ @@ -11219,7 +11238,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 589 (paperback / novel) +# tile 590 (paperback / novel) { ................ ................ @@ -11238,7 +11257,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 590 (papyrus / Book of the Dead) +# tile 591 (papyrus / Book of the Dead) { ................ ................ @@ -11257,7 +11276,7 @@ Z = (195, 195, 195) .......AAA...... ................ } -# tile 591 (glass / light) +# tile 592 (glass / light) { ................ ................ @@ -11276,7 +11295,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 592 (balsa / detection) +# tile 593 (balsa / detection) { ................ ................ @@ -11295,7 +11314,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 593 (crystal / enlightenment) +# tile 594 (crystal / enlightenment) { ................ ................ @@ -11314,7 +11333,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 594 (bamboo / healing) +# tile 595 (bamboo / healing) { ................ .........F...... @@ -11333,7 +11352,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 595 (maple / create monster) +# tile 596 (maple / create monster) { ................ ................ @@ -11352,7 +11371,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 596 (crusty / fear) +# tile 597 (crusty / fear) { ................ ................ @@ -11371,7 +11390,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 597 (pine / wishing) +# tile 598 (pine / wishing) { ................ ................ @@ -11390,7 +11409,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 598 (oak / nothing) +# tile 599 (oak / nothing) { ................ ................ @@ -11409,7 +11428,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 599 (plastic / wonder) +# tile 600 (plastic / wonder) { ................ ................ @@ -11428,7 +11447,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 600 (green / wind) +# tile 601 (green / wind) { ................ ................ @@ -11447,7 +11466,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 601 (ebony / striking) +# tile 602 (ebony / striking) { ................ ................ @@ -11466,7 +11485,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 602 (marble / make invisible) +# tile 603 (marble / make invisible) { ................ ................ @@ -11485,7 +11504,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 603 (tin / slow monster) +# tile 604 (tin / slow monster) { ................ ................ @@ -11504,7 +11523,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 604 (brass / speed monster) +# tile 605 (brass / speed monster) { ................ ................ @@ -11523,7 +11542,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 605 (copper / undead turning) +# tile 606 (copper / undead turning) { ................ ................ @@ -11542,7 +11561,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 606 (ceramic / draining) +# tile 607 (ceramic / draining) { ................ ................ @@ -11561,7 +11580,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 607 (silver / polymorph) +# tile 608 (silver / polymorph) { ................ ................ @@ -11580,7 +11599,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 608 (platinum / cancellation) +# tile 609 (platinum / cancellation) { ................ ................ @@ -11599,7 +11618,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 609 (iridium / teleportation) +# tile 610 (iridium / teleportation) { ................ ................ @@ -11618,7 +11637,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 610 (black / create horde) +# tile 611 (black / create horde) { ................ ................ @@ -11637,7 +11656,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 611 (bronze / extra healing) +# tile 612 (bronze / extra healing) { ................ ................ @@ -11656,7 +11675,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 612 (zinc / opening) +# tile 613 (zinc / opening) { ................ ................ @@ -11675,7 +11694,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (aluminum / locking) +# tile 614 (aluminum / locking) { ................ ................ @@ -11694,7 +11713,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 614 (uranium / probing) +# tile 615 (uranium / probing) { ................ ................ @@ -11713,7 +11732,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 615 (iron / digging) +# tile 616 (iron / digging) { ................ ................ @@ -11732,7 +11751,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 616 (forked / fireball) +# tile 617 (forked / fireball) { ................ ................ @@ -11751,7 +11770,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (steel / magic missile) +# tile 618 (steel / magic missile) { ................ ................ @@ -11770,7 +11789,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (hexagonal / fire) +# tile 619 (hexagonal / fire) { ................ ................ @@ -11789,7 +11808,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 619 (short / cold) +# tile 620 (short / cold) { ................ ................ @@ -11808,7 +11827,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 620 (runed / sleep) +# tile 621 (runed / sleep) { ................ ................ @@ -11827,7 +11846,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 621 (long / death) +# tile 622 (long / death) { ................ .............NO. @@ -11846,7 +11865,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 622 (curved / lightning) +# tile 623 (curved / lightning) { ................ .......NO....... @@ -11865,7 +11884,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 623 (octagonal / poison gas) +# tile 624 (octagonal / poison gas) { ................ ................ @@ -11884,7 +11903,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 624 (twisted / corrosion) +# tile 625 (twisted / corrosion) { ................ .............KK. @@ -11903,7 +11922,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 625 (titanium / noise) +# tile 626 (titanium / noise) { ................ ................ @@ -11922,7 +11941,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 626 (driftwood / deluge) +# tile 627 (driftwood / deluge) { ................ ................ @@ -11942,7 +11961,7 @@ Z = (195, 195, 195) ................ } -# tile 627 (spiked) +# tile 628 (spiked) { ................ ................ @@ -11961,7 +11980,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 628 (jeweled) +# tile 629 (jeweled) { ................ ................ @@ -11980,7 +11999,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 629 (gold piece) +# tile 630 (gold piece) { ................ ................ @@ -11999,7 +12018,7 @@ Z = (195, 195, 195) .........HA..... ...........HA... } -# tile 630 (white / dilithium crystal) +# tile 631 (white / dilithium crystal) { ................ ................ @@ -12018,7 +12037,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 631 (white / diamond) +# tile 632 (white / diamond) { ................ ................ @@ -12037,7 +12056,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 632 (red / ruby) +# tile 633 (red / ruby) { ................ ................ @@ -12056,7 +12075,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 633 (orange / jacinth) +# tile 634 (orange / jacinth) { ................ ................ @@ -12075,7 +12094,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 634 (blue / sapphire) +# tile 635 (blue / sapphire) { ................ ................ @@ -12094,7 +12113,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 635 (black / black opal) +# tile 636 (black / black opal) { ................ ................ @@ -12113,7 +12132,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 636 (green / emerald) +# tile 637 (green / emerald) { ................ ................ @@ -12132,7 +12151,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 637 (green / turquoise) +# tile 638 (green / turquoise) { ................ ................ @@ -12151,7 +12170,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 638 (yellow / citrine) +# tile 639 (yellow / citrine) { ................ ................ @@ -12170,7 +12189,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 639 (green / aquamarine) +# tile 640 (green / aquamarine) { ................ ................ @@ -12189,7 +12208,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 640 (yellowish brown / amber) +# tile 641 (yellowish brown / amber) { ................ ................ @@ -12208,7 +12227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 641 (yellowish brown / topaz) +# tile 642 (yellowish brown / topaz) { ................ ................ @@ -12227,7 +12246,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 642 (black / jet) +# tile 643 (black / jet) { ................ ................ @@ -12246,7 +12265,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 643 (white / opal) +# tile 644 (white / opal) { ................ ................ @@ -12265,7 +12284,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 644 (yellow / chrysoberyl) +# tile 645 (yellow / chrysoberyl) { ................ ................ @@ -12284,7 +12303,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 645 (red / garnet) +# tile 646 (red / garnet) { ................ ................ @@ -12303,7 +12322,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 646 (violet / amethyst) +# tile 647 (violet / amethyst) { ................ ................ @@ -12322,7 +12341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 647 (red / jasper) +# tile 648 (red / jasper) { ................ ................ @@ -12341,7 +12360,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 648 (violet / fluorite) +# tile 649 (violet / fluorite) { ................ ................ @@ -12360,7 +12379,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 649 (black / obsidian) +# tile 650 (black / obsidian) { ................ ................ @@ -12379,7 +12398,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 650 (orange / agate) +# tile 651 (orange / agate) { ................ ................ @@ -12398,7 +12417,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 651 (green / jade) +# tile 652 (green / jade) { ................ ................ @@ -12417,7 +12436,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 652 (white / worthless piece of white glass) +# tile 653 (white / worthless piece of white glass) { ................ ................ @@ -12436,7 +12455,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 653 (blue / worthless piece of blue glass) +# tile 654 (blue / worthless piece of blue glass) { ................ ................ @@ -12455,7 +12474,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 654 (red / worthless piece of red glass) +# tile 655 (red / worthless piece of red glass) { ................ ................ @@ -12474,7 +12493,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 655 (yellowish brown / worthless piece of yellowish brown glass) +# tile 656 (yellowish brown / worthless piece of yellowish brown glass) { ................ ................ @@ -12493,7 +12512,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 656 (orange / worthless piece of orange glass) +# tile 657 (orange / worthless piece of orange glass) { ................ ................ @@ -12512,7 +12531,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 657 (yellow / worthless piece of yellow glass) +# tile 658 (yellow / worthless piece of yellow glass) { ................ ................ @@ -12531,7 +12550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 658 (black / worthless piece of black glass) +# tile 659 (black / worthless piece of black glass) { ................ ................ @@ -12550,7 +12569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 659 (green / worthless piece of green glass) +# tile 660 (green / worthless piece of green glass) { ................ ................ @@ -12569,7 +12588,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 660 (violet / worthless piece of violet glass) +# tile 661 (violet / worthless piece of violet glass) { ................ ................ @@ -12588,7 +12607,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 661 (gray / luckstone) +# tile 662 (gray / luckstone) { ................ ................ @@ -12607,7 +12626,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 662 (gray / healthstone) +# tile 663 (gray / healthstone) { ................ ................ @@ -12626,7 +12645,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 663 (gray / loadstone) +# tile 664 (gray / loadstone) { ................ ................ @@ -12645,7 +12664,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 664 (gray / touchstone) +# tile 665 (gray / touchstone) { ................ ................ @@ -12664,7 +12683,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 665 (gray / whetstone) +# tile 666 (gray / whetstone) { ................ ................ @@ -12683,7 +12702,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 666 (gray / flint) +# tile 667 (gray / flint) { ................ ................ @@ -12702,7 +12721,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 667 (shiny / sling bullet) +# tile 668 (shiny / sling bullet) { ................ ................ @@ -12721,7 +12740,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 668 (rock) +# tile 669 (rock) { ................ ................ @@ -12740,7 +12759,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 669 (boulder) +# tile 670 (boulder) { ................ ................ @@ -12759,7 +12778,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 670 (statue) +# tile 671 (statue) { ................ ........JJ...... @@ -12778,7 +12797,7 @@ Z = (195, 195, 195) .....JJJJJJAA... ................ } -# tile 671 (heavy iron ball) +# tile 672 (heavy iron ball) { ................ ................ @@ -12797,7 +12816,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 672 (iron chain) +# tile 673 (iron chain) { ................ ................ @@ -12816,7 +12835,7 @@ Z = (195, 195, 195) ...........PP.PA ............AA.. } -# tile 673 (splash of venom / blinding venom) +# tile 674 (splash of venom / blinding venom) { ................ ................ @@ -12835,7 +12854,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 674 (splash of venom / acid venom) +# tile 675 (splash of venom / acid venom) { ................ ................ @@ -12854,7 +12873,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 675 (snowball) +# tile 676 (snowball) { ................ ................ @@ -12873,7 +12892,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 676 (spike) +# tile 677 (spike) { ................ ................ @@ -12892,7 +12911,7 @@ Z = (195, 195, 195) .......N........ ................ } -# tile 677 (spirit) +# tile 678 (spirit) { ABCDEFGHIJKLMNOP BAAAAAAAAAAAAAAO From be0a4f966790e93a9886f8a6862a97429944108f Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 00:43:23 +0100 Subject: [PATCH 47/82] Revert "Doppelganger nerf/buff. Doppelgangers are sensitive to both fire and cold, so they'll acquire those vulnerabilities at level 5 (similar to the ice and flame mages). As compensation, they get their polymorph control at level 9 now." This reverts commit 1ef7d7c712b81eadc6c18f17b3bb825138a43a95. --- src/attrib.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/attrib.c b/src/attrib.c index 511f5f67a..81c138e6a 100644 --- a/src/attrib.c +++ b/src/attrib.c @@ -214,9 +214,7 @@ static const struct innate { dop_abil[] = { /* { 1, &(HPolymorph), "", "" },*/ { 1, &(HAcid_resistance), "", "" }, - { 5, &(HVulnerable_fire), "sensitive to heat", "less sensitive to heat" }, - { 5, &(HVulnerable_cold), "sensitive to cold", "less sensitive to cold" }, - { 9, &(HPolymorph_control), "your choices improve", "choiceless" }, + { 25, &(HPolymorph_control), "your choices improve", "choiceless" }, { 0, 0, 0, 0 } }, hum_abil[] = { { 0, 0, 0, 0 } }; From 230e296e326b6d454ad62124cf5cfe704a9b21b1 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 00:49:43 +0100 Subject: [PATCH 48/82] Increase wand hit chance for high-dex characters. From SpliceHack commit b1cd131e62e. --- src/zap.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/zap.c b/src/zap.c index c39c1b95e..a723d3639 100644 --- a/src/zap.c +++ b/src/zap.c @@ -5646,7 +5646,12 @@ int type; /* either hero cast spell type or 0 */ boolean is_wand; { int chance = rn2(20); - int spell_bonus = type ? spell_hit_bonus(type, is_wand) : 0; + int spell_bonus = 0; + + if (type) + spell_bonus = spell_hit_bonus(type, is_wand); + else if (ACURR(A_DEX) > 17) + spell_bonus = (ACURR(A_DEX) - 17); /* small chance for naked target to avoid being hit */ if (!chance) From 546bc9181d7aa6b81e3d13c0286c730b9d72e3fa Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 01:13:50 +0100 Subject: [PATCH 49/82] Ported the steam room themed room from SpliceHack. It's converted from Lua so it's a variation on the concept. --- dat/vaults.des | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/dat/vaults.des b/dat/vaults.des index 7c8cb0078..3ab48f234 100644 --- a/dat/vaults.des +++ b/dat/vaults.des @@ -1366,12 +1366,35 @@ TRAP: "statue", (7,7) LOOP [4] { [50%]: OBJECT:('`',"statue"),random } +# Steam room +LEVEL:"vlt-0076" +FLAGS:rndvault +MINDEPTH:1 +GEOMETRY:random +MAP +----------- +|.........| +|.........| +|.........| +|.........| +|.........| +|.........| +|.........| +|.........| +|.........| +----------- +ENDMAP +REGION:(1,1,1,1),random,"rndvault",irregular { + LOOP [5] { [75%]: TERRAIN: random,'V' } +} + + # Default room # Because this is the last room this will show up regardless of MINLEVEL # (At least that's what some testing revealed.) # We'll make this room add some color to the dungeon but no dangerous # lava or deep water pools. -LEVEL:"vlt-0076" +LEVEL:"vlt-0077" FLAGS:rndvault ROOM:"rndvault", random, random, random, (3,3) { $terr = TERRAIN: {'I', 'T', 't', 's', 'w', 'C', ',' } From a79debc7afecb4e00e95a0b0e332b50742370fb0 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 01:22:51 +0100 Subject: [PATCH 50/82] Adjust minimum level for steam room. --- dat/vaults.des | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dat/vaults.des b/dat/vaults.des index 3ab48f234..6c713bd87 100644 --- a/dat/vaults.des +++ b/dat/vaults.des @@ -1369,7 +1369,7 @@ LOOP [4] { [50%]: OBJECT:('`',"statue"),random } # Steam room LEVEL:"vlt-0076" FLAGS:rndvault -MINDEPTH:1 +MINDEPTH:5 GEOMETRY:random MAP ----------- From a7417672cd8a51fdfaf3e8309c316110587c1883 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 01:50:16 +0100 Subject: [PATCH 51/82] Ported the 'kitchen' themed room from SpliceHack. It can appear starting at level 5. --- dat/vaults.des | 55 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/dat/vaults.des b/dat/vaults.des index 6c713bd87..57cbe821a 100644 --- a/dat/vaults.des +++ b/dat/vaults.des @@ -1388,13 +1388,66 @@ REGION:(1,1,1,1),random,"rndvault",irregular { LOOP [5] { [75%]: TERRAIN: random,'V' } } +# Kitchen +LEVEL:"vlt-0077" +FLAGS:rndvault +MINDEPTH:5 +ROOM:"rndvault", random, random, random, (10,2) { + # -- cookware and other useful things... + TERRAIN: random,'K' + TERRAIN: random,'K' + [50%]: TERRAIN: random,'U' + [50%]: OBJECT:('(', "ice box"), random + LOOP [3] { [50%]: OBJECT: ('[', "dented pot"), random } + LOOP [3] { [50%]: OBJECT: (')', "knife"), random } + [70%]: OBJECT:('(', "tin opener"), random + [20%]: OBJECT:('(', "tinning kit"), random + [20%]: OBJECT:('(', "towel"), random + [20%]: OBJECT:('[', "alchemy smock"), random + + # -- sauces and stocks... + LOOP [3] { [50%]: OBJECT: ('!', "oil"), random } + LOOP [3] { [50%]: OBJECT: ('!', "fruit juice"), random } + LOOP [3] { [50%]: OBJECT: ('!', "booze"), random } + + # -- raw ingredients... + LOOP [4] { [50%]: OBJECT: ('%', "tin"), random } + + $ingredients = OBJECT: { + ('%', "meatball"), + ('%', "apple"), + ('%', "orange"), + ('%', "mushroom"), + ('%', "pear"), + ('%', "asian pear"), + ('%', "melon"), + ('%', "banana"), + ('%', "egg"), + ('%', "carrot"), + ('%', "clove of garlic"), + ('%', "pineapple"), + ('%', "cream pie"), + ('%', "kelp frond"), + ('%', "slice of cake"), + ('%', "pumpkin pie"), + ('%', "apple pie"), + ('%', "egg"), + ('%', "cheese"), + ('%', "lump of royal jelly") + } + LOOP [1d4 + 5] { OBJECT: $ingredients[1d20], random } + + # And some unfortunate cooking accidents... + LOOP [3] { [50%]: MONSTER:'%',random } +} + # Default room # Because this is the last room this will show up regardless of MINLEVEL # (At least that's what some testing revealed.) # We'll make this room add some color to the dungeon but no dangerous # lava or deep water pools. -LEVEL:"vlt-0077" +LEVEL:"vlt-0078" FLAGS:rndvault ROOM:"rndvault", random, random, random, (3,3) { $terr = TERRAIN: {'I', 'T', 't', 's', 'w', 'C', ',' } From e5cf800527ca5517db0bab5f71528c2417594e42 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 01:51:11 +0100 Subject: [PATCH 52/82] Fix baby dragon generation in wyrm caves. --- dat/caves.des | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dat/caves.des b/dat/caves.des index 2dfa4d75f..206c36683 100644 --- a/dat/caves.des +++ b/dat/caves.des @@ -495,7 +495,7 @@ $mon_names = MONSTER: { # 15 baby dragons # 1d13 covers the above list (don't need to worry about 0 index) -LOOP [15] { MONSTER: $mon_names[1d13], random, hostile } +LOOP [15] { MONSTER: $mon_names[1d14], random, hostile } # 20 random dragon eggs LOOP [20] { OBJECT: ('%', "egg"), random, montype:'D' } From 34baa4b17b97d7985a2cb19d99f8bec8c223f6b4 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 08:35:18 +0100 Subject: [PATCH 53/82] Grave trolls can appear in graveyards or in the spooky themed room. I disabled them from generating randomly, but they can still be summoned via make undead. --- dat/vaults.des | 1 + src/mkroom.c | 2 ++ src/monst.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dat/vaults.des b/dat/vaults.des index 57cbe821a..8c773d375 100644 --- a/dat/vaults.des +++ b/dat/vaults.des @@ -1133,6 +1133,7 @@ ROOM:"rndvault", unlit, random, random, random { GRAVE:random [20%]: GRAVE:random, random MONSTER: '&', random +[50%]: MONSTER: ('T', "grave troll"), random } # watcher in the water diff --git a/src/mkroom.c b/src/mkroom.c index 2f985ba46..c7ef3d9c3 100644 --- a/src/mkroom.c +++ b/src/mkroom.c @@ -806,6 +806,8 @@ morguemon() if (hd > 8 && i > 85) return mkclass(S_VAMPIRE, 0); + if (hd > 7 && i > 75 && !rn2(4)) + return &mons[PM_GRAVE_TROLL]; if (In_vecna_branch(&u.uz) && hd > 8 && i > 80) return &mons[PM_SHADE]; diff --git a/src/monst.c b/src/monst.c index a4a303ad4..39e786d47 100644 --- a/src/monst.c +++ b/src/monst.c @@ -5159,7 +5159,7 @@ struct permonst _mons2[] = { M3_INFRAVISIBLE | M3_INFRAVISION | M3_TRAITOR, M4_VULNERABLE_ELEC, MH_TROLL, 13, CLR_BLUE), MON("grave troll", S_TROLL, /* SpliceHack */ - LVL(11, 8, 0, 60, 0), (G_GENO | 1), + LVL(11, 8, 0, 60, 0), (G_NOGEN | 1), A(ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_CLAW, AD_PHYS, 2, 6), ATTK(AT_BITE, AD_DISE, 2, 6), From e82481e5fca51d40ef9ac9166b6173be8cdbb072 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 08:52:18 +0100 Subject: [PATCH 54/82] Fix plural form of worm that walks. --- src/objnam.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/objnam.c b/src/objnam.c index d06ad7c9d..d775a4bcc 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -2801,6 +2801,7 @@ static struct sing_plur one_off[] = { { "serum", "sera" }, { "staff", "staves" }, { "tooth", "teeth" }, + { "worm that walks", "worms that walk" }, { 0, 0 } }; From 762b4e6f90381175e72ab8a48d4e75c0607ffa6b Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Thu, 9 Nov 2023 20:21:25 +0100 Subject: [PATCH 55/82] New monster: arch-vile (from DOOM). True to it's origins, this monster is a high-level mage which has two core mechanics derived from DOOM. The first is specializing in the fire pillar attack. This is a clerical spell, however, the arch-vile will only cast this spell rather than having access to the entire clerical library. One exception is when the arch-vile is low on health, it will also cast self healing. The fire pillar has been adjusted so it can be used at range, before it was only usable within melee range. The second core mechanic is the ability to ressurect corpses. I was actually able to reuse the existing infestation mechanic that moldiers introduced. When arch-viles walk over any corpse, they can ressurect it. With their blazing speed and skittish behavior, I predict these will be quite a force for the player to deal with and likely become a popular genocide target. I debated whether to give them a melee/touch attack or any other attacks, but I think the two main mechanics combined with their speed and evasive movement will be quite enough. --- src/mcastu.c | 21 +++++++++++++++++---- src/mon.c | 11 ++++++++--- src/monmove.c | 1 + src/monst.c | 10 ++++++++++ win/share/monsters.txt | 21 +++++++++++++++++++++ 5 files changed, 57 insertions(+), 7 deletions(-) diff --git a/src/mcastu.c b/src/mcastu.c index 1b07ed4c7..f40f044d7 100644 --- a/src/mcastu.c +++ b/src/mcastu.c @@ -28,7 +28,7 @@ enum mcast_mage_spells { MGC_REFLECTION, MGC_DEATH_TOUCH, MGC_CREATE_POOL, - MGC_CALL_UNDEAD + MGC_CALL_UNDEAD, }; /* monster cleric spells */ @@ -218,11 +218,14 @@ int spellnum; */ while (spellnum > 15 && rn2(16)) spellnum = rn2(spellnum); - + /* If we're hurt, seriously consider giving fixing ourselves priority */ if ((mtmp->mhp * 4) <= mtmp->mhpmax) spellnum = 1; + if (mtmp->data == &mons[PM_ARCH_VILE] && spellnum != 1) + return CLC_FIRE_PILLAR; + switch (spellnum) { case 15: case 14: @@ -247,8 +250,7 @@ int spellnum; case 9: return CLC_CURSE_ITEMS; case 8: - if ((is_demon(mtmp->data) - && mtmp->data != &mons[PM_LOLTH]) + if ((is_demon(mtmp->data) && mtmp->data != &mons[PM_LOLTH]) || mtmp->mtame || mtmp->mpeaceful) return CLC_VULN_YOU; else @@ -1346,6 +1348,7 @@ int spellnum; case CLC_INSECTS: case CLC_CURE_SELF: case CLC_PROTECTION: + case CLC_FIRE_PILLAR: return TRUE; default: break; @@ -1438,6 +1441,11 @@ int spellnum; if ((!haseyes(mdef->data) || mdef->mblinded) && spellnum == CLC_BLIND_YOU) return TRUE; + /* Don't let arch-viles spam too much */ + if (spellnum == CLC_FIRE_PILLAR + && mtmp->data == &mons[PM_ARCH_VILE] && rn2(30)) { + return TRUE; + } } return FALSE; } @@ -1578,6 +1586,11 @@ int spellnum; /* blindness spell on blinded player */ if (Blinded && spellnum == CLC_BLIND_YOU) return TRUE; + /* Don't let arch-viles spam too much */ + if (spellnum == CLC_FIRE_PILLAR + && mtmp->data == &mons[PM_ARCH_VILE] && rn2(30)) { + return TRUE; + } } return FALSE; } diff --git a/src/mon.c b/src/mon.c index 026707020..bbfb4f292 100644 --- a/src/mon.c +++ b/src/mon.c @@ -1816,8 +1816,9 @@ minfestcorpse(struct monst *mtmp) return; } if (cansee(mtmp->mx,mtmp->my) && flags.verbose) - pline("%s infests %s!", Monnam(mtmp), - distant_name(otmp,doname)); + pline("%s %s %s!", Monnam(mtmp), + mtmp->data == &mons[PM_ARCH_VILE] ? "resurrects" : "infests", + distant_name(otmp,doname)); else if (!Deaf && flags.verbose) You_hear("an unsettling writhing noise."); @@ -1826,7 +1827,11 @@ minfestcorpse(struct monst *mtmp) if (mtmp->data == &mons[PM_MAGGOT]) { if (enexto(&cc, mtmp->mx, mtmp->my, &mons[PM_GIANT_MOSQUITO])) makemon(&mons[PM_GIANT_MOSQUITO ], cc.x, cc.y, NO_MINVENT); - } + } + if (mtmp->data == &mons[PM_ARCH_VILE]) { + if (enexto(&cc, mtmp->mx, mtmp->my, &mons[otmp->corpsenm])) + makemon(&mons[otmp->corpsenm], cc.x, cc.y, NO_MINVENT); + } else if (mtmp->data == &mons[PM_HELLMINTH]) { if (enexto(&cc, mtmp->mx, mtmp->my, &mons[PM_WORM_THAT_WALKS])) makemon(&mons[rn2(4) ? PM_GIBBERSLUG : PM_WORM_THAT_WALKS], cc.x, cc.y, NO_MINVENT); diff --git a/src/monmove.c b/src/monmove.c index b0525652a..ca76cd4a4 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -1293,6 +1293,7 @@ register int after; } /* Infest corpses. */ if (is_moldier(ptr) + || mtmp->data == &mons[PM_ARCH_VILE] || mtmp->data == &mons[PM_MAGGOT] || mtmp->data == &mons[PM_HELLMINTH] || mtmp->data == &mons[PM_LARVA]) diff --git a/src/monst.c b/src/monst.c index 242977167..11d15983c 100644 --- a/src/monst.c +++ b/src/monst.c @@ -4532,6 +4532,16 @@ struct permonst _mons2[] = { M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN, M2_HOSTILE | M2_MAGIC, M3_WANTSBOOK | M3_INFRAVISION | M3_TRAITOR, 0, MH_UNDEAD, 21, HI_LORD), + MON("arch-vile", S_LICH, + LVL(22, 24, 0, 50, -15), (G_HELL | G_GENO | G_NOCORPSE | 1), + A(ATTK(AT_MAGC, AD_CLRC, 4, 6), + NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), + SIZ(800, 100, MS_MUMBLE, MZ_HUMAN), + MR_FIRE | MR_COLD | MR_SLEEP | MR_POISON + | MR_DRAIN | MR_SICK, MR_FIRE | MR_COLD, + M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN | M1_THICK_HIDE, + M2_HOSTILE | M2_MAGIC, M3_INFRAVISION | M3_TRAITOR | M3_SKITTISH, + 0, MH_UNDEAD, 23, CLR_YELLOW), MON("arch-lich", S_LICH, LVL(25, 9, -6, 90, -15), (G_HELL | G_GENO | G_NOCORPSE | 1), A(ATTK(AT_TUCH, AD_COLD, 5, 6), diff --git a/win/share/monsters.txt b/win/share/monsters.txt index 88490e599..174e82ded 100644 --- a/win/share/monsters.txt +++ b/win/share/monsters.txt @@ -8829,6 +8829,27 @@ Z = (195, 195, 195) ......OOO....... ................ } +# tile 0 (arch-vile) +{ + .LH...........L. + HH...........AH. + H....1111..H.H.. + .HL.111LL1..AH.. + ..L111LLA11.LL.. + ...LLLLLLL11L... + ....1LLQLLLLL... + ......QLA1L1.... + .....QKLS11..... + .....LJAL1...... + ....KJA1L.L..... + ....L..1ALL..... + ...LJ.11.AL..... + ..JJ..111.RL1... + ..LA...11..RL... + LLA........ALL.. +} + + # tile 463 (arch-lich) { ................ From f80803c984c50b546d007b63417bb43bbe8be2ca Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 22:06:47 +0100 Subject: [PATCH 56/82] Reintegrated Xanathar and his ring. Xanathar won't be part of the alignment quests, but I did find a niche for him in the mini guild special rooms. Like Jumbo the Elephant, Xanathar can appear rarely in a mini guild. It is not as rare as Jumbo, but still should be quite the surprise when he does show up. The ring got a couple tweaks to act more like the original implementation. It is a ring of displacement which grants magic resistance when worn and grants warning while carried. However, it still cannot be wished for. --- include/artilist.h | 16 +++++++++++----- src/makemon.c | 7 +++++++ src/mkroom.c | 5 +++++ src/monst.c | 20 +++++++++++++++++--- 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/include/artilist.h b/include/artilist.h index f02001f01..38fb50558 100644 --- a/include/artilist.h +++ b/include/artilist.h @@ -63,7 +63,7 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { A("", STRANGE_OBJECT, 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L, NO_COLOR, DEFAULT_MAT), - /*** Lawful artifacts ***/ + /*** Lawful artifacts ***/ /* Balmung shreds the armor of opponents. */ A("Balmung", BROADSWORD, @@ -192,8 +192,7 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { SPFX_RESTR, 0, 0, PHYS(9, 2), NO_DFNS, NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM, 1000L, NO_COLOR, DEFAULT_MAT), - - /*** Neutral artifacts ***/ + /*** Neutral artifacts ***/ A("Arvon", CRYSKNIFE, (SPFX_NOWISH | SPFX_INTEL), 0, 0, @@ -321,8 +320,8 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { (SPFX_RESTR | SPFX_STLTH), SPFX_LUCK, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NEUTRAL, PM_TOURIST, NON_PM, 5000L, NO_COLOR, DEFAULT_MAT), - - /*** Chaotic artifacts ***/ + + /*** Chaotic artifacts ***/ A("Bat from Hell", BASEBALL_BAT, (SPFX_RESTR), 0, 0, @@ -566,7 +565,14 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { PHYS(5, 10), DFNS(AD_WERE), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 1500L, NO_COLOR, SILVER), + /* Xanathar's eyestalk ring of proof against detection and location */ + A("Xanathar's Ring of Proof", RIN_DISPLACEMENT, + (SPFX_NOGEN | SPFX_NOWISH | SPFX_RESTR), SPFX_WARN, 0, + NO_ATTK, DFNS(AD_MAGM), NO_CARY, + 0, A_NONE, NON_PM, NON_PM, 2000L, NO_COLOR, DEFAULT_MAT), + /*** Alignment quest artifacts ***/ + A("Nighthorn", UNICORN_HORN, (SPFX_NOGEN | SPFX_NOWISH | SPFX_RESTR | SPFX_REFLECT | SPFX_DEFN), 0, 0, diff --git a/src/makemon.c b/src/makemon.c index 465a35b7a..16540593f 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -3491,6 +3491,13 @@ long mmflags; otmp->blessed = otmp->cursed = 0; mpickobj(mtmp, otmp); } + } else if (mndx == PM_XANATHAR) { + otmp = oname(mksobj(RIN_DISPLACEMENT, TRUE, FALSE), + artiname(ART_XANATHAR_S_RING_OF_PROOF)); + if (otmp) { + otmp->blessed = otmp->cursed = 0; + mpickobj(mtmp, otmp); + } } else if (mndx == PM_GHOST && !(mmflags & MM_NONAME)) { mtmp = christen_monst(mtmp, rndghostname()); } else if (mndx == urole.ldrnum) { diff --git a/src/mkroom.c b/src/mkroom.c index c7ef3d9c3..592679aba 100644 --- a/src/mkroom.c +++ b/src/mkroom.c @@ -887,13 +887,18 @@ struct permonst * guildmon() { int mtyp, trycnt = 0; + int i; /* Same monsters within a level, different ones between levels */ do { /* We don't want to fill the room with player monsters, ok if it's * a bit sparse. */ + i = rn2(60) + rn2(3 * level_difficulty()); + if (!rn2(3)) mtyp = PM_ARCHEOLOGIST + rn2(22); + else if (i > 143) + mtyp = PM_XANATHAR; else { /* They have some pets to help them */ switch (rn2(5)) { diff --git a/src/monst.c b/src/monst.c index b14b72987..39aa305f7 100644 --- a/src/monst.c +++ b/src/monst.c @@ -853,9 +853,23 @@ NEARDATA struct permonst mons[] = { M2_NOPOLY | M2_HOSTILE | M2_NEUTER | M2_NASTY, M3_SKITTISH | M3_INFRAVISIBLE | M3_INFRAVISION | M3_NOTAME, 0, 0, 14, CLR_BLACK), - /* - * felines - */ + MON("Xanathar", S_EYE, LVL(22, 9, -8, 70, 0), + (G_UNIQ | G_NOGEN | G_NOCORPSE), + A(ATTK(AT_MAGC, AD_CLRC, 4, 6), + ATTK(AT_GAZE, AD_SLEE, 2, 25), + ATTK(AT_GAZE, AD_DISN, 0, 0), + ATTK(AT_GAZE, AD_STON, 0, 0), + ATTK(AT_GAZE, AD_CNCL, 4, 4), + ATTK(AT_BITE, AD_PHYS, 8, 8)), + SIZ(800, 200, MS_SILENT, MZ_LARGE), + MR_COLD | MR_ELEC | MR_POISON | MR_STONE, MR_POISON, + M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_REGEN, + M2_NOPOLY | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_NEUTER, + M3_SKITTISH | M3_INFRAVISIBLE, 0, 0, 20, HI_LORD), + + /* + * felines + */ MON("serval", S_FELINE, /* SpliceHack */ LVL(0, 13, 8, 0, 0), (G_GENO | 2), A(ATTK(AT_BITE, AD_PHYS, 1, 2), From bfcc1b49b906158ef2a48e1524b68626eafa7022 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Fri, 10 Nov 2023 22:16:55 +0100 Subject: [PATCH 57/82] Fix: Steam room could generate vents over existing vents. I redid the generation so it uses the .des filtering. Also added grass to those rooms. --- dat/vaults.des | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dat/vaults.des b/dat/vaults.des index 8c773d375..bf83a6563 100644 --- a/dat/vaults.des +++ b/dat/vaults.des @@ -1370,7 +1370,7 @@ LOOP [4] { [50%]: OBJECT:('`',"statue"),random } # Steam room LEVEL:"vlt-0076" FLAGS:rndvault -MINDEPTH:5 +MINDEPTH:1 GEOMETRY:random MAP ----------- @@ -1386,7 +1386,11 @@ MAP ----------- ENDMAP REGION:(1,1,1,1),random,"rndvault",irregular { - LOOP [5] { [75%]: TERRAIN: random,'V' } + $fill = selection: filter(60%, floodfill(1,1)) + TERRAIN:$fill, ',' + + $fill = selection: filter(5%, floodfill(1,1)) + TERRAIN:$fill, 'V' } # Kitchen From 6282a7c15aeace6c8a36e1ff7c26fa09b4ff5959 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 08:32:42 +0100 Subject: [PATCH 58/82] Match wand of fireball probability to wand of death. --- src/objects.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/objects.c b/src/objects.c index 4dceb324f..0a0d9625a 100644 --- a/src/objects.c +++ b/src/objects.c @@ -1308,7 +1308,7 @@ WAND("extra healing", "bronze", 90, 300, 1, IMMEDIATE, COPPER, CLR_YELLOW), WAND("opening", "zinc", 75, 150, 1, IMMEDIATE, METAL, HI_METAL), WAND("locking", "aluminum", 75, 150, 1, IMMEDIATE, METAL, HI_METAL), WAND("probing", "uranium", 90, 150, 1, IMMEDIATE, METAL, HI_METAL), -WAND("fireball", "forked", 5, 300, 1, RAY, WOOD, HI_WOOD),/* Slash'EM */ +WAND("fireball", "forked", 15, 300, 1, RAY, WOOD, HI_WOOD),/* Slash'EM */ WAND("digging", "iron", 165, 150, 1, RAY, IRON, HI_METAL), /* Ray wands have to come last, and in this order. */ From 757f493c0f36b9f59dc016705aa040f3c1d908b6 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 21:25:30 +0100 Subject: [PATCH 59/82] Some changes to beholders. From EvilHack commit 93c4be40fa. Beholders aren't mindless, but they were flagged this way to make them invisibile to telepathy. I've removed the mindless flag, as beholders are anything but mindless. In fact, they're highly intelligent magical beings. So now they can be seen via telepathy, and I've increased their speed a bit (they're still slow) to compensate. They're also greedy, and will 'magically gather up' (no limbs) gold and magical loot that are on the dungeon floor (they currently leave containers alone still).. I also fixed some feedback bits with their gaze attacks. --- For Hack'EM, I also added an is_beholder macro to help checking our two beholders: Beholder and Xanathar. --- include/mondata.h | 2 ++ src/display.c | 2 +- src/mhitm.c | 2 +- src/mhitu.c | 64 +++++++++++++++++++++++++++++------------------ src/mon.c | 14 ++++++++--- src/monmove.c | 2 +- src/monst.c | 13 +++++----- 7 files changed, 62 insertions(+), 37 deletions(-) diff --git a/include/mondata.h b/include/mondata.h index b2343f207..b9fc56d1e 100644 --- a/include/mondata.h +++ b/include/mondata.h @@ -219,6 +219,8 @@ #define is_swallower(ptr) \ ((is_dragon(ptr) && (ptr) != &mons[PM_SEA_DRAGON]) \ || is_animal(ptr)) +#define is_beholder(ptr) ((ptr) == &mons[PM_BEHOLDER] \ + || (ptr) == &mons[PM_XANATHAR]) #define slithy(ptr) (((ptr)->mflags1 & M1_SLITHY) != 0L) #define is_wooden(ptr) ((ptr) == &mons[PM_WOOD_GOLEM]) #define thick_skinned(ptr) (((ptr)->mflags1 & M1_THICK_HIDE) != 0L) diff --git a/src/display.c b/src/display.c index d19a1f0ee..445db3644 100644 --- a/src/display.c +++ b/src/display.c @@ -539,7 +539,7 @@ struct monst *mon; if (mon_warning(mon)) { tmp = (int) (mon->m_lev / 4); /* match display.h */ wl = (tmp > WARNCOUNT - 1) ? WARNCOUNT - 1 : tmp; - if (mon->data == &mons[PM_BEHOLDER]) + if (is_beholder(mon->data)) wl = 5; if (is_zombie(mon->data) && mon->m_lev < 5) wl = 1; diff --git a/src/mhitm.c b/src/mhitm.c index 1a0933817..29411ba92 100644 --- a/src/mhitm.c +++ b/src/mhitm.c @@ -1931,7 +1931,7 @@ struct obj **ootmp; /* to return worn armor for caller to disintegrate */ You(brief_feeling, "peculiarly sad"); return (MM_DEF_DIED | (grow_up(magr, mdef) ? 0 : MM_AGR_DIED)); - } else if (magr->data == &mons[PM_BEHOLDER] && !rn2(3)) { + } else if (is_beholder(magr->data) && !rn2(3)) { if (vis) { if (mdef->data->mlet == S_MIMIC && M_AP_TYPE(mdef) != M_AP_NOTHING) diff --git a/src/mhitu.c b/src/mhitu.c index cc5948810..e2590f766 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -3754,22 +3754,26 @@ struct attack *mattk; break; return 2; } - if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) - && !Stone_resistance && !rn2(3)) { + if (canseemon(mtmp) + && couldsee(mtmp->mx, mtmp->my) && !rn2(3)) { You("meet %s petrifying gaze!", s_suffix(mon_nam(mtmp))); stop_occupation(); - if (mtmp->data == &mons[PM_BEHOLDER]) { + if (Stone_resistance + || (poly_when_stoned(youmonst.data) && polymon(PM_STONE_GOLEM))) { + You("are unaffected by %s gaze.", s_suffix(mon_nam(mtmp))); + break; + } + if (is_beholder(mtmp->data)) { /* The EotO can afford the player some protection when worn */ int dmg; + if (wearing_artifact(ART_EYES_OF_THE_OVERWORLD)) { pline("%s partially protect you from %s petrifying gaze. That hurts!", An(bare_artifactname(ublindf)), s_suffix(mon_nam(mtmp))); dmg = d(4, 6); if (dmg) mdamageu(mtmp, dmg); - } else if (!Stoned && !Stone_resistance - && !(poly_when_stoned(youmonst.data) - && polymon(PM_STONE_GOLEM))) { + } else if (!Stoned) { int kformat = KILLED_BY_AN; const char *kname = mtmp->data->mname; @@ -3782,8 +3786,6 @@ struct attack *mattk; return 1; } } else if (mtmp->data == &mons[PM_MEDUSA]) { - if (poly_when_stoned(youmonst.data) && polymon(PM_STONE_GOLEM)) - break; if (wearing_artifact(ART_EYES_OF_THE_OVERWORLD)) pline("%s gaze is too powerful for %s to resist!", s_suffix(Monnam(mtmp)), bare_artifactname(ublindf)); @@ -4023,45 +4025,53 @@ struct attack *mattk; break; /* Comment out the PM_BEHOLDER indef here so the below attack types function */ case AD_SLEE: - if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) && mtmp->mcansee - && multi >= 0 && !rn2(5) && (how_resistant(SLEEP_RES) < 100)) { + if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) + && mtmp->mcansee && multi >= 0 && !rn2(5)) { + if (!cancelled) + You("meet %s slumbering gaze.", + s_suffix(mon_nam(mtmp))); if (cancelled) { react = 6; /* "tired" */ already = (mtmp->mfrozen != 0); /* can't happen... */ + break; + } else if (how_resistant(SLEEP_RES) == 100) { + You("yawn."); + monstseesu(M_SEEN_SLEEP); + break; } else if (wearing_artifact(ART_EYES_OF_THE_OVERWORLD)) { if (!rn2(4)) pline("%s protect you from %s slumbering gaze.", An(bare_artifactname(ublindf)), s_suffix(mon_nam(mtmp))); break; - } else { + } else if (how_resistant(SLEEP_RES) < 100) { fall_asleep(-resist_reduce(rnd(10), SLEEP_RES), TRUE); pline("%s gaze makes you very sleepy...", s_suffix(Monnam(mtmp))); - } - if (how_resistant(SLEEP_RES) == 100) { - monstseesu(M_SEEN_SLEEP); + break; } } break; case AD_SLOW: - if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) && mtmp->mcansee - /* (HFast & (INTRINSIC | TIMEOUT)) && */ - && !Slow && !defended(&youmonst, AD_SLOW) - && !resists_slow(youmonst.data) && !rn2(4)) { + if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) + && mtmp->mcansee && !rn2(4)) { + if (!cancelled) + You("meet %s lethargic gaze.", + s_suffix(mon_nam(mtmp))); if (cancelled) { react = 7; /* "dulled" */ already = (mtmp->mspeed == MSLOW); + break; /* The EotO can afford the player some protection when worn */ } else if (wearing_artifact(ART_EYES_OF_THE_OVERWORLD)) { if (!rn2(4)) pline("%s protect you from %s lethargic gaze.", An(bare_artifactname(ublindf)), s_suffix(mon_nam(mtmp))); break; - } else { - You("meet %s lethargic gaze.", - s_suffix(mon_nam(mtmp))); + } else if (!Slow && !(defended(&youmonst, AD_SLOW) + || resists_slow(youmonst.data))) { u_slow_down(); stop_occupation(); + break; } } break; @@ -4070,8 +4080,8 @@ struct attack *mattk; * Why you may ask? Because the Beholder was never enabled. */ case AD_DISN: - if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) && mtmp->mcansee - && multi >= 0 && !rn2(5)) { + if (canseemon(mtmp) && couldsee(mtmp->mx, mtmp->my) + && mtmp->mcansee && multi >= 0 && !rn2(5)) { int dmg = d(8, 8); pline("%s turns %s towards you%s", Monnam(mtmp), @@ -4083,6 +4093,7 @@ struct attack *mattk; You("bask in its %s aura.", hcolor(NH_BLACK)); monstseesu(M_SEEN_DISINT); stop_occupation(); + break; } else if (how_resistant(DISINT_RES) > 0) { You("aren't disintegrated, but that really hurts!"); dmg = resist_reduce(dmg, DISINT_RES); @@ -4095,6 +4106,7 @@ struct attack *mattk; } else if (wearing_artifact(ART_EYES_OF_THE_OVERWORLD)) { pline("%s partially protect you. That stings!", An(bare_artifactname(ublindf))); + dmg /= 2; if (dmg) mdamageu(mtmp, dmg); break; @@ -4129,9 +4141,12 @@ struct attack *mattk; && mtmp->mcansee && !rn2(3)) { int dmg; + if (!cancelled) + You("meet %s strange gaze.", s_suffix(mon_nam(mtmp))); if (cancelled) { react = 9; /* "lackluster" */ already = (mtmp->mcan != 0); + break; /* The EotO can afford the player some protection when worn */ } else if (wearing_artifact(ART_EYES_OF_THE_OVERWORLD)) { pline("%s partially protect you from %s strange gaze. Ouch!", @@ -4139,12 +4154,13 @@ struct attack *mattk; dmg = d(2, 4); if (dmg) mdamageu(mtmp, dmg); + break; } else { - You("meet %s strange gaze.", s_suffix(mon_nam(mtmp))); (void) cancel_monst(&youmonst, (struct obj *) 0, FALSE, TRUE, FALSE); dmg = d(4, 4); if (dmg) mdamageu(mtmp, dmg); + break; } } break; diff --git a/src/mon.c b/src/mon.c index bbfb4f292..e60f58c4a 100644 --- a/src/mon.c +++ b/src/mon.c @@ -1995,13 +1995,16 @@ register struct monst *mtmp; int mat_idx; if ((gold = g_at(mtmp->mx, mtmp->my)) != 0 - && !(is_floater(mtmp->data) || can_levitate(mtmp))) { + && !((is_floater(mtmp->data) && !is_beholder(mtmp->data)) + || can_levitate(mtmp))) { mat_idx = gold->material; obj_extract_self(gold); add_to_minv(mtmp, gold); if (cansee(mtmp->mx, mtmp->my)) { if (flags.verbose && !mtmp->isgd) - pline("%s picks up some %s.", Monnam(mtmp), + pline("%s %s some %s.", Monnam(mtmp), + (is_beholder(mtmp->data) + ? "magically gathers up" : "picks up"), mat_idx == GOLD ? "gold" : "money"); newsym(mtmp->mx, mtmp->my); } @@ -2251,7 +2254,8 @@ register const char *str; /* levitating/floating monsters can't reach the ground, just like levitating players */ - if (is_floater(mtmp->data) || can_levitate(mtmp)) + if ((is_floater(mtmp->data) && !is_beholder(mtmp->data)) + || can_levitate(mtmp)) return FALSE; if (IS_MAGIC_CHEST(levl[mtmp->mx][mtmp->my].typ)) { @@ -2372,7 +2376,9 @@ register const char *str; if (is_soko_prize_flag(otmp)) continue; if (vismon && flags.verbose) - pline("%s picks up %s.", Monnam(mtmp), + pline("%s %s %s.", Monnam(mtmp), + (is_beholder(mtmp->data) + ? "magically gathers up" : "picks up"), (distu(mtmp->mx, mtmp->my) <= 5) ? doname(otmp3) : distant_name(otmp3, doname)); diff --git a/src/monmove.c b/src/monmove.c index ca76cd4a4..69c456d39 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -210,7 +210,7 @@ struct monst *mtmp; * Vecna, monster players, demon lords and princes, * honey badgers, shopkeepers inside their own shop, anything that * is mindless, priests inside their own temple, the quest leaders - * and nemesis, neothelids + * and nemesis, neothelids, beholders, other unique creatures */ if (mtmp->iswiz || is_lminion(mtmp) diff --git a/src/monst.c b/src/monst.c index 39aa305f7..4249de7a3 100644 --- a/src/monst.c +++ b/src/monst.c @@ -853,7 +853,7 @@ NEARDATA struct permonst mons[] = { M2_NOPOLY | M2_HOSTILE | M2_NEUTER | M2_NASTY, M3_SKITTISH | M3_INFRAVISIBLE | M3_INFRAVISION | M3_NOTAME, 0, 0, 14, CLR_BLACK), - MON("Xanathar", S_EYE, LVL(22, 9, -8, 70, 0), + MON("Xanathar", S_EYE, LVL(22, 6, -8, 50, -10), (G_UNIQ | G_NOGEN | G_NOCORPSE), A(ATTK(AT_MAGC, AD_CLRC, 4, 6), ATTK(AT_GAZE, AD_SLEE, 2, 25), @@ -863,8 +863,9 @@ NEARDATA struct permonst mons[] = { ATTK(AT_BITE, AD_PHYS, 8, 8)), SIZ(800, 200, MS_SILENT, MZ_LARGE), MR_COLD | MR_ELEC | MR_POISON | MR_STONE, MR_POISON, - M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_REGEN, - M2_NOPOLY | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_NEUTER, + M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_REGEN, + M2_NOPOLY | M2_HOSTILE | M2_NASTY | M2_NEUTER + | M2_PNAME | M2_GREEDY | M2_JEWELS, M3_SKITTISH | M3_INFRAVISIBLE, 0, 0, 20, HI_LORD), /* @@ -7742,9 +7743,9 @@ struct permonst _mons2[] = { ATTK(AT_BITE, AD_PHYS, 8, 8)), SIZ(800, 200, MS_SILENT, MZ_LARGE), MR_COLD | MR_ELEC | MR_POISON | MR_STONE, MR_POISON, - M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_REGEN, - M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_MAGIC | M2_NASTY - | M2_NEUTER, + M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_REGEN, + M2_NOPOLY | M2_HOSTILE | M2_NASTY | M2_NEUTER | M2_GREEDY + | M2_JEWELS | M2_PNAME | M2_MAGIC | M2_STALK , M3_WANTSBOOK | M3_WAITFORU | M3_CLOSE | M3_INFRAVISION, 0, 0, 20, CLR_GRAY), From 06072e15941e784ee001b27602dba0da97dd05ef Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 21:40:29 +0100 Subject: [PATCH 60/82] All eyes are mindless. This is to match the behavior of most SLASH'EM eyes. It's also a counter change to removing the mindless flag from beholders. I also think it's weird that eyes would have minds - even if it's an eye with magical capabilities. --- src/monst.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/monst.c b/src/monst.c index 4249de7a3..4d57ad71a 100644 --- a/src/monst.c +++ b/src/monst.c @@ -738,21 +738,24 @@ NEARDATA struct permonst mons[] = { A(ATTK(AT_NONE, AD_PLYS, 0, 70), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0, - M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_NOTAKE | M1_REGEN, + M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD + | M1_NOTAKE | M1_REGEN | M1_MINDLESS, M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 0, 0, 3, CLR_BLUE), MON("weeping eye", S_EYE, /* SpliceHack */ LVL(4, 1, 9, 10, 0), (G_GENO | 2), A(ATTK(AT_NONE, AD_RUST, 0, 70), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0, - M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_NOTAKE, + M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD + | M1_NOTAKE | M1_MINDLESS, M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 0, 0, 3, CLR_BROWN), MON("burning eye", S_EYE, LVL(4, 1, 9, 10, 0), (G_NOHELL | G_GENO | 1), A(ATTK(AT_NONE, AD_FIRE, 0, 10), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_FIRE, MR_FIRE, - M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD | M1_NOTAKE, + M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD + | M1_NOTAKE | M1_MINDLESS, M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, M4_VULNERABLE_COLD, 0, 3, CLR_RED), MON("glowing eye", S_EYE, /* Slash'EM */ @@ -811,23 +814,25 @@ NEARDATA struct permonst mons[] = { A(ATTK(AT_EXPL, AD_ACID, 5, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_ACID, MR_ACID, - M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS - | M1_NOTAKE, - M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, 0, 0, 10, CLR_YELLOW), + M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD + | M1_MINDLESS | M1_NOTAKE, M2_HOSTILE | M2_NEUTER, + M3_INFRAVISIBLE, 0, 0, 10, CLR_YELLOW), MON("bloodshot eye", S_EYE, /* Slash'EM */ LVL(6, 3, 4, 0, 0), (G_NOHELL | G_GENO | 1), A(ATTK(AT_GAZE, AD_STUN, 3, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0, - M1_FLY | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS, M2_HOSTILE | M2_NEUTER, - M3_INFRAVISIBLE | M3_SKITTISH, 0, 0, 8, CLR_RED), + M1_FLY | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS, + M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE | M3_SKITTISH, 0, + 0, 8, CLR_RED), MON("blinking eye", S_EYE, /* Slash'EM */ LVL(8, 12, 4, 0, 0), (G_NOHELL | G_GENO | 1), A(ATTK(AT_GAZE, AD_TLPT, 0, 0), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(10, 10, MS_SILENT, MZ_SMALL), 0, 0, - M1_FLY | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_TPORT, M2_HOSTILE | M2_NEUTER, - M3_INFRAVISIBLE | M3_SKITTISH, 0, 0, 10, CLR_CYAN), + M1_FLY | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_TPORT, + M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE | M3_SKITTISH, 0, + 0, 10, CLR_CYAN), MON("magical eye", S_EYE, /* EvilHack */ LVL(8, 6, 0, 90, -10), (2), A(ATTK(AT_GAZE, AD_SLOW, 0, 0), @@ -837,7 +842,7 @@ NEARDATA struct permonst mons[] = { ATTK(AT_GAZE, AD_COLD, 2, 4), ATTK(AT_GAZE, AD_LUCK, 0, 0)), SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD | MR_FIRE | MR_ELEC, 0, - M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD, + M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS, M2_NOPOLY | M2_HOSTILE | M2_NEUTER | M2_NASTY, M3_SKITTISH | M3_INFRAVISIBLE | M3_INFRAVISION | M3_NOTAME, 0, 0, 12, HI_LORD), From c10d7b51c8132d1bc1363d8ae0c3f134380c4f19 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 21:46:48 +0100 Subject: [PATCH 61/82] Nighthorn is intelligent again. After playing with this a bit and especially seeing how it caused some challenges in the Valley of the Dead, I think it's a good balancer for it's ability to remove fear and bittersweet like the Hand of Vecna. --- include/artilist.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/artilist.h b/include/artilist.h index 38fb50558..8186ce9a9 100644 --- a/include/artilist.h +++ b/include/artilist.h @@ -575,9 +575,9 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { A("Nighthorn", UNICORN_HORN, (SPFX_NOGEN | SPFX_NOWISH | SPFX_RESTR | SPFX_REFLECT - | SPFX_DEFN), 0, 0, + | SPFX_DEFN | SPFX_INTEL), 0, 0, PHYS(1, 3), DFNS(AD_STUN), NO_CARY, 0, - A_LAWFUL, NON_PM, NON_PM, 10000L, NO_COLOR, DEFAULT_MAT), + A_LAWFUL, NON_PM, NON_PM, 10000L, NO_COLOR, GEMSTONE), A("The Eye of the Beholder", EYEBALL, (SPFX_NOGEN | SPFX_NOWISH | SPFX_RESTR | SPFX_WARN), 0, 0, From 186097afcb06f8c37e157fe91810b00d72fe43f1 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 21:51:20 +0100 Subject: [PATCH 62/82] Saving grace. From NetHack commit 08a2a2a1a4. Once per game, if receiving a killing blow from above 90% HP, allow the hero to survive with 1 HP. --- include/extern.h | 1 + include/you.h | 2 +- src/hack.c | 14 ++++++++++++++ src/mhitu.c | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/extern.h b/include/extern.h index 5c777e26f..ca9b44142 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1035,6 +1035,7 @@ E boolean FDECL(crawl_destination, (int, int)); E int NDECL(monster_nearby); E void FDECL(nomul, (int)); E void FDECL(unmul, (const char *)); +E int saving_grace(int); E void FDECL(showdmg, (int, BOOLEAN_P)); E void FDECL(losehp, (int, const char *, BOOLEAN_P)); E int NDECL(weight_cap); diff --git a/include/you.h b/include/you.h index 4d72029a2..945cd3667 100644 --- a/include/you.h +++ b/include/you.h @@ -375,7 +375,7 @@ struct you { Bitfield(uinvulnerable, 1); /* you're invulnerable (praying) */ Bitfield(uburied, 1); /* you're buried */ Bitfield(uedibility, 1); /* blessed food detect; sense unsafe food */ - /* 1 free bit! */ + Bitfield(usaving_grace, 1); /* prevents death once */ unsigned udg_cnt; /* how long you have been demigod */ struct u_achieve uachieve; /* achievements */ diff --git a/src/hack.c b/src/hack.c index ada26ff6b..fa1362f27 100644 --- a/src/hack.c +++ b/src/hack.c @@ -3812,6 +3812,7 @@ boolean k_format; return; } + n = saving_grace(n); u.uhp -= n; showdmg(n, TRUE); @@ -4018,6 +4019,19 @@ struct obj *otmp; return 0L; } +/* once per game, if receiving a killing blow from above 90% HP, + allow the hero to survive with 1 HP */ +int +saving_grace(int dmg) +{ + if (!u.usaving_grace && (u.uhp <= dmg) + && (u.uhp * 100 / u.uhpmax) > 90) { + dmg = u.uhp - 1; + u.usaving_grace = TRUE; /* used up */ + } + return dmg; +} + void spot_checks(xchar x, xchar y, schar old_typ) { diff --git a/src/mhitu.c b/src/mhitu.c index e2590f766..9eb55cf66 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -4428,6 +4428,7 @@ int n; if (u.mh < 1) rehumanize(); } else { + n = saving_grace(n); u.uhp -= n; if (u.uhp < 1) done_in_by(mtmp, DIED); From d287fa9cd4982c7b4174d476b76edacf4191899e Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 21:52:29 +0100 Subject: [PATCH 63/82] Saving grace stops multi-turn actions, sleeping, and fainting From NetHack commit 03ee609ca0. --- src/hack.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/hack.c b/src/hack.c index fa1362f27..3553aeef8 100644 --- a/src/hack.c +++ b/src/hack.c @@ -4028,6 +4028,13 @@ saving_grace(int dmg) && (u.uhp * 100 / u.uhpmax) > 90) { dmg = u.uhp - 1; u.usaving_grace = TRUE; /* used up */ + context.travel = context.travel1 = context.mv = context.run = 0; + if (multi > 0) + multi = 0; + if (u.usleep) + unmul("Suddenly you wake up!"); + if (is_fainted()) + reset_faint(); } return dmg; } From f877ea023ca9e3a9211291b08a2152fb72b26c6b Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 22:01:54 +0100 Subject: [PATCH 64/82] If you receive the quest boon, it will also reset your saving grace chance if it had been used up already. --- src/quest.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/quest.c b/src/quest.c index 38df7cb9b..cfa75b175 100644 --- a/src/quest.c +++ b/src/quest.c @@ -373,6 +373,7 @@ struct obj *obj; /* quest artifact; possibly null if carrying Amulet */ if (!alignabuse && u.ualign.abuse > -13) { flags.quest_boon = TRUE; change_luck(10); + u.usaving_grace = FALSE; /* ONE more chance! */ pline("Before departing, you hear some strange whispering. You feel your luck changing!"); } } From 1ca3b5311dcde2a0cfddd2e7456827e1f95e9559 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 22:12:34 +0100 Subject: [PATCH 65/82] Bump up arch-viles's MR to match master/arch lich and gave them shock resistance. --- src/monst.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/monst.c b/src/monst.c index 4d57ad71a..25a5009a2 100644 --- a/src/monst.c +++ b/src/monst.c @@ -4553,11 +4553,11 @@ struct permonst _mons2[] = { M2_HOSTILE | M2_MAGIC, M3_WANTSBOOK | M3_INFRAVISION | M3_TRAITOR, 0, MH_UNDEAD, 21, HI_LORD), MON("arch-vile", S_LICH, - LVL(22, 24, 0, 50, -15), (G_HELL | G_GENO | G_NOCORPSE | 1), + LVL(22, 24, 0, 90, -15), (G_HELL | G_GENO | G_NOCORPSE | 1), A(ATTK(AT_MAGC, AD_CLRC, 4, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(800, 100, MS_MUMBLE, MZ_HUMAN), - MR_FIRE | MR_COLD | MR_SLEEP | MR_POISON + MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_DRAIN | MR_SICK, MR_FIRE | MR_COLD, M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN | M1_THICK_HIDE, M2_HOSTILE | M2_MAGIC, M3_INFRAVISION | M3_TRAITOR | M3_SKITTISH, From 4efba488a63826549a65c576e436b715eb0d1ad7 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 22:54:43 +0100 Subject: [PATCH 66/82] Fix: Tame arch-viles would blast you with fire pillars. --- src/mcastu.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/mcastu.c b/src/mcastu.c index f40f044d7..3254bdcee 100644 --- a/src/mcastu.c +++ b/src/mcastu.c @@ -1428,8 +1428,10 @@ int spellnum; && spellnum == MGC_ACID_BLAST) { return TRUE; } - if ((spellnum == MGC_ICE_BOLT || spellnum == MGC_FIRE_BOLT - || spellnum == MGC_ACID_BLAST || spellnum == MGC_CANCELLATION) + if ((spellnum == MGC_ICE_BOLT + || spellnum == MGC_FIRE_BOLT + || spellnum == MGC_ACID_BLAST + || spellnum == MGC_CANCELLATION) && mtmp->mpeaceful) { return TRUE; } @@ -1441,6 +1443,11 @@ int spellnum; if ((!haseyes(mdef->data) || mdef->mblinded) && spellnum == CLC_BLIND_YOU) return TRUE; + + if (spellnum == CLC_FIRE_PILLAR && mtmp->mpeaceful) + return TRUE; + if (m_seenres(mtmp, M_SEEN_FIRE) && spellnum == CLC_FIRE_PILLAR) + return TRUE; /* Don't let arch-viles spam too much */ if (spellnum == CLC_FIRE_PILLAR && mtmp->data == &mons[PM_ARCH_VILE] && rn2(30)) { @@ -1586,6 +1593,12 @@ int spellnum; /* blindness spell on blinded player */ if (Blinded && spellnum == CLC_BLIND_YOU) return TRUE; + + if (m_seenres(mtmp, M_SEEN_FIRE) && spellnum == CLC_FIRE_PILLAR) { + return TRUE; + } + if (spellnum == CLC_FIRE_PILLAR && (mtmp->mpeaceful || u.uinvulnerable)) + return TRUE; /* Don't let arch-viles spam too much */ if (spellnum == CLC_FIRE_PILLAR && mtmp->data == &mons[PM_ARCH_VILE] && rn2(30)) { From 9d1a7e48d9ad5b90d546119e63242f10ae0cca41 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 23:31:31 +0100 Subject: [PATCH 67/82] =?UTF-8?q?Fix:=20Tame=20fire=20vampires=20don?= =?UTF-8?q?=E2=80=99t=20execute=20fireball=20correctly.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mcastu.c | 2 +- src/zap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mcastu.c b/src/mcastu.c index 3254bdcee..8729b703f 100644 --- a/src/mcastu.c +++ b/src/mcastu.c @@ -1660,7 +1660,7 @@ register struct attack *mattk; if (canseemon(mtmp)) pline("%s zaps %s with a %s!", Monnam(mtmp), mon_nam(mdef), flash_types[AD_to_ZT(mattk->adtyp)]); - dobuzz(-AD_to_SPELL(mattk->adtyp), (int) mattk->damn, mtmp->mx, + dobuzz(ZT_MONSPELL(AD_to_ZT(mattk->adtyp)), (int) mattk->damn, mtmp->mx, mtmp->my, sgn(tbx), sgn(tby), FALSE); } else impossible("Monster spell %d cast", mattk->adtyp - 1); diff --git a/src/zap.c b/src/zap.c index a723d3639..b6ededb71 100644 --- a/src/zap.c +++ b/src/zap.c @@ -5797,7 +5797,7 @@ boolean say; /* Announce out of sight hit/miss events if true */ if (mon) { int saved_mhp; - if (type == ZT_SPELL(ZT_FIRE)) + if (type == ZT_SPELL(ZT_FIRE) || type == ZT_MONSPELL(ZT_FIRE)) break; if (type >= 0) mon->mstrategy &= ~STRAT_WAITMASK; From 81c1bb57164e4a7faee6a1a151cdbd02f3f82c87 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sat, 11 Nov 2023 23:32:08 +0100 Subject: [PATCH 68/82] Fix minimum level for themed steam room. --- dat/vaults.des | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dat/vaults.des b/dat/vaults.des index bf83a6563..50d5f9f8e 100644 --- a/dat/vaults.des +++ b/dat/vaults.des @@ -1370,7 +1370,7 @@ LOOP [4] { [50%]: OBJECT:('`',"statue"),random } # Steam room LEVEL:"vlt-0076" FLAGS:rndvault -MINDEPTH:1 +MINDEPTH:7 GEOMETRY:random MAP ----------- From 702d1a7fac0a44e7f71d785337a5760f994245cd Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sun, 12 Nov 2023 00:00:48 +0100 Subject: [PATCH 69/82] Arch-viles get a fire touch attack. Similar to their cold touch lich cousins. I could not get the fire pillar attack to work for tame arch-viles so this is a measure to make them a bit more powerful and give them something to attack hostiles with. --- src/monst.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/monst.c b/src/monst.c index 25a5009a2..e67f163b7 100644 --- a/src/monst.c +++ b/src/monst.c @@ -4554,8 +4554,9 @@ struct permonst _mons2[] = { 0, MH_UNDEAD, 21, HI_LORD), MON("arch-vile", S_LICH, LVL(22, 24, 0, 90, -15), (G_HELL | G_GENO | G_NOCORPSE | 1), - A(ATTK(AT_MAGC, AD_CLRC, 4, 6), - NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), + A(ATTK(AT_CLAW, AD_FIRE, 3, 6), + ATTK(AT_MAGC, AD_CLRC, 4, 6), + NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(800, 100, MS_MUMBLE, MZ_HUMAN), MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_DRAIN | MR_SICK, MR_FIRE | MR_COLD, From 43bb8eb439a429afee1f30d08804511c78e09d43 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sun, 12 Nov 2023 00:12:31 +0100 Subject: [PATCH 70/82] Fix: Tame arch-viles could not resurrect corpses. --- src/dogmove.c | 6 +++++- src/mon.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dogmove.c b/src/dogmove.c index 8b3ecdbe4..50b8d8ad5 100644 --- a/src/dogmove.c +++ b/src/dogmove.c @@ -1704,6 +1704,10 @@ int after; /* this is extra fast monster movement */ ; } + if (mtmp->data == &mons[PM_ARCH_VILE]) { + minfestcorpse(mtmp); + } + /* Pet hasn't attacked anything but is considering moving - * now's the time for ranged attacks. Note that the pet can move * after it performs its ranged attack. Should this be changed? @@ -1790,7 +1794,7 @@ int after; /* this is extra fast monster movement */ struct obj *floor_obj; struct obj *obj2; - + if (mtmp->data == &mons[PM_DROID]) { /* Scan all the items at the location */ for (floor_obj = level.objects[mtmp->mx][mtmp->my]; diff --git a/src/mon.c b/src/mon.c index e60f58c4a..6e04a4ff5 100644 --- a/src/mon.c +++ b/src/mon.c @@ -1798,7 +1798,7 @@ minfestcorpse(struct monst *mtmp) register struct obj *otmp; coord cc; /* If a pet, eating is handled separately, in dog.c */ - if (mtmp->mtame) + if (mtmp->mtame && mtmp->data != &mons[PM_ARCH_VILE]) return; /* Infest topmost corpse if it is there */ From 784787928404c6aef7eef68fee84be692cb4c7ed Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sun, 12 Nov 2023 00:19:53 +0100 Subject: [PATCH 71/82] Firearm jam tweaks. - Add detailed debugging so we can narrow down problems. - Reduce the limp_wristing threshold a little for firearms jams. - The flintlock was triggering jams much more often than it should. - Simplify some of the preventative jam checks. --- src/allmain.c | 2 +- src/dothrow.c | 76 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/src/allmain.c b/src/allmain.c index c12d1cd77..29b4c52f3 100644 --- a/src/allmain.c +++ b/src/allmain.c @@ -1399,7 +1399,7 @@ int wishluck() { /* Don't let this affect the fuzzer */ - if (iflags.debug_fuzzer) + if (iflags.debug_fuzzer || wizard) return 0; if (u.uconduct.wishes < 2) return 0; diff --git a/src/dothrow.c b/src/dothrow.c index 32fe38897..e94e331ef 100644 --- a/src/dothrow.c +++ b/src/dothrow.c @@ -1434,8 +1434,7 @@ struct obj *oldslot; /* for thrown-and-return used with !fixinv */ || (Role_if(PM_PRIEST) && (is_pierce(obj) || is_slash(obj))); boolean greased_ammo = obj->greased; - boolean cursed_launcher = ammo_and_launcher(obj, uwep) - && (uwep->otyp == FLINTLOCK || uwep->cursed); + boolean cursed_launcher = ammo_and_launcher(obj, uwep) && uwep->cursed; boolean limp_wristing = (ACURR(A_STR) + ACURR(A_DEX) - rnd(5)) < 20; /* Firearms explosions */ @@ -1458,8 +1457,8 @@ struct obj *oldslot; /* for thrown-and-return used with !fixinv */ notonhead = FALSE; /* reset potentially stale value */ - if ((cursed_ammo || greased_ammo || Afraid || cursed_launcher) - && (u.dx || u.dy) && !rn2(7)) { + if ((cursed_ammo || greased_ammo || Afraid || cursed_launcher + || uwep->otyp == FLINTLOCK) && (u.dx || u.dy) && !rn2(7)) { boolean slipok = TRUE; if (ammo_and_launcher(obj, uwep)) { @@ -1598,33 +1597,57 @@ struct obj *oldslot; /* for thrown-and-return used with !fixinv */ } /* Firearms can get jammed */ - if (gunning) - if ((cursed_launcher && !rn2(2)) - || (cursed_ammo && !rn2(2)) - || ((obj->oeroded > 0 || obj->oeroded2 > 0) && !rn2(4)) - || ((uwep->oeroded > 0 || uwep->oeroded2 > 0) && !rn2(4)) - /* Skill based: no skill is fairly likely */ - || ((P_SKILL(P_FIREARM) <= P_UNSKILLED) && rnl(8)>6) - /* Higher skill: Unlikely but still possible (same as jousting) */ - || ((P_SKILL(P_FIREARM) >= P_BASIC) && rnl(50)==49) - /* Low STR and DEX are punished */ - || ((limp_wristing || Fumbling) && !rn2(4)) - /* Bad luck and no grease */ - || (!uwep->greased && Luck < 0 && rnl(8)>6)) { - - /* Grease is the first level of protection */ + if (gunning) { + boolean jam = FALSE; + if (cursed_launcher && !rn2(2)) { + if (wizard) pline("Firearm jam: cursed_launcher."); + jam = TRUE; + } else if (cursed_ammo && !rn2(2)) { + if (wizard) pline("Firearm jam: cursed_ammo."); + jam = TRUE; + } else if ((obj->oeroded > 0 || obj->oeroded2 > 0) && !rn2(4)) { + if (wizard) pline("Firearm jam: eroded ammo."); + jam = TRUE; + } else if ((uwep->oeroded > 0 || uwep->oeroded2 > 0) && !rn2(4)) { + if (wizard) pline("Firearm jam: eroded firearm."); + jam = TRUE; + } else if ((limp_wristing || Fumbling) && !rn2(4)) { + if (wizard) pline("Firearm jam: limp_wristing."); + /* Low STR and DEX are punished */ + jam = TRUE; + } else if (!uwep->greased && Luck < 0 && rnl(8) > 6) { + if (wizard) pline("Firearm jam: Bad luck and no grease."); + /* Bad luck and no grease */ + jam = TRUE; + } else if ((P_SKILL(P_FIREARM) <= P_UNSKILLED) && rnl(8) > 6) { + if (wizard) pline("Firearm jam: low skill."); + /* Skill based: no skill is fairly likely + * LUCK: −11 −8 −5 −2 0 +2 + * CHANCE: 61.3% 49.1% 36.9% 24.7% 12.5% 0.3% */ + jam = TRUE; + } else if ((P_SKILL(P_FIREARM) >= P_BASIC) && rnl(50) == 49) { + if (wizard) pline("Firearm jam: standard use."); + /* Higher skill: Unlikely but still possible (same as jousting) + * LUCK: −11 −8 −5 −2 0 +2 + * CHANCE:4.71% 3.53% 2.35% 1.18% 0.4% 0.01% */ + jam = TRUE; + } + + if (jam) { if (uwep->greased) { + /* Grease is the first level of protection */ + if (wizard) pline("Cancel jam: grease."); if (!rn2(2)) { pline_The("grease wears off %s.", ysimple_name(uwep)); uwep->greased = 0; } - } - /* Firearms in single mode resist jamming more often */ - else if (uwep->altmode == 0 && rn2(3)) { - ; /* Don't jam this time */ - } - /* Blessed firearms resist 3 out of 4 times */ - else if (!uwep->blessed || !rn2(4)) { + } else if (uwep->altmode == 0 && rn2(3)) { + /* Firearms in single mode resist jamming more often */ + if (wizard) pline("Cancel jam: singlemode."); + } else if (uwep->blessed && rn2(4)) { + /* Blessed firearms resist 3 out of 4 times */ + if (wizard) pline("Cancel jam: blessed 3/4 chance."); + } else { pline("%s jams!", Ysimple_name2(uwep)); uwep->obroken = 1; breakobj(obj, u.ux, u.uy, TRUE, TRUE); @@ -1632,6 +1655,7 @@ struct obj *oldslot; /* for thrown-and-return used with !fixinv */ return; } } + } if (gunning && !objects[uwep->otyp].oc_name_known) { if (!Deaf) From 8faba048971e420ad0f8117ad27bf4b087630b0d Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Sun, 12 Nov 2023 21:13:49 +0100 Subject: [PATCH 72/82] More Shamblestick finessing. Added support for many more random special attack types, including drain life and beheading. I improved how the to-hit and damage bonuses were applied. If there are few abilities, there is are high to-hit/damage bonuses. If there are many abilities, then the bonuses are small. If the player is lucky enough to get a 0 for the damage bonus, it naturally becomes a double damage weapon. If Shamblestick gets a bane, it will never be against the player's race. I removed the cross-aligned bane property because it could make it unusable if it didn't match the player's alignment. I also updated the adtyp_str function to be easier to use and understand. --- include/artilist.h | 2 +- src/artifact.c | 269 ++++++++++++++++++++++++++------------------- 2 files changed, 157 insertions(+), 114 deletions(-) diff --git a/include/artilist.h b/include/artilist.h index 8186ce9a9..1c1b5c6ac 100644 --- a/include/artilist.h +++ b/include/artilist.h @@ -774,7 +774,7 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { A_NEUTRAL, PM_VALKYRIE, NON_PM, 3500L, NO_COLOR, DEFAULT_MAT), #endif - A("Gjallar", TOOLED_HORN, + A("Gjallar", TOOLED_HORN, (SPFX_NOGEN | SPFX_RESTR | SPFX_INTEL), (SPFX_WARN | SPFX_HPHDAM | SPFX_LUCK), 0, NO_ATTK, NO_DFNS, NO_CARY, LEV_TELE, diff --git a/src/artifact.c b/src/artifact.c index 2f0946874..00f4cff88 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -66,7 +66,7 @@ hack_artifacts() { struct artifact *art; int alignmnt = aligns[flags.initalign].value; - int i, defn, sgranted = 0; + int i, defn, bonus, sgranted = 0; long r; /* Fix up the alignments of "gift" artifacts */ @@ -144,7 +144,6 @@ hack_artifacts() artilist[ART_SHAMBLESTICK].cspfx |= r; sgranted++; } - int res_types [] = { AD_MAGM, AD_FIRE, AD_COLD, AD_SLEE, AD_DISN, @@ -184,37 +183,40 @@ hack_artifacts() /* SEFFECT could also branch out into random scroll * effects, but... not now */ } while (artilist[ART_SHAMBLESTICK].inv_prop == SEFFECT); - sgranted++; } /* Random attack type */ - /* TODO: Also enable support for: - * AD_DRLI - goes with spfx flag - * AD_DREN - * AD_SITM - * AD_TLPT - * AD_CONF - * AD_DRIN - * AD_DISE - * AD_SLIM - * AD_ENCH - * AD_BHED - goes with spfx flag - * AD_CLOB - * AD_POLY - * AD_WTHR - * AD_WEBS - * AD_CALM - * AD_FEAR - */ - artilist[ART_SHAMBLESTICK].attk.adtyp = rn2(AD_DRLI); + int attk_types [] = + { AD_PHYS, AD_MAGM, AD_FIRE, AD_COLD, AD_SLEE, + AD_DISN, AD_ELEC, AD_DRST, AD_ACID, AD_LOUD, + AD_WATR, AD_STUN, AD_PSYC, AD_BLND, AD_SLOW, + AD_PLYS, AD_DREN, AD_DISE, AD_CLOB, AD_WTHR, + AD_FEAR, AD_WEBS, + AD_DRLI, /*goes with SPFX_DRLI spfx flag*/ + AD_BHED, /*goes with spfx flag*/ + }; + + int attk = attk_types[rn2(SIZE(attk_types))]; + + switch (attk) { + case AD_BHED: + artilist[ART_SHAMBLESTICK].spfx |= SPFX_BEHEAD; + artilist[ART_SHAMBLESTICK].attk.adtyp = AD_PHYS; + break; + case AD_DRLI: + artilist[ART_SHAMBLESTICK].spfx |= SPFX_DRLI; + /* FALLTHROUGH */ + default: + artilist[ART_SHAMBLESTICK].attk.adtyp = attk; + } /* Random bane(s) via SPFX_DFLAGH */ - if (!rn2(4)) { - artilist[ART_SHAMBLESTICK].spfx |= SPFX_DALIGN; - } else if (!rn2(3)) { + if (!rn2(3)) { for (i = 0; i < rnd(3); i++) { r = (1 << rn2(23)); + if (urace.malenum == r) + continue; /* Don't bane our own race! */ artilist[ART_SHAMBLESTICK].mtype |= r; /* Bane flags */ artilist[ART_SHAMBLESTICK].spfx |= SPFX_DFLAGH; @@ -224,16 +226,18 @@ hack_artifacts() } } - /* Random damage to-hit/bonus. - * This scales with how many abilities bonuses were granted. - * */ + /* to-hit and damage bonus scales with abilities */ + /* to-hit bonus */ sgranted = 10 - sgranted * 2; - if (sgranted < 0) - sgranted = 0; - artilist[ART_SHAMBLESTICK].attk.damn = rnd(10) + sgranted; - artilist[ART_SHAMBLESTICK].attk.damd = rn2(11) + sgranted; - - + bonus = rnd(10) + sgranted; + if (bonus < 0) + bonus = 0; + artilist[ART_SHAMBLESTICK].attk.damn = bonus; + + /* damage bonus */ + bonus = rn2(11) + sgranted; + bonus = bonus < 0 ? 1 : bonus; /* 0 is double damage */ + artilist[ART_SHAMBLESTICK].attk.damd = bonus; return; } @@ -255,7 +259,7 @@ ok_spfx(long spfx) || spfx == SPFX_DCLAS || spfx == SPFX_DFLAG1 || spfx == SPFX_DFLAGH - || spfx == SPFX_DALIGN /* Handled in attack init */ + || spfx == SPFX_DALIGN /* This can make it unusable */ || spfx == SPFX_DBONUS || spfx == SPFX_NOWISH) return FALSE; @@ -1538,10 +1542,13 @@ struct monst *mtmp; case AD_PLYS: return !(yours ? Free_action : has_free_action(mtmp)); case AD_WTHR: - return !(nonliving(mtmp->data) || is_vampshifter(mtmp)); + return !(nonliving(mtmp->data) && is_vampshifter(mtmp)); case AD_BLND: case AD_SLOW: case AD_WATR: + case AD_FEAR: + case AD_WEBS: + case AD_CLOB: /* We'll handle this when the hit procs */ case AD_PHYS: /* Only case that uses this is slinging from David's Sling. */ @@ -2002,7 +2009,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ * currently consistent with behavior of other instakill weapons, * but not realizes_damage */ boolean show_instakill = (youattack || youdefend || vis); - boolean realizes_damage, angel; + boolean realizes_damage, angel, clobbers; const char *wepdesc; static const char you[] = "you"; char hittee[BUFSZ]; @@ -2035,8 +2042,8 @@ int dieroll; /* needed for Magicbane and vorpal blades */ * additional check for its knockback behavior for MZ_MEDIUM and * smaller targets. Knockback rate is set here as well in rn2(rate). */ - if (otmp->oartifact == ART_OGRESMASHER - && mdef->data->msize < MZ_LARGE && !rn2(5)) + clobbers = otmp->oartifact == ART_OGRESMASHER || attacks(AD_CLOB, otmp); + if (clobbers && mdef->data->msize < MZ_LARGE && !rn2(5)) hurtle_distance = MZ_LARGE - mdef->data->msize; /* incorporeal monsters are immune to various @@ -2712,7 +2719,21 @@ int dieroll; /* needed for Magicbane and vorpal blades */ } return realizes_damage; } - + + if (attacks(AD_DREN, otmp)) { + if (realizes_damage) { + pline_The("magical %s %s %s%c", + is_blade(otmp) ? "blade" : "weapon", + !spec_dbon_applies ? "hits" : "drains", hittee, + !spec_dbon_applies ? '.' : '!'); + if (youdefend && !rn2(4)) { + drain_en(*dmgptr); + } else if (!rn2(4)) { + xdrainenergym(mdef, TRUE); + } + } + return realizes_damage; + } if (attacks(AD_PSYC, otmp)) { if (realizes_damage) { pline_The("iridescent %s %s %s%c", @@ -2751,7 +2772,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ if (realizes_damage && !rn2(3)) { pline_The("lethargic %s %s %s%c", is_blade(otmp) ? "blade" : "weapon", - !spec_dbon_applies ? "hits" : "slows", hittee, + !spec_dbon_applies ? "hits" : "bashes", hittee, !spec_dbon_applies ? '.' : '!'); if (youdefend) { @@ -2767,6 +2788,54 @@ int dieroll; /* needed for Magicbane and vorpal blades */ } return realizes_damage; } + + if (attacks(AD_FEAR, otmp)) { + if (realizes_damage && !rn2(3)) { + pline_The("fearsome %s %s %s%c", + is_blade(otmp) ? "blade" : "weapon", + !spec_dbon_applies ? "hits" : "scares", hittee, + !spec_dbon_applies ? '.' : '!'); + + if (youdefend) { + if (!Afraid && !Fearless) + make_afraid((HAfraid & TIMEOUT) + (long) rn1(10, 5), FALSE); + stop_occupation(); + } else if (!mdef->mflee || mdef->mfleetim) { + monflee(mdef, 0, FALSE, TRUE); + } + } + return realizes_damage; + } + + if (attacks(AD_WEBS, otmp)) { + if (realizes_damage && !rn2(3)) { + pline_The("sticky %s %s %s%c", + is_blade(otmp) ? "blade" : "weapon", + !spec_dbon_applies ? "hits" : "entangles", hittee, + !spec_dbon_applies ? '.' : '!'); + if (youdefend) { + if (!t_at(u.ux, u.uy)) { + struct trap *web = maketrap(u.ux, u.uy, WEB); + if (web) { + pline("%s entangles you in a web%s", + Monnam(magr), + is_giant(youmonst.data) + ? ", but you rip through it!" + : webmaker(youmonst.data) ? ", but you easily disentangle yourself." + : "!"); + dotrap(web, NOWEBMSG); + if (u.usteed && u.utrap) + dismount_steed(DISMOUNT_FELL); + } + } + } else if (!t_at(mdef->mx, mdef->my)) { + struct trap *web = maketrap(mdef->mx, mdef->my, WEB); + if (web) { + mintrap(mdef); + } + } + } + } if (attacks(AD_STUN, otmp) && dieroll <= MB_MAX_DIEROLL) { if (dieroll <= MB_MAX_DIEROLL) @@ -2796,9 +2865,10 @@ int dieroll; /* needed for Magicbane and vorpal blades */ */ atmp = &artilist[(unsigned char) otmp->oartifact]; - if (atmp->spfx & (SPFX_DFLAGH | SPFX_DCLAS)) { - j = !rn2(10); /* 10% chance of instakill for some artifacts */ + if (atmp->spfx & (SPFX_DFLAGH | SPFX_DCLAS) || clobbers) { + j = !rn2(10); /* 10% chance of instakill for some artifacts */ k = !rn2(20); /* 5% chance if same weapon is used against the player */ + switch (otmp->oartifact) { case ART_WEREBANE: if (youattack && is_were(mdef->data) && j) { @@ -2828,7 +2898,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ Monnam(magr), mon_nam(mdef)); *dmgptr = (2 * mdef->mhp + FATAL_DAMAGE_MODIFIER); } else if (youdefend && maybe_polyd(is_giant(youmonst.data), - Race_if(PM_GIANT)) && k) { + Race_if(PM_GIANT)) && k) { pline_The("magical spear eviscerates you!"); *dmgptr = (2 * (Upolyd ? u.mh : u.uhp) + FATAL_DAMAGE_MODIFIER); /* player returns to their original form if poly'd */ @@ -2836,6 +2906,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ return FALSE; return TRUE; case ART_OGRESMASHER: + case ART_SHAMBLESTICK: /* Can randomly get AD_CLOB too */ if (youattack && is_ogre(mdef->data) && j) { You("crush %s skull!", s_suffix(mon_nam(mdef))); *dmgptr = (2 * mdef->mhp + FATAL_DAMAGE_MODIFIER); @@ -2852,7 +2923,8 @@ int dieroll; /* needed for Magicbane and vorpal blades */ } else if (hurtle_distance) { if (youattack) { You("smash %s backwards%s", mon_nam(mdef), - canseemon(mdef) ? exclam(4 * hurtle_distance) : "."); mhurtle(mdef, u.dx, u.dy, hurtle_distance); + canseemon(mdef) ? exclam(4 * hurtle_distance) : "."); + mhurtle(mdef, u.dx, u.dy, hurtle_distance); } else if (!youattack && !youdefend) { if (show_instakill) pline("%s smashes %s backwards!", Monnam(magr), mon_nam(mdef)); @@ -2864,7 +2936,8 @@ int dieroll; /* needed for Magicbane and vorpal blades */ /* Update monster's knowledge of your position */ magr->mux = u.ux; magr->muy = u.uy; - return TRUE;} + return TRUE; + } } else return FALSE; return TRUE; @@ -2896,7 +2969,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ Monnam(magr), s_suffix(mon_nam(mdef))); *dmgptr = (2 * mdef->mhp + FATAL_DAMAGE_MODIFIER); } else if (youdefend && maybe_polyd(is_orc(youmonst.data), - Race_if(PM_ORC)) && k) { + Race_if(PM_ORC)) && k) { You_feel("Orcrist slice deep across your neck!"); *dmgptr = (2 * (Upolyd ? u.mh : u.uhp) + FATAL_DAMAGE_MODIFIER); /* player returns to their original form if poly'd */ @@ -2909,12 +2982,12 @@ int dieroll; /* needed for Magicbane and vorpal blades */ *dmgptr = (2 * mdef->mhp + FATAL_DAMAGE_MODIFIER); } else if (!youattack && !youdefend && magr && racial_elf(mdef) && j) { - if (show_instakill) + if (show_instakill) pline("%s slices open %s throat!", Monnam(magr), s_suffix(mon_nam(mdef))); *dmgptr = (2 * mdef->mhp + FATAL_DAMAGE_MODIFIER); } else if (youdefend && maybe_polyd(is_elf(youmonst.data), - Race_if(PM_ELF)) && k) { + Race_if(PM_ELF)) && k) { You_feel("%s slice deep across your neck!", artiname(otmp->oartifact)); *dmgptr = (2 * (Upolyd ? u.mh : u.uhp) + FATAL_DAMAGE_MODIFIER); /* player returns to their original form if poly'd */ @@ -2939,7 +3012,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ Monnam(magr), s_suffix(mon_nam(mdef))); *dmgptr = (2 * mdef->mhp + FATAL_DAMAGE_MODIFIER); } else if (youdefend && maybe_polyd(is_orc(youmonst.data), - Race_if(PM_ORC)) && k) { + Race_if(PM_ORC)) && k) { You_feel("%s stab deep into your heart!", artiname(otmp->oartifact)); *dmgptr = (2 * (Upolyd ? u.mh : u.uhp) + FATAL_DAMAGE_MODIFIER); } else @@ -2962,7 +3035,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ if (mdef->isvecna) { if (show_instakill) pline("%s flares brightly, severely wounding %s!", - artiname(otmp->oartifact), mon_nam(mdef)); + artiname(otmp->oartifact), mon_nam(mdef)); *dmgptr *= 3; return TRUE; } else { @@ -3013,7 +3086,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ && magr && is_demon(mdef->data) && j) { if (!is_ndemon(mdef->data)) { if (show_instakill) - pline("%s gravely wounds %s!", + pline("%s gravely wounds %s!", artiname(otmp->oartifact), mon_nam(mdef)); *dmgptr *= 3; return TRUE; @@ -3099,8 +3172,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ if (youattack && u.uswallow && mdef == u.ustuck) return FALSE; - wepdesc = artilist[otmp->oartifact == ART_VORPAL_BLADE - ? ART_VORPAL_BLADE : ART_THIEFBANE].name; + wepdesc = artilist[(int) otmp->oartifact].name; if (!youdefend) { if (!has_head(mdef->data) || notonhead || u.uswallow) { @@ -3194,7 +3266,7 @@ int dieroll; /* needed for Magicbane and vorpal blades */ return TRUE; } } - + if (attacks(AD_BLND, otmp) && !rn2(3)) { if (!youdefend) { if (mdef->mcansee) { @@ -5200,11 +5272,7 @@ artifact_info(int anum) /* Granted while wielded. */ if (artilist[anum].defn.adtyp) { - /* TODO: Refactor this */ - if (artilist[anum].defn.adtyp == AD_PLYS) - Sprintf(buf, "free action"); - else - Sprintf(buf, "%s resistance", adtyp_str(artilist[anum].defn.adtyp, TRUE)); + Sprintf(buf, "%s", adtyp_str(artilist[anum].defn.adtyp, TRUE)); art_info.wield_res = malloc(100); strcpy(art_info.wield_res, buf); } @@ -5251,7 +5319,7 @@ artifact_info(int anum) } /* Granted while carried. */ if (artilist[anum].cary.adtyp) { - Sprintf(buf, "%s resistance", adtyp_str(artilist[anum].cary.adtyp, TRUE)); + Sprintf(buf, "%s", adtyp_str(artilist[anum].cary.adtyp, TRUE)); art_info.carr_res = malloc(100); strcpy(art_info.carr_res, buf); } @@ -5449,58 +5517,33 @@ int adtyp; boolean defend; { switch (adtyp) { - case AD_FIRE: - return "fire"; - case AD_COLD: - return "cold"; - case AD_ELEC: - return "shock"; - case AD_DRST: - return "poison"; - case AD_MAGM: - return defend ? "magic" : "magic missile"; - case AD_DRLI: - return "drain life"; - case AD_CLOB: - return defend ? "clobber" : "extreme stability"; - case AD_DISE: - return "disease"; - case AD_SLEE: - return "sleep"; - case AD_DISN: - return "disintegration"; - case AD_SLOW: - return "slow"; - case AD_ACID: - return "acid"; - case AD_STON: - return "petrification"; - case AD_PLYS: - return defend ? "free action" : "paralyze"; - case AD_LOUD: - return "sonic"; - case AD_PHYS: - return "physical"; - case AD_WERE: - return "lycanthropy"; - case AD_BLND: - return "blinding"; - case AD_STUN: - return defend ? "stun" : "stuns/magic"; - case AD_DETH: - return "death"; - case AD_DREN: - return "drain energy"; - case AD_WTHR: - return "withering"; - case AD_WIND: - return "wind"; - case AD_PSYC: - return "psychic"; - case AD_WATR: - return "deluge"; - default: - impossible("Bad AD_TYPE!"); + case AD_ACID: return defend ? "acid resistance" : "acid"; + case AD_BLND: return defend ? "blinding resistance" : "blinding"; + case AD_CLOB: return defend ? "extreme stability" : "clobber"; + case AD_COLD: return defend ? "cold resistance" : "cold"; + case AD_DETH: return defend ? "death resistance" : "death"; + case AD_DISE: return defend ? "sickness resistance" : "disease"; + case AD_DISN: return defend ? "disintegration resistance" : "disintegration"; + case AD_DREN: return "drain energy"; + case AD_DRLI: return defend ? "drain resistance" : "drain life"; + case AD_DRST: return defend ? "poison resistance" : "poison"; + case AD_ELEC: return defend ? "shock resistance" : "shock"; + case AD_FEAR: return defend ? "fearlessness" : "fear"; + case AD_FIRE: return defend ? "fire resistance" : "fire"; + case AD_LOUD: return defend ? "sonic resistance" : "sonic"; + case AD_MAGM: return defend ? "magic resistance" : "magic missile"; + case AD_PHYS: return "physical"; + case AD_PLYS: return defend ? "free action" : "paralyze"; + case AD_PSYC: return defend ? "psychic resistance" : "psychic"; + case AD_SLEE: return defend ? "sleep resistance" : "sleep"; + case AD_SLOW: return "slow"; + case AD_STON: return defend ? "petrification resistance" : "petrification"; + case AD_STUN: return defend ? "stun resistance" : "stuns/magic"; + case AD_WATR: return "deluge"; + case AD_WEBS: return "webs"; + case AD_WERE: return defend ? "lycanthropy resistance" : "lycanthropy"; + case AD_WTHR: return defend ? "withering resistance" : "withering"; + default:impossible("adtyp_str: Bad AD_TYPE! [%d]", adtyp); } return ""; } From 5317427e3b8540699a9e839a83b51b9123c0ec3f Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 13 Nov 2023 14:29:28 +0100 Subject: [PATCH 73/82] The Wizard of Yendor gets a random amulet. --- src/makemon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/makemon.c b/src/makemon.c index 16540593f..b7eacaa31 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -1602,8 +1602,7 @@ register struct monst *mtmp; if (rn2(2)) (void) mongets(mtmp, CORNUTHAUM); if (rn2(2)) - (void) mongets(mtmp, rn2(4) ? (rn2(2) ? AMULET_OF_GUARDING : AMULET_OF_LIFE_SAVING) - : AMULET_OF_MAGIC_RESISTANCE); + (void) mongets(mtmp, rn1(AMULET_OF_FLYING - AMULET_OF_ESP + 1, AMULET_OF_ESP)); } break; case S_GHOST: From 3c7cccdbc204cdbc8770704c991bf64fa7df73ca Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 13 Nov 2023 14:41:48 +0100 Subject: [PATCH 74/82] Further randomize the property on Rodney's weapon. Now it can be one of the 8 properties at the start of the list in obj.h. --- src/makemon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/makemon.c b/src/makemon.c index b7eacaa31..97a4329f0 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -1594,7 +1594,7 @@ register struct monst *mtmp; set_material(received, GOLD); } else if (mm == PM_WIZARD_OF_YENDOR) { otmp = mksobj(rn2(3) ? ATHAME : QUARTERSTAFF, FALSE, FALSE); - otmp->oprops = (rn2(3) ? ITEM_FIRE : rn2(2) ? ITEM_FROST : ITEM_VENOM); + otmp->oprops = (1 << rn2(7)); otmp->spe = rnd(4) + 1; (void) mpickobj(mtmp, otmp); if (rn2(2)) From 094962d2114941b35691fcd2463d6d1fbb93e20f Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 13 Nov 2023 14:47:53 +0100 Subject: [PATCH 75/82] Make sure Rodney doesn't get a useless amulet. --- src/makemon.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/makemon.c b/src/makemon.c index 97a4329f0..7fead614d 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -1601,8 +1601,21 @@ register struct monst *mtmp; (void) mongets(mtmp, ROBE_OF_POWER); if (rn2(2)) (void) mongets(mtmp, CORNUTHAUM); - if (rn2(2)) - (void) mongets(mtmp, rn1(AMULET_OF_FLYING - AMULET_OF_ESP + 1, AMULET_OF_ESP)); + if (rn2(2)) { + int ammy; + while (TRUE) { + ammy = rn1(AMULET_OF_FLYING - AMULET_OF_ESP + 1, AMULET_OF_ESP); + /* Make sure Rodney doesn't get a useless amulet */ + if (ammy != AMULET_OF_STRANGULATION + && ammy != AMULET_OF_NAUSEA + && ammy != AMULET_OF_RESTFUL_SLEEP + && ammy != AMULET_VERSUS_POISON + && ammy != AMULET_OF_DANGER + && ammy != AMULET_OF_CHANGE) + break; + } + (void) mongets(mtmp, ammy); + } } break; case S_GHOST: From 3df57094f50ad4a0a439db0b086b236e1cd8052e Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 13 Nov 2023 14:52:25 +0100 Subject: [PATCH 76/82] Fix: 'You bash the dog with your orcish shield?' message. This occurs if exclam() is called with 0. --- src/uhitm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/uhitm.c b/src/uhitm.c index 932144f2a..92788646d 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -1681,10 +1681,11 @@ int dieroll; case SHIELD_OF_MOBILITY: case RESONANT_SHIELD: if (obj && (obj == uarms) && is_shield(obj)) { + tmp = shield_dmg(obj, mon); You("bash %s with %s%s", mon_nam(mon), ysimple_name(obj), canseemon(mon) ? exclam(tmp) : "."); - tmp = shield_dmg(obj, mon); + /* Property effects */ if (obj->oprops & (ITEM_FIRE | ITEM_FROST | ITEM_SHOCK | ITEM_VENOM | ITEM_SIZZLE | ITEM_SCREAM From 506c84f288f2a62630e0aa5e91516876e0b44822 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 13 Nov 2023 19:53:40 +0100 Subject: [PATCH 77/82] Dammit Noisytoot planting a (random) seed of doubt in my while loop. --- src/makemon.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/makemon.c b/src/makemon.c index 7fead614d..940e0227d 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -1603,15 +1603,12 @@ register struct monst *mtmp; (void) mongets(mtmp, CORNUTHAUM); if (rn2(2)) { int ammy; - while (TRUE) { + for (int x = 0; x < 3000; x++) { ammy = rn1(AMULET_OF_FLYING - AMULET_OF_ESP + 1, AMULET_OF_ESP); /* Make sure Rodney doesn't get a useless amulet */ - if (ammy != AMULET_OF_STRANGULATION - && ammy != AMULET_OF_NAUSEA - && ammy != AMULET_OF_RESTFUL_SLEEP - && ammy != AMULET_VERSUS_POISON - && ammy != AMULET_OF_DANGER - && ammy != AMULET_OF_CHANGE) + if (ammy != AMULET_OF_STRANGULATION && ammy != AMULET_OF_NAUSEA + && ammy != AMULET_OF_RESTFUL_SLEEP && ammy != AMULET_VERSUS_POISON + && ammy != AMULET_OF_DANGER && ammy != AMULET_OF_CHANGE) break; } (void) mongets(mtmp, ammy); From 594868449dae0741e928777db864babbea764724 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Mon, 13 Nov 2023 23:10:55 +0100 Subject: [PATCH 78/82] Ported Cartomancer role from SpliceHack. --- dat/Cart.des | 300 ++++++++ dat/data.base | 22 + dat/quest.txt | 270 +++++++ include/artifact.h | 3 +- include/artilist.h | 6 + include/qtext.h | 2 +- src/artifact.c | 8 +- src/attrib.c | 7 +- src/dog.c | 2 + src/dogmove.c | 2 +- src/dothrow.c | 1 + src/exper.c | 1 + src/invent.c | 12 +- src/makemon.c | 11 + src/mhitu.c | 3 + src/mon.c | 29 +- src/monst.c | 33 +- src/mplayer.c | 16 + src/muse.c | 2 +- src/objnam.c | 72 +- src/pline.c | 14 + src/read.c | 74 +- src/role.c | 36 + src/sounds.c | 9 + src/u_init.c | 58 +- src/write.c | 6 + sys/mac/Files.r | 5 + sys/os2/Makefile.os2 | 3 + sys/unix/Makefile.dat | 2 + sys/unix/NetHack.xcodeproj/project.pbxproj | 8 +- sys/winnt/Makefile.gcc | 2 + sys/winnt/Makefile.msc | 2 + util/lev_main.c | 1 + win/share/monsters.txt | 815 +++++++++++---------- win/tty/wintty.c | 9 + win/win32/vs2017/files.props | 6 + 36 files changed, 1437 insertions(+), 415 deletions(-) create mode 100644 dat/Cart.des diff --git a/dat/Cart.des b/dat/Cart.des new file mode 100644 index 000000000..eb1860f5b --- /dev/null +++ b/dat/Cart.des @@ -0,0 +1,300 @@ +# NetHack 3.6 Car.des $NHDT-Date: 1432512784 2015/05/25 00:13:04 $ $NHDT-Branch: master $:$NHDT-Revision: 1.10 $ +# Copyright (c) 1989 by Jean-Christophe Collet +# Copyright (c) 1991 by M. Stephenson +# NetHack may be freely redistributed. See license for details. +# +# The "start" level for the quest. +# +# Here you meet your (besieged) class leader, Lord Carnarvon +# and receive your quest assignment. +# +MAZE: "Car-strt",' ' +FLAGS: noteleport,hardfloor +GEOMETRY:center,center +#0 1 2 3 4 5 6 +#1234567890123456789012345678901234567890123456789012345678901234567890 +MAP +............................................................................ +............................................................................ +............................................................................ +...................................|..|..................................... +............|-----------------------++-----------------------|.............. +............|......................+..+......................|.............. +............|......................|..|.}}}}}}}}}}}}}}}}}}}}.|.............. +............|......................|..|.}..................}.|.............. +............|......................|..|.}..................}.|.............. +............|-----------+----------|..|.}..................}.|.............. +............|......................S..S....................}.|.............. +............|......................|..|.}..................}.|.............. +............|......................|..|.}..................}.|.............. +............|......................|..|.}..................}.|.............. +............|......................|..|.}}}}}}}}}}}}}}}}}}}}.|.............. +............|......................|..|......................|.............. +............|-----------------------++-----------------------|.............. +...................................|..|..................................... +............................................................................ +............................................................................ +ENDMAP +# Dungeon Description +REGION: (00,00,75,19),lit,"ordinary" + +# Stairs +STAIR:(24,12),down + +# Portal arrival point +BRANCH:(07,17,07,17),(0,0,0,0) + +# Non diggable walls +NON_DIGGABLE:(00,00,75,19) + +# Doors +DOOR:locked,(24,09) +DOOR:locked,(36,04) +DOOR:locked,(37,04) +DOOR:locked,(35,05) +DOOR:locked,(38,05) +DOOR:locked,(35,10) +DOOR:locked,(38,10) +DOOR:locked,(36,16) +DOOR:locked,(37,16) + +# The Lord of the Cards +MONSTER:('@',"King of Games"),(17,08) + +# The treasure of the Lord of the Cards +MAGIC_CHEST:(18,05) + +# students of the card training school +MONSTER:('@',"student"),(47,07) +MONSTER:('@',"student"),(47,13) +MONSTER:('@',"student"),(18,07) +MONSTER:('@',"student"),(19,13) +MONSTER:('@',"student"),(20,07) +MONSTER:('@',"student"),(21,13) +MONSTER:('@',"student"),(22,07) +MONSTER:('@',"student"),(23,13) + +# Random traps +TRAP:random,random +TRAP:random,random +TRAP:random,random +TRAP:random,random +TRAP:random,random +TRAP:random,random + +# Monsters on siege duty. +MONSTER: ('N',"guardian naga"),(22, 08) +MONSTER: ('S',"cobra"),(08, 20) +MONSTER: ('N',"guardian naga"),(21,08) +MONSTER: ('S',"cobra"),(03,14) +MONSTER: ('S',"cobra"),(05,14) +MONSTER: ('S',"cobra"),(07,14) +MONSTER: ('S',"cobra"),random +MONSTER: ('N',"guardian naga"),(55,15) +MONSTER: ('S',"cobra"),random +MONSTER: ('S',"cobra"),random +MONSTER: ('S',"cobra"),random +MONSTER: ('S',"cobra"),random + + +# +# The "locate" level for the quest. +# +# + +MAZE: "Car-loca",' ' +FLAGS: hardfloor, noteleport +INIT_MAP: mines, '.', ' ', true, true, lit, true +NOMAP + +#REGION: (00,00,75,19),lit + +STAIR: random, up +STAIR: random, down + +# Non diggable walls +NON_DIGGABLE:(00,00,75,19) + +LOOP [15] { OBJECT: random, random } + +MONSTER: ('N',"guardian naga"),(17,07) +MONSTER: ('N',"guardian naga"),(18,08) +MONSTER: ('N',"guardian naga"),(18,09) +MONSTER: ('N',"guardian naga"),(17,10) + +LOOP [5] { MONSTER: 'N', random } +LOOP [9] { MONSTER: 'S', random } + +# Skeletons and corpses of past students +LOOP [7] { [50%]: MONSTER: ('Z',"skeleton"),random } +LOOP [5] { [50%]: MONSTER: ('Z',"human zombie"),random } + +LOOP [13] { OBJECT: ('%', "corpse"), random, montype:"student",0 } + + +LOOP [6] { TRAP: random, random } + +# +# The "goal" level for the quest. +# +# Here you meet Dal Zethire your nemesis monster. You have to +# defeat Dal Zethire in combat to gain the artifact you have +# been assigned to retrieve. +# + +MAZE: "Car-goal", ' ' +GEOMETRY:center,center +#0 1 2 3 +#123456789012345678901234567890123456789 +MAP +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL +LLLLL.............................LLLLL +LL...................................LL +LL...................................LL +LL............,,,,,,,,,,.............LL +L.............,,,,,,,,,,,.............L +L.............,,,,,,,,,,,.............L +L.............,,,,LLL,,,,.............L +L.............,,,LLLLL,,,.............L +L.............,.,LLLLL,,,.............L +L.............,,,,LLL,,,,.............L +L.............,,,,,,,,,,,.............L +L..............,,,,,,,,,,.............L +LL............,,,,,,,,,,,............LL +LL...................................LL +LL...................................LL +LLLLL.............................LLLLL +LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL +ENDMAP +# Dungeon Description +REGION:(00,00,75,19),lit,"ordinary" + +# Grass paddy +TERRAIN:fillrect (21,4,22,5), '.' + +# Stairs +STAIR:(19,01),up + +# Non diggable walls +NON_DIGGABLE:(00,00,75,19) + +# Objects +OBJECT:('(',"credit card"),(32,10),blessed,1,name:"The Holographic Void Lily" +LOOP [6] { OBJECT:random,random } + +# Random traps +TRAP:random,random +TRAP:random,random +TRAP:random,random + +# Random monsters. +MONSTER:('@',"Dal Zethire"),(32,10) +MONSTER:'N',random +MONSTER:'N',random + +# Rubble +LOOP [5] { [50%]: OBJECT: ('`', "boulder"), random } +LOOP [10] { [50%]: OBJECT: ('*', "rock"), random } +LOOP [5] { [50%]: OBJECT: ('*', "flint"), random } + +LOOP [3] { OBJECT: ('%', "corpse"), random, montype:"student",0 } + +WALLIFY + +# +# The "fill" levels for the quest. +# +# These levels are used to fill out any levels not occupied by specific +# levels as defined above. "filla" is the upper filler, between the +# start and locate levels, and "fillb" the lower between the locate +# and goal levels. +# + +LEVEL: "Car-fila" +# +ROOM: "ordinary" , random, random, random, random { + STAIR: random, up + OBJECT: random,random + MONSTER: 'N', random, hostile +} + +ROOM: "ordinary" , random, random, random, random { + OBJECT: random, random + OBJECT: random,random + MONSTER: 'N', random, hostile +} + +ROOM: "ordinary" , random, random, random, random { + OBJECT: random, random + TRAP: random, random + OBJECT: random,random + MONSTER: ('S', "cobra"), random, hostile + MONSTER: ('S', "cobra"), random, hostile +} + +ROOM: "ordinary" , random, random, random, random { + STAIR: random, down + OBJECT: random, random + TRAP: random, random + MONSTER: 'S', random + MONSTER: ('N', "guardian naga"), random, hostile +} + +ROOM: "ordinary" , random, random, random, random { + OBJECT: random, random + OBJECT: random, random + TRAP: random, random + MONSTER: 'S', random, hostile +} + +ROOM: "ordinary" , random, random, random, random { + OBJECT: random, random + TRAP: random, random + MONSTER: 'N', random, hostile +} + +RANDOM_CORRIDORS + +LEVEL: "Car-filb" +# +ROOM: "ordinary" , random, random, random, random { + STAIR: random, up + OBJECT: random,random + MONSTER: 'S', random +} + +ROOM: "ordinary" , random, random, random, random { + OBJECT: random, random + OBJECT: random,random + MONSTER: 'N', random +} + +ROOM: "ordinary" , random, random, random, random { + OBJECT: random, random + TRAP: random, random + OBJECT: random,random + MONSTER: 'Z', random +} + +ROOM: "ordinary" , random, random, random, random { + STAIR: random, down + OBJECT: random, random + TRAP: random, random + MONSTER: 'S', random + MONSTER: ('N', "guardian naga"), random +} + +ROOM: "ordinary" , random, random, random, random { + OBJECT: random, random + OBJECT: random, random + TRAP: random, random + MONSTER: 'S', random +} + +ROOM: "ordinary" , random, random, random, random { + OBJECT: random, random + TRAP: random, random + MONSTER: ('S', "pit viper"), random +} + +RANDOM_CORRIDORS diff --git a/dat/data.base b/dat/data.base index a913b4166..d496a2022 100644 --- a/dat/data.base +++ b/dat/data.base @@ -985,6 +985,14 @@ carrot took to eating carrots to help them find their way during the blackouts. [ Urban Legends Reference Pages ] +carnwennan + The dagger of King Arthur in the Welsh Arthurian legends. It is + sometimes attributed with the magical power to shroud its user in + shadow. + [ Wikipedia, the free encyclopedia ] +cartomancer + There are those who battle with decks of cards, rather than with + wits or steel. s*d*g*r* cat Imagine a sealed container, so perfectly constructed that no physical influence can pass either inwards or outwards across its @@ -3556,6 +3564,20 @@ jellyfish Particularly Portuguese. [ Lines on Meeting a Portuguese Man-o'-war while Bathing, by Michael Flanders ] +johnny +timmy +spike + These cartomancer deities each embody a distinct playstyle. + + A follower of Timmy amasses as many spell cards of enchant + weapon as possible and attempts to enchant their saber + to +10. + + A follower of Johnny polymorphs themself into a titan, reads + a scroll of cloning, and then feeds their pet titan the + corpse of a chromatic dragon. + + A follower of Spike zaps a wand of death. juiblex jubilex Little is known about the Faceless Lord, even the correct diff --git a/dat/quest.txt b/dat/quest.txt index 6424b6d15..a8be98165 100644 --- a/dat/quest.txt +++ b/dat/quest.txt @@ -628,6 +628,276 @@ speaks of you. "This is all I know, %p. I hope it will help you." %E ["Take the Amulet to the altar of %d on the Astral Plane and offer it."] + +# +# Cartomancer +# +%Cc Car 00001 +You find yourself standing in sight of %H. However, something is horribly wrong. +Cards lay scattered about the ground like common trash, and strange shapes +lumber about! The usual sounds of card games being played are oddly absent. +%E [You arrive back at %H, but something is wrong here.] +%Cp Car 00002 +Once again, you arrive back at %H. +%E +%Cp Car 00003 +For some reason, you think that this may be the last time you will +enter %H. +%E +%Cp Car 00005 +"When %n sent his minions, they stole all of my rarest cards!" +%E +%Cp Car 00006 +"You seem a much more experienced player than when we last met, %p." +%E +%Cp Car 00007 +"Have you collected any interesting cards during your journey?" +%E +%Cp Car 00008 +"%p, you must defeat %n, for our sake." +%E +%Cp Car 00009 +"%lC was unable to defeat %n, although their game was mighty." +%E +%Cp Car 00010 +"Do you know what time it is?" +%E +%Cp Car 00011 +"I look to %d for guidance in these hard times." +%E +%Cp Car 00012 +"What has become of %o?" +%E +%Cp Car 00013 +"Please, %p, tell us the story of your game with %n. What cards did you use?" +%E +%Cp Car 00014 +"My deepest thanks, %p." +%E +%Cc Car 00015 +"%pC, how good to see you!. + +"We are in dire need of your help, my %S. + +"But first, I must examine your cards, and determine if your deck is +strong enough. Defeat me with your cards, and prove yourself worthy!" +%E ["You have returned. We are in dire need of your help."] +%Cp Car 00016 +"Again, you return to us, %p. I shall grant you a rematch." +%E +%Cp Car 00017 +"Ah, %p. Come to try again? Perhaps you are worthier now." +%E +%Cc Car 00018 +"%pC! You clearly have no love for your cards, and do not believe in +them. + +"I expel you from %H! Your performance brings me shame."" + +"You shall not see %H again." +%E ["You did not love your cards..."] +%Cc Car 00019 +"Alas, %p, you clearly love your cards, but your skill with them is still +immature. Your loss to me tells me all I need to know. + +"Improve your deck, and pray to %d for guidance. Only then may you +return and face me again." +%E ["%rA is too inexperienced. Come back when you have become stronger."] +%Cc Car 00020 +"Alas, %p, your skill with your cards is great, but you have yet to +truly find love for your cards. Until you do this, you stand no chance +against %n. Talk to your cards, and pray to %d for guidance. Only then may you +return and face me again." +%E ["You no longer follow the path of the %a. Leave and seek answers."] +%Cc Car 00021 +"You have soundly defeated me, %p. You are ready. + +"Just after you left to improve your deck, %n appeared and battled us +into submission with his monster-summoning cards. The beasts you saw here +are but a fraction of the horde he summoned. He stole the decks of many of +your fellow students. + +"Worst of all, he stole from us %o, the most powerful of all known cards. +If he should play a game with it, he could destroy the very fabric of +reality. + +"You must find %i, and take back %o from %n. It is your destiny. + +"Please, %p, recover %o for us, and return it here. And remember: +Believe in your cards, and they shall come through for you." +%E [Find and defeat %n, recover %o, and return with it.] +%Cp Car 00024 +"Remember, you must return with %o so +that we may lift the curse from the silver bell." +%E +%Cp Car 00025 +"%oC is capable of summoning monsters, as well as turning the user into a +powerful spellcaster." +%E +%Cp Car 00026 +"When you encounter %n, remember your training with me." +%E +%Cp Car 00027 +"Strike quickly, before %n can draw an opening hand." +%E +%Cp Car 00028 +"%n plays a deck focused on summoning snakes and nagas." +%E +%Cp Car 00029 +"If %o is played on the first turn, it may as well be over." +%E +%Cp Car 00030 +"Possessing %o is not the same as knowing how to use it. A card is +only as powerful as the player behind it." +%E +%Cp Car 00031 +"Be careful, %n is a wily player." +%E +%Cp Car 00032 +"I would send some of my students with you, but few of them have their decks +still intact." +%E +%Cp Car 00033 +"Play to your strengths, that is in a %a style." +%E +%Cp Car 00034 +"Use all of your spell cards against %n." +%E +%Cc Car 00035 +You descend in the basement cavern of the school. You %x a trail of torn +spell cards, and you cannot help but to notice the numerous skeletons +dressed in the garb of your school. Evidently you are not the first +student to be sent after %n... +%E [You %x many torn spell cards, and notice bones of previous students.] +%Cp Car 00036 +Once again, you approach %i. +%E +%Cc Car 00040 +You find yourself in an enormous arena, with a high, vaulted ceiling. +It sounds as if a magnificent crowd is cheering, but no such crowd is present. + +Instead, %n is there, shuffling their deck and cackling. +With a flick of their wrist, they draw seven cards. The game has begun. +%E [You enter an arena. %nC is waiting for you.] +%Cp Car 00041 +Once again, you find yourself in %ns arena. +%E +%Cc Car 00050 +"Another pathetic student of %l, here to challenge me to a card game? +I doubt you have even held a deck before! I shall battle you, and show +you the true meaning of defeat!" +%E [%nC brags about their prowess with spell cards.] +%Cp Car 00051 +"Trying to run away, %c? Cowardice no different than forfeit!" +%E +%Cp Car 00052 +"Please, %c, you disappoint me! Your cards are worthless!" +%E +%Cp Car 00053 +"You are running low on spell cards, %c. Will this be a victory by +lack of a deck?" +%E +%Cp Car 00060 +"%o is the perfect complement to my perfect deck!" +%E +%Cp Car 00061 +"Tsk tsk tsk, %c. I really expected better from you." +%E +%Cp Car 00062 +"%l only cast me from the school because I was too skillful!" +%E +%Cp Car 00063 +"Love for your cards? Don't make me laugh. I shall defeat you through +skill alone!" +%E +%Cp Car 00064 +"Your mentor %l fell to me. What makes you think you will do any better?" +%E +%Cp Car 00065 +"%d cannot help you now, %c." +%E +%Cp Car 00066 +"A mere %r cannot hope to defeat me." +%E +%Cp Car 00067 +"You fool! You cannot begin to imagine the cards that lurk in my deck!" +%E +%Cp Car 00068 +"The rules are meaningless, for I hold all the cards!" +%E +%Cp Car 00069 +"You look nervous, %c. Have you finally realized how outclassed you are?" +%E +%Cc Car 00070 +As you pick up %o you realize it is the perfect complement to your +spell cards. In fact, it is the perfect complement to any deck. No +wonder it was banned. + +You realize that with this card, you can do anything. +%E [%oC belongs to you now.] +%Cc Car 00071 +As you pick up %o, you feel the essence of +%d fill your soul. You know now why %n stole it from +%H, for with it, %ca of %d could easily defeat his plans. +%E [You feel %d as you pick up %o.] +%Cc Car 00080 +%"I see now," gasps %n. "It was never about the power of the cards, +or the skill of the player, but about the love the player has for +their cards. Thank you, %c, you have taught me much." + +With that, %n collapses. They will never oppose you again. +%E +%Cc Car 00081 +%lC sees the glimmer of %o in your deck. He offers to battle +you, and you soundly defeat him. +After you have won, he smiles and says: + + Congratulations! You have done what I could not. + As a fellow competitor, I bow to your prowess. + + Please, %p, keep %o and use it in your quest. You + are truly worthy to wield its power. +%E ["Keep %o. It will help in your quest for the Amulet of Yendor."] +%Cc Car 00082 +%l takes %o in his hand and runs his finger along the edge. +Then he shakes his head. + +"It chose you, not me. I am not worthy of it. +Go back to %Z and fulfill your destiny." +%E ["You are worthier of %o. Return to %Z to search for the Amulet.] +%Cc Car 00083 +"You have returned, %p. And with %o, I see. +Congratulations. + +"Well done, %p. You have defeated %n and +recovered %o, and I have lifted the curse from +the silver bell. However, %d has +directed that %o shall be kept +here with us at %H. + +Please %p, return %o to us now. +%E ["%lC asks you to forfeit %o."] +%Cc Car 00084 +"Thank you %p for your sacrifice, I know this must have been +difficult to do. Rest assured, %d smiles down +upon you this day. %o will be safe with us." +%E ["You give %o to %l."] +%Cp Car 00090 +"%pC! Welcome back. +Care for a quick game, for old time's sake?" +%E +%Cc Car 00091 +"I see you have the Amulet, %p. + +"There is no more time for friendly games. Here is what you must do: + +"Leave the dungeon behind. The Amulet will then transport you +into the Astral Planes, where you shall face the last, most terrible +duel of all. + +"Sacrifice the Amulet on the altar, and become the greatest player of +spell cards to have ever lived." +%E ["Take the Amulet to the altar of %d on the Astral Plane and offer it."] # # Cave(wo)man # diff --git a/include/artifact.h b/include/artifact.h index 7bf7559a6..5c7d78d16 100644 --- a/include/artifact.h +++ b/include/artifact.h @@ -79,7 +79,8 @@ enum invoke_prop_types { LIGHTNING_BOLT, SEFFECT, OBJECT_DET, - SMOKE_CLOUD + SMOKE_CLOUD, + SUMMONING }; #endif /* ARTIFACT_H */ diff --git a/include/artilist.h b/include/artilist.h index 1c1b5c6ac..ed2afaac2 100644 --- a/include/artilist.h +++ b/include/artilist.h @@ -659,6 +659,12 @@ STATIC_OVL NEARDATA struct artifact artilist[] = { A_NEUTRAL, PM_BARBARIAN, NON_PM, 2500L, NO_COLOR, DEFAULT_MAT), #endif + A("The Holographic Void Lily", CREDIT_CARD, + (SPFX_NOGEN | SPFX_RESTR | SPFX_INTEL), + (SPFX_EREGEN | SPFX_HSPDAM | SPFX_REFLECT), 0, + NO_ATTK, NO_DFNS, NO_CARY, SUMMONING, + A_CHAOTIC, PM_CARTOMANCER, NON_PM, 7000L, NO_COLOR, DEFAULT_MAT), + A("The Sceptre of Might", EXECUTIONER_S_MACE, (SPFX_NOGEN | SPFX_RESTR | SPFX_INTEL | SPFX_DALIGN), 0, 0, PHYS(5, 0), DFNS(AD_MAGM), NO_CARY, CONFLICT, diff --git a/include/qtext.h b/include/qtext.h index 493def483..e8d7a4469 100644 --- a/include/qtext.h +++ b/include/qtext.h @@ -5,7 +5,7 @@ #ifndef QTEXT_H #define QTEXT_H -#define N_HDR 23 /* Maximum number of categories */ +#define N_HDR 24 /* Maximum number of categories */ /* (i.e., num roles + 1) */ #define LEN_HDR 3 /* Maximum length of a category name */ diff --git a/src/artifact.c b/src/artifact.c index 00f4cff88..ff00eebf2 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -1287,7 +1287,8 @@ long wp_mask; } } if (spfx & SPFX_REFLECT) { - if (otmp->oartifact == ART_MAGIC_MIRROR_OF_MERLIN) { + if (otmp->oartifact == ART_MAGIC_MIRROR_OF_MERLIN + || otmp->oartifact == ART_HOLOGRAPHIC_VOID_LILY) { if (on) EReflecting |= wp_mask; else @@ -4121,6 +4122,10 @@ struct obj *obj; incr_itimeout(&HPasses_walls, (50 + rnd(100))); obj->age += HPasses_walls; /* Time begins after phasing ends */ break; + case SUMMONING: { + create_critters(rnd(10), (struct permonst *) 0, TRUE); + break; + } case SMOKE_CLOUD: { coord cc; cc.x = u.ux; @@ -5372,6 +5377,7 @@ artifact_info(int anum) case LIGHT_AREA: art_info.invoke = "Light Area"; break; case SUMMON_FIRE_ELEMENTAL: art_info.invoke = "Summon Fire Elemental"; break; case SUMMON_WATER_ELEMENTAL: art_info.invoke = "Summon Storm Pet"; break; + case SUMMONING: art_info.invoke = "Summon a horde of spell beings"; break; case LIGHTNING_BOLT: art_info.invoke = "Lightning Bolt"; break; case SEFFECT: switch (anum) { diff --git a/src/attrib.c b/src/attrib.c index 81c138e6a..d09a4b331 100644 --- a/src/attrib.c +++ b/src/attrib.c @@ -37,10 +37,14 @@ static const struct innate { { 15, &(HStealth), "stealthy", "" }, { 0, 0, 0, 0 } }, + car_abil[] = { { 1, &(HSearching), "perceptive", "unaware" }, + { 7, &(HWarning), "in touch with the cards", "insensitive" }, + { 0, 0, 0, 0 } }, + cav_abil[] = { { 7, &(HFast), "quick", "slow" }, { 15, &(HWarning), "sensitive", "" }, { 0, 0, 0, 0 } }, - + con_abil[] = { { 1, &(HSick_resistance), "", "" }, { 7, &(HPoison_resistance), "healthy", "" }, { 20, &(HSearching), "perceptive", "unaware" }, @@ -877,6 +881,7 @@ int r; } roleabils[] = { { PM_ARCHEOLOGIST, arc_abil }, { PM_BARBARIAN, bar_abil }, + { PM_CARTOMANCER, car_abil }, { PM_CAVEMAN, cav_abil }, { PM_CONVICT, con_abil}, { PM_FLAME_MAGE, fla_abil }, diff --git a/src/dog.c b/src/dog.c index b5ec71130..5e5d69e3c 100644 --- a/src/dog.c +++ b/src/dog.c @@ -301,6 +301,8 @@ makedog() petname = "Hachi"; /* Shibuya Station */ if (Role_if(PM_BARBARIAN)) petname = "Idefix"; /* Obelix */ + if (Role_if(PM_CARTOMANCER)) + petname = "Joey"; /* Obscure SpliceHack reference (tm) */ if (Role_if(PM_RANGER)) petname = "Sirius"; /* Orion's dog */ } else if (!*petname && pettype == PM_SEWER_RAT) { diff --git a/src/dogmove.c b/src/dogmove.c index 50b8d8ad5..8cd3bae00 100644 --- a/src/dogmove.c +++ b/src/dogmove.c @@ -1230,7 +1230,7 @@ struct monst *mtmp, *mtarg; } /* And pets will hesitate to attack vastly stronger foes. This penalty will be discarded if master's in trouble. */ - if (mtarg->m_lev > mtmp_lev + 4L) + if ((mtarg->m_lev > mtmp_lev + 4L) && !mtmp->msummoned) score -= (mtarg->m_lev - mtmp_lev) * 20L; /* All things being the same, go for the beefiest monster. This bonus should not be large enough to override the pet's aversion diff --git a/src/dothrow.c b/src/dothrow.c index e94e331ef..e64e96cad 100644 --- a/src/dothrow.c +++ b/src/dothrow.c @@ -164,6 +164,7 @@ int shotlimit; if (skill == -P_SLING || skill == P_SPEAR) multishot++; break; + case PM_CARTOMANCER: case PM_MONK: /* allow higher volley count despite skill limitation */ if (skill == -P_SHURIKEN) diff --git a/src/exper.c b/src/exper.c index 19ed0bf1c..a9f908988 100644 --- a/src/exper.c +++ b/src/exper.c @@ -42,6 +42,7 @@ int en; case PM_ICE_MAGE: case PM_PRIEST: case PM_WIZARD: + case PM_CARTOMANCER: return (2 * en); case PM_HEALER: case PM_INFIDEL: diff --git a/src/invent.c b/src/invent.c index 4a166c284..dbc599bb9 100644 --- a/src/invent.c +++ b/src/invent.c @@ -4245,6 +4245,13 @@ STATIC_VAR NEARDATA const char *names[] = { "Gems/Stones", "Boulders/Statues", "Iron balls", "Chains", "Venoms", "Spirits" }; +static NEARDATA const char *carnames[] = { + 0, "Illegal objects", "Weapons", "Armor", "Rings", "Amulets", "Tools", + "Comestibles", "Potions", "Spell Cards", "Spellbooks", "Wands", "Coins", + "Gems/Stones", "Boulders/Statues", "Iron balls", "Chains", "Venoms", + "Spirits" +}; + STATIC_VAR NEARDATA const char oth_symbols[] = { CONTAINED_SYM, '\0' }; STATIC_VAR NEARDATA const char *oth_names[] = { "Bagged/Boxed items" }; @@ -4264,7 +4271,10 @@ boolean unpaid, showsym; unsigned len; if (oclass) - class_name = names[oclass]; + if (Role_if(PM_CARTOMANCER)) + class_name = carnames[oclass]; + else + class_name = names[oclass]; else if ((pos = index(oth_symbols, let)) != 0) class_name = oth_names[pos - oth_symbols]; else diff --git a/src/makemon.c b/src/makemon.c index 940e0227d..d0a21711f 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -2518,6 +2518,17 @@ register struct monst *mtmp; m_dowear(mtmp, FALSE); } mkmonmoney(mtmp, (long) rn1(10, 20)); + + } else if (quest_mon_represents_role(ptr, PM_CARTOMANCER)) { + for (cnt = rn2(3); cnt < 4; cnt++) { + otmp = mksobj(SCR_CREATE_MONSTER, FALSE, FALSE); + curse(otmp); + (void) mpickobj(mtmp, otmp); + } + (void) mongets(mtmp, SCR_FIRE); + (void) mongets(mtmp, SCR_EARTH); + (void) mongets(mtmp, SCR_TELEPORTATION); + (void) mongets(mtmp, EXPENSIVE_CAMERA); } else if (quest_mon_represents_role(ptr, PM_MONK)) { (void) mongets(mtmp, rn2(11) ? rn1(ROBE_OF_WEAKNESS - ROBE + 1, ROBE) diff --git a/src/mhitu.c b/src/mhitu.c index 9eb55cf66..5f2f8607b 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -2900,6 +2900,9 @@ struct attack *mattk; : "surges", buf); dismount_steed(DISMOUNT_ENGULFED); + } else if (mtmp->data == &mons[PM_FIRE_VORTEX] && + Role_if(PM_CARTOMANCER)) { + pline("That tornado\'s carrying a car!"); /* Sonic 06 */ } else pline("%s engulfs you!", Monnam(mtmp)); stop_occupation(); diff --git a/src/mon.c b/src/mon.c index 6e04a4ff5..88554ceb2 100644 --- a/src/mon.c +++ b/src/mon.c @@ -1423,12 +1423,19 @@ mcalcdistress() } if (mtmp->msummoned && mtmp->msummoned == 1) { - if (canseemon(mtmp)) - pline(Hallucination ? "%s folds in on itself!" - : "%s winks out of existence.", Monnam(mtmp)); + if (canseemon(mtmp)) { + if (Hallucination) + pline("%s %s", Monnam(mtmp), rn2(2) + ? "folds in on itself!" + : "explodes into multicolored polygons!"); + else + pline("%s %s", Monnam(mtmp), rn2(2) + ? "winks out of existence." + : "vanishes in a puff of smoke."); + } for (obj = mtmp->minvent; obj; obj = otmp) { otmp = obj->nobj; - obj_extract_self(obj); + /*obj_extract_self(obj);*/ if (mtmp->mx) { mdrop_obj(mtmp, obj, FALSE); } @@ -3703,6 +3710,16 @@ register struct monst *mtmp; } } + /* Anything killed while playing as a cartomancer has + * a chance of leaving behind a monster card. */ + if (Role_if(PM_CARTOMANCER) && !(mtmp->data->geno & G_UNIQ) + && !mtmp->mtame && rn2(2)) { + otmp = mksobj(SCR_CREATE_MONSTER, FALSE, FALSE); + otmp->corpsenm = monsndx(mtmp->data); + place_object(otmp, mtmp->mx, mtmp->my); + newsym(mtmp->mx, mtmp->my); + } + /* dead vault guard is actually kept at coordinate <0,0> until his temporary corridor to/from the vault has been removed; need to do this after life-saving and before m_detach() */ @@ -6640,6 +6657,7 @@ struct permonst *mdat; case PM_CAVEWOMAN: case PM_BARBARIAN: case PM_NEANDERTHAL: + case PM_CARTOMANCER: You("smell body odor."); msg_given = TRUE; break; @@ -6846,6 +6864,9 @@ short mndx; permitted |= (MH_CENTAUR | MH_DWARF | MH_GIANT | MH_ORC | MH_TORTLE | MH_VAMPIRE); break; + case PM_CARTOMANCER: + permitted |= (MH_DWARF | MH_ELF | MH_GNOME | MH_HOBBIT); + break; case PM_CAVEMAN: case PM_CAVEWOMAN: permitted |= (MH_DWARF | MH_GNOME | MH_GIANT); diff --git a/src/monst.c b/src/monst.c index e67f163b7..755010521 100644 --- a/src/monst.c +++ b/src/monst.c @@ -7511,8 +7511,16 @@ struct permonst _mons2[] = { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), MR_POISON, 0, M1_HUMANOID | M1_OMNIVORE, - M2_NOPOLY | M2_STRONG | M2_COLLECT, M3_INFRAVISIBLE, 0, - MH_HUMAN, 12, CLR_YELLOW), + M2_NOPOLY | M2_STRONG | M2_COLLECT, + M3_INFRAVISIBLE, 0, MH_HUMAN, 12, CLR_YELLOW), + MON("cartomancer", S_HUMAN, /* SpliceHack */ + LVL(10, 12, 10, 3, 0), (1), + A(ATTK(AT_WEAP, AD_PHYS, 1, 6), + NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), + SIZ(WT_HUMAN, 400, MS_HUMANOID, MZ_HUMAN), 0, 0, + M1_HUMANOID | M1_OMNIVORE, + M2_NOPOLY | M2_STRONG | M2_COLLECT | M2_MAGIC, + M3_INFRAVISIBLE, 0, MH_HUMAN, 12, CLR_YELLOW), MON("bard", S_HUMAN, /* SlashTHEM */ LVL(10, 12, 10, 2, -3), (1), A(ATTK(AT_WEAP, AD_PHYS, 1, 4), @@ -7778,6 +7786,15 @@ struct permonst _mons2[] = { M2_NOPOLY | M2_PNAME | M2_PEACEFUL | M2_STRONG | M2_MALE | M2_COLLECT | M2_MAGIC, M3_CLOSE | M3_INFRAVISIBLE, 0, MH_HUMAN, 22, HI_LORD), + MON("King of Games", S_HUMAN, + LVL(20, 12, 0, 60, 0), (G_NOGEN | G_UNIQ), + A(ATTK(AT_MAGC, AD_SPEL, 2, 8), + ATTK(AT_MAGC, AD_SPEL, 2, 8), + NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK), + SIZ(WT_HUMAN, 400, MS_LEADER, MZ_HUMAN), 0, 0, + M1_HUMANOID | M1_OMNIVORE, + M2_NOPOLY | M2_PEACEFUL | M2_STRONG | M2_COLLECT | M2_MAGIC | M2_MALE, + M3_CLOSE | M3_INFRAVISIBLE, 0, MH_HUMAN, 24, HI_LORD), MON("Shaman Karnov", S_HUMAN, LVL(20, 15, 0, 90, 20), (G_NOGEN | G_UNIQ), A(ATTK(AT_WEAP, AD_PHYS, 4, 10), @@ -8040,6 +8057,18 @@ struct permonst _mons2[] = { M2_NOPOLY | M2_PNAME | M2_STRONG | M2_MALE | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT | M2_MAGIC, M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 0, MH_HUMAN, 22, HI_LORD), + MON("Dal Zethire", S_HUMAN, + LVL(15, 12, 0, 80, -10), (G_NOGEN | G_UNIQ | G_NOCORPSE), + A(ATTK(AT_WEAP, AD_PHYS, 1, 6), + ATTK(AT_MAGC, AD_SPEL, 0, 0), + ATTK(AT_CLAW, AD_SAMU, 1, 4), + NO_ATTK, NO_ATTK, NO_ATTK), + SIZ(WT_HUMAN, 400, MS_NEMESIS, MZ_HUMAN), MR_STONE, 0, + M1_HUMANOID | M1_OMNIVORE, + M2_NOPOLY | M2_STRONG | M2_HOSTILE | M2_STALK + | M2_NASTY | M2_COLLECT | M2_MAGIC | M2_PNAME, + M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, 0, + MH_HUMAN, 19, CLR_RED), MON("Annam", S_GIANT, LVL(16, 15, 0, 30, -14), (G_NOGEN | G_UNIQ), A(ATTK(AT_CLAW, AD_SAMU, 4, 8), diff --git a/src/mplayer.c b/src/mplayer.c index b3da86b16..f2de9a0c9 100644 --- a/src/mplayer.c +++ b/src/mplayer.c @@ -262,6 +262,11 @@ int mndx; /* flags for all barbarians regardless of race */ rptr->mflags3 |= M3_BERSERK; break; + case PM_CARTOMANCER: + rptr->mattk[0].adtyp = AD_SAMU; + rptr->mattk[1].aatyp = AT_MAGC; + rptr->mattk[1].adtyp = AD_SPEL; + break; case PM_CAVEMAN: case PM_CAVEWOMAN: /* flags for all cavepersons regardless of race */ @@ -487,6 +492,17 @@ struct obj *obj; if (helm == HELM_OF_BRILLIANCE) helm = STRANGE_OBJECT; break; + case PM_CARTOMANCER: + weapon = !rn2(3) ? SHURIKEN : STRANGE_OBJECT; + armor = ROBE; + if (rn2(2)) { + cloak = CLOAK_OF_MAGIC_RESISTANCE; + } + if (rn2(4)) + helm = HELM_OF_BRILLIANCE; + shield = STRANGE_OBJECT; + (void) mongets(mtmp, SCR_CREATE_MONSTER); + break; case PM_CAVEMAN: case PM_CAVEWOMAN: if (rn2(4)) diff --git a/src/muse.c b/src/muse.c index 81f139691..d361cef18 100644 --- a/src/muse.c +++ b/src/muse.c @@ -4012,7 +4012,7 @@ const char *str; } else if (has_reflection(mon)) { /* specifically for the monster spell MGC_REFLECTION */ if (str) - pline(str, s_suffix(mon_nam(mon)), "shimmering globe"); + pline(str, s_suffix(mon_nam(mon)), "shimmering globe"); return TRUE; } else if (mon->data == &mons[PM_NIGHTMARE]) { pline(str, s_suffix(mon_nam(mon)), "horn"); diff --git a/src/objnam.c b/src/objnam.c index d775a4bcc..3201dae88 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -92,7 +92,18 @@ STATIC_OVL struct Jitem Pirate_items[] = { { ROBE, "long clothes" }, { 0, "" } }; +static struct Jitem Cartomancer_items[] = { + { LARGE_BOX, "deck box" }, + { LOCK_PICK, "worthless card" }, + { SHURIKEN, "razor card" }, + { HAWAIIAN_SHIRT, "graphic tee" }, + { EXPENSIVE_CAMERA, "holographic card" }, + { CREDIT_CARD, "banned card" }, + { SACK, "card bag" }, + { 0, "" } +}; +static const char *Cartomancer_rarity(int otyp); static const char *Alternate_item_name(int i, struct Jitem *); STATIC_OVL char * @@ -202,10 +213,16 @@ register int otyp; const char *un = ocl->oc_uname; int nn = ocl->oc_name_known; - if (Role_if(PM_SAMURAI) && Alternate_item_name(otyp, Japanese_items)) + if (Role_if(PM_SAMURAI) + && Alternate_item_name(otyp, Japanese_items)) actualn = Alternate_item_name(otyp, Japanese_items); - else if (Role_if(PM_PIRATE) && Alternate_item_name(otyp, Pirate_items)) + else if (Role_if(PM_PIRATE) + && Alternate_item_name(otyp, Pirate_items)) actualn = Alternate_item_name(otyp, Pirate_items); + else if (Role_if(PM_CARTOMANCER) + && Alternate_item_name(otyp, Cartomancer_items)) + actualn = Alternate_item_name(otyp,Cartomancer_items); + buf[0] = '\0'; switch (ocl->oc_class) { case COIN_CLASS: @@ -215,7 +232,10 @@ register int otyp; Strcpy(buf, Role_if(PM_PIRATE) ? "bottle": "potion"); break; case SCROLL_CLASS: - Strcpy(buf, "scroll"); + if (Role_if(PM_CARTOMANCER)) + Strcpy(buf, "spell card"); + else + Strcpy(buf, "scroll"); break; case WAND_CLASS: Strcpy(buf, "wand"); @@ -760,10 +780,15 @@ unsigned cxn_flags; /* bitmask of CXN_xxx values */ boolean known, dknown, bknown; buf = nextobuf() + PREFIX; /* leave room for "17 -3 " */ - if (Role_if(PM_SAMURAI) && Alternate_item_name(typ, Japanese_items)) + if (Role_if(PM_SAMURAI) + && Alternate_item_name(typ, Japanese_items)) actualn = Alternate_item_name(typ, Japanese_items); - else if (Role_if(PM_PIRATE) && Alternate_item_name(typ, Pirate_items)) + else if (Role_if(PM_PIRATE) + && Alternate_item_name(typ, Pirate_items)) actualn = Alternate_item_name(typ, Pirate_items); + else if (Role_if(PM_CARTOMANCER) + && Alternate_item_name(typ, Cartomancer_items)) + actualn = Alternate_item_name(typ, Cartomancer_items); /* As of 3.6.2: this used to be part of 'dn's initialization, but it needs to come after possibly overriding 'actualn' */ @@ -1059,10 +1084,16 @@ unsigned cxn_flags; /* bitmask of CXN_xxx values */ } break; case SCROLL_CLASS: - Strcat(buf, "scroll"); + if (Role_if(PM_CARTOMANCER)) { + Strcpy(buf, Cartomancer_rarity(typ)); + } else + Strcpy(buf, "scroll"); if (!dknown) break; - if (nn) { + if (nn && obj->corpsenm != NON_PM) { + Strcat(buf, " - "); + Strcat(buf, mons[obj->corpsenm].mname); + } else if (nn) { Strcat(buf, " of "); Strcat(buf, actualn); } else if (un) { @@ -3721,6 +3752,12 @@ const char * in_str; return ji->item; } } + } else if (Role_if(PM_CARTOMANCER)) { + for (ji = Cartomancer_items; ji->item != 0; ji++) { + if (!strcmpi(in_str, ji->name)) { + return ji->item; + } + } } /* try fruits */ @@ -4752,7 +4789,7 @@ struct obj *no_wish; typ = 0; if (actualn) { - struct Jitem *j[] = { Japanese_items, Pirate_items }; + struct Jitem *j[] = { Japanese_items, Pirate_items, Cartomancer_items }; for (i = 0; (unsigned long) i < sizeof(j) / sizeof(j[0]); i++) { while (j[i]->item) { @@ -5813,4 +5850,23 @@ long objprops; return objprops; } + +static const char* +Cartomancer_rarity(int otyp) +{ + int price = objects[otyp].oc_cost; + if (otyp == SCR_CREATE_MONSTER) + return "monster card"; + else if (price < 60) + return flags.verbose ? "common spell card" : "common card"; + else if (price < 100) + return flags.verbose ? "uncommon spell card" : "uncommon card"; + else if (price < 200) + return flags.verbose ? "rare spell card" : "rare card"; + else if (price < 300) + return flags.verbose ? "legendary spell card" : "legendary card"; + else + return flags.verbose ? "mythic spell card" : "mythic card"; + +} /*objnam.c*/ diff --git a/src/pline.c b/src/pline.c index b26f4e76c..94379c2c8 100644 --- a/src/pline.c +++ b/src/pline.c @@ -14,6 +14,7 @@ static unsigned pline_flags = 0; static char prevmsg[BUFSZ]; static void FDECL(putmesg, (const char *)); +static const char *cartsay(const char *); static char *FDECL(You_buf, (int)); #if defined(MSGHANDLER) && (defined(POSIX_TYPES) || defined(__GNUC__)) static void FDECL(execplinehandler, (const char *)); @@ -186,6 +187,17 @@ piratesay(const char *orig) return orig; } +const char * +cartsay(orig) +const char *orig; +{ + orig = replace(orig, "read the scroll", "play the spell card"); + orig = replace(orig, " reads a", " plays a"); + orig = replace(orig, "scroll", "spell card"); + orig = replace(orig, "scroll of genocide", "forbidden spell card"); + return orig; +} + /* keep the most recent DUMPLOG_MSG_COUNT messages */ void dumplogmsg(line) @@ -344,6 +356,8 @@ VA_DECL(const char *, line) if (Role_if(PM_PIRATE)){ line = piratesay(line); + } else if (Role_if(PM_CARTOMANCER)) { + line = cartsay(line); } /* use raw_print() if we're called too early (or perhaps too late diff --git a/src/read.c b/src/read.c index 97975e5a3..29ced8640 100644 --- a/src/read.c +++ b/src/read.c @@ -522,15 +522,37 @@ doread() "Yendorian Express - Platinum Card", /* must be last */ }; + /* Takeoffs of banned or broken from tcgs. */ + static const char *tcg_msgs[] = { + /* MTG */ + "Draw three cards, or force a monster to draw three cards.", + "Turn any monster into an 3/3 newt.", + "Opponent loses next turn." + /* YGO */ + "Select and control one hostile monster.", + "Draw two cards from your deck.", + /* Pkmn */ + "Birthday surprise!", + /* HVL */ + "You gain 3 energy." + }; + if (Blind) { You_feel("the embossed numbers:"); } else { if (flags.verbose) pline("It reads:"); - mesg = scroll->oartifact - ? card_msgs[SIZE(card_msgs) - 1] - : card_msgs[scroll->o_id % (SIZE(card_msgs) - 1)]; - pline("\"%s\"", mesg); + if (Role_if(PM_CARTOMANCER)) { + pline("\"%s\"", + scroll->oartifact + ? tcg_msgs[SIZE(tcg_msgs) - 1] + : tcg_msgs[scroll->o_id % (SIZE(tcg_msgs) - 1)]); + } else { + mesg = scroll->oartifact + ? card_msgs[SIZE(card_msgs) - 1] + : card_msgs[scroll->o_id % (SIZE(card_msgs) - 1)]; + pline("\"%s\"", mesg); + } maybe_learn_elbereth(mesg); } /* Make a credit card number */ @@ -708,9 +730,14 @@ doread() if (confused) { if (Hallucination) pline("Being so trippy, you screw up..."); - else - pline("Being confused, you %s the magic words...", - silently ? "misunderstand" : "mispronounce"); + else { + if (Role_if(PM_CARTOMANCER)) + pline("Being confused, you %s the rules text...", + silently ? "misunderstand" : "misread"); + else + pline("Being confused, you %s the magic words...", + silently ? "misunderstand" : "mispronounce"); + } } } if (!seffects(scroll)) { @@ -1395,10 +1422,13 @@ struct obj *sobj; /* sobj - scroll or fake spellbook for spell */ #ifdef MAIL case SCR_MAIL: known = TRUE; - if (sobj->spe == 2) + if (sobj->spe == 2) { /* "stamped scroll" created via magic marker--without a stamp */ - pline("This scroll is marked \"postage due\"."); - else if (sobj->spe) + if (Role_if(PM_CARTOMANCER)) + pline("The rules on this card read \"Discard upon use\"."); + else + pline("This scroll is marked \"postage due\"."); + } else if (sobj->spe) /* scroll of mail obtained from bones file or from wishing; * note to the puzzled: the game Larn actually sends you junk * mail if you win! @@ -1775,9 +1805,13 @@ struct obj *sobj; /* sobj - scroll or fake spellbook for spell */ if (Blind) You("don't remember there being any magic words on this scroll."); else { - pline("This scroll seems to be blank."); - if (Confusion && !rn2(2)) - pline("Being confused, you mispronounce the lack of words..."); + if (Role_if(PM_CARTOMANCER)) + pline("This card is useless!"); + else { + pline("This scroll seems to be blank."); + if (Confusion && !rn2(2)) + pline("Being confused, you mispronounce the lack of words..."); + } } known = TRUE; break; @@ -1909,6 +1943,20 @@ struct obj *sobj; /* sobj - scroll or fake spellbook for spell */ } case SCR_CREATE_MONSTER: case SPE_CREATE_MONSTER: + if (sobj->corpsenm != NON_PM) { + mtmp = makemon(&mons[sobj->corpsenm], u.ux, u.uy, + MM_EDOG | NO_MINVENT | MM_NOCOUNTBIRTH); + if (!mtmp) + break; + if (!scursed) { + initedog(mtmp); + newsym(mtmp->mx, mtmp->my); + } + known = TRUE; + mtmp->msummoned = 15 + u.ulevel * 4; + break; + } + if (create_critters(1 + ((confused || scursed) ? 12 : 0) + ((sblessed || rn2(73)) ? 0 : rnd(4)), confused ? &mons[PM_ACID_BLOB] diff --git a/src/role.c b/src/role.c index 99a4d669b..0c0a10f2c 100644 --- a/src/role.c +++ b/src/role.c @@ -408,6 +408,42 @@ const struct Role roles[] = { { 7, 2, 0, 2, 0, 2 }, 10, /* Energy */ 10, 8, -2, 2, 20, A_WIS, SPE_RESTORE_ABILITY, -4 }, + + { { "Cartomancer", 0 }, + { { "Learner", 0 }, + { "Shuffler", 0 }, + { "Player", 0 }, + { "Reader", 0 }, + { "Strategist", 0 }, + { "Deck Stacker", 0 }, + { "Card Collector", 0 }, + { "Deck Stacker", 0 }, + { "King of Games", "Queen of Games" } }, + "Johnny", "Spike", "Timmy", /* Card player archetypes */ + "Car", + "the Card Training School", + "the Great Card Arena", + PM_CARTOMANCER, + NON_PM, + PM_LITTLE_DOG, + PM_KING_OF_GAMES, + PM_STUDENT, /* Reusing students to avoid redundancy */ + PM_DAL_ZETHIRE, + PM_COBRA, + PM_GUARDIAN_NAGA, + S_SNAKE, + S_NAGA, + ART_HOLOGRAPHIC_VOID_LILY, + MH_HUMAN | MH_DWARF | MH_ELF | MH_GNOME /*| MH_DEMON | MH_UNDEAD*/, + ROLE_MALE | ROLE_FEMALE | + ROLE_LAWFUL | ROLE_NEUTRAL | ROLE_CHAOTIC, + /* Str Int Wis Dex Con Cha */ + { 7, 10, 7, 7, 7, 7 }, + { 10, 30, 10, 20, 20, 10 }, + /* Init Lower Higher */ + { 10, 0, 0, 8, 1, 0 }, /* Hit points */ + { 4, 3, 0, 2, 0, 3 }, 12, /* Energy */ + 0, 1, 0, 3, 10, A_INT, SPE_CREATE_MONSTER, -4 }, { { "Necromancer", 0 }, { { "Gravedigger", 0 }, { "Embalmer", 0 }, diff --git a/src/sounds.c b/src/sounds.c index ea0852d83..b09fc5bf7 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1097,6 +1097,15 @@ register struct monst *mtmp; case PM_TOURIST: verbl_msg = "Aloha."; break; + case PM_WIZARD: + pline_msg = "discusses spellbooks."; + break; + case PM_RANGER: + verbl_msg = Hallucination ? "I am the bone of my sword." : "I can't talk for long, I'm on the hunt."; + break; + case PM_CARTOMANCER: + pline_msg = "informs you that their deck has no pathetic cards."; + break; case PM_CHARON: if (mtmp->mpeaceful) { com_pager(rn1(u.uevent.ucerberus ? QTN_CHRN_NOCERB diff --git a/src/u_init.c b/src/u_init.c index 24929783a..634984bbf 100644 --- a/src/u_init.c +++ b/src/u_init.c @@ -52,6 +52,16 @@ struct trobj Barbarian[] = { { FOOD_RATION, 0, FOOD_CLASS, 2, 0 }, { 0, 0, 0, 0, 0 } }; +static struct trobj Cartomancer[] = { + { HAWAIIAN_SHIRT, 0, ARMOR_CLASS, 1, UNDEF_BLESS }, + { DAGGER, 1, WEAPON_CLASS, 1, UNDEF_BLESS }, + { SHURIKEN, 0, GEM_CLASS, 60, UNDEF_BLESS }, + { UNDEF_TYP, UNDEF_SPE, SCROLL_CLASS, 4, UNDEF_BLESS }, + { SCR_CREATE_MONSTER, 0, SCROLL_CLASS, 1, UNDEF_BLESS }, + { SCR_CREATE_MONSTER, 1, SCROLL_CLASS, 1, UNDEF_BLESS }, + { SCR_CREATE_MONSTER, 2, SCROLL_CLASS, 1, UNDEF_BLESS }, + { 0, 0, 0, 0, 0 } +}; struct trobj Cave_man[] = { #define C_AMMO 2 { CLUB, 1, WEAPON_CLASS, 1, UNDEF_BLESS }, @@ -500,6 +510,34 @@ static const struct def_skill Skill_B[] = { { P_SHIELD, P_SKILLED }, { P_NONE, 0 } }; +static const struct def_skill Skill_Car[] = { + { P_DAGGER, P_EXPERT }, + { P_KNIFE, P_SKILLED }, + { P_AXE, P_BASIC }, + { P_SHORT_SWORD, P_BASIC }, + { P_CLUB, P_BASIC }, + { P_MACE, P_BASIC }, + { P_QUARTERSTAFF, P_BASIC }, + { P_POLEARMS, P_BASIC }, + { P_SPEAR, P_BASIC }, + { P_TRIDENT, P_BASIC }, + { P_SLING, P_SKILLED }, + { P_DART, P_EXPERT }, + { P_SHURIKEN, P_EXPERT }, + { P_ATTACK_SPELL, P_BASIC }, + { P_HEALING_SPELL, P_BASIC }, + + { P_DIVINATION_SPELL, P_EXPERT }, + { P_ENCHANTMENT_SPELL, P_SKILLED }, + { P_ENCHANTMENT_SPELL, P_SKILLED }, + { P_ESCAPE_SPELL, P_SKILLED }, + { P_MATTER_SPELL, P_SKILLED }, + { P_RIDING, P_EXPERT }, /* Card games on motorcycles. */ + { P_BARE_HANDED_COMBAT, P_SKILLED }, + + /* { P_WILD_MAGIC, P_EXPERT },*/ + { P_NONE, 0 } +}; static const struct def_skill Skill_C[] = { { P_DAGGER, P_BASIC }, { P_KNIFE, P_SKILLED }, @@ -1176,6 +1214,10 @@ u_init() ini_inv(Cave_man); skill_init(Skill_C); break; + case PM_CARTOMANCER: + ini_inv(Cartomancer); + skill_init(Skill_Car); + break; case PM_FLAME_MAGE: switch (rnd(2)) { case 1: @@ -1471,7 +1513,7 @@ u_init() * Non-warriors get an instrument. We use a kludge to * get only non-magic instruments. */ - if (Role_if(PM_PRIEST) || Role_if(PM_WIZARD)) { + if (Role_if(PM_PRIEST) || Role_if(PM_WIZARD) || Role_if(PM_CARTOMANCER)) { static int trotyp[] = { FLUTE, TOOLED_HORN, HARP, BELL, BUGLE, LEATHER_DRUM, LUTE, BAGPIPE }; @@ -1956,6 +1998,9 @@ int otyp; case PM_CAVEMAN: skills = Skill_C; break; + case PM_CARTOMANCER: + skills = Skill_Car; + break; case PM_CONVICT: skills = Skill_Con; break; @@ -2197,6 +2242,17 @@ register struct trobj *origtrop; } } + /* Set up cartomancer cards */ + if (urole.malenum == PM_CARTOMANCER + && obj->otyp == SCR_CREATE_MONSTER) { + do { + i = rn2(NUMMONS); + } while ((type_is_pname(&mons[i]) + || (mons[i].geno & G_UNIQ) + || (mons[i].geno & G_NOGEN))); + obj->corpsenm = i; + } + /* nudist gets no armor */ if (u.uroleplay.nudist && obj->oclass == ARMOR_CLASS) { dealloc_obj(obj); diff --git a/src/write.c b/src/write.c index 8a291e22a..83abb5154 100644 --- a/src/write.c +++ b/src/write.c @@ -266,6 +266,12 @@ register struct obj *pen; return 1; } + /* cartomancers feel guilty for counterfeiting */ + if (Role_if(PM_CARTOMANCER) && paper->oclass == SCROLL_CLASS) { + You("feel incredibly guilty about forging a card!"); + adjalign(-5); + } + /* we're really going to write now, so calculate cost */ actualcost = rn1(basecost / 2, basecost / 2); diff --git a/sys/mac/Files.r b/sys/mac/Files.r index 6e8cb3853..702c00c0f 100644 --- a/sys/mac/Files.r +++ b/sys/mac/Files.r @@ -199,6 +199,11 @@ read 'File' (1206,"Bar-filb.lev") "Bar-filb.lev"; read 'File' (1207,"Bar-goal.lev") "Bar-goal.lev"; read 'File' (1208,"Bar-loca.lev") "Bar-loca.lev"; read 'File' (1209,"Bar-strt.lev") "Bar-strt.lev"; +read 'File' (1200,"Car-fila.lev") "Car-fila.lev"; +read 'File' (1201,"Car-filb.lev") "Car-filb.lev"; +read 'File' (1202,"Car-goal.lev") "Car-goal.lev"; +read 'File' (1203,"Car-loca.lev") "Car-loca.lev"; +read 'File' (1204,"Car-strt.lev") "Car-strt.lev"; read 'File' (1210,"Cav-fila.lev") "Cav-fila.lev"; read 'File' (1211,"Cav-filb.lev") "Cav-filb.lev"; read 'File' (1212,"Cav-goal.lev") "Cav-goal.lev"; diff --git a/sys/os2/Makefile.os2 b/sys/os2/Makefile.os2 index 61a1dcc9e..ddca04ba2 100644 --- a/sys/os2/Makefile.os2 +++ b/sys/os2/Makefile.os2 @@ -1280,6 +1280,7 @@ $(GAMEDIR)\dungeon : $(DAT)\dungeon.def $(TEMP)\makedefs.exe $(TEMP)\dgn_comp.ex AFILES = $(GAMEDIR)\Arc-goal.lev BFILES = $(GAMEDIR)\Bar-goal.lev +BFILES = $(GAMEDIR)\Car-goal.lev CFILES = $(GAMEDIR)\Cav-goal.lev HFILES = $(GAMEDIR)\Hea-goal.lev IFILES = $(GAMEDIR)\Inf-goal.lev @@ -1389,6 +1390,8 @@ $(AFILES) : $(DAT)\Arch.des $(TEMP)\lev_comp.exe $(MAKEB) QQ=Arc QF=Arch do_quest $(BFILES) : $(DAT)\Barb.des $(TEMP)\lev_comp.exe $(MAKEB) QQ=Bar QF=Barb do_quest +$(BFILES) : $(DAT)\Cart.des $(TEMP)\lev_comp.exe + $(MAKEB) QQ=Car QF=Cart do_quest $(CFILES) : $(DAT)\Caveman.des $(TEMP)\lev_comp.exe $(MAKEB) QQ=Cav QF=Caveman do_quest $(HFILES) : $(DAT)\Flame.des $(TEMP)\lev_comp.exe diff --git a/sys/unix/Makefile.dat b/sys/unix/Makefile.dat index b30b4930e..bcf6aefdd 100644 --- a/sys/unix/Makefile.dat +++ b/sys/unix/Makefile.dat @@ -197,6 +197,7 @@ spec_levs: ../util/lev_comp \ quest_levs: ../util/lev_comp \ Arch.des \ Barb.des \ + Cart.des \ Caveman.des \ Convict.des \ Flame.des \ @@ -219,6 +220,7 @@ quest_levs: ../util/lev_comp \ Yeoman.des ../util/lev_comp Arch.des ../util/lev_comp Barb.des + ../util/lev_comp Cart.des ../util/lev_comp Caveman.des ../util/lev_comp Convict.des ../util/lev_comp Flame.des diff --git a/sys/unix/NetHack.xcodeproj/project.pbxproj b/sys/unix/NetHack.xcodeproj/project.pbxproj index 4d8245e29..8c587d5f4 100644 --- a/sys/unix/NetHack.xcodeproj/project.pbxproj +++ b/sys/unix/NetHack.xcodeproj/project.pbxproj @@ -1312,6 +1312,7 @@ "$(NH_UTIL_DIR)/lev_comp", "$(NH_DAT_DIR)/Arch.des", "$(NH_DAT_DIR)/Barb.des", + "$(NH_DAT_DIR)/Cart.des", "$(NH_DAT_DIR)/Caveman.des", "$(NH_DAT_DIR)/Convict.des", "$(NH_DAT_DIR)/Flame.des", @@ -1341,7 +1342,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "cd ${NH_DAT_DIR}\n${NH_UTIL_DIR}/lev_comp Arch.des\n${NH_UTIL_DIR}/lev_comp Barb.des\n${NH_UTIL_DIR}/lev_comp Caveman.des\n${NH_UTIL_DIR}/lev_comp Convict.des\n${NH_UTIL_DIR}/lev_comp Flame.des\n${NH_UTIL_DIR}/lev_comp Healer.des\n${NH_UTIL_DIR}/lev_comp Ice.des\n${NH_UTIL_DIR}/lev_comp Infidel.des\n${NH_UTIL_DIR}/lev_comp Jedi.des\n${NH_UTIL_DIR}/lev_comp Knight.des\n${NH_UTIL_DIR}/lev_comp Monk.des\n${NH_UTIL_DIR}/lev_comp Necro.des\n${NH_UTIL_DIR}/lev_comp Pirate.des\n${NH_UTIL_DIR}/lev_comp Priest.des\n${NH_UTIL_DIR}/lev_comp Ranger.des\n${NH_UTIL_DIR}/lev_comp Rogue.des\n${NH_UTIL_DIR}/lev_comp Samurai.des\n${NH_UTIL_DIR}/lev_comp Slayer.des\n${NH_UTIL_DIR}/lev_comp Tourist.des\n${NH_UTIL_DIR}/lev_comp Valkyrie.des\n${NH_UTIL_DIR}/lev_comp Wizard.des\ntouch quest_levs\n"; + shellScript = "cd ${NH_DAT_DIR}\n${NH_UTIL_DIR}/lev_comp Arch.des\n${NH_UTIL_DIR}/lev_comp Barb.des\n${NH_UTIL_DIR}/lev_comp Cart.des\n${NH_UTIL_DIR}/lev_comp Caveman.des\n${NH_UTIL_DIR}/lev_comp Convict.des\n${NH_UTIL_DIR}/lev_comp Flame.des\n${NH_UTIL_DIR}/lev_comp Healer.des\n${NH_UTIL_DIR}/lev_comp Ice.des\n${NH_UTIL_DIR}/lev_comp Infidel.des\n${NH_UTIL_DIR}/lev_comp Jedi.des\n${NH_UTIL_DIR}/lev_comp Knight.des\n${NH_UTIL_DIR}/lev_comp Monk.des\n${NH_UTIL_DIR}/lev_comp Necro.des\n${NH_UTIL_DIR}/lev_comp Pirate.des\n${NH_UTIL_DIR}/lev_comp Priest.des\n${NH_UTIL_DIR}/lev_comp Ranger.des\n${NH_UTIL_DIR}/lev_comp Rogue.des\n${NH_UTIL_DIR}/lev_comp Samurai.des\n${NH_UTIL_DIR}/lev_comp Slayer.des\n${NH_UTIL_DIR}/lev_comp Tourist.des\n${NH_UTIL_DIR}/lev_comp Valkyrie.des\n${NH_UTIL_DIR}/lev_comp Wizard.des\ntouch quest_levs\n"; }; 317E7C4E21A3697300F6E4E5 /* Build options and headers */ = { isa = PBXShellScriptBuildPhase; @@ -1475,6 +1476,11 @@ "$(NH_DAT_DIR)/Bar-goal.lev", "$(NH_DAT_DIR)/Bar-loca.lev", "$(NH_DAT_DIR)/Bar-strt.lev", + "$(NH_DAT_DIR)/Car-fila.lev", + "$(NH_DAT_DIR)/Car-filb.lev", + "$(NH_DAT_DIR)/Car-goal.lev", + "$(NH_DAT_DIR)/Car-loca.lev", + "$(NH_DAT_DIR)/Car-strt.lev", "$(NH_DAT_DIR)/Cav-fila.lev", "$(NH_DAT_DIR)/Cav-filb.lev", "$(NH_DAT_DIR)/Cav-goal.lev", diff --git a/sys/winnt/Makefile.gcc b/sys/winnt/Makefile.gcc index f26558b94..df4eb9e2f 100644 --- a/sys/winnt/Makefile.gcc +++ b/sys/winnt/Makefile.gcc @@ -784,6 +784,7 @@ recover: $(U)recover.exe $(O)sp_lev.tag: $(O)utility.tag \ $(DAT)/arch.des \ $(DAT)/barb.des \ + $(DAT)/cart.des \ $(DAT)/caveman.des \ $(DAT)/convict.des \ $(DAT)/healer.des \ @@ -833,6 +834,7 @@ $(O)sp_lev.tag: $(O)utility.tag \ $(subst /,\,$(U)levcomp $(DAT)/arch.des) $(subst /,\,$(U)levcomp $(DAT)/barb.des) + $(subst /,\,$(U)levcomp $(DAT)/cart.des) $(subst /,\,$(U)levcomp $(DAT)/caveman.des) $(subst /,\,$(U)levcomp $(DAT)/convict.des) $(subst /,\,$(U)levcomp $(DAT)/flame.des) diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index b6d617282..35f18b5e6 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -733,6 +733,7 @@ recover: $(U)recover.exe $(O)sp_lev.tag: $(O)utility.tag \ $(DAT)\arch.des \ $(DAT)\barb.des \ + $(DAT)\cart.des \ $(DAT)\caveman.des \ $(DAT)\convict.des \ $(DAT)\flame.des \ @@ -789,6 +790,7 @@ $(O)sp_lev.tag: $(O)utility.tag \ cd $(DAT) $(U)levcomp arch.des $(U)levcomp barb.des + $(U)levcomp cart.des $(U)levcomp caveman.des $(U)levcomp convict.des $(U)levcomp flame.des diff --git a/util/lev_main.c b/util/lev_main.c index c42a28192..ed2739233 100644 --- a/util/lev_main.c +++ b/util/lev_main.c @@ -277,6 +277,7 @@ char **argv; "lev_comp", /* dummy argv[0] */ ":dat:Arch.des", ":dat:Barb.des", + ":dat:Cart.des", ":dat:Caveman.des", ":dat:Convict.des", ":dat:Flame.des", diff --git a/win/share/monsters.txt b/win/share/monsters.txt index 174e82ded..89c41e3db 100644 --- a/win/share/monsters.txt +++ b/win/share/monsters.txt @@ -8829,7 +8829,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 0 (arch-vile) +# tile 463 (arch-vile) { .LH...........L. HH...........AH. @@ -8850,7 +8850,7 @@ Z = (195, 195, 195) } -# tile 463 (arch-lich) +# tile 464 (arch-lich) { ................ ................ @@ -8869,7 +8869,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 464 (Vecna) +# tile 465 (Vecna) { ................ ................ @@ -8888,7 +8888,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 465 (kobold mummy) +# tile 466 (kobold mummy) { ................ ................ @@ -8907,7 +8907,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 466 (gnome mummy) +# tile 467 (gnome mummy) { ................ ................ @@ -8926,7 +8926,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 467 (orc mummy) +# tile 468 (orc mummy) { ................ ................ @@ -8945,7 +8945,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 468 (dwarf mummy) +# tile 469 (dwarf mummy) { ................ ................ @@ -8964,7 +8964,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 469 (hobbit mummy) +# tile 470 (hobbit mummy) { ................ ................ @@ -8983,7 +8983,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 470 (elf mummy) +# tile 471 (elf mummy) { ................ ................ @@ -9002,7 +9002,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 471 (human mummy) +# tile 472 (human mummy) { ................ ................ @@ -9021,7 +9021,7 @@ Z = (195, 195, 195) ..NNN.NNNA...... ................ } -# tile 472 (centaur mummy) +# tile 473 (centaur mummy) { ................ ................ @@ -9040,7 +9040,7 @@ Z = (195, 195, 195) ....MA...M...... ................ } -# tile 473 (ettin mummy) +# tile 474 (ettin mummy) { .....NN..ONOO... ...NNOOONNOOOO.. @@ -9059,7 +9059,7 @@ Z = (195, 195, 195) .....NOOANOOAAAA ...OOOOO.OOOOKAA } -# tile 474 (adherer) +# tile 475 (adherer) { ................ ................ @@ -9078,7 +9078,7 @@ Z = (195, 195, 195) ..VVV.VVVA...... ................ } -# tile 475 (giant mummy) +# tile 476 (giant mummy) { ......ONOOAA.... ....ONNNOOOOA... @@ -9097,7 +9097,7 @@ Z = (195, 195, 195) .....NOOANOOAAAA ...OOOOO.OOOOKAA } -# tile 476 (troll mummy) +# tile 477 (troll mummy) { ................ ....OOO......... @@ -9116,7 +9116,7 @@ Z = (195, 195, 195) ..OOA..OA....... ................ } -# tile 477 (red naga hatchling) +# tile 478 (red naga hatchling) { ................ ................ @@ -9135,7 +9135,7 @@ Z = (195, 195, 195) ....IIDDDDDA.... ................ } -# tile 478 (black naga hatchling) +# tile 479 (black naga hatchling) { ................ ................ @@ -9154,7 +9154,7 @@ Z = (195, 195, 195) ....AAAAAAAA.... ................ } -# tile 479 (golden naga hatchling) +# tile 480 (golden naga hatchling) { ................ ................ @@ -9173,7 +9173,7 @@ Z = (195, 195, 195) ....NNHHHHHA.... ................ } -# tile 480 (guardian naga hatchling) +# tile 481 (guardian naga hatchling) { ................ ................ @@ -9192,7 +9192,7 @@ Z = (195, 195, 195) ....GGFFFFFA.... ................ } -# tile 481 (red naga) +# tile 482 (red naga) { ................ ....KK.......... @@ -9211,7 +9211,7 @@ Z = (195, 195, 195) .....DDAA..DDA.. ..........DA.... } -# tile 482 (black naga) +# tile 483 (black naga) { ................ ....KK.......... @@ -9230,7 +9230,7 @@ Z = (195, 195, 195) .....AAPP..AAP.. ..........AP.... } -# tile 483 (golden naga) +# tile 484 (golden naga) { ................ ....KK.......... @@ -9249,7 +9249,7 @@ Z = (195, 195, 195) .....HHAA..HHA.. ..........HA.... } -# tile 484 (guardian naga) +# tile 485 (guardian naga) { ................ ....KK.......... @@ -9268,7 +9268,7 @@ Z = (195, 195, 195) .....FFAA..FFA.. ..........FA.... } -# tile 485 (ha-naga) +# tile 486 (ha-naga) { ................ ....KK.......... @@ -9287,7 +9287,7 @@ Z = (195, 195, 195) .....FFAA..FFA.. ..........FA.... } -# tile 486 (ogre) +# tile 487 (ogre) { ................ ................ @@ -9306,7 +9306,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 487 (ogre noble) +# tile 488 (ogre noble) { ................ ................ @@ -9325,7 +9325,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 488 (ogre mage) +# tile 489 (ogre mage) { ................ ................ @@ -9344,7 +9344,7 @@ Z = (195, 195, 195) ....KJJJKOAAAAAA ..OOOOO.OOOOOAA. } -# tile 489 (ogre royal) +# tile 490 (ogre royal) { ...H..C..H...... ...HDCHCDH...... @@ -9363,7 +9363,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 490 (shadow ogre) +# tile 491 (shadow ogre) { ................ ................ @@ -9382,7 +9382,7 @@ Z = (195, 195, 195) ....NFFFNOPPPPPP ..OOOOO.OOOOOPP. } -# tile 491 (gray ooze) +# tile 492 (gray ooze) { ................ ................ @@ -9401,7 +9401,7 @@ Z = (195, 195, 195) .........KCCCJ.. ................ } -# tile 492 (brown pudding) +# tile 493 (brown pudding) { ................ ................ @@ -9420,7 +9420,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 493 (green slime) +# tile 494 (green slime) { ................ ................ @@ -9439,7 +9439,7 @@ Z = (195, 195, 195) NGGFGGF..GF..... ..GGF..GGF..G... } -# tile 494 (blood pudding) +# tile 495 (blood pudding) { ................ ................ @@ -9458,7 +9458,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 495 (gel) +# tile 496 (gel) { ................ ................ @@ -9477,7 +9477,7 @@ Z = (195, 195, 195) ...........AAAAA ..............AA } -# tile 496 (moldy pudding) +# tile 497 (moldy pudding) { ................ ................ @@ -9496,7 +9496,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 497 (black pudding) +# tile 498 (black pudding) { ........A....... ........AA...... @@ -9516,7 +9516,7 @@ Z = (195, 195, 195) ..........AAAA.. } -# tile 498 (shoggoth) +# tile 499 (shoggoth) { ................ ................ @@ -9535,7 +9535,7 @@ Z = (195, 195, 195) .AAAAAAAAAAAAAA. ................ } -# tile 499 (giant shoggoth) +# tile 500 (giant shoggoth) { ....AAAAA....... ..AAAEEEAAA..... @@ -9554,7 +9554,7 @@ Z = (195, 195, 195) .AAAAAAAAAAAAEA. AAAAAAAAAAAAAAAA } -# tile 500 (scramper) +# tile 501 (scramper) { ................ ................ @@ -9573,7 +9573,7 @@ Z = (195, 195, 195) ..........AAA... ................ } -# tile 501 (squealer) +# tile 502 (squealer) { ................ ................ @@ -9592,7 +9592,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 502 (mangler) +# tile 503 (mangler) { ................ ......AO.AO..... @@ -9611,7 +9611,7 @@ Z = (195, 195, 195) APPPFANAAFFPAAOP ....ANP......... } -# tile 503 (quantum mechanic) +# tile 504 (quantum mechanic) { ................ ......LLLL...... @@ -9630,7 +9630,7 @@ Z = (195, 195, 195) ....NAAEBAANN... ................ } -# tile 504 (alchemist) +# tile 505 (alchemist) { ................ ......LLLL...... @@ -9649,7 +9649,7 @@ Z = (195, 195, 195) ....NAAEBAANN... ................ } -# tile 505 (genetic engineer) +# tile 506 (genetic engineer) { ................ ......LLLL...... @@ -9668,7 +9668,7 @@ Z = (195, 195, 195) ..AANAAEPAANN... ................ } -# tile 506 (rust monster) +# tile 507 (rust monster) { ................ ....EEEE........ @@ -9687,7 +9687,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 507 (disenchanter) +# tile 508 (disenchanter) { ................ ....PPPP........ @@ -9706,7 +9706,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 508 (garter snake) +# tile 509 (garter snake) { ................ ................ @@ -9725,7 +9725,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 509 (snake) +# tile 510 (snake) { ................ ................ @@ -9744,7 +9744,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 510 (water moccasin) +# tile 511 (water moccasin) { ................ ................ @@ -9763,7 +9763,7 @@ Z = (195, 195, 195) .....AAAAA...... ................ } -# tile 511 (python) +# tile 512 (python) { ................ ................ @@ -9782,7 +9782,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 512 (pit viper) +# tile 513 (pit viper) { ................ ................ @@ -9801,7 +9801,7 @@ Z = (195, 195, 195) ......AAAA...... ................ } -# tile 513 (cobra) +# tile 514 (cobra) { ................ ................ @@ -9820,7 +9820,7 @@ Z = (195, 195, 195) .....AAAAAAAAA.. ................ } -# tile 514 (cerastes) +# tile 515 (cerastes) { ................ ..M..M.......... @@ -9839,7 +9839,7 @@ Z = (195, 195, 195) ......FSFF...... ................ } -# tile 515 (asphynx) +# tile 516 (asphynx) { ................ ................ @@ -9858,7 +9858,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 516 (king cobra) +# tile 517 (king cobra) { ................ ................ @@ -9877,7 +9877,7 @@ Z = (195, 195, 195) .....AAAAAAAAA.. ................ } -# tile 517 (weresnake) +# tile 518 (weresnake) { ................ ................ @@ -9896,7 +9896,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 518 (amphisbaena) +# tile 519 (amphisbaena) { ................ ................ @@ -9915,7 +9915,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 519 (giant anaconda) +# tile 520 (giant anaconda) { ................ ................ @@ -9934,7 +9934,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 520 (troll) +# tile 521 (troll) { ................ ..AAAAAA........ @@ -9953,7 +9953,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 521 (ice troll) +# tile 522 (ice troll) { ................ ..OONOOO........ @@ -9972,7 +9972,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 522 (rock troll) +# tile 523 (rock troll) { ................ ...AAAAA........ @@ -9991,7 +9991,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 523 (two-headed troll) +# tile 524 (two-headed troll) { ................ .AAAAAAAAAA..... @@ -10010,7 +10010,7 @@ Z = (195, 195, 195) ..CJA..KA....... ................ } -# tile 524 (water troll) +# tile 525 (water troll) { ................ ...AAAAA........ @@ -10029,7 +10029,7 @@ Z = (195, 195, 195) ..KJA..KA....... ................ } -# tile 525 (grave troll) +# tile 526 (grave troll) { ................ ..FFFFFF........ @@ -10048,7 +10048,7 @@ Z = (195, 195, 195) ..UPA..UA....... ................ } -# tile 526 (Olog-hai) +# tile 527 (Olog-hai) { ...PPPPP........ ..PPAAAPP....... @@ -10067,7 +10067,7 @@ Z = (195, 195, 195) ..AAA.AAA....... ................ } -# tile 527 (cave troll) +# tile 528 (cave troll) { ................ ..AAAAAA........ @@ -10086,7 +10086,7 @@ Z = (195, 195, 195) ..CKA..CA....... ................ } -# tile 528 (black troll) +# tile 529 (black troll) { ................ ..NNNNNN........ @@ -10105,7 +10105,7 @@ Z = (195, 195, 195) ..EAP..EP....... ................ } -# tile 529 (umber hulk) +# tile 530 (umber hulk) { ................ ...AAAAA........ @@ -10124,7 +10124,7 @@ Z = (195, 195, 195) .AAAP..AAP...... ................ } -# tile 530 (umbral hulk) +# tile 531 (umbral hulk) { AAAA.....AAAAAAA AAA.AAAAA.AAAAAA @@ -10143,7 +10143,7 @@ Z = (195, 195, 195) A.AAA...AAA.AAAA AA....A....AAAAA } -# tile 531 (hunger hulk) +# tile 532 (hunger hulk) { ................ ...DDDDJ........ @@ -10162,7 +10162,7 @@ Z = (195, 195, 195) .DDJA..DDJA..... ................ } -# tile 532 (slumber hulk) +# tile 533 (slumber hulk) { ................ ...BBBBB........ @@ -10181,7 +10181,7 @@ Z = (195, 195, 195) .BBBA..BBA...... ................ } -# tile 533 (water hulk) +# tile 534 (water hulk) { ................ ...EEEEE........ @@ -10200,7 +10200,7 @@ Z = (195, 195, 195) .EEEA..EEA...... ................ } -# tile 534 (shambling horror) +# tile 535 (shambling horror) { ................ ...AAAAA........ @@ -10219,7 +10219,7 @@ Z = (195, 195, 195) .AAAP..AAP...... ................ } -# tile 535 (vampiric) +# tile 536 (vampiric) { ................ ................ @@ -10238,7 +10238,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 536 (vampire) +# tile 537 (vampire) { ................ ................ @@ -10257,7 +10257,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 537 (vampire noble) +# tile 538 (vampire noble) { ................ .....AAAA....... @@ -10276,7 +10276,7 @@ Z = (195, 195, 195) .N..AAPP..AP.... ................ } -# tile 538 (vampire royal) +# tile 539 (vampire royal) { ................ .....AAAA....... @@ -10295,7 +10295,7 @@ Z = (195, 195, 195) .N..AAPP..AP.... ................ } -# tile 539 (fire vampire) +# tile 540 (fire vampire) { ................ ....PHP..PP..... @@ -10314,7 +10314,7 @@ Z = (195, 195, 195) ................ AAAAAAAAAAAAAAAA } -# tile 540 (vampire mage) +# tile 541 (vampire mage) { ................ ................ @@ -10333,7 +10333,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 541 (star vampire) +# tile 542 (star vampire) { ................ ......KP....P... @@ -10352,7 +10352,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 542 (nosferatu) +# tile 543 (nosferatu) { ................ ................ @@ -10371,7 +10371,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 543 (Vlad the Impaler) +# tile 544 (Vlad the Impaler) { ................ ..N..AAAA....... @@ -10390,7 +10390,7 @@ Z = (195, 195, 195) ..N.AAPP..AP.... ................ } -# tile 544 (barrow wight) +# tile 545 (barrow wight) { ................ ................ @@ -10409,7 +10409,7 @@ Z = (195, 195, 195) .J.....LLAA..... ................ } -# tile 545 (wight) +# tile 546 (wight) { ................ ................ @@ -10428,7 +10428,7 @@ Z = (195, 195, 195) .......OOAA..... ................ } -# tile 546 (wraith) +# tile 547 (wraith) { ................ ................ @@ -10447,7 +10447,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 547 (bodak) +# tile 548 (bodak) { ......OOO....... .....OHOHO...... @@ -10466,7 +10466,7 @@ Z = (195, 195, 195) ......VAVA...... ................ } -# tile 548 (banshee) +# tile 549 (banshee) { .....BBB........ ....BANNB....... @@ -10485,7 +10485,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 549 (slaughter wight) +# tile 550 (slaughter wight) { ................ ................ @@ -10504,7 +10504,7 @@ Z = (195, 195, 195) ....F.AAAJAD.... .....JADAAAA.... } -# tile 550 (Nazgul) +# tile 551 (Nazgul) { ................ ................ @@ -10523,7 +10523,7 @@ Z = (195, 195, 195) ......PPPPA..... ................ } -# tile 551 (xorn) +# tile 552 (xorn) { ................ ................ @@ -10542,7 +10542,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 552 (lemur) +# tile 553 (lemur) { ................ ................ @@ -10561,7 +10561,7 @@ Z = (195, 195, 195) .......ARRRRAAA. ......ARARAARAA. } -# tile 553 (monkey) +# tile 554 (monkey) { ................ ................ @@ -10580,7 +10580,7 @@ Z = (195, 195, 195) .....JJA.JJA.... ................ } -# tile 554 (baby owlbear) +# tile 555 (baby owlbear) { ................ ....K.....K..... @@ -10599,7 +10599,7 @@ Z = (195, 195, 195) ...PJPJAJPJPA... ................ } -# tile 555 (ape) +# tile 556 (ape) { ................ ................ @@ -10618,7 +10618,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 556 (owlbear) +# tile 557 (owlbear) { ................ ....K.....K..... @@ -10637,7 +10637,7 @@ Z = (195, 195, 195) ...PJPJAJPJPA... ................ } -# tile 557 (yeti) +# tile 558 (yeti) { ................ ....BNNN........ @@ -10656,7 +10656,7 @@ Z = (195, 195, 195) ..BNNA..NNA..... ................ } -# tile 558 (carnivorous ape) +# tile 559 (carnivorous ape) { ................ ................ @@ -10675,7 +10675,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 559 (sasquatch) +# tile 560 (sasquatch) { ................ ....CCCCC....... @@ -10694,7 +10694,7 @@ Z = (195, 195, 195) .CJJJKACKJJKA... ................ } -# tile 560 (zruty) +# tile 561 (zruty) { ................ ......FFGF...... @@ -10713,7 +10713,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 561 (kobold zombie) +# tile 562 (kobold zombie) { ................ ................ @@ -10732,7 +10732,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 562 (gnome zombie) +# tile 563 (gnome zombie) { ................ ................ @@ -10751,7 +10751,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 563 (orc zombie) +# tile 564 (orc zombie) { ................ ................ @@ -10770,7 +10770,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 564 (dwarf zombie) +# tile 565 (dwarf zombie) { ................ ................ @@ -10789,7 +10789,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 565 (hobbit zombie) +# tile 566 (hobbit zombie) { ................ ................ @@ -10808,7 +10808,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 566 (elf zombie) +# tile 567 (elf zombie) { ................ ................ @@ -10827,7 +10827,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 567 (human zombie) +# tile 568 (human zombie) { ......AAA....... .....FFGAA...... @@ -10846,7 +10846,7 @@ Z = (195, 195, 195) ....GGAGGA...... ................ } -# tile 568 (draugr) +# tile 569 (draugr) { ................ ....O........... @@ -10865,7 +10865,7 @@ Z = (195, 195, 195) ......JJJ....... ................ } -# tile 569 (gnoll witherling) +# tile 570 (gnoll witherling) { ................ ................ @@ -10884,7 +10884,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 570 (centaur zombie) +# tile 571 (centaur zombie) { ................ ...FGA.......... @@ -10903,7 +10903,7 @@ Z = (195, 195, 195) ....GA...G...... ................ } -# tile 571 (ettin zombie) +# tile 572 (ettin zombie) { ....NN..ONOP.... ..NNOOPNNOOPP... @@ -10922,7 +10922,7 @@ Z = (195, 195, 195) .....GFAAGFAAAAA ...FFFFA.GFFFFAA } -# tile 572 (giant zombie) +# tile 573 (giant zombie) { ......JJJJAA.... ....JJJJJJJJA... @@ -10942,7 +10942,7 @@ Z = (195, 195, 195) ...GFFAAGFFFAAAA } -# tile 573 (ghoul) +# tile 574 (ghoul) { ......AAA....... .....OOOAA...... @@ -10961,7 +10961,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 574 (vomitous ghoul) +# tile 575 (vomitous ghoul) { ......AAA....... .....OOOAA...... @@ -10980,7 +10980,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 575 (skeletal pirate) +# tile 576 (skeletal pirate) { ................ ......OOA....... @@ -10999,7 +10999,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 576 (ghast) +# tile 577 (ghast) { ......AAA....... .....OOOAA...... @@ -11018,7 +11018,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 577 (ghoul mage) +# tile 578 (ghoul mage) { ......NO........ .....NOOO....... @@ -11037,7 +11037,7 @@ Z = (195, 195, 195) ....OOAOOA...... ................ } -# tile 578 (skeleton) +# tile 579 (skeleton) { ................ ................ @@ -11056,7 +11056,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 579 (revenant) +# tile 580 (revenant) { ................ ................ @@ -11075,7 +11075,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 580 (gug) +# tile 581 (gug) { ................ ................ @@ -11094,7 +11094,7 @@ Z = (195, 195, 195) ......OOLA...... ................ } -# tile 581 (ghoul queen) +# tile 582 (ghoul queen) { ......NO........ .....HHHH....... @@ -11113,7 +11113,7 @@ Z = (195, 195, 195) ...OOOA.OOA..... ................ } -# tile 582 (dragon zombie) +# tile 583 (dragon zombie) { ......JJJIA..... .....NFNFFIA.... @@ -11132,7 +11132,7 @@ Z = (195, 195, 195) ....JFAAJJJFFJA. ........FFFFJA.. } -# tile 583 (droid) +# tile 584 (droid) { ...A.AAAAAA..... ..AOAPUPUPUA.... @@ -11151,7 +11151,7 @@ Z = (195, 195, 195) AMYMA.......AYMA AAAAA.......AAAA } -# tile 584 (straw golem) +# tile 585 (straw golem) { ......LJ........ ......LJHJ...... @@ -11170,7 +11170,7 @@ Z = (195, 195, 195) ....HALA.AHAAL.. ..........L..... } -# tile 585 (paper golem) +# tile 586 (paper golem) { ................ .......OA....... @@ -11189,7 +11189,7 @@ Z = (195, 195, 195) ....OOA...OOA... ................ } -# tile 586 (wax golem) +# tile 587 (wax golem) { ................ .........PA..... @@ -11208,7 +11208,7 @@ Z = (195, 195, 195) .PA.NOAA..NNAPA. ..PPNOA...OPPA.. } -# tile 587 (plastic golem) +# tile 588 (plastic golem) { ................ ................ @@ -11227,7 +11227,7 @@ Z = (195, 195, 195) .....CA...CA.... ................ } -# tile 588 (rope golem) +# tile 589 (rope golem) { ................ ................ @@ -11246,7 +11246,7 @@ Z = (195, 195, 195) ...O.A....OAA... ....OA.......... } -# tile 589 (gold golem) +# tile 590 (gold golem) { ................ ......HNH....... @@ -11265,7 +11265,7 @@ Z = (195, 195, 195) H...HNC.AHNC.A.H ..H............. } -# tile 590 (leather golem) +# tile 591 (leather golem) { ......KKKK...... .....KHKHJ...... @@ -11284,7 +11284,7 @@ Z = (195, 195, 195) ...KJJA..KJJA... ....KA....KA.... } -# tile 591 (wood golem) +# tile 592 (wood golem) { ................ ......KCKJ...... @@ -11303,7 +11303,7 @@ Z = (195, 195, 195) ....KCKJAKCKJA.. ................ } -# tile 592 (flesh golem) +# tile 593 (flesh golem) { ................ ................ @@ -11322,7 +11322,7 @@ Z = (195, 195, 195) ..LLDDD..DDDDD.. ................ } -# tile 593 (clay golem) +# tile 594 (clay golem) { ................ ................ @@ -11341,7 +11341,7 @@ Z = (195, 195, 195) ..CKKKA.CKKKAA.. ................ } -# tile 594 (stone golem) +# tile 595 (stone golem) { ................ ................ @@ -11360,7 +11360,7 @@ Z = (195, 195, 195) ...PPAA.PPPA.... ................ } -# tile 595 (glass golem) +# tile 596 (glass golem) { ................ .....BBBBBBA.... @@ -11379,7 +11379,7 @@ Z = (195, 195, 195) ..BNPA....NPAA.. ...BA.....BPA... } -# tile 596 (iron golem) +# tile 597 (iron golem) { ................ ......PBP....... @@ -11398,7 +11398,7 @@ Z = (195, 195, 195) ....PBP.APBP.A.. ................ } -# tile 597 (snow golem) +# tile 598 (snow golem) { ................ .....BBBBBBA.... @@ -11418,7 +11418,7 @@ Z = (195, 195, 195) ...BA.....BPA... } -# tile 598 (ruby golem) +# tile 599 (ruby golem) { ................ ......CDC....... @@ -11437,7 +11437,7 @@ Z = (195, 195, 195) ....CDK.ACDK.A.. ................ } -# tile 599 (diamond golem) +# tile 600 (diamond golem) { ................ ......ONO....... @@ -11456,7 +11456,7 @@ Z = (195, 195, 195) ....ONO.AONO.A.. ................ } -# tile 600 (sapphire golem) +# tile 601 (sapphire golem) { ................ ......BEB....... @@ -11475,7 +11475,7 @@ Z = (195, 195, 195) ....BEB.ABEB.A.. ................ } -# tile 601 (steel golem) +# tile 602 (steel golem) { ................ ......PBP....... @@ -11494,7 +11494,7 @@ Z = (195, 195, 195) ....PBP.APBP.A.. ................ } -# tile 602 (crystal golem) +# tile 603 (crystal golem) { ................ ......OLO....... @@ -11513,7 +11513,7 @@ Z = (195, 195, 195) ....OLO.AOLO.A.. ................ } -# tile 603 (human) +# tile 604 (human) { ................ ................ @@ -11532,7 +11532,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 604 (peasant) +# tile 605 (peasant) { ................ ................ @@ -11551,7 +11551,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 605 (miner) +# tile 606 (miner) { ................ ................ @@ -11570,7 +11570,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 606 (mugger) +# tile 607 (mugger) { ................ ................ @@ -11589,7 +11589,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 607 (bandit) +# tile 608 (bandit) { ................ ................ @@ -11608,7 +11608,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 608 (street thug) +# tile 609 (street thug) { ................ ................ @@ -11627,7 +11627,7 @@ Z = (195, 195, 195) ....JJA.JJA..... ................ } -# tile 609 (prison guard) +# tile 610 (prison guard) { ................ .....BBPPPAA.... @@ -11646,7 +11646,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ....BPPP.BPPPAAA } -# tile 610 (wererat) +# tile 611 (wererat) { ................ ................ @@ -11665,7 +11665,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 611 (werejackal) +# tile 612 (werejackal) { ................ ................ @@ -11684,7 +11684,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 612 (werewolf) +# tile 613 (werewolf) { ................ ................ @@ -11703,7 +11703,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (werepanther) +# tile 614 (werepanther) { ................ ................ @@ -11722,7 +11722,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 614 (champion) +# tile 615 (champion) { ................ ................ @@ -11741,7 +11741,7 @@ Z = (195, 195, 195) .....LLA.PPPJA.. ..........PPA... } -# tile 615 (agent) +# tile 616 (agent) { ................ ................ @@ -11760,7 +11760,7 @@ Z = (195, 195, 195) .....RRR.RRR.... ................ } -# tile 616 (elf) +# tile 617 (elf) { ................ .........G...... @@ -11779,7 +11779,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (Woodland-elf) +# tile 618 (Woodland-elf) { ................ ................ @@ -11798,7 +11798,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (Green-elf) +# tile 619 (Green-elf) { ................ ................ @@ -11817,7 +11817,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 619 (weretiger) +# tile 620 (weretiger) { ................ ................ @@ -11836,7 +11836,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 620 (Grey-elf) +# tile 621 (Grey-elf) { ................ ................ @@ -11855,7 +11855,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 621 (gibberling) +# tile 622 (gibberling) { ................ ................ @@ -11874,7 +11874,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 622 (werebear) +# tile 623 (werebear) { ................ ................ @@ -11893,7 +11893,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 623 (weresnake) +# tile 624 (weresnake) { ................ ................ @@ -11912,7 +11912,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 624 (werespider) +# tile 625 (werespider) { ................ ................ @@ -11931,7 +11931,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 625 (street thug leader) +# tile 626 (street thug leader) { ................ ................ @@ -11950,7 +11950,7 @@ Z = (195, 195, 195) .....AAA.AAA.... ................ } -# tile 626 (elven noble) +# tile 627 (elven noble) { ................ ................ @@ -11969,7 +11969,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 627 (grimlock) +# tile 628 (grimlock) { ................ ................ @@ -11988,7 +11988,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 628 (elven wizard) +# tile 629 (elven wizard) { ................ ................ @@ -12007,7 +12007,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 629 (elven royal) +# tile 630 (elven royal) { ................ ................ @@ -12026,7 +12026,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 630 (doppelganger) +# tile 631 (doppelganger) { ................ ......CCCC..I... @@ -12045,7 +12045,7 @@ Z = (195, 195, 195) ..CD.LLAALLADC.. ................ } -# tile 631 (shopkeeper) +# tile 632 (shopkeeper) { ................ ................ @@ -12064,7 +12064,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 632 (One-eyed Sam) +# tile 633 (One-eyed Sam) { ................ ................ @@ -12083,7 +12083,7 @@ Z = (195, 195, 195) ....KKKKCKCK.... ................ } -# tile 633 (guard) +# tile 634 (guard) { ................ .....BBPPPAA.... @@ -12102,7 +12102,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ....BPPP.BPPPAAA } -# tile 634 (prisoner) +# tile 635 (prisoner) { ................ ................ @@ -12121,7 +12121,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 635 (Oracle) +# tile 636 (Oracle) { ................ ................ @@ -12140,7 +12140,7 @@ Z = (195, 195, 195) ....LELLLLELAA.. ................ } -# tile 636 (aligned priest) +# tile 637 (aligned priest) { ................ INI............. @@ -12159,7 +12159,7 @@ Z = (195, 195, 195) .JACCCJJCCCAA... ................ } -# tile 637 (high priest) +# tile 638 (high priest) { .INI............ IIIII.KCCK...... @@ -12178,7 +12178,7 @@ Z = (195, 195, 195) ..HACCCJJCCCAA.. ................ } -# tile 638 (soldier) +# tile 639 (soldier) { .....J.......... .....JAAA....... @@ -12197,7 +12197,7 @@ Z = (195, 195, 195) .....JJ.JJ...... ................ } -# tile 639 (sergeant) +# tile 640 (sergeant) { .....J.......... .....JFFF....... @@ -12216,7 +12216,7 @@ Z = (195, 195, 195) .....AA.AA...... ................ } -# tile 640 (stormtrooper) +# tile 641 (stormtrooper) { .....AAAAAA..... ....AVNNNNNA.... @@ -12235,7 +12235,7 @@ Z = (195, 195, 195) ...AAVNNNNAA.A.. ...ANAAVNNNNANA. } -# tile 641 (nurse) +# tile 642 (nurse) { ................ .......NO....... @@ -12255,7 +12255,7 @@ Z = (195, 195, 195) ................ } -# tile 642 (lieutenant) +# tile 643 (lieutenant) { ................ .......FFF...... @@ -12274,7 +12274,7 @@ Z = (195, 195, 195) .....AA.AA...... ................ } -# tile 643 (captain) +# tile 644 (captain) { ................ ......FHHF...... @@ -12293,7 +12293,7 @@ Z = (195, 195, 195) .....AA.AAAAA... ................ } -# tile 644 (general) +# tile 645 (general) { ................ ......FHHF...... @@ -12312,7 +12312,7 @@ Z = (195, 195, 195) .....AA.AAAAA... ................ } -# tile 645 (watchman) +# tile 646 (watchman) { ................ ......PPP....... @@ -12331,7 +12331,7 @@ Z = (195, 195, 195) ....JJJ.JJJ..... ................ } -# tile 646 (watch captain) +# tile 647 (watch captain) { ......PPP....... .....PHHHP...... @@ -12350,7 +12350,7 @@ Z = (195, 195, 195) ....JJJ.JJJ..... ................ } -# tile 647 (Medusa) +# tile 648 (Medusa) { ................ ..GA...GA....... @@ -12369,7 +12369,7 @@ Z = (195, 195, 195) ..IIKIKIKIA..... ................ } -# tile 648 (Wizard of Yendor) +# tile 649 (Wizard of Yendor) { .EEE.......EEE.. EFFAE..E..EAFFE. @@ -12388,7 +12388,7 @@ Z = (195, 195, 195) .EEEEEEEEEEEAAA. EEEEEEEEEEEEEEA. } -# tile 649 (Croesus) +# tile 650 (Croesus) { ....H..H..H..... ....HCHEHCH..... @@ -12407,7 +12407,7 @@ Z = (195, 195, 195) .GIIIKJJKKIIIGG. ................ } -# tile 650 (Charon) +# tile 651 (Charon) { ................ .......J........ @@ -12426,7 +12426,7 @@ Z = (195, 195, 195) .JJJJJJJJJJJAAA. JJJJJJJJJJJJJJA. } -# tile 651 (Rat King) +# tile 652 (Rat King) { ................ ................ @@ -12445,7 +12445,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 652 (shadow) +# tile 653 (shadow) { ................ ...........A.... @@ -12464,7 +12464,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 653 (ghost) +# tile 654 (ghost) { ................ ................ @@ -12483,7 +12483,7 @@ Z = (195, 195, 195) .O...P....P..... ........P....... } -# tile 654 (spectre) +# tile 655 (spectre) { ................ ................ @@ -12502,7 +12502,7 @@ Z = (195, 195, 195) .O...P....P..... ........P....... } -# tile 655 (shade) +# tile 656 (shade) { ................ ................ @@ -12521,7 +12521,7 @@ Z = (195, 195, 195) AAAA.AAAAJA..... ................ } -# tile 656 (water demon) +# tile 657 (water demon) { ................ ................ @@ -12540,7 +12540,7 @@ Z = (195, 195, 195) ....EEAEEA...... ................ } -# tile 657 (lava demon) +# tile 658 (lava demon) { ................ ................ @@ -12559,7 +12559,7 @@ Z = (195, 195, 195) ....CCACCA...... ................ } -# tile 658 (succubus) +# tile 659 (succubus) { DD.OHHD......... DDOHHDGD........ @@ -12578,7 +12578,7 @@ Z = (195, 195, 195) ....DDAA..DDAA.. ...DDJA...DDDA.. } -# tile 659 (incubus) +# tile 660 (incubus) { DD.OHHD......... DDOHHDGD........ @@ -12597,7 +12597,7 @@ Z = (195, 195, 195) ...DDKAA..DDAA.. ..DDKAA...DDDA.. } -# tile 660 (horned devil) +# tile 661 (horned devil) { ................ ................ @@ -12616,7 +12616,7 @@ Z = (195, 195, 195) ..CDDAA.DDK..... ................ } -# tile 661 (erinys) +# tile 662 (erinys) { ..GA...GA....... ...FA.FA..GA.... @@ -12635,7 +12635,7 @@ Z = (195, 195, 195) ..BBEBEBEBA..... ................ } -# tile 662 (barbed devil) +# tile 663 (barbed devil) { ................ ................ @@ -12654,7 +12654,7 @@ Z = (195, 195, 195) .CCDDAA.DDKK.... ................ } -# tile 663 (spined devil) +# tile 664 (spined devil) { ................ ................ @@ -12673,7 +12673,7 @@ Z = (195, 195, 195) ..CODAA.DOK..... ................ } -# tile 664 (marilith) +# tile 665 (marilith) { .D..HHH.....D... DD.HHHHHA...DD.. @@ -12692,7 +12692,7 @@ Z = (195, 195, 195) ..FGFFFFFFFFFA.. ....GFFFFFFAA... } -# tile 665 (vrock) +# tile 666 (vrock) { ................ ......OPP.O..... @@ -12711,7 +12711,7 @@ Z = (195, 195, 195) .....DDA.DDA.... ................ } -# tile 666 (bearded devil) +# tile 667 (bearded devil) { ................ ................ @@ -12730,7 +12730,7 @@ Z = (195, 195, 195) ..CDDAA.DDK..... ................ } -# tile 667 (hezrou) +# tile 668 (hezrou) { ................ ................ @@ -12749,7 +12749,7 @@ Z = (195, 195, 195) ...........FFFA. ................ } -# tile 668 (bar-lgura) +# tile 669 (bar-lgura) { ................ ................ @@ -12768,7 +12768,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 669 (bone devil) +# tile 670 (bone devil) { ................ ................ @@ -12787,7 +12787,7 @@ Z = (195, 195, 195) ..NOOAA.OOL..... ................ } -# tile 670 (armanite) +# tile 671 (armanite) { ................ ..N..N.......... @@ -12806,7 +12806,7 @@ Z = (195, 195, 195) ....CA...C...... ................ } -# tile 671 (damned pirate) +# tile 672 (damned pirate) { ................ ......O.O....... @@ -12825,7 +12825,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 672 (ice devil) +# tile 673 (ice devil) { ................ ................ @@ -12844,7 +12844,7 @@ Z = (195, 195, 195) ..BNNAA.NNP..... ................ } -# tile 673 (chasme) +# tile 674 (chasme) { ................ ................ @@ -12863,7 +12863,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 674 (nalfeshnee) +# tile 675 (nalfeshnee) { ................ ................ @@ -12882,7 +12882,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 675 (spibrawulf) +# tile 676 (spibrawulf) { ................ ................ @@ -12901,7 +12901,7 @@ Z = (195, 195, 195) .AAALOAA.AOA.... ................ } -# tile 676 (sandestin) +# tile 677 (sandestin) { .....CCCCC..I... .I..CD....C..... @@ -12920,7 +12920,7 @@ Z = (195, 195, 195) .CD.DDAADDDADC.. ................ } -# tile 677 (babau) +# tile 678 (babau) { ...P............ ....P........... @@ -12939,7 +12939,7 @@ Z = (195, 195, 195) ......OOO....... ................ } -# tile 678 (pit fiend) +# tile 679 (pit fiend) { ................ .K.O.......O.K.. @@ -12958,7 +12958,7 @@ Z = (195, 195, 195) ...CDDAA.DDK.... ................ } -# tile 679 (nabassu) +# tile 680 (nabassu) { ...K......K..... ...KJ....KJ..... @@ -12977,7 +12977,7 @@ Z = (195, 195, 195) ....BFA.FBA..... ................ } -# tile 680 (weredemon) +# tile 681 (weredemon) { ................ ................ @@ -12996,7 +12996,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 681 (balrog) +# tile 682 (balrog) { ................ .K..O.....O..K.. @@ -13015,7 +13015,7 @@ Z = (195, 195, 195) ..CDDDAA.DDDK.AA ................ } -# tile 682 (Juiblex) +# tile 683 (Juiblex) { ................ DD.........DD... @@ -13034,7 +13034,7 @@ Z = (195, 195, 195) .CCCCCCCCCCCKA.. ................ } -# tile 683 (Baphomet) +# tile 684 (Baphomet) { .O..........O... .O..........O... @@ -13053,7 +13053,7 @@ Z = (195, 195, 195) ....CDCACDCAAAAA ..DDDDD.DDDDDAA. } -# tile 684 (Yeenoghu) +# tile 685 (Yeenoghu) { ....B.HHP....... ....BPPPP....... @@ -13072,7 +13072,7 @@ Z = (195, 195, 195) ...BPAA.PPA..... ................ } -# tile 685 (Lolth) +# tile 686 (Lolth) { ................ ................ @@ -13091,7 +13091,7 @@ Z = (195, 195, 195) .....JAA.AJA.... ................ } -# tile 686 (Geryon) +# tile 687 (Geryon) { .K...........K.. .K....JJJ....KJ. @@ -13110,7 +13110,7 @@ Z = (195, 195, 195) ....FGGGFFFFFFFA .....FFFFFFFFFA. } -# tile 687 (Dispater) +# tile 688 (Dispater) { ................ ......OJJO...... @@ -13129,7 +13129,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 688 (Baalzebub) +# tile 689 (Baalzebub) { ......F...F..... .......F.F...... @@ -13148,7 +13148,7 @@ Z = (195, 195, 195) .....FFA..FF.... ................ } -# tile 689 (Mephistopheles) +# tile 690 (Mephistopheles) { ................ .K.O.......O.K.. @@ -13167,7 +13167,7 @@ Z = (195, 195, 195) ....GFAAAFGA.... ................ } -# tile 690 (Orcus) +# tile 691 (Orcus) { ................ .K..O.....O..K.. @@ -13186,7 +13186,7 @@ Z = (195, 195, 195) ...OOPPAOOPPAGA. ................ } -# tile 691 (Tiamat) +# tile 692 (Tiamat) { ......GGGFA..... .....NFNFEEA.... @@ -13205,7 +13205,7 @@ Z = (195, 195, 195) ....GFAA...CCJA. ........FFFFJA.. } -# tile 692 (Graz'zt) +# tile 693 (Graz'zt) { AA.OJJA......... AAOJJAGA........ @@ -13224,7 +13224,7 @@ Z = (195, 195, 195) .N.AAKPP..AAPP.. ..AAKPP...AAAP.. } -# tile 693 (Asmodeus) +# tile 694 (Asmodeus) { ................ ......OJJO...... @@ -13243,7 +13243,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 694 (Demogorgon) +# tile 695 (Demogorgon) { ...KKK..KKK..... ..KBKBK.BKBK.... @@ -13262,7 +13262,7 @@ Z = (195, 195, 195) ..GAGFAFFFAFA... ................ } -# tile 695 (Cthulhu) +# tile 696 (Cthulhu) { ................ .....FFFFC...... @@ -13281,7 +13281,7 @@ Z = (195, 195, 195) ....CFFCAA...... ..FFC.FFA....... } -# tile 696 (Death) +# tile 697 (Death) { .BBBB....JJJ.... .BPPPP.JJJJ..... @@ -13300,7 +13300,7 @@ Z = (195, 195, 195) .CJJAAAAAAAAJJA. ACJAAAAAAAAAAAJ. } -# tile 697 (Pestilence) +# tile 698 (Pestilence) { F........JJJ.... ..F....JJJJ..... @@ -13319,7 +13319,7 @@ Z = (195, 195, 195) ..JJFBFAFFAJJJA. .JJAAFAFAAAAAAJ. } -# tile 698 (Famine) +# tile 699 (Famine) { .........JJJ.... .......JJJ...... @@ -13338,7 +13338,7 @@ Z = (195, 195, 195) K...JJAAAJJAA... K..JJAAAAAJJJA.. } -# tile 699 (mail daemon) +# tile 700 (mail daemon) { ...OP.BEEE.PO... ...OOEBEEEEOOD.. @@ -13357,7 +13357,7 @@ Z = (195, 195, 195) ..CDDDAAA.DDDK.. ................ } -# tile 700 (djinni) +# tile 701 (djinni) { .LL..NNN..LL.... ..L..NGNA.L..... @@ -13376,7 +13376,7 @@ Z = (195, 195, 195) .........IFED... ................ } -# tile 701 (demon) +# tile 702 (demon) { ................ .....O....O..... @@ -13395,7 +13395,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 702 (jellyfish) +# tile 703 (jellyfish) { ................ .....PBPA....... @@ -13414,7 +13414,7 @@ Z = (195, 195, 195) ..PEE.P.E..E.... .P..E.P..E...... } -# tile 703 (piranha) +# tile 704 (piranha) { ................ ................ @@ -13433,7 +13433,7 @@ Z = (195, 195, 195) .....E..P....... ....E..E...E.... } -# tile 704 (giant eel) +# tile 705 (giant eel) { ................ ................ @@ -13452,7 +13452,7 @@ Z = (195, 195, 195) ...EE.AAAAE.E... ..E...EE.E...E.. } -# tile 705 (mind flayer larva) +# tile 706 (mind flayer larva) { ................ .....ICIA....... @@ -13471,7 +13471,7 @@ Z = (195, 195, 195) ..IEE.I.E..E.... .I..E.I..E...... } -# tile 706 (swordfish) +# tile 707 (swordfish) { ................ ................ @@ -13490,7 +13490,7 @@ Z = (195, 195, 195) .....E..B....... ....E..E...E.... } -# tile 707 (sea horse) +# tile 708 (sea horse) { ................ ................ @@ -13509,7 +13509,7 @@ Z = (195, 195, 195) .....LA...FFAB.. ................ } -# tile 708 (shark) +# tile 709 (shark) { ................ ................ @@ -13528,7 +13528,7 @@ Z = (195, 195, 195) PDNPPEE..EE..... .PPPE..EEE..E... } -# tile 709 (giant crab) +# tile 710 (giant crab) { ................ ................ @@ -13547,7 +13547,7 @@ Z = (195, 195, 195) ..KKAACAACAAKKA. ................ } -# tile 710 (electric eel) +# tile 711 (electric eel) { ................ ................ @@ -13566,7 +13566,7 @@ Z = (195, 195, 195) ...EE.AAADE.E... ..E...EE.E...E.. } -# tile 711 (mermaid) +# tile 712 (mermaid) { ................ ................ @@ -13585,7 +13585,7 @@ Z = (195, 195, 195) ........FBAFFA.. .........FFBA... } -# tile 712 (kraken) +# tile 713 (kraken) { ................ ................ @@ -13604,7 +13604,7 @@ Z = (195, 195, 195) EEEEEEE..EE..... ..EEE..EEE..E... } -# tile 713 (thing from below) +# tile 714 (thing from below) { ......MMM....... .....MO......... @@ -13623,7 +13623,7 @@ Z = (195, 195, 195) EEEEEEE..EE..... ..EEE..EEE..E... } -# tile 714 (tortle) +# tile 715 (tortle) { ................ ................ @@ -13642,7 +13642,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 715 (newt) +# tile 716 (newt) { ................ ................ @@ -13661,7 +13661,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 716 (gecko) +# tile 717 (gecko) { ................ ................ @@ -13680,7 +13680,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 717 (iguana) +# tile 718 (iguana) { ................ ................ @@ -13699,7 +13699,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 718 (compsognathus) +# tile 719 (compsognathus) { ................ ................ @@ -13718,7 +13718,7 @@ Z = (195, 195, 195) .......LL....... ................ } -# tile 719 (sea tortle) +# tile 720 (sea tortle) { ................ ................ @@ -13737,7 +13737,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 720 (baby crocodile) +# tile 721 (baby crocodile) { ................ ................ @@ -13756,7 +13756,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 721 (lizard) +# tile 722 (lizard) { ................ ................ @@ -13775,7 +13775,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 722 (tortle shaman) +# tile 723 (tortle shaman) { ................ ................ @@ -13794,7 +13794,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 723 (rhaumbusun) +# tile 724 (rhaumbusun) { FA.....FA....... .GFA..FA.FA..... @@ -13813,7 +13813,7 @@ Z = (195, 195, 195) ........KCA..DA. ................ } -# tile 724 (chameleon) +# tile 725 (chameleon) { ................ ................ @@ -13832,7 +13832,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 725 (crocodile) +# tile 726 (crocodile) { ................ ................ @@ -13851,7 +13851,7 @@ Z = (195, 195, 195) .DF............. ................ } -# tile 726 (velociraptor) +# tile 727 (velociraptor) { ................ ................ @@ -13870,7 +13870,7 @@ Z = (195, 195, 195) ........JGGAA... ................ } -# tile 727 (giant turtle) +# tile 728 (giant turtle) { ................ ................ @@ -13889,7 +13889,7 @@ Z = (195, 195, 195) .DD............. ................ } -# tile 728 (gila monster) +# tile 729 (gila monster) { ................ ................ @@ -13908,7 +13908,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 729 (komodo dragon) +# tile 730 (komodo dragon) { ................ ................ @@ -13927,7 +13927,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 730 (salamander) +# tile 731 (salamander) { ................ ................ @@ -13946,7 +13946,7 @@ Z = (195, 195, 195) ..ACCA.......... ...AAA.......... } -# tile 731 (T-Rex) +# tile 732 (T-Rex) { ...KKKK......... .KKKKNKJ........ @@ -13965,7 +13965,7 @@ Z = (195, 195, 195) ..AAAAJKAAAAKJA. ...AJJKKAAAAKKJJ } -# tile 732 (frost salamander) +# tile 733 (frost salamander) { ................ ................ @@ -13984,7 +13984,7 @@ Z = (195, 195, 195) ..ACCA.......... ...AAA.......... } -# tile 733 (giant crocodile) +# tile 734 (giant crocodile) { ................ ................ @@ -14003,7 +14003,7 @@ Z = (195, 195, 195) .DF............. ................ } -# tile 734 (bad egg) +# tile 735 (bad egg) { ................ ................ @@ -14022,7 +14022,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 735 (killer tripe ration) +# tile 736 (killer tripe ration) { ................ ................ @@ -14041,7 +14041,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 736 (killer food ration) +# tile 737 (killer food ration) { ...JJA.......... ...BPA.......... @@ -14060,7 +14060,7 @@ Z = (195, 195, 195) ....KKCKKKCKKA.. .....AAAAAAAA... } -# tile 737 (pile of killer coins) +# tile 738 (pile of killer coins) { ................ ................ @@ -14079,7 +14079,7 @@ Z = (195, 195, 195) .........HA..... ...........HA... } -# tile 738 (large pile of killer coins) +# tile 739 (large pile of killer coins) { ................ ................ @@ -14098,7 +14098,7 @@ Z = (195, 195, 195) .........HA...HA ......HA...HA... } -# tile 739 (huge pile of killer coins) +# tile 740 (huge pile of killer coins) { ................ ................ @@ -14117,7 +14117,7 @@ Z = (195, 195, 195) .........HCA.HCA .......HCA.HCA.. } -# tile 740 (archeologist) +# tile 741 (archeologist) { ................ ................ @@ -14136,7 +14136,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 741 (barbarian) +# tile 742 (barbarian) { ................ ................ @@ -14155,7 +14155,26 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 742 (bard) +# tile 743 (cartomancer) +{ + ................ + ................ + ................ + ......SRRRA..... + .....RRRRRRR.... + ......LJLJA..... + ......LLLLA..... + ......ALLA...... + .....CDAACD.AAA. + ....CDDCDDCCAAA. + ....LADDCDALAAA. + ...KJADCDDALAAA. + ...KJ.RRRSAAAA.. + ......RRASAA.A.. + .....PPA.PPA.... + ................ +} +# tile 744 (bard) { ................ ................ @@ -14174,7 +14193,7 @@ Z = (195, 195, 195) ....BPPPPPPE.... ................ } -# tile 743 (caveman) +# tile 745 (caveman) { ................ ................ @@ -14193,7 +14212,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 744 (cavewoman) +# tile 746 (cavewoman) { ................ ................ @@ -14212,7 +14231,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 745 (convict) +# tile 747 (convict) { ................ ................ @@ -14231,7 +14250,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 746 (flame mage) +# tile 748 (flame mage) { ................ .........HD..... @@ -14250,7 +14269,7 @@ Z = (195, 195, 195) ....HDDDDDDC.... ................ } -# tile 747 (healer) +# tile 749 (healer) { ................ .......NN....... @@ -14269,7 +14288,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 748 (ice mage) +# tile 750 (ice mage) { ................ .........PN..... @@ -14288,7 +14307,7 @@ Z = (195, 195, 195) ....PNNNNNNB.... ................ } -# tile 749 (infidel) +# tile 751 (infidel) { ................ ................ @@ -14307,7 +14326,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 750 (jedi) +# tile 752 (jedi) { .......BBB...... ......BBB....... @@ -14326,7 +14345,7 @@ Z = (195, 195, 195) ......AMMMMMMMMA .......AAMMMMMA. } -# tile 751 (knight) +# tile 753 (knight) { ................ ................ @@ -14345,7 +14364,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 752 (monk) +# tile 754 (monk) { ................ ................ @@ -14364,7 +14383,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 753 (necromancer) +# tile 755 (necromancer) { ................ .........AAP.... @@ -14383,7 +14402,7 @@ Z = (195, 195, 195) ....AAAAAAAA.... ................ } -# tile 754 (priest) +# tile 756 (priest) { ................ ................ @@ -14402,7 +14421,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 755 (priestess) +# tile 757 (priestess) { ................ .......JJ....... @@ -14421,7 +14440,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 756 (pirate) +# tile 758 (pirate) { ................ .....ADDD....... @@ -14440,7 +14459,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 757 (ranger) +# tile 759 (ranger) { ................ ................ @@ -14459,7 +14478,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 758 (rogue) +# tile 760 (rogue) { ................ ................ @@ -14478,7 +14497,7 @@ Z = (195, 195, 195) .....KKA.KKA.... ................ } -# tile 759 (samurai) +# tile 761 (samurai) { ................ ................ @@ -14497,7 +14516,7 @@ Z = (195, 195, 195) .....IIA.IIA.... ................ } -# tile 760 (tourist) +# tile 762 (tourist) { ................ ................ @@ -14516,7 +14535,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 761 (undead slayer) +# tile 763 (undead slayer) { ................ ................ @@ -14535,7 +14554,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 762 (valkyrie) +# tile 764 (valkyrie) { ................ ................ @@ -14554,7 +14573,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 763 (yeoman) +# tile 765 (yeoman) { ................ .......OHA...... @@ -14573,7 +14592,7 @@ Z = (195, 195, 195) .....DDA.DDA.... ................ } -# tile 764 (wizard) +# tile 766 (wizard) { ................ .........BP..... @@ -14592,7 +14611,7 @@ Z = (195, 195, 195) ....BPPPPPPE.... ................ } -# tile 765 (long worm tail) +# tile 767 (long worm tail) { ........ILLLL... ......IILLAA.... @@ -14611,7 +14630,7 @@ Z = (195, 195, 195) .LLLIIIILLLA.... ...LLLLLAAA..... } -# tile 766 (Nightmare) +# tile 768 (Nightmare) { ................ ................ @@ -14631,7 +14650,7 @@ Z = (195, 195, 195) ................ } -# tile 767 (Beholder) +# tile 769 (Beholder) { ....OA..OA...... ..OA.DADA.OA.OA. @@ -14650,7 +14669,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 768 (Lord Carnarvon) +# tile 770 (Lord Carnarvon) { .......JJ....... ......KJJJ...... @@ -14669,7 +14688,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 769 (Pelias) +# tile 771 (Pelias) { ................ .......JJ....... @@ -14688,7 +14707,26 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 770 (Shaman Karnov) +# tile 772 (King of Games) +{ + .JJ.HHDDDHD..... + .JJDAAHHAHAH.... + .DHHHHHHHHHH.JJ. + .HAAHHILILHD.JJ. + ..HHHHLLLLAD.... + ..HDAHLLLLD..... + ....DRROORRLLLL. + ....LRRRHR...... + ....LARRRR...... + ....L.RRRR....JJ + ....L.EEEEAAAAJJ + JJ..L.EAAEAAAA.. + JJ...AEEAEAAA... + .....AEEAEAAA... + .....RRA.RRA.... + ................ +} +# tile 773 (Shaman Karnov) { ................ .......JJA...... @@ -14707,7 +14745,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 771 (Earendil) +# tile 774 (Earendil) { .........G...... ....B..GGF..B... @@ -14726,7 +14764,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 772 (Elwing) +# tile 775 (Elwing) { .........G...... ....B..GGF..B... @@ -14745,7 +14783,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 773 (High Flame Mage) +# tile 776 (High Flame Mage) { .........HD..... ......HHHDC..... @@ -14764,7 +14802,7 @@ Z = (195, 195, 195) ...ADDDDDDDC.... ................ } -# tile 774 (Robert the Lifer) +# tile 777 (Robert the Lifer) { ................ ................ @@ -14783,7 +14821,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 775 (Hippocrates) +# tile 778 (Hippocrates) { ................ ....LLLCCD...... @@ -14802,7 +14840,7 @@ Z = (195, 195, 195) .LCCCCCCCDA..... ................ } -# tile 776 (High Ice Mage) +# tile 779 (High Ice Mage) { .........PN..... ......PPPNB..... @@ -14821,7 +14859,7 @@ Z = (195, 195, 195) ...ANNNNNNNB.... ................ } -# tile 777 (Archbishop of Moloch) +# tile 780 (Archbishop of Moloch) { .INI............ IIIII.KDDK...... @@ -14840,7 +14878,7 @@ Z = (195, 195, 195) ..CADDDJJDDDAA.. ................ } -# tile 778 (Jedi Master) +# tile 781 (Jedi Master) { ......AAAAA..... .....AKLKKLA.... @@ -14859,7 +14897,7 @@ Z = (195, 195, 195) ALLLLLALLLLLLALA ALLLLLALLLLLALA. } -# tile 779 (King Arthur) +# tile 782 (King Arthur) { ................ ................ @@ -14878,7 +14916,7 @@ Z = (195, 195, 195) ....PPAA.PPA.... ................ } -# tile 780 (Master Po) +# tile 783 (Master Po) { ................ .......LL....... @@ -14897,7 +14935,7 @@ Z = (195, 195, 195) ..JACCCCCCCCAA.. ................ } -# tile 781 (Dark Lord) +# tile 784 (Dark Lord) { .........AA..... ......AAAAA..... @@ -14916,7 +14954,7 @@ Z = (195, 195, 195) ...AAAAAAAAA.... ................ } -# tile 782 (Mayor Cummerbund) +# tile 785 (Mayor Cummerbund) { ......AOA....... ....AAOAAAA..... @@ -14935,7 +14973,7 @@ Z = (195, 195, 195) ....JJA.JJA..... ................ } -# tile 783 (Arch Priest) +# tile 786 (Arch Priest) { ..N............. .NNN..JLLJ...... @@ -14954,7 +14992,7 @@ Z = (195, 195, 195) ..HACCCJJCCCAA.. ................ } -# tile 784 (Orion) +# tile 787 (Orion) { ................ ................ @@ -14973,7 +15011,7 @@ Z = (195, 195, 195) ......BPAPAA.A.. .....PPA.PPA.... } -# tile 785 (Master of Thieves) +# tile 788 (Master of Thieves) { ................ ...H.....H...... @@ -14992,7 +15030,7 @@ Z = (195, 195, 195) ...JJA..JJA..... ................ } -# tile 786 (Lord Sato) +# tile 789 (Lord Sato) { .....AAA........ .....AAA........ @@ -15011,7 +15049,7 @@ Z = (195, 195, 195) ..IIIA.IIIAA.... ................ } -# tile 787 (Twoflower) +# tile 790 (Twoflower) { ................ ................ @@ -15030,7 +15068,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 788 (Van Helsing) +# tile 791 (Van Helsing) { ................ .......CDA...... @@ -15049,7 +15087,7 @@ Z = (195, 195, 195) ....KKJA.KJKA... ................ } -# tile 789 (Norn) +# tile 792 (Norn) { ................ ................ @@ -15068,7 +15106,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 790 (Neferet the Green) +# tile 793 (Neferet the Green) { ................ ................ @@ -15087,7 +15125,7 @@ Z = (195, 195, 195) ...BPPPPPPPE.... ................ } -# tile 791 (Chief Yeoman Warder) +# tile 794 (Chief Yeoman Warder) { .......AAA...... .......AAA...... @@ -15106,7 +15144,7 @@ Z = (195, 195, 195) .....HHA.HHA.... ................ } -# tile 792 (Minion of Huhetotl) +# tile 795 (Minion of Huhetotl) { ...OP......PO... ...OODDDDDDOOD.. @@ -15125,7 +15163,7 @@ Z = (195, 195, 195) ..CDDDAAA.DDDK.. ................ } -# tile 793 (Thoth Amon) +# tile 796 (Thoth Amon) { ................ ......OJJO...... @@ -15144,7 +15182,26 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 794 (Annam) +# tile 797 (Dal Zethire) +{ + ................ + .......KKA...... + ......BKBKA..... + .KJJA.KKKKA..... + .KJJGAKKKKA..... + .KJJFGGKKGG..... + .GFFFFFFFFFGA... + ..GFFFFFFFFFGA.. + ....GFFFFFFFGA.. + ......GFFFFFGA.. + .....GFFFFGGGA.. + .....GFFFFFAAA.. + ....GFFFGFFGAAA. + ...GFFFGAGFFGAA. + ...GFFFGAGFFFAAA + ...JJJJJAJJJJAAA +} +# tile 798 (Annam) { ....PPDDDDAA.... ....PDDDDDDDA... @@ -15163,7 +15220,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ...LLLLJ.BLLLKAA } -# tile 795 (Warden Arianna) +# tile 799 (Warden Arianna) { ................ ................ @@ -15182,7 +15239,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 796 (Cyclops) +# tile 800 (Cyclops) { ................ ....LLLLL....... @@ -15201,7 +15258,7 @@ Z = (195, 195, 195) ....CJJJCLAAAAAA ..LLLLL.LLLLLAA. } -# tile 797 (Ragnaros) +# tile 801 (Ragnaros) { .........GK..... ......GGGKF..... @@ -15220,7 +15277,7 @@ Z = (195, 195, 195) ...AKCKKKKCF.... ................ } -# tile 798 (Paladin) +# tile 802 (Paladin) { ................ ................ @@ -15239,7 +15296,7 @@ Z = (195, 195, 195) .B.............. ................ } -# tile 799 (Lord Sidious) +# tile 803 (Lord Sidious) { .....AAAA....... ....AWWUUA...... @@ -15258,7 +15315,7 @@ Z = (195, 195, 195) WWWWWWWAUAAUUAWA WWWWWWWAUAAAAWA. } -# tile 800 (Ixoth) +# tile 804 (Ixoth) { ....O......O.... ....O......O.... @@ -15277,7 +15334,7 @@ Z = (195, 195, 195) ..CDDDAAA.DDDK.. ................ } -# tile 801 (Master Kaen) +# tile 805 (Master Kaen) { ................ .......KKA...... @@ -15296,7 +15353,7 @@ Z = (195, 195, 195) ...KJJJJJJJJJA.. ................ } -# tile 802 (Maugneshaagar) +# tile 806 (Maugneshaagar) { ................ .AP.AP....AP.AP. @@ -15315,7 +15372,7 @@ Z = (195, 195, 195) ..AAAAPP.AAAAP.. ................ } -# tile 803 (Nalzok) +# tile 807 (Nalzok) { ....O......O.... ....O......O.... @@ -15334,7 +15391,7 @@ Z = (195, 195, 195) ..CDDDAAA.DDDK.. ................ } -# tile 804 (Blackbeard's Ghost) +# tile 808 (Blackbeard's Ghost) { ..AAAOA......... ..AANAAA.....ONO @@ -15353,7 +15410,7 @@ Z = (195, 195, 195) .PP.PPOPPP...P.. .O...P....P..... } -# tile 805 (Scorpius) +# tile 809 (Scorpius) { .....JLJLJAA.... ....JA.JCJCKAA.. @@ -15372,7 +15429,7 @@ Z = (195, 195, 195) ...D...JAAJA.JJ. ........JA.JA... } -# tile 806 (Master Assassin) +# tile 810 (Master Assassin) { ................ ................ @@ -15391,7 +15448,7 @@ Z = (195, 195, 195) .....AAA.AAA.... ................ } -# tile 807 (Ashikaga Takauji) +# tile 811 (Ashikaga Takauji) { ................ ................ @@ -15410,7 +15467,7 @@ Z = (195, 195, 195) .....IIA.IIA.... ................ } -# tile 808 (Count Dracula) +# tile 812 (Count Dracula) { ................ ..N..AAAA....... @@ -15429,7 +15486,7 @@ Z = (195, 195, 195) ..N.AAPP..AP.... ................ } -# tile 809 (Lord Surtur) +# tile 813 (Lord Surtur) { ....PPDDDDAA.... ....PDDDDDDDA... @@ -15448,7 +15505,7 @@ Z = (195, 195, 195) .....BPPABPPAAAA ...LLLLJ.BLLLKAA } -# tile 810 (Dark One) +# tile 814 (Dark One) { ................ ......AAA....... @@ -15467,7 +15524,7 @@ Z = (195, 195, 195) AAAAAAAAAAAAAAAA ................ } -# tile 811 (Colonel Blood) +# tile 815 (Colonel Blood) { .......AAP...... .......AAP...... @@ -15486,7 +15543,7 @@ Z = (195, 195, 195) ....KKJP.CJJ.... ................ } -# tile 812 (student) +# tile 816 (student) { ................ ................ @@ -15505,7 +15562,7 @@ Z = (195, 195, 195) .....CJJ.JKJ.... ................ } -# tile 813 (chieftain) +# tile 817 (chieftain) { ................ ................ @@ -15524,7 +15581,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 814 (neanderthal) +# tile 818 (neanderthal) { ................ ................ @@ -15543,7 +15600,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 815 (High-elf) +# tile 819 (High-elf) { .........G...... .......GGF...... @@ -15562,7 +15619,7 @@ Z = (195, 195, 195) ......GFAFAA.... .....KLA.LKA.... } -# tile 816 (inmate) +# tile 820 (inmate) { ................ ................ @@ -15581,7 +15638,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 817 (igniter) +# tile 821 (igniter) { ................ ................ @@ -15600,7 +15657,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 818 (froster) +# tile 822 (froster) { ................ ................ @@ -15619,7 +15676,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 819 (attendant) +# tile 823 (attendant) { ................ ................ @@ -15638,7 +15695,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 820 (padawan) +# tile 824 (padawan) { ................ ................ @@ -15657,7 +15714,7 @@ Z = (195, 195, 195) ....JJJ.JJJ..... ................ } -# tile 821 (jedi trainer) +# tile 825 (jedi trainer) { .......BBB...... ......BBB....... @@ -15676,7 +15733,7 @@ Z = (195, 195, 195) ......AMMMMMMMMA .......AAMMMMMA. } -# tile 822 (templar) +# tile 826 (templar) { ................ ................ @@ -15695,7 +15752,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 823 (cultist) +# tile 827 (cultist) { ................ ................ @@ -15714,7 +15771,7 @@ Z = (195, 195, 195) ..ADCDDJJKDK.... ................ } -# tile 824 (page) +# tile 828 (page) { ................ ................ @@ -15733,7 +15790,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 825 (abbot) +# tile 829 (abbot) { ................ ................ @@ -15752,7 +15809,7 @@ Z = (195, 195, 195) ....CDCCCDDA.A.. ...CCCCCCCDD.... } -# tile 826 (embalmer) +# tile 830 (embalmer) { ................ ................ @@ -15771,7 +15828,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 827 (acolyte) +# tile 831 (acolyte) { ................ ................ @@ -15790,7 +15847,7 @@ Z = (195, 195, 195) ....LCCCCCDD.... ................ } -# tile 828 (pirate crewmate) +# tile 832 (pirate crewmate) { ................ ................ @@ -15809,7 +15866,7 @@ Z = (195, 195, 195) ....JJA.JJA..... ................ } -# tile 829 (hunter) +# tile 833 (hunter) { ................ ................ @@ -15828,7 +15885,7 @@ Z = (195, 195, 195) ....JPPA.PPA.... ................ } -# tile 830 (thug) +# tile 834 (thug) { ................ ................ @@ -15847,7 +15904,7 @@ Z = (195, 195, 195) .....KKA.KKA.... ................ } -# tile 831 (musician) +# tile 835 (musician) { ................ ................ @@ -15866,7 +15923,7 @@ Z = (195, 195, 195) ....BPPPPPPE.... ................ } -# tile 832 (ninja) +# tile 836 (ninja) { ................ ................ @@ -15885,7 +15942,7 @@ Z = (195, 195, 195) .....AAA.AAA.... ................ } -# tile 833 (ronin) +# tile 837 (ronin) { ................ ................ @@ -15904,7 +15961,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 834 (roshi) +# tile 838 (roshi) { ................ ................ @@ -15923,7 +15980,7 @@ Z = (195, 195, 195) .....PPA.PPA.... ................ } -# tile 835 (guide) +# tile 839 (guide) { ................ ................ @@ -15942,7 +15999,7 @@ Z = (195, 195, 195) .....LLA.LLA.... ................ } -# tile 836 (exterminator) +# tile 840 (exterminator) { ................ .......KJA...... @@ -15961,7 +16018,7 @@ Z = (195, 195, 195) ....JJJAJJJAAA.. ...AAAAAAAAAA... } -# tile 837 (warrior) +# tile 841 (warrior) { .....O....O..... .....NO..ON..... @@ -15980,7 +16037,7 @@ Z = (195, 195, 195) .....KLA.LKA.... ................ } -# tile 838 (apprentice) +# tile 842 (apprentice) { ................ ................ @@ -15999,7 +16056,7 @@ Z = (195, 195, 195) ....BPPPPPPE.... ................ } -# tile 839 (Yeoman Warder) +# tile 843 (Yeoman Warder) { ................ ................ @@ -16018,7 +16075,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 840 (invisible monster) +# tile 844 (invisible monster) { ................ ................ diff --git a/win/tty/wintty.c b/win/tty/wintty.c index 8999ca42e..8dc0154ca 100644 --- a/win/tty/wintty.c +++ b/win/tty/wintty.c @@ -1106,6 +1106,14 @@ int race, gend, algn; /* all ROLE_NONE for !filtering case */ thisch = lowc(*roles[i].name.m); if (thisch == lastch) thisch = highc(thisch); + + if (thisch == 'c') { + if (!strcmp(roles[i].name.m, "Cartomancer")) + thisch = 'M'; + else + lastch = 0; + } + Strcpy(rolenamebuf, roles[i].name.m); if (roles[i].name.f) { /* role has distinct name for female (C,P) */ @@ -1118,6 +1126,7 @@ int race, gend, algn; /* all ROLE_NONE for !filtering case */ Strcat(rolenamebuf, roles[i].name.f); } } + /* !filtering implies reset_role_filtering() where we want to mark this role as preseleted if current filter excludes it */ add_menu(win, NO_GLYPH, &any, thisch, 0, ATR_NONE, an(rolenamebuf), diff --git a/win/win32/vs2017/files.props b/win/win32/vs2017/files.props index b43ab0e26..a7fccee8f 100644 --- a/win/win32/vs2017/files.props +++ b/win/win32/vs2017/files.props @@ -30,6 +30,7 @@ + @@ -354,6 +355,11 @@ + + + + + From 141ceade7cf068588e50e4664b56b0b866637af6 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Tue, 14 Nov 2023 14:35:58 +0100 Subject: [PATCH 79/82] Imported deck of fate and playing card deck from SpliceHack. I made lots of tweaks to the deck of fate. I want this to be a pseudo-tribute to the gypsy, so I tried to use the best effects of both the SLASH'EM gypsy tarot and SpliceHack's deck of fate. Where possible, I tried to use the less severe effect or an effect that made more sense thematically. A notable exception is the Death card, which will inflict insta-death. However, I was able to fit in the recent 3.7 saving grace mechanic. If the player hasn't used their saving grace yet and if they have positive Luck then they will spared once. For now the tower effect will reveal the location of Vlad's Tower, but I would like to extend it a bit more to show the Wizard's tower. In SpliceHack there is an interesting interaction with demons stealing your items and playing games with them. For now, I'm going to put this on the backburner with the intention of investigating it later and bringing it back with refinements. The deck of cards is fairly simple but useful - it will reveal your current luck standing. --- include/extern.h | 1 + src/apply.c | 317 ++++++++++++++++++ src/objects.c | 4 + win/share/objects.txt | 750 ++++++++++++++++++++++-------------------- 4 files changed, 716 insertions(+), 356 deletions(-) diff --git a/include/extern.h b/include/extern.h index ca9b44142..b95fba7a9 100644 --- a/include/extern.h +++ b/include/extern.h @@ -64,6 +64,7 @@ E void FDECL(fig_transform, (ANY_P *, long)); E int FDECL(unfixable_trouble_count, (BOOLEAN_P)); E void FDECL(handle_bomb, (struct obj *, BOOLEAN_P)); E void FDECL(use_keg, (struct obj *)); +E void use_deck(struct obj *); /* ### artifact.c ### */ diff --git a/src/apply.c b/src/apply.c index 7e1a3def5..020a4a8d2 100644 --- a/src/apply.c +++ b/src/apply.c @@ -48,6 +48,7 @@ STATIC_DCL boolean FDECL(get_valid_jump_position, (int, int)); STATIC_DCL boolean FDECL(get_valid_polearm_position, (int, int)); STATIC_DCL boolean FDECL(find_poleable_mon, (coord *, int, int)); STATIC_DCL void FDECL(mk_wandtrap, (struct obj *)); +STATIC_DCL void FDECL(fortune_lev, (const char *, const char *)); #ifdef AMIGA void FDECL(amii_speaker, (struct obj *, char *, int)); @@ -5230,6 +5231,10 @@ doapply() case TIN_OPENER: res = use_tin_opener(obj); break; + case PLAYING_CARD_DECK: + case DECK_OF_FATE: + use_deck(obj); + return 1; /* Deck of fate might get used up */ case FIGURINE: use_figurine(&obj); break; @@ -5539,4 +5544,316 @@ struct obj *obj; } } + +static const int GOOD_CARDS = 12; +static NEARDATA const char *tarotnames[] = { + "the Tower", "the Wheel of Fortune", "the Devil", "the Fool", + "Death", "Judgment", "the Emperor", "the Hermit", + "the Hanged Man", "Justice", "Temperance", "the Lovers", + "the Magician", "Strength", "the High Priestess", "the Hierophant", + "the Empress", "the Chariot", "the Sun", "the Moon", + "the Star", "the World" }; +static NEARDATA const char *cardnames[] = { + "ace", "two", "three", "four", "five", + "six", "seven", "eight", "nine", "ten", + "jack", "queen", "king" }; +static NEARDATA const char *cardsuits[] = { + "diamonds", "hearts", "clubs", "spades" }; + +void +use_deck(obj) +struct obj *obj; +{ + char buf[BUFSZ]; + long draws; + int index, pm, n; + boolean goodcards = FALSE; + boolean badcards = FALSE; + struct monst *mtmp; + struct obj *otmp; + int terr; + + if (obj->blessed || Role_if(PM_CARTOMANCER)) { + goodcards = TRUE; + } else if (obj->cursed) { + badcards = TRUE; + } + + if (obj->otyp == PLAYING_CARD_DECK) { + int card_luck; + /* messages are reversed for cursed decks */ + card_luck = badcards ? 13 - Luck : Luck; + + You("draw a hand of five cards."); + if (Blind) + pline("No telling how good it is..."); + else if (card_luck <= 0) + pline("It's not very good..."); + else if (card_luck < 5) + pline("Two pair!"); + else if (card_luck < 13) + pline("Full house!"); + else if (card_luck >= 13) + pline("Wow, a straight flush!"); + + /* + * If blessed, indicate the luck value directly. The high card or + * kicker (depending on the hand) corresponds to the current value of + * Luck, with a one meaning Luck == 1 and a king meaning Luck == 13. + */ + if (goodcards && Luck > 0 && !Blind) + pline_The("%s is the %s of %s.", Luck < 5 ? "kicker" : "high card", + cardnames[Luck-1], cardsuits[rn2(4)]); + + return; + } + + /* deck of fate */ + makeknown(obj->otyp); + getlin("How many cards will you draw?", buf); + + if (sscanf(buf, "%ld", &draws) != 1) + draws = 0L; + if (draws > 5) + draws = 5; + if (strlen(buf) <= 0L || draws <= 0L) { + You("decide not to try your luck."); + goto useup_deck; + } + + You("begin to draw from the deck of fate..."); + for ( ; draws > 0; draws--) { + index = rnd(22); + /* wishes and disasters can be modified through BCU */ + if (badcards && index > 1) { + index--; + } else if (goodcards && index < 22) { + index++; + } + if (Blind) + You("draw a card."); + else { + /* Good cards end with `!', bad cards end with `...' */ + You("draw %s%s", tarotnames[index-1], index < GOOD_CARDS ? "..." : "!"); + } + switch (index) { + case 1: /* The Tower */ + fortune_lev("vlad\'s tower", "Vlad the Impaler"); + break; + case 2: /* The Wheel of Fortune */ + pline("Two more cards flip out of the deck."); + draws += 2; + break; + case 3: /* The Devil */ + if (!Blind) + pline("Moloch's visage on the card grins at you."); + if (Luck < 0 && (pm = dlord(A_NONE)) != NON_PM) { + mtmp = makemon(&mons[pm], u.ux, u.uy, NO_MM_FLAGS); + } else { + pm = ndemon(u.ualign.type); + mtmp = makemon(&mons[pm], u.ux, u.uy, NO_MM_FLAGS); + } + + if (!Blind && mtmp) + pline("%s appears from a cloud of noxious smoke!", Monnam(mtmp)); + else + pline("Something stinks!"); + newsym(mtmp->mx, mtmp->my); + draws = 0; + break; + case 4: /* The Fool */ + adjattrib(A_WIS, -1, 0); + change_luck(-3); + break; + case 5: /* Death */ + draws = 0; + if (!Blind) + pline("A skeletal hand appears upon the deck, stopping your draws."); + else + pline("A bony hand gently stops you from drawing further."); + + if (Death_resistance || immune_death_magic(youmonst.data)) { + shieldeff(u.ux, u.uy); + pline(nonliving(youmonst.data) + ? "You seem no more dead than before." + : "You are unaffected."); + break; + } else if (Invulnerable) { + pline("You are unaffected."); + break; + } else if (Hallucination) { + You("have an out of body experience."); + } + if (!u.usaving_grace && Luck > 0) { + pline("A graceful force intervenes - the hand retreats!"); + u.usaving_grace = TRUE; + break; + } + Sprintf(killer.name, "the card of Death"); + killer.format = NO_KILLER_PREFIX; + /* They might survive with an amulet of life saving */ + /* TODO: Enable saving grace, death by damage? */ + done(DIED); + break; + case 6: /* Judgment */ + punish(obj); + break; + case 7: /* The Emperor */ + attrcurse(); + attrcurse(); + break; + case 8: /* The Hermit */ + You_feel("like hiding!"); + incr_itimeout(&HTeleportation, rn1(300, 300)); + incr_itimeout(&HInvis, rn1(500, 500)); + newsym(u.ux, u.uy); + break; + case 9: /* The Hanged Man */ + mtmp = makemon(&mons[PM_ROPE_GOLEM], u.ux, u.uy, NO_MM_FLAGS); + if (!Blind && mtmp) + pline("A hangman arrives!"); + break; + case 10: /* Justice */ + if (u.ualign.abuse < -13 || u.ualign.record < 0) { + You("will pay for your sins!"); + punish(obj); + attrcurse(); + attrcurse(); + } else if (u.ualign.record >= 20) { + You("will be rewarded for your loyalty!"); + if (Punished) + unpunish(); + /* Grant a random oprop (no detrimental) */ + if (uwep) + create_oprop(uwep, FALSE); + else { + otmp = some_armor(&youmonst); + create_oprop(otmp, FALSE); + } + } else { + if (Punished) + unpunish(); + /* Grant a random oprop (detrimental included) */ + if (uwep) + create_oprop(uwep, TRUE); + else { + otmp = some_armor(&youmonst); + create_oprop(otmp, TRUE); + } + } + break; + case 11: /* Temperance */ + adjattrib(urole.spelstat, 1, 0); + incr_itimeout(&Fixed_abil, rn1(500, 500)); + break; + /* cards before this point are bad, after this are good */ + case 12: /* The Lovers */ + for (n = 0; n < 2; n++) { + mtmp = makemon(rn2(2) ? &mons[PM_SUCCUBUS] : &mons[PM_INCUBUS], + u.ux, u.uy, NO_MM_FLAGS); + if (mtmp) + mtmp->mpeaceful = 1; + } + if (!Deaf && mtmp) + You_hear("infernal giggling."); + break; + case 13: /* The Magician */ + if (!Blind) + pline_The("figure on the card winks."); + if (u.uevent.udemigod) + resurrect(); + else { + u.uenmax += rn1(20, 10); + u.uen = u.uenmax; + } + break; + case 14: /* Strength */ + (void) adjattrib(A_STR, rn1(5, 4), FALSE); + break; + case 15: /* The High Priestess */ + You_feel("more devout."); + u.ualign.abuse = 0; /* Clear past sins! */ + adjalign(10); + break; + case 16: /* The Hierophant */ + terr = levl[u.ux][u.uy].typ; + if (terr == ROOM) { + if (!Blind) + pline_The("%s beneath you reshapes itself into an altar!", + surface(u.ux, u.uy)); + else + You_feel("the %s beneath you shift and reform!", + surface(u.ux, u.uy)); + levl[u.ux][u.uy].typ = ALTAR; + } else + You_feel("a twinge of anxiety."); + break; + case 17: /* The Empress */ + terr = levl[u.ux][u.uy].typ; + if (terr == ROOM || terr == GRASS || terr == CORR) { + if (!Blind) + Your("throne arrives."); + levl[u.ux][u.uy].typ = THRONE; + } else + You_feel("quite lordly."); + break; + case 18: /* The Chariot */ + incr_itimeout(&HTeleport_control, 1); + level_tele(); + break; + case 19: /* The Sun */ + You("are bathed in warmth."); + /* as praying */ + if (!(HProtection & INTRINSIC)) { + HProtection |= FROMOUTSIDE; + if (!u.ublessed) + u.ublessed = rn1(3, 2); + } else + u.ublessed += 1; + break; + case 20: /* The Moon */ + change_luck(7); + if (Luck < 0) { + Your("luck is beginning to change..."); + } else { + You("feel lucky!"); + } + break; + case 21: /* The Star */ + identify_pack(0, FALSE); + break; + case 22: /* The World */ + makewish(); + break; + default: + impossible("use_deck: drew out-of-bounds tarot card"); + } + } + + useup_deck: + pline_The("pack of cards vanishes in a puff of smoke."); + useup(obj); + return; +} + + +STATIC_DCL void +fortune_lev(name, txt) +const char *name, *txt; +{ + schar dep; + dep = lev_by_name(name); + if (!dep) { /* Perhaps the level doesn't exist? */ + verbalize("The vision is hazy."); + return; + } + + if (dep == depth(&u.uz)) + verbalize("I see %s here.", txt); + else { + verbalize("I see %s on level %d.", txt, (int) dep); + } + return; +} + /*apply.c*/ diff --git a/src/objects.c b/src/objects.c index 0a0d9625a..a2df704ae 100644 --- a/src/objects.c +++ b/src/objects.c @@ -862,6 +862,10 @@ TOOL("magic lamp", "lamp", 0, 0, 1, 0, 1, 20,1000, COPPER, CLR_YELLOW) /* other tools */ TOOL("expensive camera", None, 1, 0, 0, 1, 15, 12, 200, PLASTIC, CLR_BLACK), TOOL("mirror", "looking glass", 0, 0, 0, 0, 45, 13, 10, GLASS, HI_SILVER), +TOOL("playing card deck", "pack of cards", + 0, 0, 0, 0, 20, 10, 80, LEATHER, HI_LEATHER), +TOOL("deck of fate", "pack of cards", + 0, 0, 1, 0, 5, 10, 300, LEATHER, HI_LEATHER), TOOL("keg", "wooden barrel", 1, 0, 0, 1, 5, 100, 50, WOOD, HI_WOOD), /* SpliceHack */ TOOL("crystal ball", "glass orb", 0, 0, 1, 1, 15, 150, 60, GLASS, HI_GLASS), TOOL("eight ball", "plastic orb", 0, 0, 0, 0, 0, 20, 30, PLASTIC, CLR_BLACK), /* EvilHack */ diff --git a/win/share/objects.txt b/win/share/objects.txt index 6725695a6..2eba0e3db 100644 --- a/win/share/objects.txt +++ b/win/share/objects.txt @@ -6165,7 +6165,45 @@ Z = (195, 195, 195) ................ ................ } -# tile 323 (wooden barrel / keg) +# tile 323 (pack of cards / playing card deck) +{ + ................ + ................ + ................ + ................ + ................ + .DN............. + .NN............. + .ND..NA......... + .....NN......... + .....AN......... + ...NN........... + ..KKKJA......... + ..KKKJA......... + ..KKKJA......... + ..KKKJA......... + ..AAAAA......... +} +# tile 324 (pack of cards / deck of fate) +{ + ................ + ................ + ................ + ................ + ................ + .DN............. + .NN............. + .ND..NA......... + .....NN......... + .....AN......... + ...NN........... + ..KKKJA......... + ..KKKJA......... + ..KKKJA......... + ..KKKJA......... + ..AAAAA......... +} +# tile 325 (wooden barrel / keg) { ................ ................ @@ -6184,7 +6222,7 @@ Z = (195, 195, 195) .AKKKJKKKJKKKAAA ..AAAAAAAAAAAA.. } -# tile 324 (glass orb / crystal ball) +# tile 326 (glass orb / crystal ball) { ................ ................ @@ -6203,7 +6241,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 325 (plastic orb / eight ball) +# tile 327 (plastic orb / eight ball) { ................ ................ @@ -6222,7 +6260,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 326 (lenses) +# tile 328 (lenses) { ................ ................ @@ -6241,7 +6279,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 327 (goggles) +# tile 329 (goggles) { ................ ................ @@ -6260,7 +6298,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 328 (blindfold) +# tile 330 (blindfold) { ................ ................ @@ -6279,7 +6317,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 329 (towel) +# tile 331 (towel) { ................ ................ @@ -6298,7 +6336,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 330 (saddle) +# tile 332 (saddle) { ................ ................ @@ -6317,7 +6355,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 331 (barding) +# tile 333 (barding) { ................ ................ @@ -6336,7 +6374,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 332 (spiked barding) +# tile 334 (spiked barding) { ................ ................ @@ -6355,7 +6393,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 333 (polished barding / barding of reflection) +# tile 335 (polished barding / barding of reflection) { ................ ................ @@ -6374,7 +6412,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 334 (leash) +# tile 336 (leash) { ................ ................ @@ -6393,7 +6431,7 @@ Z = (195, 195, 195) .....AAAA....... ................ } -# tile 335 (stethoscope) +# tile 337 (stethoscope) { ................ ................ @@ -6412,7 +6450,7 @@ Z = (195, 195, 195) ........AAA..... ................ } -# tile 336 (tinning kit) +# tile 338 (tinning kit) { ................ ................ @@ -6431,7 +6469,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 337 (tin opener) +# tile 339 (tin opener) { ................ ................ @@ -6450,7 +6488,7 @@ Z = (195, 195, 195) ........AA...... ................ } -# tile 338 (can of grease) +# tile 340 (can of grease) { ................ ................ @@ -6469,7 +6507,7 @@ Z = (195, 195, 195) .......AAAA..... ................ } -# tile 339 (figurine) +# tile 341 (figurine) { ................ ................ @@ -6488,7 +6526,7 @@ Z = (195, 195, 195) .....JJJJJAA.... ................ } -# tile 340 (mask) +# tile 342 (mask) { ................ ................ @@ -6507,7 +6545,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 341 (marker / magic marker) +# tile 343 (marker / magic marker) { ................ ................ @@ -6526,7 +6564,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 342 (land mine) +# tile 344 (land mine) { ................ ................ @@ -6545,7 +6583,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 343 (beartrap) +# tile 345 (beartrap) { ................ ................ @@ -6564,7 +6602,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 344 (whistle / pea whistle) +# tile 346 (whistle / pea whistle) { ................ ................ @@ -6583,7 +6621,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 345 (whistle / magic whistle) +# tile 347 (whistle / magic whistle) { ................ ................ @@ -6602,7 +6640,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 346 (flute / flute) +# tile 348 (flute / flute) { ................ ................ @@ -6621,7 +6659,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 347 (flute / magic flute) +# tile 349 (flute / magic flute) { ................ ................ @@ -6640,7 +6678,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 348 (horn / tooled horn) +# tile 350 (horn / tooled horn) { ................ ................ @@ -6659,7 +6697,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 349 (horn / frost horn) +# tile 351 (horn / frost horn) { ................ ................ @@ -6678,7 +6716,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 350 (horn / fire horn) +# tile 352 (horn / fire horn) { ................ ................ @@ -6697,7 +6735,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 351 (horn / horn of blasting) +# tile 353 (horn / horn of blasting) { ................ ................ @@ -6716,7 +6754,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 352 (horn / horn of plenty) +# tile 354 (horn / horn of plenty) { ................ ................ @@ -6735,7 +6773,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 353 (harp / harp) +# tile 355 (harp / harp) { ................ ................ @@ -6754,7 +6792,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 354 (harp / magic harp) +# tile 356 (harp / magic harp) { ................ ................ @@ -6773,7 +6811,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 355 (bell) +# tile 357 (bell) { ................ .......KA....... @@ -6792,7 +6830,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 356 (bugle) +# tile 358 (bugle) { ................ ................ @@ -6811,7 +6849,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 357 (lute) +# tile 359 (lute) { ................ ................ @@ -6830,7 +6868,7 @@ Z = (195, 195, 195) .AJJAA.......... ..AA............ } -# tile 358 (bagpipe) +# tile 360 (bagpipe) { ................ ...PPP.......... @@ -6849,7 +6887,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 359 (drum / leather drum) +# tile 361 (drum / leather drum) { ................ ................ @@ -6868,7 +6906,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 360 (drum / drum of earthquake) +# tile 362 (drum / drum of earthquake) { ................ ................ @@ -6887,7 +6925,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 361 (pick-axe) +# tile 363 (pick-axe) { ................ ................ @@ -6906,7 +6944,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 362 (spoon) +# tile 364 (spoon) { ................ ................ @@ -6925,7 +6963,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 363 (fishing pole) +# tile 365 (fishing pole) { ................ ...........JJJA. @@ -6944,7 +6982,7 @@ Z = (195, 195, 195) .JJA.......OOA.. ................ } -# tile 364 (iron hook / grappling hook) +# tile 366 (iron hook / grappling hook) { .............N.. ..............P. @@ -6963,7 +7001,7 @@ Z = (195, 195, 195) ..OOA..OOOA..... ....OOOAA....... } -# tile 365 (torch) +# tile 367 (torch) { ................ ................ @@ -6982,7 +7020,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 366 (unicorn horn) +# tile 368 (unicorn horn) { ................ ................ @@ -7001,7 +7039,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 367 (bandage) +# tile 369 (bandage) { ................ ................ @@ -7020,7 +7058,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 368 (phial) +# tile 370 (phial) { ................ ................ @@ -7039,7 +7077,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 369 (candelabrum / Candelabrum of Invocation) +# tile 371 (candelabrum / Candelabrum of Invocation) { .......N........ .......D........ @@ -7058,7 +7096,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 370 (engraved silver bell / Bell of Opening) +# tile 372 (engraved silver bell / Bell of Opening) { ................ .......OA....... @@ -7077,7 +7115,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 371 (tripe ration) +# tile 373 (tripe ration) { ................ ................ @@ -7096,7 +7134,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 372 (corpse) +# tile 374 (corpse) { ................ .....D.DPLN..... @@ -7115,7 +7153,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 373 (eyeball) +# tile 375 (eyeball) { ................ ................ @@ -7134,7 +7172,7 @@ Z = (195, 195, 195) .......OOOPAAA.. ................ } -# tile 374 (severed hand) +# tile 376 (severed hand) { ................ ................ @@ -7153,7 +7191,7 @@ Z = (195, 195, 195) ........AAA..... ................ } -# tile 375 (egg) +# tile 377 (egg) { ................ ................ @@ -7172,7 +7210,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 376 (meatball) +# tile 378 (meatball) { ................ ................ @@ -7191,7 +7229,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 377 (meat stick) +# tile 379 (meat stick) { ................ ................ @@ -7210,7 +7248,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 378 (huge chunk of meat) +# tile 380 (huge chunk of meat) { ................ ................ @@ -7229,7 +7267,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 379 (meat ring) +# tile 381 (meat ring) { ................ ................ @@ -7248,7 +7286,7 @@ Z = (195, 195, 195) ......AAAAA..... ................ } -# tile 380 (glob of gray ooze) +# tile 382 (glob of gray ooze) { ................ ................ @@ -7267,7 +7305,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 381 (glob of brown pudding) +# tile 383 (glob of brown pudding) { ................ ................ @@ -7286,7 +7324,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 382 (glob of green slime) +# tile 384 (glob of green slime) { ................ ................ @@ -7305,7 +7343,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 383 (glob of blood pudding) +# tile 385 (glob of blood pudding) { ................ ................ @@ -7324,7 +7362,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 384 (glob of gel) +# tile 386 (glob of gel) { ................ ................ @@ -7343,7 +7381,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 385 (glob of moldy pudding) +# tile 387 (glob of moldy pudding) { ................ ................ @@ -7362,7 +7400,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 386 (glob of black pudding) +# tile 388 (glob of black pudding) { ................ ................ @@ -7381,7 +7419,7 @@ Z = (195, 195, 195) ...AAA.AAAAA.... ................ } -# tile 387 (kelp frond) +# tile 389 (kelp frond) { ....FA.......... ....FFA......... @@ -7400,7 +7438,7 @@ Z = (195, 195, 195) .....FFFFA...... ......FFFFA..... } -# tile 388 (eucalyptus leaf) +# tile 390 (eucalyptus leaf) { ................ ................ @@ -7419,7 +7457,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 389 (apple) +# tile 391 (apple) { ................ ................ @@ -7438,7 +7476,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 390 (orange) +# tile 392 (orange) { ................ ................ @@ -7457,7 +7495,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 391 (mushroom) +# tile 393 (mushroom) { ................ ................ @@ -7476,7 +7514,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 392 (pear) +# tile 394 (pear) { ................ ................ @@ -7495,7 +7533,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 393 (asian pear) +# tile 395 (asian pear) { ................ ................ @@ -7514,7 +7552,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 394 (melon) +# tile 396 (melon) { ................ ................ @@ -7533,7 +7571,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -#tile 395 (pineapple) +#tile 397 (pineapple) { ................ .........GA..... @@ -7552,7 +7590,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 396 (banana) +# tile 398 (banana) { ................ ................ @@ -7571,7 +7609,7 @@ Z = (195, 195, 195) .....AAAAA...... ................ } -# tile 397 (carrot) +# tile 399 (carrot) { ................ ..........F..F.. @@ -7590,7 +7628,7 @@ Z = (195, 195, 195) ...A............ ................ } -# tile 398 (sprig of catnip) +# tile 400 (sprig of catnip) { ................ ................ @@ -7609,7 +7647,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 399 (sprig of wolfsbane) +# tile 401 (sprig of wolfsbane) { ................ ................ @@ -7628,7 +7666,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 400 (clove of garlic) +# tile 402 (clove of garlic) { ................ ................ @@ -7647,7 +7685,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 401 (slime mold) +# tile 403 (slime mold) { ................ ................ @@ -7666,7 +7704,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 402 (lump of royal jelly) +# tile 404 (lump of royal jelly) { ................ ................ @@ -7685,7 +7723,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 403 (cream pie) +# tile 405 (cream pie) { ................ ................ @@ -7704,7 +7742,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 404 (apple pie) +# tile 406 (apple pie) { ................ ................ @@ -7723,7 +7761,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 405 (pumpkin pie) +# tile 407 (pumpkin pie) { ................ ................ @@ -7742,7 +7780,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 406 (sandwich) +# tile 408 (sandwich) { ................ ................ @@ -7761,7 +7799,7 @@ Z = (195, 195, 195) .......AAAAAA... ................ } -# tile 407 (candy bar) +# tile 409 (candy bar) { ................ ................ @@ -7780,7 +7818,7 @@ Z = (195, 195, 195) ....A........... ................ } -# tile 408 (slice of cake) +# tile 410 (slice of cake) { ................ ........D....... @@ -7799,7 +7837,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 409 (fruitcake) +# tile 411 (fruitcake) { ................ ........D....... @@ -7818,7 +7856,7 @@ Z = (195, 195, 195) ......AAA....... ................ } -# tile 410 (fortune cookie) +# tile 412 (fortune cookie) { ................ ................ @@ -7837,7 +7875,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 411 (pancake) +# tile 413 (pancake) { ................ ................ @@ -7856,7 +7894,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 412 (tortilla) +# tile 414 (tortilla) { ................ ................ @@ -7876,7 +7914,7 @@ Z = (195, 195, 195) ................ } -# tile 413 (cheese) +# tile 415 (cheese) { ................ ................ @@ -7895,7 +7933,7 @@ Z = (195, 195, 195) ....AAAAAAA..... ................ } -# tile 414 (pill) +# tile 416 (pill) { ................ ................ @@ -7914,7 +7952,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 415 (holy wafer) +# tile 417 (holy wafer) { ................ ................ @@ -7933,7 +7971,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 416 (lembas wafer) +# tile 418 (lembas wafer) { ................ ................ @@ -7952,7 +7990,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 417 (cram ration) +# tile 419 (cram ration) { ................ ...JKA.......... @@ -7971,7 +8009,7 @@ Z = (195, 195, 195) .....AAAAAA..... ................ } -# tile 418 (food ration) +# tile 420 (food ration) { ...JJA.......... ...BPA.......... @@ -7990,7 +8028,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 419 (K-ration) +# tile 421 (K-ration) { ................ ................ @@ -8009,7 +8047,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 420 (C-ration) +# tile 422 (C-ration) { ................ ................ @@ -8028,7 +8066,7 @@ Z = (195, 195, 195) ....KKKKKKKKKA.. .....AAAAAAAA... } -# tile 421 (tin) +# tile 423 (tin) { ................ ................ @@ -8047,7 +8085,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 422 (ruby / gain ability) +# tile 424 (ruby / gain ability) { ................ ................ @@ -8066,7 +8104,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 423 (metallic / reflection) +# tile 425 (metallic / reflection) { ................ ................ @@ -8085,7 +8123,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 424 (purple-red / regeneration) { +# tile 426 (purple-red / regeneration) { ................ ................ ................ @@ -8103,7 +8141,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 425 (pink / restore ability) +# tile 427 (pink / restore ability) { ................ ................ @@ -8122,7 +8160,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 426 (orange / confusion) +# tile 428 (orange / confusion) { ................ ................ @@ -8141,7 +8179,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 427 (luminescent / clairvoyance) +# tile 429 (luminescent / clairvoyance) { ................ ................ @@ -8160,7 +8198,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 428 (yellow / blindness) +# tile 430 (yellow / blindness) { ................ ................ @@ -8179,7 +8217,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 429 (muddy / ESP) +# tile 431 (muddy / ESP) { ................ ................ @@ -8198,7 +8236,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 430 (emerald / paralysis) +# tile 432 (emerald / paralysis) { ................ ................ @@ -8217,7 +8255,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 431 (dark green / speed) +# tile 433 (dark green / speed) { ................ ................ @@ -8236,7 +8274,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 432 (cyan / levitation) +# tile 434 (cyan / levitation) { ................ ................ @@ -8255,7 +8293,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 433 (sky blue / hallucination) +# tile 435 (sky blue / hallucination) { ................ ................ @@ -8274,7 +8312,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 434 (indigo / invisibility) +# tile 436 (indigo / invisibility) { ................ ................ @@ -8293,7 +8331,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 435 (magenta / see invisible) +# tile 437 (magenta / see invisible) { ................ ................ @@ -8312,7 +8350,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 436 (amber / healing) +# tile 438 (amber / healing) { ................ ................ @@ -8331,7 +8369,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 437 (puce / extra healing) +# tile 439 (puce / extra healing) { ................ ................ @@ -8350,7 +8388,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 438 (milky / gain level) +# tile 440 (milky / gain level) { ................ ................ @@ -8369,7 +8407,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 439 (icy / invulnerability) +# tile 441 (icy / invulnerability) { ................ ................ @@ -8388,7 +8426,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 440 (swirly / enlightenment) +# tile 442 (swirly / enlightenment) { ................ ................ @@ -8407,7 +8445,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 441 (bubbly / monster detection) +# tile 443 (bubbly / monster detection) { ................ ................ @@ -8426,7 +8464,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 442 (smoky / object detection) +# tile 444 (smoky / object detection) { ................ ................ @@ -8445,7 +8483,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 443 (cloudy / gain energy) +# tile 445 (cloudy / gain energy) { ................ ................ @@ -8464,7 +8502,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 444 (effervescent / sleeping) +# tile 446 (effervescent / sleeping) { ................ ................ @@ -8483,7 +8521,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 445 (black / full healing) +# tile 447 (black / full healing) { ................ ................ @@ -8502,7 +8540,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 446 (golden / polymorph) +# tile 448 (golden / polymorph) { ................ ................ @@ -8521,7 +8559,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 447 (brown / booze) +# tile 449 (brown / booze) { ................ ................ @@ -8540,7 +8578,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 448 (fizzy / sickness) +# tile 450 (fizzy / sickness) { ................ ................ @@ -8559,7 +8597,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 449 (dark / fruit juice) +# tile 451 (dark / fruit juice) { ................ ................ @@ -8578,7 +8616,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 450 (white / acid) +# tile 452 (white / acid) { ................ ................ @@ -8597,7 +8635,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 451 (murky / oil) +# tile 453 (murky / oil) { ................ ................ @@ -8616,7 +8654,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 452 (clear / water) +# tile 454 (clear / water) { ................ ................ @@ -8635,7 +8673,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 453 (sparkling / amnesia) +# tile 455 (sparkling / amnesia) { ................ ................ @@ -8654,7 +8692,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 454 (blood-red / blood) +# tile 456 (blood-red / blood) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8673,7 +8711,7 @@ Z = (195, 195, 195) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 455 (blood-red / vampire blood) +# tile 457 (blood-red / vampire blood) { MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM @@ -8692,7 +8730,7 @@ Z = (195, 195, 195) MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } -# tile 456 (ZELGO MER / enchant armor) +# tile 458 (ZELGO MER / enchant armor) { ................ ................ @@ -8711,7 +8749,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 457 (JUYED AWK YACC / destroy armor) +# tile 459 (JUYED AWK YACC / destroy armor) { ................ ................ @@ -8730,7 +8768,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 458 (NR 9 / confuse monster) +# tile 460 (NR 9 / confuse monster) { ................ ................ @@ -8749,7 +8787,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 459 (XIXAXA XOXAXA XUXAXA / scare monster) +# tile 461 (XIXAXA XOXAXA XUXAXA / scare monster) { ................ ................ @@ -8768,7 +8806,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 460 (PRATYAVAYAH / remove curse) +# tile 462 (PRATYAVAYAH / remove curse) { ................ ................ @@ -8787,7 +8825,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 461 (DAIYEN FOOELS / enchant weapon) +# tile 463 (DAIYEN FOOELS / enchant weapon) { ................ ................ @@ -8806,7 +8844,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 462 (LEP GEX VEN ZEA / create monster) +# tile 464 (LEP GEX VEN ZEA / create monster) { ................ ................ @@ -8825,7 +8863,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 463 (PRIRUTSENIE / taming) +# tile 465 (PRIRUTSENIE / taming) { ................ ................ @@ -8844,7 +8882,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 464 (ELBIB YLOH / genocide) +# tile 466 (ELBIB YLOH / genocide) { ................ ................ @@ -8863,7 +8901,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 465 (4OFAE OF9 SCC9 / elementalism) +# tile 467 (4OFAE OF9 SCC9 / elementalism) { ................ ................ @@ -8882,7 +8920,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 466 (VERR YED HORRE / light) +# tile 468 (VERR YED HORRE / light) { ................ ................ @@ -8901,7 +8939,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 467 (TEMP USF UGIT / time) +# tile 469 (TEMP USF UGIT / time) { ................ ................ @@ -8920,7 +8958,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 468 (VENZAR BORGAVVE / teleportation) +# tile 470 (VENZAR BORGAVVE / teleportation) { ................ ................ @@ -8939,7 +8977,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 469 (THARR / gold detection) +# tile 471 (THARR / gold detection) { ................ ................ @@ -8958,7 +8996,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 470 (YUM YUM / food detection) +# tile 472 (YUM YUM / food detection) { ................ ................ @@ -8977,7 +9015,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 471 (POTESTAS / knowledge) +# tile 473 (POTESTAS / knowledge) { ................ ................ @@ -8996,7 +9034,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 472 (KERNOD WEL / identify) +# tile 474 (KERNOD WEL / identify) { ................ ................ @@ -9015,7 +9053,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 473 (TRATS ARL / air) +# tile 475 (TRATS ARL / air) { ................ ................ @@ -9034,7 +9072,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 474 (TLON UQBAR / transmogrify) +# tile 476 (TLON UQBAR / transmogrify) { ................ ................ @@ -9053,7 +9091,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 475 (ELAM EBOW / magic mapping) +# tile 477 (ELAM EBOW / magic mapping) { ................ ................ @@ -9072,7 +9110,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 476 (DUAM XNAHT / amnesia) +# tile 478 (DUAM XNAHT / amnesia) { ................ ................ @@ -9091,7 +9129,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 477 (AQUE BRAGH / flood) +# tile 479 (AQUE BRAGH / flood) { ................ ................ @@ -9110,7 +9148,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 478 (ANDOVA BEGARIN / fire) +# tile 480 (ANDOVA BEGARIN / fire) { ................ ................ @@ -9129,7 +9167,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 479 (KIRJE / earth) +# tile 481 (KIRJE / earth) { ................ ................ @@ -9148,7 +9186,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 480 (VE FORBRYDERNE / punishment) +# tile 482 (VE FORBRYDERNE / punishment) { ................ ................ @@ -9167,7 +9205,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 481 (HACKEM MUCHE / charging) +# tile 483 (HACKEM MUCHE / charging) { ................ ................ @@ -9186,7 +9224,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 482 (TOYL ENT RUBLE / cloning) +# tile 484 (TOYL ENT RUBLE / cloning) { ................ ................ @@ -9205,7 +9243,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 483 (VELOX NEB / stinking cloud) +# tile 485 (VELOX NEB / stinking cloud) { ................ ................ @@ -9224,7 +9262,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 484 (HZLRC KSTSBD MPFNG / acquirement) +# tile 486 (HZLRC KSTSBD MPFNG / acquirement) { ................ ................ @@ -9243,7 +9281,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 485 (OOBID IBBOB / ice) +# tile 487 (OOBID IBBOB / ice) { ................ ................ @@ -9262,7 +9300,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 486 (FOOBIE BLETCH / magic detection) +# tile 488 (FOOBIE BLETCH / magic detection) { ................ ................ @@ -9281,7 +9319,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 487 (TEMOV) +# tile 489 (TEMOV) { ................ ................ @@ -9300,7 +9338,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 488 (GARVEN DEH) +# tile 490 (GARVEN DEH) { ................ ................ @@ -9319,7 +9357,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 489 (READ ME) +# tile 491 (READ ME) { ................ ................ @@ -9338,7 +9376,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 490 (ETAOIN SHRDLU) +# tile 492 (ETAOIN SHRDLU) { ................ ................ @@ -9357,7 +9395,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 491 (LOREM IPSUM) +# tile 493 (LOREM IPSUM) { ................ ................ @@ -9376,7 +9414,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 492 (FNORD) +# tile 494 (FNORD) { ................ ................ @@ -9395,7 +9433,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 493 (KO BATE) +# tile 495 (KO BATE) { ................ ................ @@ -9414,7 +9452,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 494 (ABRA KA DABRA) +# tile 496 (ABRA KA DABRA) { ................ ................ @@ -9433,7 +9471,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 495 (ASHPD SODALG) +# tile 497 (ASHPD SODALG) { ................ ................ @@ -9452,7 +9490,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 496 (ZLORFIK) +# tile 498 (ZLORFIK) { ................ ................ @@ -9471,7 +9509,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 497 (GNIK SISI VLE) +# tile 499 (GNIK SISI VLE) { ................ ................ @@ -9490,7 +9528,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 498 (HAPAX LEGOMENON) +# tile 500 (HAPAX LEGOMENON) { ................ ................ @@ -9509,7 +9547,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 499 (EIRIS SAZUN IDISI) +# tile 501 (EIRIS SAZUN IDISI) { ................ ................ @@ -9528,7 +9566,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 500 (PHOL ENDE WODAN) +# tile 502 (PHOL ENDE WODAN) { ................ ................ @@ -9547,7 +9585,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 501 (GHOTI) +# tile 503 (GHOTI) { ................ ................ @@ -9566,7 +9604,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 502 (MAPIRO MAHAMA DIROMAT) +# tile 504 (MAPIRO MAHAMA DIROMAT) { ................ ................ @@ -9585,7 +9623,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 503 (VAS CORP BET MANI) +# tile 505 (VAS CORP BET MANI) { ................ ................ @@ -9604,7 +9642,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 504 (XOR OTA) +# tile 506 (XOR OTA) { ................ ................ @@ -9623,7 +9661,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 505 (STRC PRST SKRZ KRK) +# tile 507 (STRC PRST SKRZ KRK) { ................ ................ @@ -9642,7 +9680,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 506 (NYEHEHE) +# tile 508 (NYEHEHE) { ................ ................ @@ -9661,7 +9699,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 507 (ELPHE MONATER) +# tile 509 (ELPHE MONATER) { ................ ................ @@ -9680,7 +9718,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 508 (ABAJ) +# tile 510 (ABAJ) { ................ ................ @@ -9699,7 +9737,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 509 (CONG LAT URAT ION) +# tile 511 (CONG LAT URAT ION) { ................ ................ @@ -9718,7 +9756,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 510 (DESUM TETRAL) +# tile 512 (DESUM TETRAL) { ................ ................ @@ -9737,7 +9775,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 511 (NHINRL) +# tile 513 (NHINRL) { ................ ................ @@ -9756,7 +9794,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 512 (ISAY INAY) +# tile 514 (ISAY INAY) { ................ ................ @@ -9775,7 +9813,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 513 (PEBCAK RTFM) +# tile 515 (PEBCAK RTFM) { ................ ................ @@ -9794,7 +9832,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 514 (KA TET) +# tile 516 (KA TET) { ................ ................ @@ -9813,7 +9851,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 515 (stamped / mail) +# tile 517 (stamped / mail) { ................ ................ @@ -9832,7 +9870,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 516 (unlabeled / blank paper) +# tile 518 (unlabeled / blank paper) { ................ ................ @@ -9851,7 +9889,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 517 (parchment / dig) +# tile 519 (parchment / dig) { ................ ................ @@ -9870,7 +9908,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 518 (vellum / magic missile) +# tile 520 (vellum / magic missile) { ................ ................ @@ -9889,7 +9927,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 519 (ragged / fireball) +# tile 521 (ragged / fireball) { ................ ................ @@ -9908,7 +9946,7 @@ Z = (195, 195, 195) ......OOJJAA.... ................ } -# tile 520 (dog eared / cone of cold) +# tile 522 (dog eared / cone of cold) { ................ ................ @@ -9927,7 +9965,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 521 (mottled / sleep) +# tile 523 (mottled / sleep) { ................ ................ @@ -9946,7 +9984,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 522 (stained / finger of death) +# tile 524 (stained / finger of death) { ................ ................ @@ -9965,7 +10003,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 523 (electric blue / lightning) +# tile 525 (electric blue / lightning) { ................ ................ @@ -9984,7 +10022,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 524 (olive green / poison blast) +# tile 526 (olive green / poison blast) { ................ ................ @@ -10003,7 +10041,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 525 (acid green / acid blast) +# tile 527 (acid green / acid blast) { ................ ................ @@ -10022,7 +10060,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 526 (ghostly / sonic boom) +# tile 528 (ghostly / sonic boom) { ................ ................ @@ -10041,7 +10079,7 @@ Z = (195, 195, 195) .......UUUAA.... ................ } -# tile 527 (worn / psionic wave) +# tile 529 (worn / psionic wave) { ................ ................ @@ -10060,7 +10098,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 528 (red / force bolt) +# tile 530 (red / force bolt) { ................ ................ @@ -10079,7 +10117,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 529 (velvet / drain life) +# tile 531 (velvet / drain life) { ................ ................ @@ -10098,7 +10136,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 530 (black / summon undead) +# tile 532 (black / summon undead) { ................ ................ @@ -10117,7 +10155,7 @@ Z = (195, 195, 195) .......AAA...... ................ } -# tile 531 (dark / command undead) +# tile 533 (dark / command undead) { ................ ................ @@ -10136,7 +10174,7 @@ Z = (195, 195, 195) ....AAABBBA..... .......AAA...... } -# tile 532 (pink / knock) +# tile 534 (pink / knock) { ................ ................ @@ -10155,7 +10193,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 533 (dark green / wizard lock) +# tile 535 (dark green / wizard lock) { ................ ................ @@ -10174,7 +10212,7 @@ Z = (195, 195, 195) .......FFFAA.... ................ } -# tile 534 (silver / polymorph) +# tile 536 (silver / polymorph) { ................ ................ @@ -10193,7 +10231,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 535 (platinum / repair armor) +# tile 537 (platinum / repair armor) { ................ ................ @@ -10212,7 +10250,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 536 (decrepit / reflection) +# tile 538 (decrepit / reflection) { ................ ................ @@ -10231,7 +10269,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 537 (canvas / flame sphere) +# tile 539 (canvas / flame sphere) { ................ ................ @@ -10250,7 +10288,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 538 (hardcover / freeze sphere) +# tile 540 (hardcover / freeze sphere) { ................ ................ @@ -10269,7 +10307,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 539 (shining / cancellation) +# tile 541 (shining / cancellation) { ....N........... .......N........ @@ -10288,7 +10326,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 540 (feathered / fire bolt) +# tile 542 (feathered / fire bolt) { ................ ................ @@ -10307,7 +10345,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 541 (light green / slow monster) +# tile 543 (light green / slow monster) { ................ ................ @@ -10326,7 +10364,7 @@ Z = (195, 195, 195) .......GGGAA.... ................ } -# tile 542 (light blue / cause fear) +# tile 544 (light blue / cause fear) { ................ ................ @@ -10345,7 +10383,7 @@ Z = (195, 195, 195) .......BBBAA.... ................ } -# tile 543 (magenta / charm monster) +# tile 545 (magenta / charm monster) { ................ ................ @@ -10364,7 +10402,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 544 (orange / confuse monster) +# tile 546 (orange / confuse monster) { ................ ................ @@ -10383,7 +10421,7 @@ Z = (195, 195, 195) .......CCCAA.... ................ } -# tile 545 (purple / haste self) +# tile 547 (purple / haste self) { ................ ................ @@ -10402,7 +10440,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 546 (tan / levitation) +# tile 548 (tan / levitation) { ................ ................ @@ -10421,7 +10459,7 @@ Z = (195, 195, 195) .......KKKAA.... ................ } -# tile 547 (gold / teleport away) +# tile 549 (gold / teleport away) { ................ ................ @@ -10440,7 +10478,7 @@ Z = (195, 195, 195) .......HHHAA.... ................ } -# tile 548 (ochre / passwall) +# tile 550 (ochre / passwall) { ................ ................ @@ -10459,7 +10497,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 549 (dark brown / invisibility) +# tile 551 (dark brown / invisibility) { ................ ................ @@ -10478,7 +10516,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 550 (thin / jumping) +# tile 552 (thin / jumping) { ................ ................ @@ -10497,7 +10535,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 551 (cloth / light) +# tile 553 (cloth / light) { ................ ................ @@ -10516,7 +10554,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 552 (leathery / detect monsters) +# tile 554 (leathery / detect monsters) { ................ ................ @@ -10535,7 +10573,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 553 (cyan / detect food) +# tile 555 (cyan / detect food) { ................ ................ @@ -10554,7 +10592,7 @@ Z = (195, 195, 195) .......BBBAA.... ................ } -# tile 554 (violet / detect unseen) +# tile 556 (violet / detect unseen) { ................ ................ @@ -10573,7 +10611,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 555 (gray / detect treasure) +# tile 557 (gray / detect treasure) { ................ ................ @@ -10592,7 +10630,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 556 (dark blue / clairvoyance) +# tile 558 (dark blue / clairvoyance) { ................ ................ @@ -10611,7 +10649,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 557 (faded / enlighten) +# tile 559 (faded / enlighten) { ................ ................ @@ -10630,7 +10668,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 558 (bronze / identify) +# tile 560 (bronze / identify) { ................ ................ @@ -10649,7 +10687,7 @@ Z = (195, 195, 195) .......CCCAA.... ................ } -# tile 559 (dusty / magic mapping) +# tile 561 (dusty / magic mapping) { ................ ................ @@ -10668,7 +10706,7 @@ Z = (195, 195, 195) .KAKA..JJJAA.... ................ } -# tile 560 (white / healing) +# tile 562 (white / healing) { ................ ................ @@ -10687,7 +10725,7 @@ Z = (195, 195, 195) .......PNNAA.... ................ } -# tile 561 (yellow / cure blindness) +# tile 563 (yellow / cure blindness) { ................ ................ @@ -10706,7 +10744,7 @@ Z = (195, 195, 195) .......HHHAA.... ................ } -# tile 562 (plaid / extra healing) +# tile 564 (plaid / extra healing) { ................ ................ @@ -10725,7 +10763,7 @@ Z = (195, 195, 195) .......EFDAA.... ................ } -# tile 563 (light brown / restore ability) +# tile 565 (light brown / restore ability) { ................ ................ @@ -10744,7 +10782,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 564 (thick / stone to flesh) +# tile 566 (thick / stone to flesh) { ................ ................ @@ -10763,7 +10801,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 565 (indigo / cure sickness) +# tile 567 (indigo / cure sickness) { ................ ................ @@ -10782,7 +10820,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 566 (turquoise / create monster) +# tile 568 (turquoise / create monster) { ................ ................ @@ -10801,7 +10839,7 @@ Z = (195, 195, 195) .......FBBAA.... ................ } -# tile 567 (wrinkled / remove curse) +# tile 569 (wrinkled / remove curse) { ................ ................ @@ -10820,7 +10858,7 @@ Z = (195, 195, 195) ......JJKKAA.... ................ } -# tile 568 (copper / turn undead) +# tile 570 (copper / turn undead) { ................ ................ @@ -10839,7 +10877,7 @@ Z = (195, 195, 195) .......JCJAA.... ................ } -# tile 569 (glittering / create familiar) +# tile 571 (glittering / create familiar) { ................ ................ @@ -10858,7 +10896,7 @@ Z = (195, 195, 195) .......PPPAN.... .......N........ } -# tile 570 (dull / protection) +# tile 572 (dull / protection) { ................ ................ @@ -10877,7 +10915,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 571 (deep) +# tile 573 (deep) { ................ ................ @@ -10896,7 +10934,7 @@ Z = (195, 195, 195) .......IIIAA.... ................ } -# tile 572 (big) +# tile 574 (big) { ................ .....KD......... @@ -10915,7 +10953,7 @@ Z = (195, 195, 195) .......DDDAA.... ................ } -# tile 573 (fuzzy) +# tile 575 (fuzzy) { ................ ................ @@ -10934,7 +10972,7 @@ Z = (195, 195, 195) ..A.AAAFFFA..... ....A..AAA...... } -# tile 574 (spotted) +# tile 576 (spotted) { ................ ................ @@ -10953,7 +10991,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 575 (colorful) +# tile 577 (colorful) { ................ ................ @@ -10972,7 +11010,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 576 (long) +# tile 578 (long) { ................ ................ @@ -10991,7 +11029,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 577 (rainbow) +# tile 579 (rainbow) { ................ ................ @@ -11010,7 +11048,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 578 (tattered) +# tile 580 (tattered) { ................ ................ @@ -11029,7 +11067,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 579 (wide) +# tile 581 (wide) { ................ ................ @@ -11048,7 +11086,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 580 (left-handed) +# tile 582 (left-handed) { ................ ................ @@ -11067,7 +11105,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 581 (psychedelic) +# tile 583 (psychedelic) { ................ ................ @@ -11086,7 +11124,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 582 (spiral-bound) +# tile 584 (spiral-bound) { ................ ................ @@ -11105,7 +11143,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 583 (stapled) +# tile 585 (stapled) { ................ ................ @@ -11124,7 +11162,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 584 (stylish) +# tile 586 (stylish) { ................ ................ @@ -11143,7 +11181,7 @@ Z = (195, 195, 195) .......DCDAA.... ................ } -# tile 585 (tartan) +# tile 587 (tartan) { ................ .....PPPPA...... @@ -11162,7 +11200,7 @@ Z = (195, 195, 195) .......PPPAA.... ................ } -# tile 586 (chartreuse) +# tile 588 (chartreuse) { ................ ................ @@ -11181,7 +11219,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 587 (crimson) +# tile 589 (crimson) { ................ ................ @@ -11200,7 +11238,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 588 (charcoal) +# tile 590 (charcoal) { ................ ................ @@ -11219,7 +11257,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 589 (plain / blank paper) +# tile 591 (plain / blank paper) { ................ ................ @@ -11238,7 +11276,7 @@ Z = (195, 195, 195) .......JJJAA.... ................ } -# tile 590 (paperback / novel) +# tile 592 (paperback / novel) { ................ ................ @@ -11257,7 +11295,7 @@ Z = (195, 195, 195) .......EEEAA.... ................ } -# tile 591 (papyrus / Book of the Dead) +# tile 593 (papyrus / Book of the Dead) { ................ ................ @@ -11276,7 +11314,7 @@ Z = (195, 195, 195) .......AAA...... ................ } -# tile 592 (glass / light) +# tile 594 (glass / light) { ................ ................ @@ -11295,7 +11333,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 593 (balsa / detection) +# tile 595 (balsa / detection) { ................ ................ @@ -11314,7 +11352,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 594 (crystal / enlightenment) +# tile 596 (crystal / enlightenment) { ................ ................ @@ -11333,7 +11371,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 595 (bamboo / healing) +# tile 597 (bamboo / healing) { ................ .........F...... @@ -11352,7 +11390,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 596 (maple / create monster) +# tile 598 (maple / create monster) { ................ ................ @@ -11371,7 +11409,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 597 (crusty / fear) +# tile 599 (crusty / fear) { ................ ................ @@ -11390,7 +11428,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 598 (pine / wishing) +# tile 600 (pine / wishing) { ................ ................ @@ -11409,7 +11447,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 599 (oak / nothing) +# tile 601 (oak / nothing) { ................ ................ @@ -11428,7 +11466,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 600 (plastic / wonder) +# tile 602 (plastic / wonder) { ................ ................ @@ -11447,7 +11485,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 601 (green / wind) +# tile 603 (green / wind) { ................ ................ @@ -11466,7 +11504,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 602 (ebony / striking) +# tile 604 (ebony / striking) { ................ ................ @@ -11485,7 +11523,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 603 (marble / make invisible) +# tile 605 (marble / make invisible) { ................ ................ @@ -11504,7 +11542,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 604 (tin / slow monster) +# tile 606 (tin / slow monster) { ................ ................ @@ -11523,7 +11561,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 605 (brass / speed monster) +# tile 607 (brass / speed monster) { ................ ................ @@ -11542,7 +11580,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 606 (copper / undead turning) +# tile 608 (copper / undead turning) { ................ ................ @@ -11561,7 +11599,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 607 (ceramic / draining) +# tile 609 (ceramic / draining) { ................ ................ @@ -11580,7 +11618,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 608 (silver / polymorph) +# tile 610 (silver / polymorph) { ................ ................ @@ -11599,7 +11637,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 609 (platinum / cancellation) +# tile 611 (platinum / cancellation) { ................ ................ @@ -11618,7 +11656,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 610 (iridium / teleportation) +# tile 612 (iridium / teleportation) { ................ ................ @@ -11637,7 +11675,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 611 (black / create horde) +# tile 613 (black / create horde) { ................ ................ @@ -11656,7 +11694,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 612 (bronze / extra healing) +# tile 614 (bronze / extra healing) { ................ ................ @@ -11675,7 +11713,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 613 (zinc / opening) +# tile 615 (zinc / opening) { ................ ................ @@ -11694,7 +11732,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 614 (aluminum / locking) +# tile 616 (aluminum / locking) { ................ ................ @@ -11713,7 +11751,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 615 (uranium / probing) +# tile 617 (uranium / probing) { ................ ................ @@ -11732,7 +11770,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 616 (iron / digging) +# tile 618 (iron / digging) { ................ ................ @@ -11751,7 +11789,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 617 (forked / fireball) +# tile 619 (forked / fireball) { ................ ................ @@ -11770,7 +11808,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 618 (steel / magic missile) +# tile 620 (steel / magic missile) { ................ ................ @@ -11789,7 +11827,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 619 (hexagonal / fire) +# tile 621 (hexagonal / fire) { ................ ................ @@ -11808,7 +11846,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 620 (short / cold) +# tile 622 (short / cold) { ................ ................ @@ -11827,7 +11865,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 621 (runed / sleep) +# tile 623 (runed / sleep) { ................ ................ @@ -11846,7 +11884,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 622 (long / death) +# tile 624 (long / death) { ................ .............NO. @@ -11865,7 +11903,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 623 (curved / lightning) +# tile 625 (curved / lightning) { ................ .......NO....... @@ -11884,7 +11922,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 624 (octagonal / poison gas) +# tile 626 (octagonal / poison gas) { ................ ................ @@ -11903,7 +11941,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 625 (twisted / corrosion) +# tile 627 (twisted / corrosion) { ................ .............KK. @@ -11922,7 +11960,7 @@ Z = (195, 195, 195) ..A............. ................ } -# tile 626 (titanium / noise) +# tile 628 (titanium / noise) { ................ ................ @@ -11941,7 +11979,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 627 (driftwood / deluge) +# tile 629 (driftwood / deluge) { ................ ................ @@ -11961,7 +11999,7 @@ Z = (195, 195, 195) ................ } -# tile 628 (spiked) +# tile 630 (spiked) { ................ ................ @@ -11980,7 +12018,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 629 (jeweled) +# tile 631 (jeweled) { ................ ................ @@ -11999,7 +12037,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 630 (gold piece) +# tile 632 (gold piece) { ................ ................ @@ -12018,7 +12056,7 @@ Z = (195, 195, 195) .........HA..... ...........HA... } -# tile 631 (white / dilithium crystal) +# tile 633 (white / dilithium crystal) { ................ ................ @@ -12037,7 +12075,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 632 (white / diamond) +# tile 634 (white / diamond) { ................ ................ @@ -12056,7 +12094,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 633 (red / ruby) +# tile 635 (red / ruby) { ................ ................ @@ -12075,7 +12113,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 634 (orange / jacinth) +# tile 636 (orange / jacinth) { ................ ................ @@ -12094,7 +12132,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 635 (blue / sapphire) +# tile 637 (blue / sapphire) { ................ ................ @@ -12113,7 +12151,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 636 (black / black opal) +# tile 638 (black / black opal) { ................ ................ @@ -12132,7 +12170,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 637 (green / emerald) +# tile 639 (green / emerald) { ................ ................ @@ -12151,7 +12189,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 638 (green / turquoise) +# tile 640 (green / turquoise) { ................ ................ @@ -12170,7 +12208,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 639 (yellow / citrine) +# tile 641 (yellow / citrine) { ................ ................ @@ -12189,7 +12227,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 640 (green / aquamarine) +# tile 642 (green / aquamarine) { ................ ................ @@ -12208,7 +12246,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 641 (yellowish brown / amber) +# tile 643 (yellowish brown / amber) { ................ ................ @@ -12227,7 +12265,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 642 (yellowish brown / topaz) +# tile 644 (yellowish brown / topaz) { ................ ................ @@ -12246,7 +12284,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 643 (black / jet) +# tile 645 (black / jet) { ................ ................ @@ -12265,7 +12303,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 644 (white / opal) +# tile 646 (white / opal) { ................ ................ @@ -12284,7 +12322,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 645 (yellow / chrysoberyl) +# tile 647 (yellow / chrysoberyl) { ................ ................ @@ -12303,7 +12341,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 646 (red / garnet) +# tile 648 (red / garnet) { ................ ................ @@ -12322,7 +12360,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 647 (violet / amethyst) +# tile 649 (violet / amethyst) { ................ ................ @@ -12341,7 +12379,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 648 (red / jasper) +# tile 650 (red / jasper) { ................ ................ @@ -12360,7 +12398,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 649 (violet / fluorite) +# tile 651 (violet / fluorite) { ................ ................ @@ -12379,7 +12417,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 650 (black / obsidian) +# tile 652 (black / obsidian) { ................ ................ @@ -12398,7 +12436,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 651 (orange / agate) +# tile 653 (orange / agate) { ................ ................ @@ -12417,7 +12455,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 652 (green / jade) +# tile 654 (green / jade) { ................ ................ @@ -12436,7 +12474,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 653 (white / worthless piece of white glass) +# tile 655 (white / worthless piece of white glass) { ................ ................ @@ -12455,7 +12493,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 654 (blue / worthless piece of blue glass) +# tile 656 (blue / worthless piece of blue glass) { ................ ................ @@ -12474,7 +12512,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 655 (red / worthless piece of red glass) +# tile 657 (red / worthless piece of red glass) { ................ ................ @@ -12493,7 +12531,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 656 (yellowish brown / worthless piece of yellowish brown glass) +# tile 658 (yellowish brown / worthless piece of yellowish brown glass) { ................ ................ @@ -12512,7 +12550,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 657 (orange / worthless piece of orange glass) +# tile 659 (orange / worthless piece of orange glass) { ................ ................ @@ -12531,7 +12569,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 658 (yellow / worthless piece of yellow glass) +# tile 660 (yellow / worthless piece of yellow glass) { ................ ................ @@ -12550,7 +12588,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 659 (black / worthless piece of black glass) +# tile 661 (black / worthless piece of black glass) { ................ ................ @@ -12569,7 +12607,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 660 (green / worthless piece of green glass) +# tile 662 (green / worthless piece of green glass) { ................ ................ @@ -12588,7 +12626,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 661 (violet / worthless piece of violet glass) +# tile 663 (violet / worthless piece of violet glass) { ................ ................ @@ -12607,7 +12645,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 662 (gray / luckstone) +# tile 664 (gray / luckstone) { ................ ................ @@ -12626,7 +12664,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 663 (gray / healthstone) +# tile 665 (gray / healthstone) { ................ ................ @@ -12645,7 +12683,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 664 (gray / loadstone) +# tile 666 (gray / loadstone) { ................ ................ @@ -12664,7 +12702,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 665 (gray / touchstone) +# tile 667 (gray / touchstone) { ................ ................ @@ -12683,7 +12721,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 666 (gray / whetstone) +# tile 668 (gray / whetstone) { ................ ................ @@ -12702,7 +12740,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 667 (gray / flint) +# tile 669 (gray / flint) { ................ ................ @@ -12721,7 +12759,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 668 (shiny / sling bullet) +# tile 670 (shiny / sling bullet) { ................ ................ @@ -12740,7 +12778,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 669 (rock) +# tile 671 (rock) { ................ ................ @@ -12759,7 +12797,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 670 (boulder) +# tile 672 (boulder) { ................ ................ @@ -12778,7 +12816,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 671 (statue) +# tile 673 (statue) { ................ ........JJ...... @@ -12797,7 +12835,7 @@ Z = (195, 195, 195) .....JJJJJJAA... ................ } -# tile 672 (heavy iron ball) +# tile 674 (heavy iron ball) { ................ ................ @@ -12816,7 +12854,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 673 (iron chain) +# tile 675 (iron chain) { ................ ................ @@ -12835,7 +12873,7 @@ Z = (195, 195, 195) ...........PP.PA ............AA.. } -# tile 674 (splash of venom / blinding venom) +# tile 676 (splash of venom / blinding venom) { ................ ................ @@ -12854,7 +12892,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 675 (splash of venom / acid venom) +# tile 677 (splash of venom / acid venom) { ................ ................ @@ -12873,7 +12911,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 676 (snowball) +# tile 678 (snowball) { ................ ................ @@ -12892,7 +12930,7 @@ Z = (195, 195, 195) ................ ................ } -# tile 677 (spike) +# tile 679 (spike) { ................ ................ @@ -12911,7 +12949,7 @@ Z = (195, 195, 195) .......N........ ................ } -# tile 678 (spirit) +# tile 680 (spirit) { ABCDEFGHIJKLMNOP BAAAAAAAAAAAAAAO From a2e06a912109aea32d09a010044e25a177240a31 Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 15 Nov 2023 00:10:43 +0100 Subject: [PATCH 80/82] Ported over the Cartomancer's techniques from original SpliceHack. These are: heart of the cards, card combo, and card capture. --- include/tech.h | 5 +- src/objects.c | 2 +- src/read.c | 1 + src/tech.c | 151 ++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 155 insertions(+), 4 deletions(-) diff --git a/include/tech.h b/include/tech.h index 076b53f8d..c5da313c1 100644 --- a/include/tech.h +++ b/include/tech.h @@ -99,7 +99,10 @@ struct blitz_tab { #define T_BREAK_ROCK 53 #define T_UPPERCUT 54 #define T_ICEARMOR 55 +#define T_HEART_CARDS 56 +#define T_CARD_COMBO 57 +#define T_CARD_CAPTURE 58 -#define MAXTECH 56 +#define MAXTECH 59 #endif /* TECH_H */ diff --git a/src/objects.c b/src/objects.c index a2df704ae..99ab20a30 100644 --- a/src/objects.c +++ b/src/objects.c @@ -1116,7 +1116,7 @@ SCROLL("cloning", "TOYL ENT RUBLE", 1, 5, 300), /* SpliceHack /* Fire burn and cauldron bubble. */ SCROLL("stinking cloud", "VELOX NEB", 1, 15, 300), SCROLL("acquirement", "HZLRC KSTSBD MPFNG", 1, 10, 300), -SCROLL("ice", "OOBID IBBOB", 1, 10, 200), /* SlashTHEM */ +SCROLL("ice", "OOBID IBBOB", 1, 10, 200), /* SlashTHEM */ SCROLL("magic detection", "FOOBIE BLETCH", 1, 25, 300), /* EvilHack */ /* Extra descriptions, shuffled into use at start of new game. * Code in win/share/tilemap.c depends on SCR_MAGIC_DETECTION preceding diff --git a/src/read.c b/src/read.c index 29ced8640..3d30c4b23 100644 --- a/src/read.c +++ b/src/read.c @@ -2012,6 +2012,7 @@ struct obj *sobj; /* sobj - scroll or fake spellbook for spell */ break; } else if (state == MAKE_EM_TAME) { initedog(mtmp); + newsym(mtmp->mx, mtmp->my); } else if (state == MAKE_EM_PEACEFUL) { mtmp->mpeaceful = 1; } else if (state == MAKE_EM_HOSTILE) { diff --git a/src/tech.c b/src/tech.c index e35442895..a6c109c29 100644 --- a/src/tech.c +++ b/src/tech.c @@ -72,6 +72,10 @@ static int NDECL(tech_tumble); static int NDECL(tech_sunder); static int NDECL(tech_bloodmagic); +static int NDECL(tech_heartcards); +static int NDECL(tech_cardcombo); +static int NDECL(tech_cardcardcapture); + static NEARDATA schar delay; /* moves left for tinker/energy draw */ /* Duplicated from apply.c */ @@ -130,7 +134,7 @@ STATIC_OVL NEARDATA const char *tech_names[] = { "jedi jump", /* 42 */ "charge saber", /* 43 */ "telekinesis", /* 44 */ - "whistle undead", /* 45 */ + "whistle undead", /* 45 */ "spirit tempest", /* 46 */ "force push", /* 47 */ "curse", /* 48 */ @@ -141,7 +145,9 @@ STATIC_OVL NEARDATA const char *tech_names[] = { "break rock", /* 53 */ "uppercut", /* 54 */ "ice armor", /* 55 */ - "", /* 56 */ + "heart of the cards",/* 56 */ + "card combo", /* 57 */ + "card capture", /* 58 */ "" }; @@ -157,6 +163,12 @@ static const struct innate_tech { 5, T_RAGE, 1 }, { 0, 0, 0 } }, + car_tech[] = { + { 1, T_HEART_CARDS, 1 }, + { 5, T_CARD_COMBO, 1 }, + {15, T_CARD_CAPTURE, 1 }, + { 0, 0, 0} + }, cav_tech[] = { { 1, T_PRIMAL_ROAR, 1 }, { 0, 0, 0 } @@ -1247,6 +1259,21 @@ int tech_no; /* No timeout - this can take a little time * and requires training */ break; + case T_HEART_CARDS: + res = tech_heartcards(); + if (res) + t_timeout = rn1(1000, 500); + break; + case T_CARD_COMBO: + res = tech_cardcombo(); + if (res) + t_timeout = rn1(1000, 500); + break; + case T_CARD_CAPTURE: + res = tech_cardcardcapture(); + if (res) + t_timeout = rn1(500, 500); + break; default: pline("Error! No such effect (%i)", tech_no); return 0; @@ -1545,6 +1572,8 @@ role_tech() return arc_tech; case PM_BARBARIAN: return bar_tech; + case PM_CARTOMANCER: + return car_tech; case PM_CAVEMAN: return cav_tech; case PM_FLAME_MAGE: @@ -4004,6 +4033,124 @@ tech_bloodmagic() return 1; } + +int +tech_heartcards() +{ + int i = 0, j = 0; + /* The Cartomancer's backup #pray */ + if (Slimed) { + j = SCR_FIRE; + } else if (critically_low_hp(FALSE)) { + /* Some different escape methods */ + switch (rnd(7)) { + case 1: j = SCR_AIR; break; + case 2: j = SCR_TIME; break; + case 3: j = SCR_GENOCIDE; break; /* uncursed */ + case 4: j = SCR_SCARE_MONSTER; break; + case 5: j = SCR_TAMING; break; + default: j = SCR_TELEPORTATION; break; + } + } else if (region_danger()) { + j = SCR_TELEPORTATION; + } else if (Strangled || welded(uwep) || Punished) { + j = SCR_REMOVE_CURSE; + } +#if 0 /* This actually eliminates the chance of getting a + * scroll of acquirement (when starving), which would + * be much more useful */ + else if (u.uhs >= WEAK) { + j = SCR_FOOD_DETECTION; + } +#endif + + if (!j) { + for (i = 0; i < 5000; i++) { + j = rn1(SCR_MAGIC_DETECTION - SCR_ENCHANT_ARMOR + 1, SCR_ENCHANT_ARMOR); + /* Skip obviously bad scrolls */ + if (Luck >= 0) { + if (j == SCR_AMNESIA || j == SCR_PUNISHMENT + || j == SCR_DESTROY_ARMOR) + continue; + else if (j == SCR_ENCHANT_WEAPON && uwep->spe > 5) + continue; + } + if (j) + break; + } + } + + struct obj* pseudo = mksobj(j, FALSE, FALSE); + if (pseudo) { + pseudo->blessed = TRUE; + pseudo->cursed = FALSE; + if (pseudo->otyp == SCR_GENOCIDE) + pseudo->blessed = FALSE; + pseudo->quan = 20L; /* do not let useup get it */ + pseudo->ox = u.ux, pseudo->oy = u.uy; + + pline("With a flourish, you pull a card from beyond!"); + You("shout the incantation on the card!"); + seffects(pseudo); + obfree(pseudo, (struct obj *) 0); /* now, get rid of it */ + return 1; + } else + pline1(nothing_happens); + return 0; +} + +int +tech_cardcombo() +{ + int tech_no = get_tech_no(T_CARD_COMBO); + int i, combos; + combos = max(1, techlev(tech_no) / 2); + combos = min(5, combos) + 1; + + pline("You unleash a wicked combo! [max %d cards]", combos); + for (i = 0; i < combos ; i++) { + if (!doread()) { + if (i == 0) + return 0; + break; + } + } + pline("Your combo ends."); + return 1; +} + +int +tech_cardcardcapture() +{ + struct monst *mtmp; + struct obj *otmp; + + if (!getdir((char *) 0) || !isok(u.ux + u.dx, u.uy + u.dy)) + return 0; + if (!u.dx && !u.dy) { + return 0; + } + + mtmp = m_at(u.ux + u.dx, u.uy + u.dy); + if (!mtmp) { + You("menacingly shuffle your cards!"); + return 0; + } + pline("You reach out and attempt to capture %s.", mon_nam(mtmp)); + + if (tamedog(mtmp, (struct obj *) 0) == TRUE) { + pline("%s transforms into a spell card!", Monnam(mtmp)); + otmp = mksobj_at(SCR_CREATE_MONSTER, mtmp->mx, mtmp->my, FALSE, FALSE); + otmp->corpsenm = monsndx(mtmp->data); + mongone(mtmp); + } else if (Hallucination) { + pline("Aww! It appeared to be caught!"); + } else { + pline("%s resists your encapsulation.", Monnam(mtmp)); + } + return 1; +} + #ifdef DEBUG void wiz_debug_cmd() /* in this case, allow controlled loss of techniques */ From ca3cb78e71b44bc735d298e3faaa613d1b376caf Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 15 Nov 2023 00:28:38 +0100 Subject: [PATCH 81/82] Increase cartomancer's penalty for forging cards. --- src/write.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/write.c b/src/write.c index 83abb5154..aac23ab66 100644 --- a/src/write.c +++ b/src/write.c @@ -269,7 +269,7 @@ register struct obj *pen; /* cartomancers feel guilty for counterfeiting */ if (Role_if(PM_CARTOMANCER) && paper->oclass == SCROLL_CLASS) { You("feel incredibly guilty about forging a card!"); - adjalign(-5); + adjalign(-10); } /* we're really going to write now, so calculate cost From d9b17ec07878fde34bcf3cd37929156ed25a923b Mon Sep 17 00:00:00 2001 From: Erik Lunna Date: Wed, 15 Nov 2023 10:51:32 +0100 Subject: [PATCH 82/82] Updated #invoke for Holographic Void Lily. In SpliceHack this would just summon 1-10 monsters. I have updated it to function more in line with the Cartomancer's mechanics, so now when invoked it will summon 4-12 tame spell-being monsters, similar to playing many monster summon cards at once. --- src/artifact.c | 14 +++++++++++++- src/dog.c | 11 +++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/artifact.c b/src/artifact.c index ff00eebf2..3d06f29e5 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -4123,7 +4123,19 @@ struct obj *obj; obj->age += HPasses_walls; /* Time begins after phasing ends */ break; case SUMMONING: { - create_critters(rnd(10), (struct permonst *) 0, TRUE); + /* Roughly copied from make_sphere */ + for (int i = 0; i < rn1(7, 4); i++) { + mtmp = make_helper(NON_PM, u.ux, u.uy); + if (!mtmp) { + pline("But it quickly fades away."); + break; + } else { + mtmp->mtame = 10; + /* Same lifetime as reading a spell-card */ + mtmp->msummoned = 15 + u.ulevel * 4; + mtmp->uexp = 1; + } + } break; } case SMOKE_CLOUD: { diff --git a/src/dog.c b/src/dog.c index 5e5d69e3c..4e606edec 100644 --- a/src/dog.c +++ b/src/dog.c @@ -220,14 +220,16 @@ xchar x, y; int trycnt = 100; do { - pm = &mons[mnum]; - mtmp = makemon(pm, x, y, - MM_EDOG | MM_IGNOREWATER | NO_MINVENT); + if (mnum != NON_PM) + pm = &mons[mnum]; + else + pm = rndmonst(); + mtmp = makemon(pm, x, y, MM_EDOG | MM_IGNOREWATER | NO_MINVENT); } while (!mtmp && --trycnt > 0); if (!mtmp) return (struct monst *) 0; /* genocided */ - + initedog(mtmp); u.uconduct.pets++; mtmp->msleeping = 0; @@ -239,6 +241,7 @@ xchar x, y; mtmp->weapon_check = NEED_HTH_WEAPON; (void) mon_wield_item(mtmp); } + return mtmp; }