OSDN Git Service

fix #38576
authorSHIRAKATA Kentaro <argrath@ub32.org>
Wed, 12 Sep 2018 12:58:00 +0000 (21:58 +0900)
committerSHIRAKATA Kentaro <argrath@ub32.org>
Wed, 12 Sep 2018 12:58:00 +0000 (21:58 +0900)
ChangeLog.j
src/monstj.c
src/objectsj.c

index 7726312..bebe914 100644 (file)
@@ -2,6 +2,7 @@
          * #wizwhere\83R\83}\83\93\83h\82Å\83N\83\89\83b\83V\83\85\82·\82é (#38569)
          * 2\83o\83C\83g\95\8e\9a\95\\8e¦\8e\9e\82É\91®\90«\95Ï\8dX\82ª\8ds\82í\82ê\82È\82¢ (#38566)
          * \90³\8bK\95\\8c»\82ª\90³\82µ\82­\93®\8dì\82µ\82È\82¢ (#38565)
+         * \89ö\95¨/\83A\83C\83e\83\80\83f\81[\83^\82ª3.6.1\82É\8dX\90V\82³\82ê\82Ä\82¢\82È\82¢ (#38576)
        * \96|\96ó\92Ç\89Á\8fC\90³
 
 Thu Jun 21 2018  Kentaro Shirakata  <argrath@ub32.org>
index a7b2673..dd6afe8 100644 (file)
@@ -1,5 +1,6 @@
-/* NetHack 3.6 monst.c $NHDT-Date: 1445556875 2015/10/22 23:34:35 $  $NHDT-Branch: master $:$NHDT-Revision: 1.53 $ */
+/* NetHack 3.6 monst.c $NHDT-Date: 1510531569 2017/11/13 00:06:09 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.59 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
+/*-Copyright (c) Michael Allison, 2006. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "config.h"
 
 void NDECL(monst_init);
 /*
- *     Entry Format:           (from permonst.h)
+ *      Entry Format:   (from permonst.h)
  *
- *     name, symbol (S_* defines),
- *     difficulty level, move rate, armor class, magic resistance,
- *     alignment, creation/geno flags (G_* defines),
- *     6 * attack structs ( type , damage-type, # dice, # sides ),
- *     weight (WT_* defines), nutritional value, extension length,
- *     sounds made (MS_* defines), physical size (MZ_* defines),
- *     resistances, resistances conferred (both MR_* defines),
- *     3 * flag bitmaps (M1_*, M2_*, and M3_* defines respectively)
- *     symbol color (C(x) macro)
+ *      name, symbol (S_* defines),
+ *      difficulty level, move rate, armor class, magic resistance,
+ *      alignment, creation/geno flags (G_* defines),
+ *      6 * attack structs ( type , damage-type, # dice, # sides ),
+ *      weight (WT_* defines), nutritional value, extension length,
+ *      sounds made (MS_* defines), physical size (MZ_* defines),
+ *      resistances, resistances conferred (both MR_* defines),
+ *      3 * flag bitmaps (M1_*, M2_*, and M3_* defines respectively)
+ *      symbol color (C(x) macro)
+ *
+ *      For AT_BREA attacks, '# sides' is ignored; 6 is used for most
+ *      damage types, 25 for sleep, not applicable for death or poison.
  */
 #define MON(nam, sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, col) \
     {                                                                      \
@@ -59,37 +63,37 @@ void NDECL(monst_init);
     }
 
 /*
- *     Rule #1:        monsters of a given class are contiguous in the
- *                     mons[] array.
+ *      Rule #1:        monsters of a given class are contiguous in the
+ *                      mons[] array.
  *
- *     Rule #2:        monsters of a given class are presented in ascending
- *                     order of strength.
+ *      Rule #2:        monsters of a given class are presented in ascending
+ *                      order of strength.
  *
- *     Rule #3:        monster frequency is included in the geno mask;
- *                     the frequency can be from 0 to 7.  0's will also
- *                     be skipped during generation.
+ *      Rule #3:        monster frequency is included in the geno mask;
+ *                      the frequency can be from 0 to 7.  0's will also
+ *                      be skipped during generation.
  *
- *     Rule #4:        monster subclasses (e.g. giants) should be kept
- *                     together, unless it violates Rule 2.  NOGEN monsters
- *                     won't violate Rule 2.
+ *      Rule #4:        monster subclasses (e.g. giants) should be kept
+ *                      together, unless it violates Rule 2.  NOGEN monsters
+ *                      won't violate Rule 2.
  *
  * Guidelines for color assignment:
  *
- *     * Use the same color for all `growth stages' of a monster (ex.
- *       little dog/big dog, baby naga/full-grown naga.
+ *      * Use the same color for all `growth stages' of a monster (ex.
+ *        little dog/big dog, baby naga/full-grown naga.
  *
- *     * Use colors given in names wherever possible. If the class has `real'
- *       members with strong color associations, use those.
+ *      * Use colors given in names wherever possible. If the class has `real'
+ *        members with strong color associations, use those.
  *
- *     * Favor `cool' colors for cold-resistant monsters, `warm' ones for
- *       fire-resistant ones.
+ *      * Favor `cool' colors for cold-resistant monsters, `warm' ones for
+ *        fire-resistant ones.
  *
- *     * Try to reserve purple (magenta) for powerful `ruler' monsters (queen
- *       bee, kobold lord, &c.).
+ *      * Try to reserve purple (magenta) for powerful `ruler' monsters (queen
+ *        bee, kobold lord, &c.).
  *
- *     * Subject to all these constraints, try to use color to make as many
- *       distinctions as the / command (that is, within a monster letter
- *       distinct names should map to distinct colors).
+ *      * Subject to all these constraints, try to use color to make as many
+ *        distinctions as the / command (that is, within a monster letter
+ *        distinct names should map to distinct colors).
  *
  * The aim in assigning colors is to be consistent enough so a player can
  * become `intuitive' about them, deducing some or all of these rules
@@ -253,7 +257,7 @@ NEARDATA struct permonst mons[] = {
         M2_NOPOLY | M2_WERE | M2_HOSTILE, M3_INFRAVISIBLE, CLR_BROWN),
     MON("\93~\98T\82Ì\8eq", S_DOG, LVL(5, 12, 4, 0, -5),
         (G_NOHELL | G_GENO | G_SGROUP | 2),
-        A(ATTK(AT_BITE, AD_PHYS, 1, 8), ATTK(AT_BREA, AD_COLD, 1, 8), NO_ATTK,
+        A(ATTK(AT_BITE, AD_PHYS, 1, 8), ATTK(AT_BREA, AD_COLD, 1, 6), NO_ATTK,
           NO_ATTK, NO_ATTK, NO_ATTK),
         SIZ(250, 200, MS_BARK, MZ_SMALL), MR_COLD, MR_COLD,
         M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, CLR_CYAN),
@@ -331,13 +335,13 @@ NEARDATA struct permonst mons[] = {
         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, HI_ZAP),
 #if 0 /* not yet implemented */
     MON("\83r\83z\83\8b\83_\81[", S_EYE,
-       LVL(6, 3, 4, 0, -10), (G_GENO | 2),
-       A(ATTK(AT_GAZE, AD_SLOW, 0, 0), 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, 2, 4), ATTK(AT_BITE, AD_PHYS, 2, 4)),
-       SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD, 0,
-       M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
-       M2_NOPOLY | M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, CLR_BROWN),
+        LVL(6, 3, 4, 0, -10), (G_GENO | 2),
+        A(ATTK(AT_GAZE, AD_SLOW, 0, 0), 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, 2, 4), ATTK(AT_BITE, AD_PHYS, 2, 4)),
+        SIZ(10, 10, MS_SILENT, MZ_SMALL), MR_COLD, 0,
+        M1_FLY | M1_BREATHLESS | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
+        M2_NOPOLY | M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, CLR_BROWN),
 #endif
     /*
      * felines
@@ -878,7 +882,7 @@ NEARDATA struct permonst mons[] = {
         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, CLR_CYAN),
     MON("\83G\83l\83\8b\83M\81[\82Ì\89Q", S_VORTEX, LVL(6, 20, 2, 30, 0),
         (G_GENO | G_NOCORPSE | 1),
-        A(ATTK(AT_ENGL, AD_ELEC, 1, 6), ATTK(AT_ENGL, AD_DREN, 4, 6),
+        A(ATTK(AT_ENGL, AD_ELEC, 1, 6), ATTK(AT_ENGL, AD_DREN, 2, 6),
           ATTK(AT_NONE, AD_ELEC, 0, 4), NO_ATTK, NO_ATTK, NO_ATTK),
         SIZ(0, 0, MS_SILENT, MZ_HUGE),
         MR_ELEC | MR_SLEEP | MR_DISINT | MR_POISON | MR_STONE, 0,
@@ -1104,12 +1108,12 @@ NEARDATA struct permonst mons[] = {
         M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, DRAGON_SILVER),
 #if 0 /* DEFERRED */
     MON("baby shimmering dragon", S_DRAGON,
-       LVL(12, 9, 2, 10, 0), G_GENO,
-       A(ATTK(AT_BITE, AD_PHYS, 2, 6),
-         NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
-       M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
-       M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, CLR_CYAN),
+        LVL(12, 9, 2, 10, 0), G_GENO,
+        A(ATTK(AT_BITE, AD_PHYS, 2, 6),
+          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
+        SIZ(1500, 500, MS_ROAR, MZ_HUGE), 0, 0,
+        M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
+        M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, CLR_CYAN),
 #endif
     MON("\90Ô\90F\83h\83\89\83S\83\93\82Ì\8eq\8b\9f", S_DRAGON, LVL(12, 9, 2, 10, 0), G_GENO,
         A(ATTK(AT_BITE, AD_PHYS, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
@@ -1174,15 +1178,15 @@ NEARDATA struct permonst mons[] = {
         0, DRAGON_SILVER),
 #if 0 /* DEFERRED */
     MON("shimmering dragon", S_DRAGON,
-       LVL(15, 9, -1, 20, 4), (G_GENO | 1),
-       A(ATTK(AT_BREA, AD_MAGM, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
-         ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
-         NO_ATTK, NO_ATTK),
-       SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), 0, 0,
-       M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
-         | M1_CARNIVORE,
-       M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
-       0, CLR_CYAN),
+        LVL(15, 9, -1, 20, 4), (G_GENO | 1),
+        A(ATTK(AT_BREA, AD_MAGM, 4, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
+          ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4),
+          NO_ATTK, NO_ATTK),
+        SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), 0, 0,
+        M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS
+          | M1_CARNIVORE,
+        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
+        0, CLR_CYAN),
 #endif
     MON("\90Ô\90F\83h\83\89\83S\83\93", S_DRAGON, LVL(15, 9, -1, 20, -4), (G_GENO | 1),
         A(ATTK(AT_BREA, AD_FIRE, 6, 6), ATTK(AT_BITE, AD_PHYS, 3, 8),
@@ -1211,8 +1215,9 @@ NEARDATA struct permonst mons[] = {
             | M1_CARNIVORE,
         M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
         0, CLR_ORANGE),
+    /* disintegration breath is actually all or nothing, not 1d255 */
     MON("\8d\95\83h\83\89\83S\83\93", S_DRAGON, LVL(15, 9, -1, 20, -6), (G_GENO | 1),
-        A(ATTK(AT_BREA, AD_DISN, 4, 10), ATTK(AT_BITE, AD_PHYS, 3, 8),
+        A(ATTK(AT_BREA, AD_DISN, 1, 255), ATTK(AT_BITE, AD_PHYS, 3, 8),
           ATTK(AT_CLAW, AD_PHYS, 1, 4), ATTK(AT_CLAW, AD_PHYS, 1, 4), NO_ATTK,
           NO_ATTK),
         SIZ(WT_DRAGON, 1500, MS_ROAR, MZ_GIGANTIC), MR_DISINT, MR_DISINT,
@@ -1465,13 +1470,13 @@ struct permonst _mons2[] = {
         CLR_ORANGE),
 #if 0 /* DEFERRED */
     MON("vorpal jabberwock", S_JABBERWOCK,
-       LVL(20, 12, -2, 50, 0), (G_GENO | 1),
-       A(ATTK(AT_BITE, AD_PHYS, 3, 10), ATTK(AT_BITE, AD_PHYS, 3, 10),
-         ATTK(AT_CLAW, AD_PHYS, 3, 10), ATTK(AT_CLAW, AD_PHYS, 3, 10),
-         NO_ATTK, NO_ATTK),
-       SIZ(1300, 600, MS_BURBLE, MZ_LARGE), 0, 0,
-       M1_ANIMAL | M1_FLY | M1_CARNIVORE,
-       M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT, M3_INFRAVISIBLE,
+        LVL(20, 12, -2, 50, 0), (G_GENO | 1),
+        A(ATTK(AT_BITE, AD_PHYS, 3, 10), ATTK(AT_BITE, AD_PHYS, 3, 10),
+          ATTK(AT_CLAW, AD_PHYS, 3, 10), ATTK(AT_CLAW, AD_PHYS, 3, 10),
+          NO_ATTK, NO_ATTK),
+        SIZ(1300, 600, MS_BURBLE, MZ_LARGE), 0, 0,
+        M1_ANIMAL | M1_FLY | M1_CARNIVORE,
+        M2_HOSTILE | M2_STRONG | M2_NASTY | M2_COLLECT, M3_INFRAVISIBLE,
         HI_LORD),
 #endif
     /*
@@ -1857,18 +1862,18 @@ struct permonst _mons2[] = {
         M3_INFRAVISIBLE, CLR_BLUE),
 #if 0 /* DEFERRED */
     MON("vampire mage", S_VAMPIRE,
-       LVL(20, 14, -4, 50, -9), (G_GENO | G_NOCORPSE | 1),
-       A(ATTK(AT_CLAW, AD_DRLI, 2, 8), ATTK(AT_BITE, AD_DRLI, 1, 8),
-         ATTK(AT_MAGC, AD_SPEL, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
-       M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
-       M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_LORD
+        LVL(20, 14, -4, 50, -9), (G_GENO | G_NOCORPSE | 1),
+        A(ATTK(AT_CLAW, AD_DRLI, 2, 8), ATTK(AT_BITE, AD_DRLI, 1, 8),
+          ATTK(AT_MAGC, AD_SPEL, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK),
+        SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
+        M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
+        M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_LORD
           | M2_MALE | M2_MAGIC | M2_SHAPESHIFTER,
         M3_INFRAVISIBLE, HI_ZAP),
 #endif
-    MON("\8bz\8c\8c\8bS\83\94\83\89\83h", S_VAMPIRE, LVL(14, 18, -3, 80, -10),
+    MON("\8bz\8c\8c\8bS\83\94\83\89\83h", S_VAMPIRE, LVL(28, 26, -6, 80, -10),
         (G_NOGEN | G_NOCORPSE | G_UNIQ),
-        A(ATTK(AT_WEAP, AD_PHYS, 1, 10), ATTK(AT_BITE, AD_DRLI, 1, 10),
+        A(ATTK(AT_WEAP, AD_PHYS, 2, 10), ATTK(AT_BITE, AD_DRLI, 1, 12),
           NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
         SIZ(WT_HUMAN, 400, MS_VAMPIRE, MZ_HUMAN), MR_SLEEP | MR_POISON, 0,
         M1_FLY | M1_BREATHLESS | M1_HUMANOID | M1_POIS | M1_REGEN,
@@ -1915,16 +1920,18 @@ struct permonst _mons2[] = {
     /*
      * Apelike beasts
      */
+    /* tameable via banana; does not grow up into ape...
+       not flagged as domestic, so no guilt penalty for eating non-pet one */
     MON("\89\8e", S_YETI, LVL(2, 12, 6, 0, 0), (G_GENO | 1),
         A(ATTK(AT_CLAW, AD_SITM, 0, 0), ATTK(AT_BITE, AD_PHYS, 1, 3), NO_ATTK,
           NO_ATTK, NO_ATTK, NO_ATTK),
         SIZ(100, 50, MS_GROWL, MZ_SMALL), 0, 0,
-        M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE, 0, M3_INFRAVISIBLE, CLR_GRAY),
+        M1_ANIMAL | M1_HUMANOID | M1_OMNIVORE, 0, M3_INFRAVISIBLE, CLR_GRAY),
     MON("\97Þ\90l\89\8e", S_YETI, LVL(4, 12, 6, 0, 0), (G_GENO | G_SGROUP | 2),
         A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
           ATTK(AT_BITE, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
         SIZ(1100, 500, MS_GROWL, MZ_LARGE), 0, 0,
-        M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE, M2_STRONG, M3_INFRAVISIBLE,
+        M1_ANIMAL | M1_HUMANOID | M1_OMNIVORE, M2_STRONG, M3_INFRAVISIBLE,
         CLR_BROWN),
     MON("\83A\83E\83\8b\83x\83A", S_YETI, LVL(5, 12, 5, 0, 0), (G_GENO | 3),
         A(ATTK(AT_CLAW, AD_PHYS, 1, 6), ATTK(AT_CLAW, AD_PHYS, 1, 6),
@@ -2355,8 +2362,8 @@ struct permonst _mons2[] = {
         M1_HUMANOID | M1_POIS | M1_SWIM,
         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_COLLECT,
         M3_INFRAVISIBLE | M3_INFRAVISION, CLR_BLUE),
-/* standard demons & devils
- */
+    /* standard demons & devils
    */
 #define SEDUCTION_ATTACKS_YES                                     \
     A(ATTK(AT_BITE, AD_SSEX, 0, 0), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
       ATTK(AT_CLAW, AD_PHYS, 1, 3), NO_ATTK, NO_ATTK, NO_ATTK)
@@ -2381,8 +2388,8 @@ struct permonst _mons2[] = {
         MR_FIRE | MR_POISON, 0, M1_HUMANOID | M1_FLY | M1_POIS,
         M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_MALE,
         M3_INFRAVISIBLE | M3_INFRAVISION, CLR_GRAY),
-    /* Used by AD&D for a type of demon, originally one of the Furies */
-    /* and spelled this way */
+    /* Used by AD&D for a type of demon, originally one of the Furies
+       and spelled this way */
     MON("\83C\83\8a\83j\83X", S_DEMON, LVL(7, 12, 2, 30, 10),
         (G_HELL | G_NOCORPSE | G_SGROUP | 2),
         A(ATTK(AT_WEAP, AD_DRST, 2, 4), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
@@ -2553,7 +2560,8 @@ struct permonst _mons2[] = {
         M2_NOPOLY | M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY
             | M2_PRINCE | M2_MALE,
         M3_WANTSAMUL | M3_INFRAVISIBLE | M3_INFRAVISION, HI_LORD),
-    /* Riders -- the Four Horsemen of the Apocalypse ("War" == player)
+    /* Riders -- the Four Horsemen of the Apocalypse ("War" == player);
+     * depicted with '&' but do not have M2_DEMON set.
      */
     MON("\83f\83X", S_DEMON, LVL(30, 12, -5, 100, 0), (G_UNIQ | G_NOGEN),
         A(ATTK(AT_TUCH, AD_DETH, 8, 8), ATTK(AT_TUCH, AD_DETH, 8, 8), NO_ATTK,
@@ -2579,8 +2587,8 @@ struct permonst _mons2[] = {
         M1_FLY | M1_HUMANOID | M1_REGEN | M1_SEE_INVIS | M1_TPORT_CNTRL,
         M2_NOPOLY | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY,
         M3_INFRAVISIBLE | M3_INFRAVISION | M3_DISPLACES, HI_LORD),
-/* other demons
- */
+    /* other demons
    */
 #ifdef MAIL
     MON("\83\81\83C\83\8b\83f\81[\83\82\83\93", S_DEMON, LVL(56, 24, 10, 127, 0),
         (G_NOGEN | G_NOCORPSE),
@@ -2697,14 +2705,12 @@ struct permonst _mons2[] = {
 
     /*
      * dummy monster needed for visual interface
-     */
-    /* (marking it unique prevents figurines)
+     * (marking it unique prevents figurines)
      */
     MON("\83\8d\83\93\83O\83\8f\81[\83\80\82Ì\90K\94ö", S_WORM_TAIL, LVL(0, 0, 0, 0, 0),
         (G_NOGEN | G_NOCORPSE | G_UNIQ),
         A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
         SIZ(0, 0, 0, 0), 0, 0, 0L, M2_NOPOLY, 0, CLR_BROWN),
-
     /* Note:
      * Worm tail must be between the normal monsters and the special
      * quest & pseudo-character ones because an optimization in the
@@ -2848,26 +2854,26 @@ struct permonst _mons2[] = {
             | M2_COLLECT | M2_MAGIC,
         M3_CLOSE | M3_INFRAVISIBLE, HI_LORD),
 #if 0 /* OBSOLETE */
-       /* Two for elves - one of each sex.
-        */
+    /* Two for elves - one of each sex.
+     */
     MON("Earendil", S_HUMAN,
-       LVL(20, 12, 0, 50, -20), (G_NOGEN | G_UNIQ),
-       A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
-         NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
-       M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
-       M2_NOPOLY | M2_ELF | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG
+        LVL(20, 12, 0, 50, -20), (G_NOGEN | G_UNIQ),
+        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
+          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
+        SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+        M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
+        M2_NOPOLY | M2_ELF | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG
           | M2_MALE | M2_COLLECT | M2_MAGIC,
-       M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, HI_LORD),
+        M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, HI_LORD),
     MON("Elwing", S_HUMAN,
-       LVL(20, 12, 0, 50, -20), (G_NOGEN | G_UNIQ),
-       A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
-         NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
-       M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
-       M2_NOPOLY | M2_ELF | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG
+        LVL(20, 12, 0, 50, -20), (G_NOGEN | G_UNIQ),
+        A(ATTK(AT_WEAP, AD_PHYS, 1, 8),
+          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
+        SIZ(WT_ELF, 350, MS_LEADER, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+        M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
+        M2_NOPOLY | M2_ELF | M2_HUMAN | M2_PNAME | M2_PEACEFUL | M2_STRONG
           | M2_FEMALE | M2_COLLECT | M2_MAGIC,
-       M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, HI_LORD),
+        M3_CLOSE | M3_INFRAVISION | M3_INFRAVISIBLE, HI_LORD),
 #endif
     MON("\83q\83|\83N\83\89\83e\83X", S_HUMAN, LVL(20, 12, 0, 40, 0), (G_NOGEN | G_UNIQ),
         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
@@ -2986,7 +2992,7 @@ struct permonst _mons2[] = {
      */
     MON("\83N\83\8d\83}\83e\83B\83b\83N\81E\83h\83\89\83S\83\93", S_DRAGON, LVL(16, 12, 0, 30, -14),
         (G_NOGEN | G_UNIQ),
-        A(ATTK(AT_BREA, AD_RBRE, 6, 8), ATTK(AT_MAGC, AD_SPEL, 0, 0),
+        A(ATTK(AT_BREA, AD_RBRE, 6, 6), ATTK(AT_MAGC, AD_SPEL, 0, 0),
           ATTK(AT_CLAW, AD_SAMU, 2, 8), ATTK(AT_BITE, AD_PHYS, 4, 8),
           ATTK(AT_BITE, AD_PHYS, 4, 8), ATTK(AT_STNG, AD_PHYS, 1, 6)),
         SIZ(WT_DRAGON, 1700, MS_NEMESIS, MZ_GIGANTIC),
@@ -3000,14 +3006,14 @@ struct permonst _mons2[] = {
         M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISIBLE, HI_LORD),
 #if 0 /* OBSOLETE */
     MON("Goblin King", S_ORC,
-       LVL(15, 12, 10, 0, -15), (G_NOGEN | G_UNIQ),
-       A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
-         ATTK(AT_CLAW, AD_SAMU, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(750, 350, MS_NEMESIS, MZ_HUMAN), 0, 0,
-       M1_HUMANOID | M1_OMNIVORE,
-       M2_NOPOLY | M2_ORC | M2_HOSTILE | M2_STRONG | M2_STALK | M2_NASTY
+        LVL(15, 12, 10, 0, -15), (G_NOGEN | G_UNIQ),
+        A(ATTK(AT_WEAP, AD_PHYS, 2, 6), ATTK(AT_WEAP, AD_PHYS, 2, 6),
+          ATTK(AT_CLAW, AD_SAMU, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK),
+        SIZ(750, 350, MS_NEMESIS, MZ_HUMAN), 0, 0,
+        M1_HUMANOID | M1_OMNIVORE,
+        M2_NOPOLY | M2_ORC | M2_HOSTILE | M2_STRONG | M2_STALK | M2_NASTY
           | M2_MALE | M2_GREEDY | M2_JEWELS | M2_COLLECT | M2_MAGIC,
-       M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
+        M3_WANTSARTI | M3_WAITFORU | M3_INFRAVISION | M3_INFRAVISIBLE,
         HI_LORD),
 #endif
     MON("\83T\83C\83N\83\8d\83v\83X", S_GIANT, LVL(18, 12, 0, 0, -15), (G_NOGEN | G_UNIQ),
@@ -3126,13 +3132,13 @@ struct permonst _mons2[] = {
         M3_INFRAVISIBLE, HI_DOMESTIC),
 #if 0 /* OBSOLETE */
     MON("High-elf", S_HUMAN,
-       LVL(5, 12, 10, 10, -7), G_NOGEN,
-       A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_MAGC, AD_CLRC, 0, 0),
-         NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
-       SIZ(WT_ELF, 350, MS_GUARDIAN, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
-       M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
-       M2_NOPOLY | M2_ELF | M2_PEACEFUL | M2_COLLECT,
-       M3_INFRAVISION | M3_INFRAVISIBLE, HI_DOMESTIC),
+        LVL(5, 12, 10, 10, -7), G_NOGEN,
+        A(ATTK(AT_WEAP, AD_PHYS, 2, 4), ATTK(AT_MAGC, AD_CLRC, 0, 0),
+          NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
+        SIZ(WT_ELF, 350, MS_GUARDIAN, MZ_HUMAN), MR_SLEEP, MR_SLEEP,
+        M1_HUMANOID | M1_SEE_INVIS | M1_OMNIVORE,
+        M2_NOPOLY | M2_ELF | M2_PEACEFUL | M2_COLLECT,
+        M3_INFRAVISION | M3_INFRAVISIBLE, HI_DOMESTIC),
 #endif
     MON("\90\8f\8ds\88õ", S_HUMAN, LVL(5, 12, 10, 10, 3), G_NOGEN,
         A(ATTK(AT_WEAP, AD_PHYS, 1, 6), NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK,
@@ -3230,7 +3236,6 @@ monst_init()
 
 struct attack sa_yes[NATTK] = SEDUCTION_ATTACKS_YES;
 struct attack sa_no[NATTK] = SEDUCTION_ATTACKS_NO;
-
 #endif
 
 /*monst.c*/
index 0446ec2..073d67f 100644 (file)
@@ -984,7 +984,7 @@ SPELL("freeze sphere",    "
 SPELL("\94\92\8e\86\82Ì\96\82\96@\8f\91", "\90^\82Á\94\92\82È\96\82\96@\8f\91", P_NONE, 18, 0, 0, 0, 0, HI_PAPER),
 /* tribute book for 3.6 */
 OBJECT(OBJ("\8f¬\90à", "\83y\81[\83p\81[\83o\83b\83N\82Ì\96\82\96@\8f\91"),
-       BITS(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, HI_PAPER),
+       BITS(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, PAPER),
        0, SPBOOK_CLASS, 0, 0, 0, 20, 0, 0, 0, 1, 20, CLR_BRIGHT_BLUE),
 /* a special, one of a kind, spellbook */
 OBJECT(OBJ("\8e\80\8eÒ\82Ì\8f\91", "\83p\83s\83\8b\83X\82Ì\96\82\96@\8f\91"),