]> granicus.if.org Git - nethack/commitdiff
"fix" #H4040 - energy vortex power drain
authorPatR <rankin@nethack.org>
Fri, 25 Dec 2015 23:00:28 +0000 (15:00 -0800)
committerPatR <rankin@nethack.org>
Fri, 25 Dec 2015 23:00:28 +0000 (15:00 -0800)
Reporter thought the fact that two different DREN cases had different
chances to inflict energy drain was an inconsistency, but it was
intentional.  Attack for DREN damage has 25% chance to drain energy,
and is never used since no monster has such an attack.  Engulf for
DREN damage has 75% chance to drain energy; energy vortices have this,
and the higher chance to be drained while engulfed was intentional.
So add comments explicitly spelling out the 25% and 75% chances.

During beta testing there was a complaint that the energy drain was
much too severe:  once hero's current energy drops to 0, excess drain
for current attack and future drains come out of max-energy instead.
That's survivable for caster-type characters with really high energy,
but drained low energy characters to 0 max energy very quickly.
I agreed with the complaint but didn't implement a fix until too late
for 3.6.0.  I've since thrown that one out and done this one instead.
Change base drain amount from 4d6 to 2d6, and weaken it more to 1d6
when energy is low or strengthen it to 3d6 when energy is high.  It
almost certainly will need further tuning.

doc/fixes36.1
src/mhitu.c
src/monst.c

index f690b1ec36ba3d510ef1299b338198b368da3d16..dec33ac71d0b6213cece29d10073bed74814b090 100644 (file)
@@ -64,6 +64,7 @@ rehumanizing after being poly'd into vampire left hero with ability to sense
        humans and elves
 Warn_of_mon wouldn't have been able to sense giant ants if any creature were
        to have that ability, caused by using 0 instead of NON_PM for 'none'
+tone down energy vortex's drain energy attack
 
 
 Platform- and/or Interface-Specific Fixes
index 998c86be1a285797fe658a5cc2f2d8e113340140..1e620dc7df152294f2c5cf312a4316484bfbb5c5 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 mhitu.c $NHDT-Date: 1450016149 2015/12/13 14:15:49 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.131 $ */
+/* NetHack 3.6 mhitu.c $NHDT-Date: 1451084422 2015/12/25 23:00:22 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.132 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -273,6 +273,26 @@ struct attack *alt_attk_buf;
         *alt_attk_buf = *attk;
         attk = alt_attk_buf;
         attk->adtyp = AD_STUN;
+
+    /* make drain-energy damage be somewhat in proportion to energy */
+    } else if (attk->adtyp == AD_DREN) {
+        int ulev = max(u.ulevel, 6);
+
+        *alt_attk_buf = *attk;
+        attk = alt_attk_buf;
+        /* 3.6.0 used 4d6 but since energy drain came out of max energy
+           once current energy was gone, that tended to have a severe
+           effect on low energy characters; it's now 2d6 with ajustments */
+        if (u.uen <= 5 * ulev && attk->damn > 1) {
+            attk->damn -= 1; /* low energy: 2d6 -> 1d6 */
+            if (u.uenmax <= 2 * ulev && attk->damd > 3)
+                attk->damd -= 3; /* very low energy: 1d6 -> 1d3 */
+        } else if (u.uen > 12 * ulev) {
+            attk->damn += 1; /* high energy: 2d6 -> 3d6 */
+            if (u.uenmax > 20 * ulev)
+                attk->damd += 3; /* very high energy: 3d6 -> 3d9 */
+            /* note: 3d9 is slightly higher than previous 4d6 */
+        }
     }
     return attk;
 }
@@ -1450,7 +1470,7 @@ register struct attack *mattk;
         break;
     case AD_DREN:
         hitmsg(mtmp, mattk);
-        if (uncancelled && !rn2(4))
+        if (uncancelled && !rn2(4)) /* 25% chance */
             drain_en(dmg);
         dmg = 0;
         break;
@@ -1840,7 +1860,7 @@ register struct attack *mattk;
         break;
     case AD_DREN:
         /* AC magic cancellation doesn't help when engulfed */
-        if (!mtmp->mcan && rn2(4))
+        if (!mtmp->mcan && rn2(4)) /* 75% chance */
             drain_en(tmp);
         tmp = 0;
         break;
index cf14f9e2916ba5dde20ea3f1d50be367e8f25847..7839b06cc6e1932e15612f0d013a25c453a54887 100644 (file)
@@ -1,4 +1,4 @@
-/* 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: 1451084423 2015/12/25 23:00:23 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.55 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 
 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)
  */
 #define MON(nam, sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, col) \
     {                                                                      \
@@ -59,37 +59,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
@@ -331,13 +331,13 @@ NEARDATA struct permonst mons[] = {
         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, HI_ZAP),
 #if 0 /* not yet implemented */
     MON("beholder", 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 +878,7 @@ NEARDATA struct permonst mons[] = {
         M2_HOSTILE | M2_NEUTER, M3_INFRAVISIBLE, CLR_CYAN),
     MON("energy vortex", 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 +1104,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("baby red 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,
@@ -1174,15 +1174,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("red dragon", 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),
@@ -1465,13 +1465,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,12 +1857,12 @@ 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
@@ -2848,26 +2848,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("Hippocrates", 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,
@@ -3000,14 +3000,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("Cyclops", S_GIANT, LVL(18, 12, 0, 0, -15), (G_NOGEN | G_UNIQ),
@@ -3126,13 +3126,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("attendant", 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 +3230,6 @@ monst_init()
 
 struct attack sa_yes[NATTK] = SEDUCTION_ATTACKS_YES;
 struct attack sa_no[NATTK] = SEDUCTION_ATTACKS_NO;
-
 #endif
 
 /*monst.c*/