Merge commit 'nc/master' into temp
authorMark Wooding <mdw@distorted.org.uk>
Sat, 12 May 2007 23:03:44 +0000 (00:03 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 12 May 2007 23:03:44 +0000 (00:03 +0100)
* commit 'nc/master':
  Updates

Conflicts:

dice.lisp
monsters.tex
spells.tex
tables.cls
treasure.tex

1  2 
dice.lisp
monsters.tex
spells.tex
treasure.tex

diff --cc dice.lisp
+++ b/dice.lisp
                           collect n
                           collect `(lambda () ,@clause)))))
  
- (defconstant druid-spells
-   #((detect-danger faerie-fire locate predict-weather)
-     (heat-metal obscure produce-fire warp-wood)
-     (call-lightning hold-animal protection-from-poison water-breathing)
-     (control-temperature-10-ft-radius plant-door protection-from-lightning
-      summon-animals)
-     (anti-plant-shell control-winds dissolve pass-plant)
-     (anti-animal-shell summon-weather transport-through-plants turn-wood)
-     (creeping-doom metal-to-wood summon-elemental weather-control)))
++(defmacro pick-matching ((form &key) &body clauses)
++  (let ((formtemp (gensym "FORM")))
++    `(let ((,formtemp ,form))
++       (pick ,@(loop for (prob assertion . code) in clauses
++                   collect `((if (assertion-match-p ,formtemp ',assertion)
++                                 ,prob
++                                 0)
++                             ,@code))))))
 +
  (defconstant cleric-spells
    #((cure-light-wounds detect-evil detect-magic light protection-from-evil
       purify-food-and-water remove-fear resist-cold)
        (decf len)
        (setf (aref copy j) (aref copy len))))))
  
 -(defmacro pick-matching ((form &key) &body clauses)
 -  (let ((formtemp (gensym "FORM")))
 -    `(let ((,formtemp ,form))
 -       (pick ,@(loop for (prob assertion . code) in clauses
 -                   collect `((if (assertion-match-p ,formtemp ',assertion)
 -                                 ,prob
 -                                 0)
 -                             ,@code))))))
 -
  (defun magic-item (form)
-   (labels ((potion (&key recursivep)
-            (pick (2 `(:potion agility))
-                  (1 `(:potion animal-control))
-                  (3 `(:potion antidote))
-                  (2 `(:potion blending))
-                  (2 `(:potion bug-repellent))
-                  (2 `(:potion clairaudience))
-                  (2 `(:potion clairvoyance))
-                  (2 `(:potion climbing))
-                  (2 `(:potion defence :bonus ,(choose 3 1
-                                                        2 2
-                                                        2 3
-                                                        2 4
-                                                        1 5)))
-                  ((if recursivep 0 4)
-                   `(:potion delusion
-                     :fakes ,@(cdr (potion :recursivep t))))
-                  (2 `(:potion diminution))
-                  (1 `(:potion ,(choose 35 'white-dragon-control
-                                        15 'crystal-dragon-control
-                                        35 'black-dragon-control
-                                        15 'onyx-dragon-control
-                                        28 'green-dragon-control
-                                        12 'jade-dragon-control
-                                        21 'blue-dragon-control
-                                         9 'sapphire-dragon-control
-                                        14 'red-dragon-control
-                                         6 'ruby-dragon-control
-                                         7 'gold-dragon-control
-                                         3 'amber-dragon-control)))
-                  (2 `(:potion dreamspeech))
-                  (1 `(:potion elasicity))
-                  (2 `(:potion ,(choose-uniformly 'air-form
-                                                  'water-form
-                                                  'earth-form
-                                                  'fire-form)))
-                  (2 `(:potion esp))
-                  (1 `(:potion ethereality))
-                  (3 `(:potion fire-resistance))
-                  (3 `(:potion flying))
-                  (2 `(:potion fortitude))
-                  (1 `(:potion freedom))
-                  (3 `(:potion gaseous-form))
-                  (1 `(:potion ,(choose 5 'hill-giant-control
-                                        5 'stone-giant-control
-                                        4 'frost-giant-control
-                                        2 'fire-giant-control
-                                        1 'mountain-giant-control
-                                        1 'sea-giant-control
-                                        1 'cloud-giant-control
-                                        1 'storm-giant-control)))
-                  (3 `(:potion giant-strength))
-                  (2 `(:potion growth))
-                  (6 `(:potion healing))
-                  (3 `(:potion heroism))
-                  (1 `(:potion human-control))
-                  (3 `(:potion invisibility))
-                  (2 `(:potion invulnerability))
-                  (2 `(:potion levitation))
-                  (2 `(:potion longevity))
-                  (1 `(:potion luck))
-                  (1 `(:potion merging))
-                  (2 `(:potion plant-control))
-                  (3 `(:potion poison))
-                  (3 `(:potion polymorph-self))
-                  (2 `(:potion sight))
-                  (2 `(:potion speech))
-                  (4 `(:potion speed))
-                  (2 `(:potion strength))
-                  (3 `(:potion super-healing))
-                  (3 `(:potion swimming))
-                  (1 `(:potion treasure-finding))
-                  (1 `(:potion undead-control))
-                  (2 `(:potion water-breathing))))
+   (labels ((cursedp (&optional (prob 10))
+            (cond ((assertion-match-p form '(:cursed :unspecified))
+                   (zerop (random prob)))
+                  ((assertion-match-p form '(:cursed nil))
+                   nil)
+                  (t t)))
+          (potion (&key recursivep)
+            (pick-matching (form)
+              (2 (:cursed nil) `(:potion agility))
+              (1 (:cursed nil) `(:potion animal-control))
+              (3 (:cursed nil) `(:potion antidote))
+              (2 (:cursed nil) `(:potion blending))
+              (2 (:cursed nil) `(:potion bug-repellent))
+              (2 (:cursed nil) `(:potion clairaudience))
+              (2 (:cursed nil) `(:potion clairvoyance))
+              (2 (:cursed nil) `(:potion climbing))
+              (2 (:cursed nil) `(:potion defence :bonus ,(choose 3 1
+                                                                 2 2
+                                                                 2 3
+                                                                 2 4
+                                                                 1 5)))
+              ((if recursivep 0 4) (:cursed t)
+               (setf form :any)
+               `(:potion delusion
+                 :fakes ,@(cdr (potion :recursivep t))))
+              (2 (:cursed nil) `(:potion diminution))
+              (1 (:cursed nil) `(:potion ,(choose 35 'white-dragon-control
+                                                  15 'crystal-dragon-control
+                                                  35 'black-dragon-control
+                                                  15 'onyx-dragon-control
+                                                  28 'green-dragon-control
+                                                  12 'jade-dragon-control
+                                                  21 'blue-dragon-control
+                                                  9 'sapphire-dragon-control
+                                                  14 'red-dragon-control
+                                                  6 'ruby-dragon-control
+                                                  7 'gold-dragon-control
+                                                  3 'amber-dragon-control)))
+              (2 (:cursed nil) `(:potion dreamspeech))
+              (1 (:cursed nil) `(:potion elasicity))
+              (2 (:cursed nil) `(:potion ,(choose-uniformly 'air-form
+                                                            'water-form
+                                                            'earth-form
+                                                            'fire-form)))
+              (2 (:cursed nil) `(:potion esp))
+              (1 (:cursed nil) `(:potion ethereality))
+              (3 (:cursed nil) `(:potion fire-resistance))
+              (3 (:cursed nil) `(:potion flying))
+              (2 (:cursed nil) `(:potion fortitude))
+              (1 (:cursed nil) `(:potion freedom))
+              (3 (:cursed nil) `(:potion gaseous-form))
+              (1 (:cursed nil) `(:potion ,(choose 5 'hill-giant-control
+                                                  5 'stone-giant-control
+                                                  4 'frost-giant-control
+                                                  2 'fire-giant-control
+                                                  1 'mountain-giant-control
+                                                  1 'sea-giant-control
+                                                  1 'cloud-giant-control
+                                                  1 'storm-giant-control)))
+              (3 (:cursed nil) `(:potion giant-strength))
+              (2 (:cursed nil) `(:potion growth))
+              (6 (:cursed nil) `(:potion healing))
+              (3 (:cursed nil) `(:potion heroism))
+              (1 (:cursed nil) `(:potion human-control))
+              (3 (:cursed nil) `(:potion invisibility))
+              (2 (:cursed nil) `(:potion invulnerability))
+              (2 (:cursed nil) `(:potion levitation))
+              (2 (:cursed nil) `(:potion longevity))
+              (1 (:cursed nil) `(:potion luck))
+              (1 (:cursed nil) `(:potion merging))
+              (2 (:cursed nil) `(:potion plant-control))
+              (3 (:cursed t) `(:potion poison))
+              (3 (:cursed nil) `(:potion polymorph-self))
+              (2 (:cursed nil) `(:potion sight))
+              (2 (:cursed nil) `(:potion speech))
+              (4 (:cursed nil) `(:potion speed))
+              (2 (:cursed nil) `(:potion strength))
+              (3 (:cursed nil) `(:potion super-healing))
+              (3 (:cursed nil) `(:potion swimming))
+              (1 (:cursed nil) `(:potion treasure-finding))
+              (1 (:cursed nil) `(:potion undead-control))
+              (2 (:cursed nil) `(:potion water-breathing))))
           (scroll ()
-            (pick (3 `(:scroll communication))
-                  (2 `(:scroll creation))
-                  (8 `(:scroll curse))
-                  (1 (multiple-value-bind
-                         (spell caster level)
-                         (random-spell)
-                       (declare (ignore level))
-                       `(:scroll delay :caster ,caster :spells (,spell))))
-                  (3 `(:scroll equipment
-                       :items ,(choose-distinct-items 6
-                                                      '(grappling-hook
-                                                        hammer
-                                                        iron-spikes
-                                                        lantern
-                                                        mirror
-                                                        wooden-pole
-                                                        rope
-                                                        saddle
-                                                        backpack
-                                                        saddle-bags
-                                                        stakes-and-mallet
-                                                        wolfsbane))))
-                  (2 `(:scroll illumination))
-                  (2 `(:scroll mages))
-                  (4 `(:map normal-treasure))
-                  (3 `(:map magical-treasure))
-                  (2 `(:map combined-treasure))
-                  (1 `(:map special-treasure))
-                  (3 `(:scroll mapping))
-                  (2 `(:scroll portals))
-                  (6 `(:scroll protection-from-elementals))
-                  (8 `(:scroll protection-from-lycanthropes))
-                  (4 `(:scroll protection-from-magic))
-                  (7 `(:scroll protection-from-undead))
-                  (2 `(:scroll questioning))
-                  (1 (multiple-value-bind
-                         (spell caster level)
-                         (random-spell)
-                       `(:scroll repetition
-                         :caster ,caster
-                         :level ,level
-                         :spells (,spell))))
-                  (2 `(:scroll seeing))
-                  (2 `(:scroll shelter))
-                  (3 `(:scroll spell-catching :max-level ,(choose 4 1
-                                                                  3 2
-                                                                  2 3
-                                                                  1 8)))
-                  (25 (let ((caster (spell-caster-type))
-                            (spells (choose 50 1  33 2  17 3)))
-                        `(:scroll spell
-                          :caster ,caster
-                          :spells ,(loop repeat spells
-                                         collect (random-spell caster)))))
-                  (2 `(:scroll trapping))
-                  (2 `(:scroll truth))))
+            (pick-matching (form)
+              (3 (:cursed nil) `(:scroll communication))
+              (2 (:cursed nil) `(:scroll creation))
+              (8 (:cursed t) `(:scroll curse))
+              (1 (:user (:cleric :druid :magic-user :elf :thief :paladin)
+                  :cursed nil)
+                 (multiple-value-bind
+                     (spell caster level)
+                     (random-spell (spell-caster-type form))
+                   (declare (ignore level))
+                   `(:scroll delay :caster ,caster :spells (,spell))))
+              (3 (:cursed nil)
+                 `(:scroll equipment
+                   :items ,(choose-distinct-items 6
+                                                  '(grappling-hook
+                                                    hammer
+                                                    iron-spikes
+                                                    lantern
+                                                    mirror
+                                                    wooden-pole
+                                                    rope
+                                                    saddle
+                                                    backpack
+                                                    saddle-bags
+                                                    stakes-and-mallet
+                                                    wolfsbane))))
+              (2 (:cursed nil) `(:scroll illumination))
+              (2 (:cursed nil :user (:magic-user :cleric :druid :elf))
+                 `(:scroll mages))
+              (4 (:cursed nil) `(:map normal-treasure))
+              (3 (:cursed nil) `(:map magical-treasure))
+              (2 (:cursed nil) `(:map combined-treasure))
+              (1 (:cursed nil) `(:map special-treasure))
+              (3 (:cursed nil) `(:scroll mapping))
+              (2 (:cursed nil) `(:scroll portals))
+              (6 (:cursed nil) `(:scroll protection-from-elementals))
+              (8 (:cursed nil) `(:scroll protection-from-lycanthropes))
+              (4 (:cursed nil) `(:scroll protection-from-magic))
+              (7 (:cursed nil) `(:scroll protection-from-undead))
+              (2 (:cursed nil) `(:scroll questioning))
+              (1 (:cursed nil
+                  :user (:cleric :druid :magic-user :elf :thief :paladin))
+                 (multiple-value-bind
+                     (spell caster level)
+                     (random-spell (spell-caster-type form))
+                   `(:scroll repetition
+                     :caster ,caster
+                     :level ,level
+                     :spells (,spell))))
+              (2 (:cursed nil) `(:scroll seeing))
+              (2 (:cursed nil) `(:scroll shelter))
+              (3 (:cursed nil)
+                 `(:scroll spell-catching :max-level ,(choose 4 1
+                                                              3 2
+                                                              2 3
+                                                              1 8)))
+              (25 (:cursed nil
+                   :user (:cleric :druid :magic-user :elf :thief :paladin))
+                  (let ((caster (spell-caster-type form))
+                        (spells (choose 50 1  33 2  17 3)))
+                    `(:scroll spell
+                      :caster ,caster
+                      :spells ,(loop repeat spells
+                                     collect (random-spell caster)))))
+              (2 (:cursed nil) `(:scroll trapping))
+              (2 (:cursed nil) `(:scroll truth))))
           (wand-charges () (d 10 3))
           (staff-charges () (d 20 2))
           (wandlike ()
                 ((a) (let* ((bonus (weapon-bonus 'a))
                             (cursedp (zerop (random 10)))
                             (talent (and (percentp (* 5 (- 7 bonus)))
--                                        (choose 4 'biting
--                                                5 'blinking
--                                                5 'charming
--                                                7 'climbing
--                                                10 'curing
--                                                3 'disarming
--                                                4 'dispelling
--                                                7 'flying
--                                                7 'lightning
--                                                5 'penetrating
--                                                4 'refilling
--                                                6 'screaming
--                                                5 'seeking
--                                                4 'sinking
--                                                2 'slaying
--                                                7 'speaking
--                                                4 'stunning
--                                                2 'teleporting
--                                                5 'transporting
--                                                4 'wounding)))
++                                        (pick (4 'biting)
++                                              (5 'blinking)
++                                              (5 'charming)
++                                              (7 'climbing)
++                                              (10 'curing)
++                                              (3 'disarming)
++                                              (4 'dispelling)
++                                              (7 'flying)
++                                              (7 'lightning)
++                                              (5 'penetrating)
++                                              (4 'refilling)
++                                              (6 'screaming)
++                                              (5 'seeking)
++                                              (4 'sinking)
++                                              (2 `(slaying
++                                                   :opponent ,(opponent)))
++                                              (7 'speaking)
++                                              (4 'stunning)
++                                              (2 'teleporting)
++                                              (5 'transporting)
++                                              (4 'wounding))))
                             (number (ecase bonus
                                       ((1) (d 10 2))
                                       ((2) (d 8 2))
diff --cc monsters.tex
Simple merge
diff --cc spells.tex
@@@ -516,7 -515,7 +517,14 @@@ Water springs from ground or wall.  Wat
  Heals $\d{2d6} + 2$\,hp.  Reverse \emph{cause serious wounds}: causes damage.
  
  \spell{Dispel magic}{$120'$, P, $20'$ cube}
--Destroys spells in area; fails $L' - L$ in 20.  FIXME touch dispel
++Destroys spells in area; fails $L' - L$ in 20.  Also \emph{touch dispel} (T,
++P, 1 spell effect): must be used within 1T, cannot cast other spells until
++used; nonmagical containers double effective level of contained items, max
++distance to item $5'$, random selection between contained items; item levels
++and effects are: potions (6, destroyed), scroll (as level needed to cast,
++destroyed), wand or staff (12; drains $L$ charges), misc (36 or as maker,
++drains $L$ charges or deactivated for 1d10 rounds); other permanent (18,
++deactivated for 1d10 rounds).
  
  \spell{Neutralize poison*}{T, P, 1 creature/container/object}
  Makes poison harmless; revives victim killed by poison in previous 10
@@@ -941,10 -941,11 +950,18 @@@ turn
  
  \spell{Create air}{$10'$, $6L$T, $20'$ cube of air}
  Cast on area to move effect with area; cast on person to allow breathing (and
- flight) in hostile environments.
+ flight) in hostile environments (e.g., under water, in poison gas).  Cannot
+ negate effects of breath weapon.
  
  \spell{Dispel magic}{$120'$, P, $20'$ cube}
--Destroys spells in area; fails $L' - L$ in 20.  FIXME touch dispel
++Destroys spells in area; fails $L' - L$ in 20.  Also \emph{touch dispel} (T,
++P, 1 spell effect): must be used within 1T, cannot cast other spells until
++used; nonmagical containers double effective level of contained items, max
++distance to item $5'$, random selection between contained items; item levels
++and effects are: potions (6, destroyed), scroll (as level needed to cast,
++destroyed), wand or staff (12; drains $L$ charges), misc (36 or as maker,
++drains $L$ charges or deactivated for 1d10 rounds); other permanent (18,
++deactivated for 1d10 rounds).
  
  \spell{Fire ball}{$240'$, I, $40'\phi$}
  Causes $L$d6 damage to all in effect (max 20d6, SvS for half damage).
@@@ -1190,7 -1191,7 +1207,7 @@@ at unfinished ends.  Casting time up t
  \emph{stoneformed} objects.  Final casting to `lock' item down.  Can be used
  to create transparent and translucent stones.
  
--\spell{Wall of iron}{$120'$, P, 500\,sq,ft}
++\spell{Wall of iron}{$120'$, P, 500\,sq\,ft}
  Creates a $2'$ thick vertical wall; must be vertical and supported.  When
  toppled, cases 10d10 damage to anyone underneath.  Wall has hp equal to the
  caster.
@@@ -1268,8 -1269,8 +1285,8 @@@ at the time, the caster will know who a
  not need to be on the same plane of existence.
  
  \spell{Sword}{$30'$, $L$R}
--Sword does 1d10 damage against any opponent in range.  Caster must
--concentrate for sword to attack.
++Sword does 1d10 damage against any opponent in range; two attacks per round;
++hit rolls as caster.  Caster must concentrate for sword to attack.
  
  \spell{Teleport any object}{T, I, 1 500\,cn object}
  Teleports an object, with normal chances of error.  Unwilling creature or
diff --cc treasure.tex
  \end{tabular}
  \end{set}
  
- \sect{Magical items}
- \begin{multicols}{2}
+ \begin{multicols}{2}[\sect{Magical items}]
 -%%\twocolumn[\sect{Magical items}\medskip]
 -
  \raggedright
  
  \subsect{Potions}
@@@ -1245,6 -1237,591 +1235,591 @@@ Usually 3d10 charges.  Treat as 8th lev
  \item[Inertia] Spear $+3$.  Stops or releases on command; stores momentum
    while stopped.
  
 -  spells.
+ \item[Parrying] Rod $+5$ (does $\d{1d8} + 5$ damage, no $\delta S$); may
+   \emph{parry} attacks ($+5$ to AC in mel\'ee).
+ \item[Victory] Combat Results roll biased by $+25$; combat results difference
+   capped at 100.
+ \item[Weaponry] Rod $+5$; may split into two $+2$ rods which may each split
+   into two $+1$ rods.  Cannot divide by accident; easily reassembled.  All
+   rods do $\d{1d8} + \delta G$ damage (no $\delta S$).
+ \item[Wyrm] Rod $+5$ (does $\d{1d8} + 5$ damage, no $\delta S$).  On command,
+   once per day, changes into small dragon (d10: 1--5 10 gold, 6--8 blue,
+   9--10 black) with 30\,hp, harmed only by magic; may be magically healed.
+ \end{description}
+ \subsect{Rings}
+ Maximum one ring per hand.
+ \begin{description}
+ \item[Animal control] Command 1d6 normal or one giant animal; no save;
+   requires concentration; animals may flee or attack afterwards.  Usable once
+   per turn.
+ \item[Delusion] Believed to be some other kind of ring.
+ \item[Djinni summoning] Summon djinni to serve for one day.  Usable once per
+   week.
+ \item[Ear] Worn as earring.  Placed against surface; user hears sounds within
+   $60'$ of surface.  Usable three times per day.
+ \item[Elemental adaptation] Permits vision and breathing on elemental plane.
+ \item[Fire resistance] Withstand normal fire; $+2$ to save against fire and
+   damage biased by $-1$ per die.
+ \item[Holiness] Worn during meditation for spells; gain 1 spell each of
+   levels 1--3.  Cleric gains $+1$ on Turning rolls.
+ \item[Human control] Control up to 6HD (NM is $\tfrac{1}{2}$), similar to
+   \emph{charm person}.  Lasts until cancelled, ring removed, or charm removed
+   by \emph{dispel magic} or \emph{remove charm}.
+ \item[Invisibility] Wearer becomes invisible (with items carried) while ring
+   worn; becomes visible if attacking or casting spells.  Usable once per
+   turn; no duration limit.
+ \item[Life protection] Negates 1d6 energy drain attacks.  At zero, becomes
+   \emph{ring of protection $+1$}; at $-1$, disintegrates.
+ \item[Memory] Recall one spell cast within 1 turn.  Usable once per day.
+ \item[Plant control] Control plants (and plantlike monsters) in $30'$ square
+   within $60'$; plants can entangle but not damage.  Requires concentration.
+ \item[Protection] Bonus to AC and saving throws.  A \emph{ring of protection
+     $+1$, 5$'$ radius} applies to all within area.
+ \item[Quickness] Move and attack at double speed for one turn.  Usable once
+   per day.
+ \item[Regeneration] Regenerates 1\,hp per turn; fingers regrow in 24 hours,
+   limbs in 1 week.  Cannot regenerate fire or acid damage.  Will revive dead
+   characters.
+ \item[Remedies] Once per day, \emph{cure blindness}, \emph{cure disease},
+   \emph{remove curse} or \emph{neutralize poison}, as C25.
+ \item[Safety] Can retrospectively make saving throws; works 1d4 times and
+   disintegrates.
+ \item[Seeing] Can see all hidden, invisible and Ethereal objects within
+   $120'$, in their true forms, undisguised; experience and power (level/HD)
+   and basic character traits (alignment-ish) detected.  Duration 3 turns;
+   usable once per day.
+ \item[Spell eating] As \emph{ring of spell turning}, but `eats' user's memory
+   of spells after first one cast.  A \emph{remove curse} from C25 allows
+   removal of ring; from C36 turns it into a \emph{ring of spell turning}.
+ \item[Spell storing] Contains 1d6 spells; wearer knows spells and effects.
+   Spells replaced by casting at ring.  About 20\% of rings contain cleric
++  spells.  Effects dispelled as M5 or C8.
+ \item[Spell turning] Reflects 2d6 spells back to caster per day.
+ \item[Survival] Contains $\d{1d\%} + 100$ charges; one charge for survival
+   without food or water for 24 hours, or without air for 1 hour; turns black
+   when 5 charges left.
+ \item[Telekinesis] Move inanimate objects of up to 2000\,cn by concentration,
+   for distance of $50'$.
+ \item[Truth] Detects lies, three times per day.  Ring informs wearer of power
+   telepathically.
+ \item[Truthfulness] Ring informs wearer it is \emph{ring of truth}; when
+   activated, wearer cannot lie (or evade).  A \emph{remove curse} by C26
+   allows removal.
+ \item[Truthlessness] Ring informs wearer it is \emph{ring of truth}; when
+   activated, wearer cannot tell the truth.  A \emph{remove curse} by C26
+   allows removal.
+ \item[Water walking] Allows walking on any body of water without sinking.
+ \item[Weakness] Strength becomes 3 within 1d6 rounds; \emph{remove curse}
+   allows removal.
+ \item[Wishes] Grants 1--4 wishes (1d10: 1--4 1, 5--7 2, 8--9 3, 10 4).
+ \item[X-ray vision] See $30'$ through stone walls (or $60'$ through wood,
+   cloth or water) by concentrating, detecting traps and secret doors; blocked
+   by gold or lead; inspect $10' \times 10'$ area per turn.  Usable once per
+   hour.
+ \end{description}
+ \subsect{Miscellaneous items}
+ \begin{description}
+ \item[Amulet of protection from crystal balls and ESP] Wearer cannot be spied
+   upon by a crystal ball or any form of \emph{ESP}.
+ \item[Bag of devouring] Looks like small sack.  Items in the bag are lost
+   forever after $\d{1d6} + 6$ turns.
+ \item[Bag of holding] Looks like small sack.  Holds up to 10\,000\,cn of $10'
+   \times 5' \times 3'$ items; weighs only 600\,cn when full.
+ \item[Boat, undersea] Looks like riverboat; AC4, 40 hull points.  Obeys
+   commands to start, stop, turn, submerge, level off, and surface; bestows
+   \emph{water breathing} on passengers and crew.
+ \item[Boots of levitation] Move up and down (only) at $20'$ per round,
+   carrying up to 2000\,cn.  No duration limit.
+ \item[Boots of speed] Move at 240 for 12 hours (must rest for 1 day
+   afterwards).
+ \item[Boots of travelling and leaping] Need no rest during normal movement;
+   may jump $10'$ and $30'$ across.
+ \item[Bowl of commanding water elementals] $3'\phi$; summons a 12HD water
+   elemental (takes 1 turn), allowing control (requires concentration;
+   elemental is hostile afterwards).  Usable once per day.
+ \item[Brazier of commanding fire elementals] Summons a 12HD fire elemental
+   (takes 1 turn), allowing control (requires concentration; elemental is
+   hostile afterwards).  Usable once per day.
+ \item[Broom of flying] On command, carries owner at MV\flying240 (can carry
+   2000\,cn at MV\flying180).
+ \item[Censer of controlling air elementals] Summons a 12HD air elemental
+   (takes 1 turn), allowing control (requires concentration; elemental is
+   hostile afterwards).  Usable once per day.
+ \item[Chime of time] $3''$ silvery metal stick.  On command keeps track of
+   time, chiming every hour (audible by all within $60'$; a \emph{silence
+   15$'$ radius} spell dampens it to $30'$, but is dispelled).  On command,
+   shows time as gold colour extending from one end to other.
+ \item[Crystal ball] See any place or object thought about; image clarity
+   depends on familiarity with target.  Image lasts 1 turn; usable three times
+   per day.
+ \item[Crystal ball with clairaudience] As \emph{crystal ball}, but can hear
+   sound through ears of creature in area viewed.
+ \item[Crystal ball with ESP] As \emph{crystal ball}, but can listen to
+   thoughts of creature in area viewed.
+ \item[Displacer cloak] Wearer appears to be $5'$ from actual position; $+2$
+   on saves against spells, wands, turn-to-stone; $-2$ to hit in mel\'ee;
+   most missile attacks fail automatically.
+ \item[Drums of panic] Hearers $10'$--$240'$ away must SvS or flee for 3
+   turns.
+ \item[Efreeti bottle] Heavy jug $3'$ high.  When unsealed and unstoppered,
+   efreeti emerges to serve once per day for 101 days.
+ \item[Egg of wonder] Thrown up to $60'$ range; creature emerges and grows to
+   full size, obeys thrower's commands; disappears after one hour.
+   \begin{tabular}[C]{\shade cl|cl} \hlx*{hv}
+     \th{1d12} & \th{Animal} & \th{1d12} & \th{Animal} \\ \hlx{vhv}
+        \01    & Baboon, rock        & \07 & Cat, leopard  \\ \hlx{+}
+        \02    & Bat, giant          & \08 & Ferret, giant \\ \hlx{+}
+        \03    & Bear, black         & \09 & Lizard, gecko \\ \hlx{+}
+        \04    & Bear, grizzly       &  10 & Lizard, draco \\ \hlx{+}
+        \05    & Boar                &  11 & Snake, racer  \\ \hlx{+}
+        \06    & Cat, mountain lion  &  12 & Wolf, normal  \\ \hlx*{vh}
+   \end{tabular}
+ \item[Elven cloak] Wearer almost invisible (detectable 1 in 6); becomes
+   visible when attacking or casting spell, cannot become invisible for 1
+   turn.
+ \item[Elven boots] Move almost completely silently (detectable 1 in 10).
+ \item[Flying carpet] Carry one passenger at MV\flying300, two at MV\flying
+   240 or three at MV\flying180.
+ \item[Gauntlets of ogre power] Strength of 18.
+ \item[Girdle of giant strength] THAC0 12, double damage with weapon.
+ \item[Helm of alignment changing] Changes wearer's alignment; \emph{remove
+     curse} allows removal but wearer will resist.
+ \item[Helm of reading] Wearer can read any writings (strange languages,
+   magical writing, codes, etc.).  May (1 in 10) be destroyed when wearer hit;
+   destroyed if wearer killed.
+ \item[Helm of telepathy] Send messages by thought to creature within $90'$,
+   may read thoughts (requires concentration, SvS allowed to avoid thought
+   reading).
+ \item[Helm of teleportation] Allows \emph{teleport} as spell.  After first
+   use, or any use to teleport another creature, stops working until user
+   casts \emph{teleport} on it.
+ \item[Horn of blasting] Cone of sound $100' \times 20'$; 2d6 damage to those
+   in area, SvS or deafened for 1 turn.  Usable once per turn.
+ \item[Lamp, hurricane] As \emph{lamp of long burning}.  Shutters closed when
+   found; when opened the first time each day, emits gusts of wind and rain,
+   drenching all within $30'$.  All must SvS (holder automatically fails) or
+   be knocked over with carried items scattered within $60'$.
+ \item[Lamp of long burning] Burns and illuminates without using oil.  Becomes
+   nonmagical if flame doused with water.
+ \item[Metallion of ESP] Read thoughts of one creature within range by
+   concentrating for 1 round (SvS to avoid); 1 in 6 chance broadcasts thoughts
+   to all in range.
+ \item[Mirror of life trapping] If looking into mirror, SvS or be sucked into
+   it with all items.  Stores up to 20 man-size or smaller creatures, who do
+   not need food or air.  Can communicate with those trapped inside.  Breaking
+   mirror or \emph{wish} (one each) releases those trapped.
+ \item[Muzzle of training] Adjusts to fit any monster with bite attack.
+   Victim can breathe but not bite or talk.  Locks in place (as if
+   \emph{wizard lock} by M15) and unlocks by command.
+ \item[Nail, finger] Looks like $1''$--$4''$ carpentry nail.  Disappears if
+   commanded as \emph{nail of pointing}; thereafter, if user attempts to hide
+   from enemy (e.g., by using \emph{invisibility}), may appear (always first
+   time, 1 in 4 chance thereafter) as glowing finger pointing at user for 1d6
+   rounds.  A \emph{remove curse} removes the nail forever.
+ \item[Nail of pointing] Looks like $1''$--$4''$ carpentry nail.  If
+   commanded, turns into bony finger and points to named nonmagical item.
+   Cannot detect living or undead creatures; no range limit.  Usable once per
+   day.
+ \item[Ointment] Salve in small box.
+   \begin{enumerate*}
+   \item \emph{Blessing:} Bonus $+2$ on AC and saves for 1 turn.
+   \item \emph{Healing:} Cures $\d{2d6} + 2$\,hp damage.
+   \item \emph{Poison:} Seems like \emph{blessing}; SvPn at $-2$ or die.
+   \item \emph{Scarring:} Seems like \emph{healing}; causes $\d{2d6} + 2$\,hp
+     burn damage curable by \emph{ointment of soothing}, \emph{cureall},
+     \emph{heal} or \emph{wish}.
+   \item \emph{Soothing:} Cures all burn damage.
+   \item \emph{Tanning:} Skin turns bright colour; wears off in 1d4 months.
+   \end{enumerate*}
+ \item[Pouch of security] Size of large sack.  Attempts to steal cause it to
+   scream `I am being stolen!' for 1 hour or until held by owner and commanded
+   to stop.
+ \item[Quill of copying] Copies spell on scroll: burn original scroll, mix
+   ashes with rare ink (1000\,gp cost), place on blank scroll with inkwell and
+   command to write; quill writes two copies of the spell.  Only copies one
+   spell (one of lowest level on original scroll).  Blots 1 in 4, ruining
+   scroll unless fixed with \emph{wish}.
+ \item[Rope of climbing] Thin rope $50'$ long: climbs in any direction on
+   command, fastens to any protruding surface and supports 10\,000\,cn.
+ \item[Scarab of protection] Absorbs curses, or \emph{finger of death}; usable
+   2d6 times.
+ \item[Slate of identification] Identifies magical items placed on it, with a
+   (new, if possible) command word; cannot detect \emph{cursed} items or
+   numbers of charges.  Ten charges usable per day; uses: potion~(2),
+   missile~(3), wand~(4), staff~(5), permanent weapon~(6), armour or
+   shield~(7), miscellaneous item~(10 or more).
+ \item[Stone of controlling earth elementals] $3''\phi$; summons a 12HD earth
+   elemental (takes 1 turn), allowing control (requires concentration;
+   elemental is hostile afterwards).  Usable once per day.
+ \item[Talisman of elemental travel] Cast \emph{conjure elemental} while
+   touching elemental symbol on talisman to enter elemental plane; talisman
+   allows clear vision ($120'$--$1200'$ range) and breathing.  Talisman may be
+   of any element or greater talisman with all four symbols (equal chances for
+   all five).  Greater talisman can (on command) be used to control
+   elementals, usable ten times per trip.
+ \item[Wheel of floating] Allows wagon to be towed across river or stream.
+   First wheel allows 10\,000\,cn to be carried; each extra wheel allows extra
+   5000\,cn, up to maximum of four.
+ \item[Wheel of fortune] Wheel, $10'\phi$, mounted on wall and easily rotated,
+   contains black (with white skull) and white (with red heart) wedges.  When
+   spun, rotates for 3 rounds.  Cannot be affected by magic; a \emph{wish}
+   will make the wheel disappear.  Requires 26HD to move, weighs 20\,000\,cn.
+   Usable by each person once per day; cannot be used by \emph{charmed}
+   creatures.
+   \begin{tabular}[C]{\shade c>{\raggedright}p{5pc}|c>{\raggedright}p{5pc}}
+     \hlx*{hv}
+     \th{1d12} & \th{Effect} &
+     \th{1d12} & \th{Effect} \\ \hlx{vhv}
+     \01 & 1000\,gp appear &
+     \07 & ability score drops by 1 \\ \hlx{+}
+     \02 & 10 garnets (100\,gp each) appear &
+     \08 & PR drops by 1 \\ \hlx{+}
+     \03 & 1 brooch (1000\,gp) appears &
+     \09 & $C$ drops by 1 \\ \hlx{+}
+     \04 & 1 misc magic item appears &
+      10 & least valuable magic item disintegrates \\ \hlx{+}
+     \05 & ability score rises by 1 &
+      11 & nonmagical items disintegrate \\ \hlx{+}
+     \06 & PR or $C$ rises by 1 &
+      12 & die \\ \hlx*{vh}
+   \end{tabular}
+ \item[Wheel, square] Useless on roads or flat terrain.  Allows movement on
+   mountains and deserts (MV20 with one, MV30 with two, MV40 with three and
+   MV60 with four).
+ \end{description}
+ \subsect{Armour and shields}
+ Cursed 1 in 8: revealed in earnest combat; \emph{remove curse} allows
+ removal, C36 removes curse entirely.
+ Special powers usable once per day.
+ \begin{description}
+ \item[Absorption] Energy drains lose one `plus' instead of affecting wearer;
+   armour disintegrates at zero; no daily limit.
+ \item[Charm] When hit, opponent must SvS or be \emph{charmed} ($+4$ bonus if
+   using weapon).  Only one \emph{charm} per day.
+ \item[Cure wounds] Cures half wearer's damage.
+ \item[Electricity] When charged by command, inflicts 6d6 damage (SvS for
+   half, $+4$ bonus if using weapon) against next attacker to hit.  Only one
+   blast per day.
+ \item[Energy drain] When charged by command, inflicts 1ED:Wt (SvS to avoid,
+   $+4$ bonus if using weapon) against next attacker to hit.  Only one drain
+   per day.
+ \item[Ethereality] Become ethereal or return to prime by command, once each
+   once per day.
+ \item[Fly] On command allows flight (MV\flying360, for 12 turns).  Usable
+   once per day.
+ \item[Gaseous form] Assume gaseous form (with items carried) for up to 6
+   turns.  Usable once per day.
+ \item[Haste] Double movement and attacks for 1 turn.  Usable once per day.
+ \item[Invisibility] Become invisible on command with all items carried, until
+   attacking or casting spell.  Usable three times per day.
+ \item[Reflection] Reflects \emph{light} or \emph{continual light} at caster
+   (who may SvS to avoid), three times per day.  Meet gaze attacks as if using
+   mirror, but without $-2$ to hit.
+ \item[Remove curse] Cannot be \emph{cursed}; removes curses as if C36.
+   Usable three times in total.
+ \end{description}
+ \subsect{Missiles}
+ \begin{description}
+ \item[Biting] On hit, becomes poisonous snake: SvPn or die.
+ \item[Blinking] Blinks in and out of existence to pass allies.
+ \item[Charming] Target must SvS or be \emph{charmed}.
+ \item[Climbing] If shot at object, fastens securely and creates $50'$ rope
+   supporting any number of climbers.  Disappears with rope after 1 turn.
+ \item[Curing] Obviously blunt and inscribed with holy symbol: cures $\d{2d6}
+   + 2\delta G$ damage.
+ \item[Disarming] SvS or drop weapon.
+ \item[Dispelling] Creates \emph{dispel magic} (by M15) on target.
+ \item[Flying] Ranges increased by factor of 5.
+ \item[Lighting] Creates \emph{light} ($30'$ radius, 12 turns) on demand or
+   on hit (SvS or blinded) and disintegrates.
+ \item[Penetrating] Not slowed by underbrush, webs, or other cover; no hit
+   modification for cover.
+ \item[Refilling] If left in container with normal missiles, creates 1d20 more
+   normal missiles each day.
+ \item[Screaming] Emits screams as it flies; all within $30'$ of path must
+   check morale or retreat for 1d8 rounds.
+ \item[Seeking] Automatically hits target object (misses creatures).  Can be
+   used for disarming.
+ \item[Sinking] Causes $\d{1d10} + 10$ hull points damage to ships.
+ \item[Slaying] Designated \emph{opponent}s must SvDR or die.
+ \item[Speaking] Misses creatures: may be shot at target or named place within
+   10 miles; repeats 20 word spoken message.
+ \item[Stunning] Target must SvS or be stunned for 1d6 rounds.
+ \item[Teleporting] Target must SvS (with $+2$ bonus) or be \emph{teleported}
+   1d\% miles in random direction; will land safely.
+ \item[Transporting] Target must SvS or be sent $360'$ to place of user's
+   choosing.
+ \item[Wounding] Causes 1\,hp damage per round until magically cured; cannot
+   affect constructs or undead.
+ \end{description}
+ \subsect{Sword primary powers}
+ Usually usable once per round as often as desired.
+ \begin{description}
+ \item[Detect evil/good] Detects good or ill intentions within $20'$.
+ \item[Detect gems] Points to gems within $60'$, detecting amounts.
+ \item[Detect magic] Detects magical items and effects within $20'$.  Usable
+   three times per day.
+ \item[Detect metal] Points to metal of requested type within $60'$, but
+   cannot detect amount.
+ \item[Detect shifting walls] Within $10'$.
+ \item[Detect slopes] Within $10'$.
+ \item[Find secret doors] Within $10'$.  Usable three times per day.
+ \item[Find traps] Within $10'$.  Usable three times per day.
+ \item[See invisible] Find invisible and hidden creatures and objects (not
+   secret doors) within $20'$.
+ \end{description}
+ \subsect{Sword extraordinary powers}
+ Usually usable once per round, up to three times per day.
+ \begin{description}
+ \item[Clairaudience] Hear sound through ears of creature within $60'$.
+ \item[Clairvoyance] See through eyes of creature within $60'$.
+ \item[ESP] Listen to thoughts of creature within $60'$.
+ \item[Extra damage] Damage multiplied by 4 (or 5, 6, \dots\ for duplicates).
+   Duration 1d10 rounds.
+ \item[Flying] Allows flight MV\flying360 for 3 turns.
+ \item[Healing] Heals 6\,hp (or 12, 18, \dots\ for duplicates) per day, at
+   1\,hp per round.
+ \item[Illusion] Creates illusion in $20'$ cube within $240'$ while user
+   concentrates.  Monsters are AC9 and disappear when hit.  Victim may SvS to
+   disbelieve the illusion.  Never causes damage; effects wear off in 1d4
+   turns.
+ \item[Levitation] Move up and down (only) at $20'$ per round, carrying up to
+   2000\,cn, for 3 turns.
+ \item[Telekinesis] Move inanimate objects of up to 2000\,cn by concentration,
+   for distance of $50'$.
+ \item[Telepathy] Send messages by thought to creature within $90'$, may read
+   thoughts (requires concentration, SvS allowed to avoid thought reading).
+ \item[Teleportation] As spell.  Usable once per day.
+ \item[X-ray vision] See $30'$ through stone walls (or $60'$ through wood,
+   cloth or water) by concentrating, detecting traps and secret doors; blocked
+   by gold or lead; inspect $10' \times 10'$ area per use.
+ \end{description}
+ \subsect{Weapon talents}
+ Usually usable once per day.  Missile weapon talents usually apply to
+ missiles fired.
+ \begin{description}
+ \item[Breathing] Allows \emph{water breathing} (for 1 day) or \emph{create
+     air} (for one hour).
+ \item[Charming] Can \emph{charm} one humanoid within $120'$.
+ \item[Deceiving] Change appearance of user (facial features, equipment, but
+   not size) while carried (unsheathed); cannot disguise itself.
+ \item[Defending] Bonus can be applied to AC instead of hit/damage.
+ \item[Deflecting] Optionally used to deflect energy drain, losing one `plus';
+   disintegrates at $-1$.  Applies to missile weapon itself.
+ \item[Draining] Can drain $\d{1d4} + 4$ levels, as 1ED:Wh.  Missile weapons
+   lose one `plus' per drain.
+ \item[Extinguishing] Cool to touch.  Double $\delta G$ against fire-using
+   creatures.  Douses normal fire.
+ \item[Finding] Sense direction of one known object within $120'$ (but not
+   distance).  Will not locate creatures.
+ \item[Flaming] Harmless to weapon and user.  Bonus $+2$ to hit and damage
+   hippogriff, pegasis, roc and troll, $+3$ to hit and damage treant and
+   undead.  Usable as required.
+ \item[Flying] Must first be used normally in each battle; on command attacks
+   by itself for three rounds (or on command).  Missile weapons create
+   ammunition as needed.
+ \item[Healing] Cures $\d{2d6} + 2$\,hp of the user only.
+ \item[Hiding] Can render the user invisible (with all items, becomes visible
+   when attacking or casting spells).  Additionally, weapon only can become
+   invisible three times per day.
+ \item[Holding] Up to four humanoids within $180'$ SvS or paralysed for 9
+   turns.  Penalty $-2$ on save if cast on single individual.  Cancelled by
+   \emph{dispel magic} or \emph{free person}.
+ \item[Lighting] Create \emph{light} at $120'$ range.
+ \item[Silencing] Cause \emph{silence} in $15'$ radius, at $180'$ range, for
+   12 turns.
+ \item[Slicing] (Only edged weapons.)  If $\textrm{hit roll} + \delta G \ge
+   19$, opponent must SvDR or be killed.  Doesn't work against constructs or
+   undead.
+ \item[Slowing] Opponent hit moves and attacks at half speed for 1 turn (no
+   save).
+ \item[Speeding] Doubles user's movement and attack rate for 1 turn.
+ \item[Translating] User can understand any languages heard for 6 turns.
+ \item[Watching] On command, weapon will watch for monster type and vibrate
+   slightly if any come within $60'$.
+ \item[Wishing] Grants 1d3 wishes.
  \end{description}
  
  \end{multicols}