OSDN Git Service

空腹充足の巻物と狂戦士の空腹充足レイシャル廃止。
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 9 Nov 2002 22:26:07 +0000 (22:26 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 9 Nov 2002 22:26:07 +0000 (22:26 +0000)
アンドロイドは油びんを飲める。バルログは'E'で't','p','h'の死体を犠にできる。
アンデッドは杖か魔法棒のチャージを食える。エントは薬の水分で十分栄養が取れる。

22 files changed:
lib/edit/k_info_j.txt
lib/edit/misc_j.txt
lib/help/faq.txt [new file with mode: 0644]
lib/help/general.hlp
lib/help/help.hlp
lib/help/joption.txt
lib/help/jraceclas.txt
lib/help/magic.hlp
lib/help/option.txt
lib/help/raceclas.txt
lib/pref/pref-opt.prf
src/autopick.c
src/birth.c
src/cmd5.c
src/cmd6.c
src/defines.h
src/externs.h
src/init2.c
src/racial.c
src/spells2.c
src/tables.c
src/variable.c

index dac4441..603b926 100644 (file)
@@ -1990,7 +1990,6 @@ E:Satisfy Hunger
 G:?:d
 I:70:32:0
 W:5:0:5:10
-A:5/1:20/1:50/1
 D:$It satisfies hunger when you read it.
 D:¤½¤ì¤ÏÆɤà¤ÈËþÊ¢¤Ë¤Ê¤ë¡£
 
@@ -5937,3 +5936,13 @@ W:95:0:30:100000
 A:95/3
 P:0:1d1:0:0:0
 F:IGNORE_ACID | IGNORE_ELEC | IGNORE_FIRE | IGNORE_COLD
+
+N:658:& ¾ó
+E:& # Staff~
+G:_:d
+I:55:32:20
+W:1:0:50:20
+P:0:1d2:0:0:0
+D:$It does nothing when you use it.
+D:¤½¤ì¤Ï»È¤Ã¤Æ¤â²¿¤âµ¯¤³¤é¤Ê¤¤¡£
+F:FULL_NAME
index 9d69c12..7810773 100644 (file)
@@ -16,7 +16,7 @@ M:WY:66
 M:R:1070
 
 # Maximum number of items in k_info.txt
-M:K:658
+M:K:659
 
 # Maximum number of vaults in v_info.txt
 M:V:129
diff --git a/lib/help/faq.txt b/lib/help/faq.txt
new file mode 100644 (file)
index 0000000..c893050
--- /dev/null
@@ -0,0 +1,147 @@
+
+=========  Hengband FAQ  ==========
+
+
+Q. I want to play as an Android, Balrog, Golem, Skeleton, Zombie,
+   Spectre, or Ent.  But I can't find any scroll of satisfy hunger.
+   And Berserkers no longer have racial ability of satisfy hunger.
+   How do I avoid starvation?
+
+A. Scroll of Satisfy Hunger and Berserker's ability of Satisfy Hunger
+   are obsoleted.  And races which previously relyed on Satisfy Hunger
+   have new sources of nutrition now; Android can quaff oil, Balrogs
+   can sacrifice human corpse using the 'E'at command, All Undead
+   races can absorb mana from staves and wands using the 'E'at
+   command, Ents can gain enough nutrition from potions.
+
+
+Berserkers gain a class power 'Satisfy Hunger' at level 5.  Press
+   the 'U'(original keyset) or 'O'(Roguelike keyset) to use class
+   power.  Berserkers also gain one more class power 'Recall' at level
+   10.  If your level is lower than 5, eating huge amount of foods at
+   once will help you.
+
+
+Q. I got through the Yeek cave and I headed into the wilderness....and
+   I'm still there searching endlessly down one road after another
+   looking for a town.  Where are other towns and dungeons?
+
+A. You need to use the global wilderness map (press the < key on the
+   ground level).  This gives you a larger map of the world, where you
+   can travel to other towns and dungeons.  By the way, you should
+   read the readme_eng.txt and the on-line help.
+
+
+Q. I'm playing as a berserker, and cannot read scrolls.  How do I
+   remove curse?
+
+A. You can simply 't'ake off cursed equipments.  Since cursed
+   equipments are strongly sticking, you need to try 't'ake off
+   command many times.
+
+
+Q. Why Ninja have Iron Spikes at the start?
+
+A. Ninja can use Iron Spikes as shuriken; they can throw it as good
+   missile weapon.  Simply use 'v' command.
+
+
+Q. I'm at normal speed (+0). But normal speed monsters sometimes do
+   double or even triple move!
+
+A. On Hengband, amount of energy needed for a move is somewhat
+   randomized.  This method of speed system is an important feature of
+   Hengband, and is simulating real fighting.  So always expect that
+   your enemy can get two or three move.  Don't fight when your HP is
+   low, if you don't want to get instakill!
+
+
+Q. I tried to dual wield two weapons.  But I couldn't hit anything!
+
+A. You need to practice your dual wielding skill(proficiency level)
+   and your weapon skills.  Hitting high level monsters many times
+   will improve your skills.  Note that the information command '~'
+   reveals your proficiency levels.
+
+
+Q. How do skills(proficiency levels) work?
+
+A. Weapon proficiency levels and dual wielding proficiency levels
+   increase your to-hit bonus.  Spell proficiency levels decrease fail
+   rate and mana consumption rate of spells.  Riding proficiency level
+   gives you more speed when you are riding on a high speed monster,
+   and decreases risk of falling from your mount.
+
+
+Q. How do I increase proficiency level?
+
+A. Proficiency level of a weapon will increase when you hit a monster
+   whose level is high enough compared with your character level.
+   Proficiency level of a spell will increase when you cast the spell
+   at the dungeon level deep enough compared with the spell level.
+   Needed condition to increase riding proficiency level is rather
+   complex;  Generally, you need to hit a monster whose level is high
+   enough compared with current riding proficiency level or to shoot a
+   monster when ride on high level mount.
+
+
+Q. How do I ride on a monster?
+
+A. At first, summon, charm or capture some suitable monster. Then use
+   pet menu command 'p'.
+
+
+Q. How to use Capture Ball?
+
+A. Just equip it and activate 'A' to a dying monster.
+
+
+Q. I cannot hold a weapon and a shield without losing control of my
+   horse.  My horse runs aimlessly!
+
+A. You cannot directly control your mount unless you use one hand to
+   control your mount.  But you can command your mount.  Just use 'p'
+   command, and give your mount a target.  The horse which was given a
+   target will no longer run around aimlessly.
+
+
+Q. Where is the score server?  And how do I register my character
+   dumps?
+
+A. Here;'http://echizen.s5.xrea.com/heng/eng-hengband/score.html'.
+   When you die, Hengband will ask you as 'Do you send score to the
+   world score sever?'.  And if you answer 'y', Hengband will
+   automatically register your character dump and screen shot.
+
+
+Q. Are there spoiler for more details?
+
+A. Yes. Henkma is writing spoiler page for Hengband;
+   'http://www.kmc.gr.jp/~henkma/heng-e/index.html'
+
+
+Q. Who wrote Hengband?
+
+A. Hengband is mainly based on ZAngband 2.2.8 Japanese version.
+   ZAngband 2.2.8 Japanese version was developed by Mitsuhiro Itakura,
+   based on both ZAngband 2.2.8 and Angband 2.8.3 Japanese version,
+   and has some original features, for example, Auto-picker, in
+   addition to simple translation.
+
+   Hengband also includes codes from many other variants including
+   ToME, OAngband, etc...  Mr.Hoge wrote the first original part of
+   Hengband.  And currently, it is maintained by Hengband Development
+   Team(heng-ml @ kmc.gr.jp) including Mr.Hoge, Habu, Henkma, iks,
+   Kuwa, and Mogami.
+
+
+Q. Where is Hengband?
+
+A. Here: http://echizen.s5.xrea.com/heng/eng-hengband/index.html
+
+
+
+ Hengband FAQ written by Mogami
+
+--
+Updated    : Hengband 1.3.2
index 27f5e41..66031c7 100644 (file)
@@ -7,7 +7,9 @@ Please choose one of the following online help files:
     (c) Winning the Game           (general.txt#Winning)
     (d) Upon Death and Dying       (general.txt#UponDeath)
     (e) Hengband on the Web        (general.txt#Web)
-    (f) Version History            (version.txt)
+    (f) The Hengband Newbie Guide  (tang.txt)
+    (g) Frequency Asked Questions  (faq.txt)
+    (h) Version History            (version.txt)
 
     (?) Help System Commands       (helpinfo.txt)
 
@@ -17,4 +19,6 @@ Please choose one of the following online help files:
 ***** [c] general.txt#Winning
 ***** [d] general.txt#UponDeath
 ***** [e] general.txt#Web
-***** [f] version.txt
+***** [f] tang.txt
+***** [g] faq.txt
+***** [h] version.txt
index 36de990..9d2eaaf 100644 (file)
@@ -15,8 +15,7 @@ Please choose one of the following online help files:
     (k) Hengband Commands                 (command.hlp)
     (l) Hengband Options                  (option.hlp)
     (m) User Preference Files             (pref.hlp)
-    (n) The Hengband Newbie Guide         (tang.txt)
-    (o) Version history                   (version.txt)
+
 
     (?) Help System Commands              (helpinfo.txt)
 
@@ -34,5 +33,4 @@ Please choose one of the following online help files:
 ***** [k] command.hlp
 ***** [l] option.hlp
 ***** [m] pref.hlp
-***** [n] tang.txt
-***** [o] version.txt
+
index 8876830..9cb742f 100644 (file)
@@ -640,6 +640,13 @@ MP
 ¤¬¤é¤¯¤¿¤Ï²õ¤µ¤Ê¤¤  [leave_junk]
     Æ«´ï¤Î¤«¤±¤é¤ä¶õ¥Ó¥ó¤Ê¤É¤Î¤¬¤é¤¯¤¿¤ò¼«Æ°Ç˲õ¤ÎÂоݤˤ·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£
 
+***** <leave_special>
+¼ï²/¿¦¶È¤ÇÆÃÊ̤ËɬÍפʥ¢¥¤¥Æ¥à¤Ï²õ¤µ¤Ê¤¤  [leave_special]
+    Ä̾ï¤Ï̵²ÁÃͤǤ¢¤ë¤Ë¤â´Ø¤ï¤é¤ºÆÃÄê¤Î¿¦¶È¤ä¼ï²¤Î¾ì¹ç¤Î¤ßÌò¤ËΩ¤Ä¥¢
+    ¥¤¥Æ¥à¤ò¼«Æ°Ç˲õ¤ÎÂоݤˤ·¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤¹¡£¥¢¡¼¥Á¥ã¡¼¤Î¾ì¹ç¤Ï¹ü¡¢
+    ¥Ð¥ë¥í¥°¤Î¾ì¹ç¤Ï¿Í´Ö¥¿¥¤¥×¤Î»àÂΡ¢Ç¦¼Ô¤Î¾ì¹ç¤Ï°Å°Ç¤Î¸÷¸»Åù¤¬¤¢¤Æ¤Ï
+    ¤Þ¤ê¤Þ¤¹¡£
+
 
 ***** <PlayRecord>
 === ¥ª¥×¥·¥ç¥óR -- ¥×¥ì¥¤µ­Ï¿¥ª¥×¥·¥ç¥ó ===
@@ -929,6 +936,6 @@ Original   : Ben Harrison
 Updated    : Zangband 2.1.* by Topi Ylinen
 Updated    : Zangband 2.2.0 through 2.2.6c by Robert Ruehlmann
 Updated    : Zangband DevTeam
-Updated    : Hengband 1.3.0
+Updated    : Hengband 1.3.2
 
 ***** [a] jpref.txt#Options
index afa5796..ed9af97 100644 (file)
     Èà¤é¤ÏÆǤËÂÑÀ­¤ò»ý¤Á¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤ËËãáãÃΤé
     ¤º¤Ç¤¹¡£¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¡¢Èà¤é¤ÏÀ¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Ä¤è¤¦¤Ë¤Ê
     ¤ê¤Þ¤¹¡£¥´¡¼¥ì¥à¤ÏÄ̾ï¤Î¿©Êª¤«¤é¤Ï¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢
-    ¾Ã²½¤Ë¤Ï»þ´Ö¤¬¤«¤«¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¤½¤Î´è¾æ¤Ê¿ÈÂΤΤ¿¤á¡¢AC¤Ë¥Ü¡¼¥Ê¥¹
-    ¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤Ë·è¤·¤Æµ¤À䤵¤»¤é¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£
+    Âå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤ÆÆ°Îϸ»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢
+    ¤½¤Î´è¾æ¤Ê¿ÈÂΤΤ¿¤á¡¢AC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤Ë·è¤·¤Æµ¤
+    À䤵¤»¤é¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£
       
 
 ***** <Skeleton>
     ÇËÊҤΤ褦¤Ê¤â¤Î¤ËÂÑÀ­¤ò»ý¤Á¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ËÂФ¹¤ëÂÑÀ­¤ò³Í
     ÆÀ¤·¤Þ¤¹¡£Ìô¤ä¿©Êª¤Î»ý¤Ä¸ú²Ì¤Ï¥¹¥±¥ë¥È¥ó¤Î°ß¡Ê¸ºß¤·¤Þ¤»¤ó¤¬¡Ë¤òÄÌ
     ²á¤¹¤ë¤³¤È¤Ê¤¯¤½¤ÎÎϤòȯ´ø¤·¤Þ¤¹¤¬¡¢Ìô¤ä¿©Êª¼«ÂΤÏÈà¤Î³Ü¤òÄ̤êÈ´¤±
-    ¤ÆÍî¤Á¤Æ¤·¤Þ¤¤¡¢±ÉÍܤòµÛ¼ý¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£
+    ¤ÆÍî¤Á¤Æ¤·¤Þ¤¤¡¢±ÉÍܤòµÛ¼ý¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤½¤ÎÂå¤ï¤ê¤ËËâË¡ËÀ
+    ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£
       
 
 ***** <Zombie>
     ¤è¤¦¤Ë¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ÎÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÆǤËÂÑÀ­¤ò»ý¤Á¡¢
     ¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ê¥¹¥±¥ë¥È¥ó¤È¤Ï°ã¤¤¡ËÀڤ빶·â¤Ë
     ¤Ï¼å¤¤¤Ç¤¹¤¬¡¢ÃϹö¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥´¡¼¥ì¥à¤Î¤è¤¦¤Ë¡¢Èà
-    ¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢¾Ã²½µÛ¼ý¤ÏÃÙ¤¤¤Ç¤¹¡£
+    ¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤é
+    ËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£
       
 
 ***** <Vampire>
     ¤Ç¤­¡¢ÆǤÈÎ䵤¤ËÂФ·¤ÆÂÑÀ­¤òÈ÷¤¨¡¢¤µ¤é¤ËÃϹö¤ËÂФ¹¤ëÂÑÀ­¤â»ý¤Ã¤Æ¤¤
     ¤Þ¤¹¡£¥ì¥Ù¥ë¤¬½½Ê¬¤Ë¾å¤¬¤ë¤ÈÈà¤é¤Ï¥Æ¥ì¥Ñ¥·¡¼¤ò³ÍÆÀ¤·¤Þ¤¹¡£Í©Îî¤ÏÂî
     ±Û¤·¤¿ËâË¡»È¤¤¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¿ÈÂÎŪÆÃÀ­¤ÏÈó¾ï¤ËÉϼå¤Ç
-    ¤¹¡£
+    ¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËËâË¡ËÀ¤ä
+    ¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£
       
 
 ***** <Sprite>
     ¥¨¥ó¥È¤ÏÈó¾ï¤Ë¶¯¤¯¡¢¸­¤¤¤Ç¤¹¤¬¡¢¤½¤ÎµðÂ礵¤æ¤¨¤Ë櫤βò½ü¤ä¤³¤Ã¤½¤ê
     ¤ÈÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£À®Ä¹¤¹¤ë¤Ë¤Ä¤ì¤ÆÏÓÎϤäÂѵ×ÎϤ¬¾å¤¬¤ê¤Þ¤¹¤¬¡¢
     ´ïÍѤµ¤Ï²¼¤¬¤Ã¤Æ¤¤¤­¤Þ¤¹¡£Èà¤é¤Ë¤ÏÂ礭¤Ê·çÅÀ¤¬¤¢¤ê¡¢±ê¤Ë¤è¤Ã¤ÆÄ̾ï
-    ¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
+    ¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍÜ
+    ¤òÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËÌôÅù¤«¤é¿åʬ¤òÀݼ褹¤ë»ö¤Ç³èÆ°¤Ç¤­¤Þ¤¹¡£
     
 
 ***** <Archon>
     ¤ó¡£±ê¤ÈÃϹö¡¢À¸Ì¿Îϵۼý¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¸«¤¨
     ¤Ê¤¤¤â¤Î¤ò¸«¤ëǽÎϤò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÃϹö¤ä²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È
     ¤â¤Ç¤­¤Þ¤¹¡£ÈàÅù¤Ï¤Û¤È¤ó¤É¤Îµ»Ç½¤ÇÍ¥¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ÀŤ«¤ËÊ⤯¤³¤È¤Ï
-    ¶ì¼ê¤Ç¤¹¡£
+    ¶ì¼ê¤Ç¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢¿Í´Ö¥¿¥¤¥×
+    ¤òÀ¸ìӤˤ¹¤ë»ö¤ÇÀºÎϤò²óÉü¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£
       
 
 ***** <Dunadan>
     ¶Á¤·¤Þ¤»¤ó¡£Èà¤é¤ÏÆǤÎÂÑÀ­¤ò»ý¤Á¡¢ËãáãÃΤ餺¤Ç¡¢À¸Ì¿ÎϤòµÛ¤ï¤ì¤ë¤³
     ¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢¿ÈÂΤ¬´è¾æ¤Ê¤Î¤ÇAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤Þ¤¹¡£¤·¤«¤·
     ¿ÈÂΤΤ¤¤¿¤ë¤È¤³¤í¤ËÅŻҲóÏ©¤¬ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤ë¤¿¤á¡¢ÅÅ·â¤Ë¤è¤Ã¤ÆÄÌ
-    ¾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
+    ¾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤ÉÆ°
+    ÎϤòÆÀ¤é¤ì¤Þ¤»¤ó¤¬¡¢Ìý¤òÊäµë¤¹¤ë»ö¤ÇÆ°Îϸ»¤òÆÀ¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£
     
 
         
 Åþ㤷¤¿¤È¤­¤Ë¤Ï -5 + 40/50 * (-5) ¤Ç -9 ¤Ë¤Ê¤ê¤Þ¤¹¡£
 
 --
-Updated    : Hengband 1.1.0
+Updated    : Hengband 1.3.2
index 51a3186..002e602 100644 (file)
@@ -3,18 +3,16 @@ Hengband Magic System.
 Please choose one of the following online help files:
 
     (a) Hengband Magic System             (magic.txt)
-    (b) Class Spell Ability               (magic.txt#ClassSpellAbil)
-    (c) The Magic Realms                  (magic.txt#MagicRealms)
-    (d) On Casting Spells ...             (magic.txt#CastingSpells)
-    (e) Spell Types                       (magic.txt#SpellTypes)
-    (f) Hints and Tips                    (magic.txt#Hints)
+    (b) The Magic Realms                  (magic.txt#MagicRealms)
+    (c) On Casting Spells ...             (magic.txt#CastingSpells)
+    (d) Spell Types                       (magic.txt#SpellTypes)
+    (e) Hints and Tips                    (magic.txt#Hints)
 
     (?) Help System Commands              (helpinfo.txt)
 
 
 ***** [a] magic.txt
-***** [b] magic.txt#ClassSpellAbil
-***** [c] magic.txt#MagicRealms
-***** [d] magic.txt#CastingSpells
-***** [e] magic.txt#SpellTypes
-***** [f] magic.txt#Hints
+***** [b] magic.txt#MagicRealms
+***** [c] magic.txt#CastingSpells
+***** [d] magic.txt#SpellTypes
+***** [e] magic.txt#Hints
index bdfed57..456244d 100644 (file)
@@ -621,6 +621,13 @@ Auto-destroyer leaves junk    [leave_junk]
     Broken Stick, from auto-destruction by the destroy_items option.  
     This is especially helpful for Archers.
 
+***** <leave_special>
+Auto-destroyer leaves items your race/class needs  [leave_special]
+    This option protects specific items which are normally worthless,
+    but very important for specific classes or races.  These include
+    bones for Archers, ego light source of darkness for Ninja,
+    humanoid corpses for Balrogs, etc...
+
 
 ***** <PlayRecord>
 === Option set R -- Play-record ===
@@ -976,4 +983,4 @@ Original   : Ben Harrison
 Updated    : Zangband 2.1.* by Topi Ylinen
 Updated    : Zangband 2.2.0 through 2.2.6c by Robert Ruehlmann
 Updated    : Zangband DevTeam
-Updated    : Hengband 1.3.0
+Updated    : Hengband 1.3.2
index 2b3b5db..87dc015 100644 (file)
@@ -274,7 +274,8 @@ by the racial/class power command ("U"/"O").
     poison, they can see invisible things, and move freely.  At higher
     levels, they also become resistant to attacks which threaten to
     drain away their life force.  Golems gain very little nutrition
-    from ordinary food.  Golems also gain a natural armor class bonus
+    from ordinary food, but can absorb mana from staves and wands as
+    their power source.  Golems also gain a natural armor class bonus
     from their tough body.
 
 
@@ -291,7 +292,8 @@ by the racial/class power command ("U"/"O").
     effects of these will affect the skeleton even without entering
     the skeleton's (non-existent) belly, the potion or food itself
     will fall through the skeleton's jaws, giving no nutritional
-    benefit.
+    benefit.  They can absorb mana from staves and wands as their
+    energy source.
 
 
 ***** <Zombie>
@@ -303,7 +305,8 @@ by the racial/class power command ("U"/"O").
     attacks (actually earlier than skeletons), resist poison and can
     see invisible.  While still vulnerable to cuts (unlike skeletons),
     Zombies are resistant to Nether.  Like Golems, they gain very
-    little nutrition from the food of mortals.
+    little nutrition from the food of mortals, but can absorb mana
+    from staves and wands as their energy source.
 
 
 ***** <Vampire>
@@ -332,7 +335,9 @@ by the racial/class power command ("U"/"O").
     hold on their life force, see invisible, and resist poison and
     cold.  They also resist nether.  At higher levels they develop
     telepathic abilities.  Spectres make superb spellcasters, but
-    their physical form is very weak.
+    their physical form is very weak.  They gain very little nutrition
+    from the food of mortals, but can absorb mana from staves and
+    wands as their energy source.
 
 
 ***** <Sprite>
@@ -369,7 +374,9 @@ by the racial/class power command ("U"/"O").
     world, oldest of all animals or plants who inhabit Arda.  Spirits
     of the land, they were summoned to guard the forests of
     Middle-earth.  Being much like trees they are very clumsy but
-    strong, and very susceptible to fire.
+    strong, and very susceptible to fire.  They gain very little
+    nutrition from the food of mortals, but they can absorb water from
+    potions as their nutrition.
 
 
 ***** <Archon>
@@ -392,7 +399,9 @@ by the racial/class power command ("U"/"O").
     suitable for priest at all.  Balrog are resistant to fire and
     nether, and have a firm hold on their life force.  They also
     eventually learn to see invisible things.  They are good at almost
-    all skills except stealth.
+    all skills except stealth.  They gain very little nutrition from
+    the food of mortals, and need human corpses as sacrifices to
+    regain their vitality.
 
 
 ***** <Dunadan>
@@ -444,7 +453,9 @@ by the racial/class power command ("U"/"O").
     resistant to poison, can move freely, and are immune to
     life-draining attacks.  Moreover, because of their hard metallic
     bodies, they get a bonus to AC.  Androids have electronic circuits
-    throughout their body and must beware of electric shocks.
+    throughout their body and must beware of electric shocks.  They
+    gain very little nutrition from the food of mortals, but they can
+    use flasks of oil as their energy source.
 
 
 ***** <TheClasses>
@@ -1293,4 +1304,4 @@ the 50th level.
 
 
 --
-Updated    : Hengband 1.3.0
+Updated    : Hengband 1.3.2
index 4dc8fc5..da4d4d7 100644 (file)
@@ -133,6 +133,7 @@ Y:leave_chest
 Y:leave_wanted
 X:leave_corpse
 X:leave_junk
+Y:leave_special
 
 ##### Play-record Options #####
 
index a27b21e..f7171ed 100644 (file)
@@ -933,6 +933,39 @@ static bool is_opt_confirm_destroy(object_type *o_ptr)
        
        if (leave_junk)
                if ((o_ptr->tval == TV_SKELETON) || (o_ptr->tval == TV_BOTTLE) || (o_ptr->tval == TV_JUNK) || (o_ptr->tval == TV_STATUE)) return FALSE;
+
+       if (leave_special)
+       {
+#if 0
+               if (p_ptr->prace == RACE_SKELETON)
+               {
+                       if (o_ptr->tval == TV_SKELETON ||
+                           (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON))
+                               return FALSE;
+               }
+               else 
+#endif
+               if (p_ptr->prace == RACE_DEMON)
+               {
+                       if (o_ptr->tval == TV_CORPSE &&
+                           o_ptr->sval == SV_CORPSE &&
+                           strchr("pht", r_info[o_ptr->pval].d_char))
+                               return FALSE;
+               }
+
+               if (p_ptr->pclass == CLASS_ARCHER)
+               {
+                       if (o_ptr->tval == TV_SKELETON ||
+                           (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON))
+                               return FALSE;
+               }
+               else if (p_ptr->pclass == CLASS_NINJA)
+               {
+                       if (o_ptr->tval == TV_LITE &&
+                           o_ptr->name2 == EGO_LITE_DARKNESS)
+                               return FALSE;
+               }
+       }
        
        if (o_ptr->tval == TV_GOLD) return FALSE;
        
index 0caae50..0362e52 100644 (file)
@@ -1659,25 +1659,25 @@ static cptr race_jouhou[MAX_RACES] =
   
 "ÃϹö¤«¤é¤ä¤Ã¤Æ¤­¤¿°­ËâŪ¤ÊÀ¸Êª¤Ç¤¹¡£Èà¤é¤Ï¾¤Î¼ï²¤«¤éÌÓ·ù¤¤¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ÂçÄñ¤Î¿¦¶È¤ò¤«¤Ê¤ê¤¦¤Þ¤¯¤³¤Ê¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥¤¥ó¥×¤ÏÀ¸¤Þ¤ì¤Ä¤­²Ð¤ËÂÑÀ­¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ëǽÎϤò³ÍÆÀ¤·¤Þ¤¹¡£",
   
-"¥´¡¼¥ì¥à¤ÏÅ¥¤Î¤è¤¦¤ÊÀ¸Ì¿¤Î¤Ê¤¤ºàÎÁ¤«¤é¤Ä¤¯¤é¤ì¡¢À¸Ì¿¤ò¿á¤­¹þ¤Þ¤ì¤¿¿Í¹©Åª¤ÊÀ¸Êª¤Ç¤¹¡£Èà¤é¤Ë¤Ï»×¹Í¤È¤¤¤¦¤â¤Î¤¬¤Û¤È¤ó¤É¤Ê¤¯¡¢¤½¤Î¤¿¤áËâË¡¤Ë°Í¸¤¹¤ë¿¦¶È¤Ç¤ÏÌòΩ¤¿¤º¤Ç¤¹¡£¤·¤«¤·Àï»Î¤È¤·¤Æ¤ÏÂçÊѤ˥¿¥Õ¤Ç¤¹¡£Èà¤é¤ÏÆǤËÂÑÀ­¤ò»ý¤Á¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤ËËãáãÃΤ餺¤Ç¤¹¡£¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¡¢Èà¤é¤ÏÀ¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Ä¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¥´¡¼¥ì¥à¤ÏÄ̾ï¤Î¿©Êª¤«¤é¤Ï¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢¾Ã²½¤Ë¤Ï»þ´Ö¤¬¤«¤«¤ê¤Þ¤¹¡£¤Þ¤¿¡¢¤½¤Î´è¾æ¤Ê¿ÈÂΤΤ¿¤á¡¢AC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤Ë·è¤·¤Æµ¤À䤵¤»¤é¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£",
+"¥´¡¼¥ì¥à¤ÏÅ¥¤Î¤è¤¦¤ÊÀ¸Ì¿¤Î¤Ê¤¤ºàÎÁ¤«¤é¤Ä¤¯¤é¤ì¡¢À¸Ì¿¤ò¿á¤­¹þ¤Þ¤ì¤¿¿Í¹©Åª¤ÊÀ¸Êª¤Ç¤¹¡£Èà¤é¤Ë¤Ï»×¹Í¤È¤¤¤¦¤â¤Î¤¬¤Û¤È¤ó¤É¤Ê¤¯¡¢¤½¤Î¤¿¤áËâË¡¤Ë°Í¸¤¹¤ë¿¦¶È¤Ç¤ÏÌòΩ¤¿¤º¤Ç¤¹¡£¤·¤«¤·Àï»Î¤È¤·¤Æ¤ÏÂçÊѤ˥¿¥Õ¤Ç¤¹¡£Èà¤é¤ÏÆǤËÂÑÀ­¤ò»ý¤Á¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤ËËãáãÃΤ餺¤Ç¤¹¡£¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¡¢Èà¤é¤ÏÀ¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Ä¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¥´¡¼¥ì¥à¤ÏÄ̾ï¤Î¿©Êª¤«¤é¤Ï¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤ÆÆ°Îϸ»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¤½¤Î´è¾æ¤Ê¿ÈÂΤΤ¿¤á¡¢AC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¡¢¤µ¤é¤Ë·è¤·¤Æµ¤À䤵¤»¤é¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£",
   
-"¥¹¥±¥ë¥È¥ó¤Ë¤Ï2¤Ä¤Î¥¿¥¤¥×¤¬Â¸ºß¤·¤Þ¤¹¡£ÉáÄ̤ÎÀï»Î¥¿¥¤¥×¤È¡¢¥ê¥Ã¥Á¤È¸Æ¤Ð¤ì¤ë¼öʸ¤ò»È¤¦¥¹¥±¥ë¥È¥ó¤Ç¤¹¡£¥¢¥ó¥Ç¥Ã¥É¤Ç¤¢¤ëÈà¤é¤Ï¡¢ÆǤäÀ¸Ì¿Îϵۼý¹¶·â¤ò¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Èà¤é¤ÏʪÂΤòÃγФ¹¤ë¤Î¤Ë´ã¤òÍøÍѤ·¤Æ¤¤¤Ê¤¤¤¿¤á¡¢¸«¤¨¤Ê¤¤Êª¤ËñÙ¤µ¤ì¤Þ¤»¤ó¡£Èà¤é¤Î¹ü¤Ï¤È¤¬¤Ã¤¿ÇËÊҤΤ褦¤Ê¤â¤Î¤ËÂÑÀ­¤ò»ý¤Á¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ËÂФ¹¤ëÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£Ìô¤ä¿©Êª¤Î»ý¤Ä¸ú²Ì¤Ï¥¹¥±¥ë¥È¥ó¤Î°ß¡Ê¸ºß¤·¤Þ¤»¤ó¤¬¡Ë¤òÄ̲᤹¤ë¤³¤È¤Ê¤¯¤½¤ÎÎϤòȯ´ø¤·¤Þ¤¹¤¬¡¢Ìô¤ä¿©Êª¼«ÂΤÏÈà¤Î³Ü¤òÄ̤êÈ´¤±¤ÆÍî¤Á¤Æ¤·¤Þ¤¤¡¢±ÉÍܤòµÛ¼ý¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£",
+"¥¹¥±¥ë¥È¥ó¤Ë¤Ï2¤Ä¤Î¥¿¥¤¥×¤¬Â¸ºß¤·¤Þ¤¹¡£ÉáÄ̤ÎÀï»Î¥¿¥¤¥×¤È¡¢¥ê¥Ã¥Á¤È¸Æ¤Ð¤ì¤ë¼öʸ¤ò»È¤¦¥¹¥±¥ë¥È¥ó¤Ç¤¹¡£¥¢¥ó¥Ç¥Ã¥É¤Ç¤¢¤ëÈà¤é¤Ï¡¢ÆǤäÀ¸Ì¿Îϵۼý¹¶·â¤ò¿´ÇÛ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£Èà¤é¤ÏʪÂΤòÃγФ¹¤ë¤Î¤Ë´ã¤òÍøÍѤ·¤Æ¤¤¤Ê¤¤¤¿¤á¡¢¸«¤¨¤Ê¤¤Êª¤ËñÙ¤µ¤ì¤Þ¤»¤ó¡£Èà¤é¤Î¹ü¤Ï¤È¤¬¤Ã¤¿ÇËÊҤΤ褦¤Ê¤â¤Î¤ËÂÑÀ­¤ò»ý¤Á¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ËÂФ¹¤ëÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£Ìô¤ä¿©Êª¤Î»ý¤Ä¸ú²Ì¤Ï¥¹¥±¥ë¥È¥ó¤Î°ß¡Ê¸ºß¤·¤Þ¤»¤ó¤¬¡Ë¤òÄ̲᤹¤ë¤³¤È¤Ê¤¯¤½¤ÎÎϤòȯ´ø¤·¤Þ¤¹¤¬¡¢Ìô¤ä¿©Êª¼«ÂΤÏÈà¤Î³Ü¤òÄ̤êÈ´¤±¤ÆÍî¤Á¤Æ¤·¤Þ¤¤¡¢±ÉÍܤòµÛ¼ý¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤½¤ÎÂå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£",
   
-"¥¾¥ó¥Ó¤Ï¥¢¥ó¥Ç¥Ã¥É¤Ç¤¢¤ê¡¢À¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Á¡¢¥¹¥±¥ë¥È¥ó¤Î¤è¤¦¤Ë¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ÎÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÆǤËÂÑÀ­¤ò»ý¤Á¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ê¥¹¥±¥ë¥È¥ó¤È¤Ï°ã¤¤¡ËÀڤ빶·â¤Ë¤Ï¼å¤¤¤Ç¤¹¤¬¡¢ÃϹö¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥´¡¼¥ì¥à¤Î¤è¤¦¤Ë¡¢Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢¾Ã²½µÛ¼ý¤ÏÃÙ¤¤¤Ç¤¹¡£",
+"¥¾¥ó¥Ó¤Ï¥¢¥ó¥Ç¥Ã¥É¤Ç¤¢¤ê¡¢À¸Ì¿Îϵۼý¹¶·â¤ËÂÑÀ­¤ò»ý¤Á¡¢¥¹¥±¥ë¥È¥ó¤Î¤è¤¦¤Ë¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤ÐÎ䵤¤ÎÂÑÀ­¤ò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÆǤËÂÑÀ­¤ò»ý¤Á¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Ê¥¹¥±¥ë¥È¥ó¤È¤Ï°ã¤¤¡ËÀڤ빶·â¤Ë¤Ï¼å¤¤¤Ç¤¹¤¬¡¢ÃϹö¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥´¡¼¥ì¥à¤Î¤è¤¦¤Ë¡¢Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£",
   
 "¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤Î°ì¼ï¤Ç¤¢¤ëµÛ·ìµ´¤Ï¡¢°Ú·É¤ÎÇ°¤ò¸Æ¤Óµ¯¤³¤¹³°¸«¤ò¤·¤Æ¤¤¤Þ¤¹¡£¥¢¥ó¥Ç¥Ã¥É¤ÎÎã¤Ë¤â¤ì¤º¡¢Èà¤é¤âÀ¸Ì¿ÎϤòµÛ¼ý¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¯¡¢ÃϹö¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢Î䵤¤ÈÆǤËÂФ¹¤ëÂÑÀ­¤âÈ÷¤¨¤Æ¤¤¤Þ¤¹¡£¤·¤«¤·¡¢¿·Á¯¤Ê·ì±Õ¤Ë¾ï¤Ëµ²¤¨¤Æ¤ª¤ê¡¢¤½¤ì¤Ï¶á¤¯¤Ë¤¤¤ëÀ¸Êª¤«¤é·ì±Õ¤òµÛ¤¦¤³¤È¤Ë¤è¤Ã¤Æ¤Î¤ßËþ¤¿¤µ¤ì¤Þ¤¹¡£¤³¤Î¶¯ÎϤÊÀ¸Êª¤Ï¿¼¹ï¤Ê¼åÅÀ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£ÂÀÍÛ¸÷Àþ¡Ê¤ä¸÷¸»¡Ë¤ÏÈà¤é¤ÎÇËÌǤò°ÕÌ£¤·¤Þ¤¹¡£¹¬±¿¤Ë¤â¡¢µÛ·ìµ´¤Ï¤½¤Î¿ÈÂΤ«¤é¡Ö°Å¹õ¤Î¸÷¡×¤Î¥ª¡¼¥é¤òÊü½Ð¤·¤Æ¤¤¤Þ¤¹¡£°ìÊý¡¢°Å°Ç¤ÏÈà¤é¤ò¤è¤ê¶¯ÎϤˤ¹¤ë¤â¤Î¤Ç¤¹¡£",
   
-"Í©Îî¤Ï¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤Î°ì¼ï¤Ç¤¹¡£Èà¤é¤ÏÉÔµ¤Ì£¤ÊÎп§¤Î¸÷¤ËÊñ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£È¾Êª¼ÁŪ¤Ê¸ºß¤Ç¤¢¤ëÈà¤é¤Ï¡¢ÊɤòÄ̤êÈ´¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¤È¤­¤Ë¤ÏÊɤÎÌ©Å٤ˤè¤Ã¤Æ½ý¤Ä¤±¤é¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Â¾¤Î¥¢¥ó¥Ç¥Ã¥ÉƱÍÍ¡¢Èà¤é¤âÀ¸Ì¿ÎϤòµÛ¼ý¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¯¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢ÆǤÈÎ䵤¤ËÂФ·¤ÆÂÑÀ­¤òÈ÷¤¨¡¢¤µ¤é¤ËÃϹö¤ËÂФ¹¤ëÂÑÀ­¤â»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥ì¥Ù¥ë¤¬½½Ê¬¤Ë¾å¤¬¤ë¤ÈÈà¤é¤Ï¥Æ¥ì¥Ñ¥·¡¼¤ò³ÍÆÀ¤·¤Þ¤¹¡£Í©Îî¤ÏÂî±Û¤·¤¿ËâË¡»È¤¤¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¿ÈÂÎŪÆÃÀ­¤ÏÈó¾ï¤ËÉϼå¤Ç¤¹¡£",
+"Í©Îî¤Ï¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤Î°ì¼ï¤Ç¤¹¡£Èà¤é¤ÏÉÔµ¤Ì£¤ÊÎп§¤Î¸÷¤ËÊñ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£È¾Êª¼ÁŪ¤Ê¸ºß¤Ç¤¢¤ëÈà¤é¤Ï¡¢ÊɤòÄ̤êÈ´¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¤È¤­¤Ë¤ÏÊɤÎÌ©Å٤ˤè¤Ã¤Æ½ý¤Ä¤±¤é¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Â¾¤Î¥¢¥ó¥Ç¥Ã¥ÉƱÍÍ¡¢Èà¤é¤âÀ¸Ì¿ÎϤòµÛ¼ý¤µ¤ì¤ë¤³¤È¤¬¤Ê¤¯¡¢¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢ÆǤÈÎ䵤¤ËÂФ·¤ÆÂÑÀ­¤òÈ÷¤¨¡¢¤µ¤é¤ËÃϹö¤ËÂФ¹¤ëÂÑÀ­¤â»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¥ì¥Ù¥ë¤¬½½Ê¬¤Ë¾å¤¬¤ë¤ÈÈà¤é¤Ï¥Æ¥ì¥Ñ¥·¡¼¤ò³ÍÆÀ¤·¤Þ¤¹¡£Í©Îî¤ÏÂî±Û¤·¤¿ËâË¡»È¤¤¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤½¤Î¿ÈÂÎŪÆÃÀ­¤ÏÈó¾ï¤ËÉϼå¤Ç¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËËâË¡ËÀ¤ä¾ó¤«¤éËâÎϤòµÛ¼ý¤·¤Æ¥¨¥Í¥ë¥®¡¼¸»¤Ë¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£",
   
 "ÍÅÀº¤ÏÈó¾ï¤Ë¾®¤µ¤¤¤Ç¤¹¡£Èà¤é¤Ï¾®¤µ¤ÊÍã¤ò»ý¤Á¡¢æ«¤ä´í¸±¤ÊÃÏ·Á¤òÈô¤Ó±Û¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Èà¤é¤ÏÆü¸÷¤òÂçÊѹ¥¤ß¡¢¸÷¤ËÂФ¹¤ëÂÑÀ­¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¿ÈÂÎŪ¤Ë¤Ï¤â¤Ã¤È¤âÉϼå¤Ê¼ï²¤Î°ì¤Ä¤Ç¤¹¤¬¡¢ÍÅÀº¤ÏËâË¡¤ÎÌ̤ÇÂçÊѤʺÍǽ¤ò»ý¤Ã¤Æ¤ª¤ê¡¢Èó¾ï¤Ë½ÏÎý¤·¤¿ËâË¡»È¤¤¤Ë¤Ê¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¹â¥ì¥Ù¥ë¤Ç¤Ï¤è¤ê®¤¯Èô¤Ö¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£",
   
 "¤³¤Î¼ï²¤Ï¥«¥ª¥¹¤Ë¤è¤Ã¤Æ¤Ä¤¯¤é¤ì¤¿ËÁÆÂŪ¤Ç·ù°­¤µ¤ì¤ë¸ºß¤Ç¤¹¡£Èà¤é¤ÏÆÈΩ¤·¤¿¼ï²¤Ç¤Ï¤Ê¤¯¡¢¿Í´Ö·¿¼ï²¡¢ÂçÄñ¤Ï¿Í´Ö¤¬¥«¥ª¥¹¤Ë¤è¤Ã¤ÆÏĤá¤é¤ì¤¿Â¸ºß¡¢¤â¤·¤¯¤Ï¿Í´Ö¤È½Ã¤Î°­Ì´¤Î¤è¤¦¤Ê¸òÇÛ¼ï¤Ç¤¹¡£Á´¤Æ¤Î½Ã¿Í¤Ï¥«¥ª¥¹¤ËÌÕ½¾¤·¤Æ¤ª¤ê¡¢¤½¤Î¤¿¤áº®Íð¤È²»¤ËÂФ·¤ÆÂÑÀ­¤òÈ÷¤¨¤Æ¤¤¤Þ¤¹¤¬¡¢½ã¿è¤Ê¥í¥°¥ë¥¹¤Ï¤Þ¤ÀÈà¤é¤ËÂФ·¸ú²Ì¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£½Ã¿Í¤Ïº®ÆÙ¤ò¹¥¤ß¡¢¤½¤ì¤ÏÈà¤é¤ò¤µ¤é¤ËÏĤá¤Þ¤¹¡£½Ã¿Í¤ÏÆÍÁ³ÊÑ°Û¤òµ¯¤³¤·¤ä¤¹¤¤À­¼Á¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£Èà¤é¤¬¤Ä¤¯¤é¤ì¤¿¤È¤­¡¢¥é¥ó¥À¥à¤ÊÊÑ°Û¤ò¼õ¤±¤Þ¤¹¡£¤½¤Î¸å¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ë¤´¤È¤Ë°ã¤¦ÊÑ°Û¤ò¼õ¤±¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£",
   
-"¥¨¥ó¥È¤ÏÈó¾ï¤Ë¶¯¤¯¡¢¸­¤¤¤Ç¤¹¤¬¡¢¤½¤ÎµðÂ礵¤æ¤¨¤Ë櫤βò½ü¤ä¤³¤Ã¤½¤ê¤ÈÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£À®Ä¹¤¹¤ë¤Ë¤Ä¤ì¤ÆÏÓÎϤäÂѵ×ÎϤ¬¾å¤¬¤ê¤Þ¤¹¤¬¡¢´ïÍѤµ¤Ï²¼¤¬¤Ã¤Æ¤¤¤­¤Þ¤¹¡£Èà¤é¤Ë¤ÏÂ礭¤Ê·çÅÀ¤¬¤¢¤ê¡¢±ê¤Ë¤è¤Ã¤ÆÄ̾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£",
+"¥¨¥ó¥È¤ÏÈó¾ï¤Ë¶¯¤¯¡¢¸­¤¤¤Ç¤¹¤¬¡¢¤½¤ÎµðÂ礵¤æ¤¨¤Ë櫤βò½ü¤ä¤³¤Ã¤½¤ê¤ÈÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£À®Ä¹¤¹¤ë¤Ë¤Ä¤ì¤ÆÏÓÎϤäÂѵ×ÎϤ¬¾å¤¬¤ê¤Þ¤¹¤¬¡¢´ïÍѤµ¤Ï²¼¤¬¤Ã¤Æ¤¤¤­¤Þ¤¹¡£Èà¤é¤Ë¤ÏÂ礭¤Ê·çÅÀ¤¬¤¢¤ê¡¢±ê¤Ë¤è¤Ã¤ÆÄ̾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢Âå¤ï¤ê¤ËÌôÅù¤«¤é¿åʬ¤òÀݼ褹¤ë»ö¤Ç³èÆ°¤Ç¤­¤Þ¤¹¡£",
   
 "Å·»È¤Î¾å°Ì¼ï¤Ç¤¢¤ë¥¢¥ë¥³¥ó¤Ï¡¢Á´¤Æ¤Î¥¹¥­¥ë¤Ë½Ï㤷¤Æ¤ª¤ê¡¢¶¯¤¯¤Æ¸­¤¯¡¢Èó¾ï¤Ë¿Íµ¤¤¬¤¢¤ê¤Þ¤¹¡£Èà¤é¤ÏÌܤ˸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¡¢¤½¤ÎÍã¤Ç櫤ä´í¸±¤ÊÃÏ·Á¤òÈô¤Ó±Û¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤·¤«¤·¡¢Èó¾ï¤ËÀ®Ä¹¤¬ÃÙ¤¤¤È¤¤¤¦·çÅÀ¤â¤¢¤ê¤Þ¤¹¡£",
   
-"°­Ëâ¤Î¾å°Ì¼ï¤Ç¤¢¤ë¥Ð¥ë¥í¥°¤Ï¡¢¶¯¤¯¡¢ÃÎŪ¤Ç¡¢¤Þ¤¿¥¿¥Õ¤Ç¤â¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Èà¤é¤Ï¿À¤ò¿®¤¸¤è¤¦¤È¤Ï¤»¤º¡¢¥×¥ê¡¼¥¹¥È¤Ë¤ÏÁ´¤¯¸þ¤¤¤Æ¤¤¤Þ¤»¤ó¡£±ê¤ÈÃϹö¡¢À¸Ì¿Îϵۼý¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ëǽÎϤò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÃϹö¤ä²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ÈàÅù¤Ï¤Û¤È¤ó¤É¤Îµ»Ç½¤ÇÍ¥¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ÀŤ«¤ËÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£",
+"°­Ëâ¤Î¾å°Ì¼ï¤Ç¤¢¤ë¥Ð¥ë¥í¥°¤Ï¡¢¶¯¤¯¡¢ÃÎŪ¤Ç¡¢¤Þ¤¿¥¿¥Õ¤Ç¤â¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Èà¤é¤Ï¿À¤ò¿®¤¸¤è¤¦¤È¤Ï¤»¤º¡¢¥×¥ê¡¼¥¹¥È¤Ë¤ÏÁ´¤¯¸þ¤¤¤Æ¤¤¤Þ¤»¤ó¡£±ê¤ÈÃϹö¡¢À¸Ì¿Îϵۼý¤Ø¤ÎÂÑÀ­¤ò»ý¤Ã¤Æ¤ª¤ê¡¢¥ì¥Ù¥ë¤¬¾å¤¬¤ì¤Ð¸«¤¨¤Ê¤¤¤â¤Î¤ò¸«¤ëǽÎϤò³ÍÆÀ¤·¤Þ¤¹¡£¤Þ¤¿¡¢ÃϹö¤ä²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¯¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ÈàÅù¤Ï¤Û¤È¤ó¤É¤Îµ»Ç½¤ÇÍ¥¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ÀŤ«¤ËÊ⤯¤³¤È¤Ï¶ì¼ê¤Ç¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤É±ÉÍܤòÀݼè¤Ç¤­¤Þ¤»¤ó¤¬¡¢¿Í´Ö¥¿¥¤¥×¤òÀ¸ìӤˤ¹¤ë»ö¤ÇÀºÎϤò²óÉü¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£",
   
 "¥É¥¥¥Ê¥À¥ó¤ÏÀ¾Êý¤«¤éÍ褿¶þ¶¯¤Ê¼ï²¤Ç¤¹¡£¤³¤Î¤¤¤Ë¤·¤¨¤Î¼ï²¤ÏÁ´¤Æ¤ÎÎΰè¤Ë¤ª¤¤¤Æ¿Í´Ö¤ÎǽÎϤòο²ï¤·¡¢ÆäËÂѵ×ÎϤ˴ؤ·¤Æ¤Ï¤½¤ì¤¬¸²Ãø¤Ç¤¹¡£¤·¤«¤·¤Ê¤¬¤é¤³¤Î¼ï²¤ÏÁ´¤Æ¤ËÂî±Û¤·¤Æ¤¤¤ë¤³¤È¤¬ºÒ¤¤¤·¤Æ¡¢¤³¤ÎÀ¤³¦¤Ë¤Ï¿·¤·¤¤·Ð¸³¤È¤¤¤Ã¤¿¤â¤Î¤¬¤Û¤È¤ó¤É¤Ê¤¯¡¢¥ì¥Ù¥ë¤ò¾å¤²¤ë¤³¤È¤¬Èó¾ï¤Ëº¤Æñ¤Ç¤¹¡£Èà¤é¤Ï¤È¤Æ¤â¥¿¥Õ¤Ç´è¶¯¤Ç¤¢¤ê¡¢Èà¤é¤ÎÂѵ×ÎϤ¬²¼¤¬¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£",
   
@@ -1685,7 +1685,7 @@ static cptr race_jouhou[MAX_RACES] =
   
 "¥¯¥¿¡¼¤È¤·¤Æ¤¤¤ë̵ɽ¾ð¤ÎÆæ¤ÎÀ¸Êª¤Ç¤¹¡£Èà¤é¤Ï³°¸«¤¬¤«¤ï¤¤¤é¤·¤¤¤¿¤á¡¢Ì¥ÎϤ¬¹â¤¤¤Ç¤¹¡£Èà¤é¤Ïº®Í𤷤ޤ»¤ó¡£¤Ê¤¼¤Ê¤é¡¢º®Í𤷤Ƥ⥯¥¿¡¼¤È¤·¤Æ¤¤¤ë¤¿¤áÊѤï¤ê¤Ê¤¤¤«¤é¤Ç¤¹¡£¤·¤«¤â¡¢¤½¤Î¥¯¥¿¡¼¤È¤·¤Æ¤¤¤ë³°¸«¤«¤éŨ¤Ë¸«¤Ä¤«¤ê¤Ë¤¯¤¤¤Ç¤¹¡£¤·¤«¤·¡¢Èà¤é¤ÏÃí°ÕÎϤ¬¾¯¤Ê¤¤¤¿¤áõº÷¤äÃγÐǽÎϤϰ­¤¤¤Ç¤¹¡£Èà¤é¤Ï¥ì¥Ù¥ë¤¬¾å¤¬¤ë¤È²£¤Ë¿­¤Ó¤ÆAC¤ò¾å¤²¤ëµ»¤ò³Ð¤¨¤Þ¤¹¤¬¡¢¿­¤Ó¤Æ¤¤¤ë´Ö¤ÏËâË¡ËɸæǽÎϤÏÄ㤯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£",
   
-"¥¢¥ó¥É¥í¥¤¥É¤Ïµ¡³£¤Î¿ÈÂΤò»ý¤Ä¿Í¹©Åª¤Ê¸ºß¤Ç¤¹¡£ËâË¡¤ò¤¦¤Þ¤¯»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢Àï»Î¤È¤·¤Æ¤ÏÈó¾ï¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£Èà¤é¤Ï¾¤Î¼ï²¤Î¤è¤¦¤Ë·Ð¸³ÃͤòÆÀ¤ÆÀ®Ä¹¤¹¤ë¤È¤¤¤¦¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¿ÈÂΤ˿ȤˤĤ±¤ëÁõÈ÷¤Ë¤è¤Ã¤ÆÀ®Ä¹¤·¤Þ¤¹¡£¤¿¤À¤·¡¢»ØÎØ¡¢¥¢¥ß¥å¥ì¥Ã¥È¡¢¸÷¸»¤ÏÀ®Ä¹¤Ë±Æ¶Á¤·¤Þ¤»¤ó¡£Èà¤é¤ÏÆǤÎÂÑÀ­¤ò»ý¤Á¡¢ËãáãÃΤ餺¤Ç¡¢À¸Ì¿ÎϤòµÛ¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢¿ÈÂΤ¬´è¾æ¤Ê¤Î¤ÇAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤Þ¤¹¡£¤·¤«¤·¿ÈÂΤΤ¤¤¿¤ë¤È¤³¤í¤ËÅŻҲóÏ©¤¬ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤ë¤¿¤á¡¢ÅÅ·â¤Ë¤è¤Ã¤ÆÄ̾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£"
+"¥¢¥ó¥É¥í¥¤¥É¤Ïµ¡³£¤Î¿ÈÂΤò»ý¤Ä¿Í¹©Åª¤Ê¸ºß¤Ç¤¹¡£ËâË¡¤ò¤¦¤Þ¤¯»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢Àï»Î¤È¤·¤Æ¤ÏÈó¾ï¤ËÍ¥¤ì¤Æ¤¤¤Þ¤¹¡£Èà¤é¤Ï¾¤Î¼ï²¤Î¤è¤¦¤Ë·Ð¸³ÃͤòÆÀ¤ÆÀ®Ä¹¤¹¤ë¤È¤¤¤¦¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¿ÈÂΤ˿ȤˤĤ±¤ëÁõÈ÷¤Ë¤è¤Ã¤ÆÀ®Ä¹¤·¤Þ¤¹¡£¤¿¤À¤·¡¢»ØÎØ¡¢¥¢¥ß¥å¥ì¥Ã¥È¡¢¸÷¸»¤ÏÀ®Ä¹¤Ë±Æ¶Á¤·¤Þ¤»¤ó¡£Èà¤é¤ÏÆǤÎÂÑÀ­¤ò»ý¤Á¡¢ËãáãÃΤ餺¤Ç¡¢À¸Ì¿ÎϤòµÛ¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿¡¢¿ÈÂΤ¬´è¾æ¤Ê¤Î¤ÇAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤Þ¤¹¡£¤·¤«¤·¿ÈÂΤΤ¤¤¿¤ë¤È¤³¤í¤ËÅŻҲóÏ©¤¬ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤ë¤¿¤á¡¢ÅÅ·â¤Ë¤è¤Ã¤ÆÄ̾ï¤è¤ê¤âÂ礭¤Ê¥À¥á¡¼¥¸¤ò¼õ¤±¤Æ¤·¤Þ¤¤¤Þ¤¹¡£Èà¤é¤Ï¿©Êª¤«¤é¤Û¤È¤ó¤ÉÆ°ÎϤòÆÀ¤é¤ì¤Þ¤»¤ó¤¬¡¢Ìý¤òÊäµë¤¹¤ë»ö¤ÇÆ°Îϸ»¤òÆÀ¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£"
 
 #else
 
@@ -1735,25 +1735,25 @@ static cptr race_jouhou[MAX_RACES] =
 
 "A demon-creature from the nether-world, naturally resistant to fire attacks, and capable of learning fire bolt and fire ball attacks.  They are little loved by other races, but can perform fairly well in most professions.  As they advance levels, they gain the powers of See Invisible.",
 
-"A Golem is an artificial creature, built from a lifeless raw material like clay, and awakened to life.  They are nearly mindless, making them useless for professions which rely on magic, but as warriors they are very tough.  They are resistant to poison, they can see invisible things, and move freely.  At higher levels, they also become resistant to attacks which threaten to drain away their life force.  Golems gain very little nutrition from ordinary food.  Golems also gain a natural armor class bonus from their tough body.",
+"A Golem is an artificial creature, built from a lifeless raw material like clay, and awakened to life.  They are nearly mindless, making them useless for professions which rely on magic, but as warriors they are very tough.  They are resistant to poison, they can see invisible things, and move freely.  At higher levels, they also become resistant to attacks which threaten to drain away their life force.  Golems gain very little nutrition from ordinary food, but can absorb mana from staves and wands as their power source.  Golems also gain a natural armor class bonus from their tough body.",
 
-"There are two types of skeletons: the ordinary, warrior-like skeletons, and the spell-using skeletons, which are also called liches.  As undead beings, skeletons need to worry very little about poison or attacks that can drain life.  They do not really use eyes for perceiving things, and are thus not fooled by invisibility.  Their bones are resistant to sharp shrapnel, and they will quickly become resistant to cold.  Although the magical effects of these will affect the skeleton even without entering the skeleton's (non-existent) belly, the potion or food itself will fall through the skeleton's jaws, giving no nutritional benefit.",
+"There are two types of skeletons: the ordinary, warrior-like skeletons, and the spell-using skeletons, which are also called liches.  As undead beings, skeletons need to worry very little about poison or attacks that can drain life.  They do not really use eyes for perceiving things, and are thus not fooled by invisibility.  Their bones are resistant to sharp shrapnel, and they will quickly become resistant to cold.  Although the magical effects of these will affect the skeleton even without entering the skeleton's (non-existent) belly, the potion or food itself will fall through the skeleton's jaws, giving no nutritional benefit.  They can absorb mana from staves and wands as their energy source.",
 
-"Much like Skeletons, Zombies too are undead horrors: they are resistant to life-draining attacks, and can learn to restore their life-force.  Like skeletons, they become resistant to cold-based attacks (actually earlier than skeletons), resist poison and can see invisible.  While still vulnerable to cuts (unlike skeletons), Zombies are resistant to Nether.  Like Golems, they gain very little nutrition from the food of mortals.",
+"Much like Skeletons, Zombies too are undead horrors: they are resistant to life-draining attacks, and can learn to restore their life-force.  Like skeletons, they become resistant to cold-based attacks (actually earlier than skeletons), resist poison and can see invisible.  While still vulnerable to cuts (unlike skeletons), Zombies are resistant to Nether.  Like Golems, they gain very little nutrition from the food of mortals, but can absorb mana from staves and wands as their energy source.",
 
 "One of the mightier undead creatures, the Vampire is an awe-inspiring sight.  Yet this dread creature has a serious weakness: the bright rays of sun are its bane, and it will need to flee the surface to the deep recesses of earth until the sun finally sets.  Darkness, on the other hand, only makes the Vampire stronger.  As undead, the Vampire has a firm hold on its life force, and resists nether attacks.  The Vampire also resists cold and poison based attacks.  It is, however, susceptible to its perpetual hunger for fresh blood, which can only be satiated by sucking the blood from a nearby monster.",
 
-"Another powerful undead creature: the Spectre is a ghastly apparition, surrounded by an unearthly green glow.  They exist only partially on our plane of existence: half-corporeal, they can pass through walls, although the density of the wall will hurt them in the process of doing this.  As undead, they have a firm hold on their life force, see invisible, and resist poison and cold.  They also resist nether.  At higher levels they develop telepathic abilities.  Spectres make superb spellcasters, but their physical form is very weak.",
+"Another powerful undead creature: the Spectre is a ghastly apparition, surrounded by an unearthly green glow.  They exist only partially on our plane of existence: half-corporeal, they can pass through walls, although the density of the wall will hurt them in the process of doing this.  As undead, they have a firm hold on their life force, see invisible, and resist poison and cold.  They also resist nether.  At higher levels they develop telepathic abilities.  Spectres make superb spellcasters, but their physical form is very weak.  They gain very little nutrition from the food of mortals, but can absorb mana from staves and wands as their energy source.",
 
 "One of the several fairy races, Sprites are very small.  They have tiny wings and can fly over traps that may open up beneath them.  They enjoy sunlight intensely, and need worry little about light based attacks.  Although physically among the weakest races, Sprites are very talented in magic, and can become highly skilled wizards.  Sprites have the special power of spraying Sleeping Dust, and at higher levels they learn to fly faster.",
 
  "This race is a blasphemous abomination produced by Chaos.  It is not an independent race but rather a humanoid creature, most often a human, twisted by the Chaos, or a nightmarish crossbreed of a human and a beast.  All Beastmen are accustomed to Chaos so much that they are untroubled by confusion and sound, although raw logrus can still have effects on them.  Beastmen revel in chaos, as it twists them more and more.  Beastmen are subject to mutations: when they have been created, they receive a random mutation.  After that, every time they advance a level they have a small chance of gaining yet another mutation.",
 
-"The Ents are a powerful race dating from the beginning of the world, oldest of all animals or plants who inhabit Arda.  Spirits of the land, they were summoned to guard the forests of Middle-earth.  Being much like trees they are very clumsy but strong, and very susceptible to fire.",
+"The Ents are a powerful race dating from the beginning of the world, oldest of all animals or plants who inhabit Arda.  Spirits of the land, they were summoned to guard the forests of Middle-earth.  Being much like trees they are very clumsy but strong, and very susceptible to fire.  They gain very little nutrition from the food of mortals, but they can absorb water from potions as their nutrition.",
 
 "Archons are a higher class of angels.  They are good at all skills, and are strong, wise, and are a favorite with any people.  They are able to see the unseen, and their wings allow them to safely fly over traps and other dangerous places.  However, belonging to a higher plane as they do, the experiences of this world do not leave a strong impression on them and they gain levels slowly.",
 
-"Balrogs are a higher class of demons.  They are strong, intelligent and tough.  They do not believe in gods, and are not suitable for priest at all.  Balrog are resistant to fire and nether, and have a firm hold on their life force.  They also eventually learn to see invisible things.  They are good at almost all skills except stealth.",
+"Balrogs are a higher class of demons.  They are strong, intelligent and tough.  They do not believe in gods, and are not suitable for priest at all.  Balrog are resistant to fire and nether, and have a firm hold on their life force.  They also eventually learn to see invisible things.  They are good at almost all skills except stealth.  They gain very little nutrition from the food of mortals, and need human corpses as sacrifices to regain their vitality.",
 
 "Dunedain are a race of hardy men from the West.  This elder race surpasses human abilities in every field, especially constitution.  However, being men of the world, very little is new to them, and levels are very hard for them to gain.  Their constitution cannot be reduced. ",
 
@@ -1761,7 +1761,7 @@ static cptr race_jouhou[MAX_RACES] =
 
 "A Kutar is an expressionless animal-like living creature.  The word 'kuta' means 'absentmindedly' or 'vacantly'.  Their absentmindedness hurts their searching and perception skills, but renders them incapable of being confused.  Their unearthly calmness and serenity make them among the most stealthy of any race.  Kutars, although expressionless, are beautiful and so have a high charisma.  Members of this race can learn to expand their body horizontally.  This increases armour class, but renders them vulnerable to magical attacks.",
 
-"An android is a artificial creation with a body of machinery.  They are poor at spell casting, but they make excellent warriors.  They don't acquire experience like other races, but rather gain in power as they attach new equipment to their frame.  Rings, amulets, and lights do not influence growth.  Androids are resistant to poison, can move freely, and are immune to life-draining attacks.  Moreover, because of their hard metallic bodies, they get a bonus to AC.  Androids have electronic circuits throughout their body and must beware of electric shocks."
+"An android is a artificial creation with a body of machinery.  They are poor at spell casting, but they make excellent warriors.  They don't acquire experience like other races, but rather gain in power as they attach new equipment to their frame.  Rings, amulets, and lights do not influence growth.  Androids are resistant to poison, can move freely, and are immune to life-draining attacks.  Moreover, because of their hard metallic bodies, they get a bonus to AC.  Androids have electronic circuits throughout their body and must beware of electric shocks.  They gain very little nutrition from the food of mortals, but they can use flasks of oil as their energy source."
 
 #endif
 };
@@ -3717,36 +3717,64 @@ void player_outfit(void)
        /* Give the player some food */
        switch (p_ptr->prace)
        {
-               case RACE_GOLEM:
-               case RACE_SKELETON:
-               case RACE_ZOMBIE:
-               case RACE_VAMPIRE:
-               case RACE_SPECTRE:
-               case RACE_ENT:
-               case RACE_DEMON:
-               case RACE_ANDROID:
-               {
-                       if (p_ptr->pclass == CLASS_BERSERKER) break;
-                       /* Scrolls of satisfy hunger */
-                       object_prep(q_ptr, lookup_kind(TV_SCROLL, SV_SCROLL_SATISFY_HUNGER));
-                       q_ptr->number = (byte)rand_range(2, 5);
-                       object_aware(q_ptr);
-                       object_known(q_ptr);
+       case RACE_VAMPIRE:
+       case RACE_DEMON:
+               /* Nothing! */
+               /* Vampires can drain blood of creatures */
+               /* Demon can drain vitality from humanoid corpse */
+               break;
 
-                       (void)inven_carry(q_ptr);
+#if 0
+       case RACE_SKELETON:
+               /* Some Skeletons */
+               object_prep(q_ptr, lookup_kind(TV_SKELETON, SV_ANY));
+               q_ptr->number = (byte)rand_range(7, 12);
+               object_aware(q_ptr);
+               object_known(q_ptr);
+               (void)inven_carry(q_ptr);
+               break;
+#endif
+       case RACE_SKELETON:
+       case RACE_GOLEM:
+       case RACE_ZOMBIE:
+       case RACE_SPECTRE:
+               /* Staff (of Nothing) */
+               object_prep(q_ptr, lookup_kind(TV_STAFF, SV_STAFF_NOTHING));
+               q_ptr->number = 1;
+               object_aware(q_ptr);
+               object_known(q_ptr);
 
-                       break;
-               }
-               default:
-               {
-                       /* Food rations */
-                       object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
-                       q_ptr->number = (byte)rand_range(3, 7);
-                       object_aware(q_ptr);
-                       object_known(q_ptr);
+               (void)inven_carry(q_ptr);
+               break;
 
-                       (void)inven_carry(q_ptr);
-               }
+       case RACE_ENT:
+               /* Potions of Water */
+               object_prep(q_ptr, lookup_kind(TV_POTION, SV_POTION_WATER));
+               q_ptr->number = (byte)rand_range(15, 23);
+               object_aware(q_ptr);
+               object_known(q_ptr);
+               (void)inven_carry(q_ptr);
+
+               break;
+
+       case RACE_ANDROID:
+               /* Flasks of oil */
+               object_prep(q_ptr, lookup_kind(TV_FLASK, SV_ANY));
+               q_ptr->number = (byte)rand_range(7, 12);
+               object_aware(q_ptr);
+               object_known(q_ptr);
+               (void)inven_carry(q_ptr);
+
+               break;
+
+       default:
+               /* Food rations */
+               object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
+               q_ptr->number = (byte)rand_range(3, 7);
+               object_aware(q_ptr);
+               object_known(q_ptr);
+
+               (void)inven_carry(q_ptr);
        }
 
        /* Get local object */
index b81b591..f749a36 100644 (file)
@@ -1372,8 +1372,23 @@ static bool cast_nature_spell(int spell)
                (void)detect_stairs(DETECT_RAD_DEFAULT);
                break;
        case 3: /* Produce Food */
-               (void)set_food(PY_FOOD_MAX - 1);
+       {
+               object_type forge, *q_ptr = &forge;
+
+#ifdef JP
+               msg_print("¿©ÎÁ¤òÀ¸À®¤·¤¿¡£");
+#else
+               msg_print("A food ration is produced.");
+#endif
+
+               /* Create the food ration */
+               object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
+
+               /* Drop the object from heaven */
+               (void)drop_near(q_ptr, -1, py, px);
                break;
+
+       }
        case 4: /* Daylight */
                (void)lite_area(damroll(2, (plev / 2)), (plev / 10) + 1);
                if ((prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) && !p_ptr->resist_lite)
index c8bd7f4..5e07f6e 100644 (file)
@@ -386,7 +386,7 @@ static void do_cmd_eat_food_aux(int item)
        }
 
        /* We have tried it */
-       object_tried(o_ptr);
+       if (o_ptr->tval == TV_FOOD) object_tried(o_ptr);
 
        /* The player is now aware of the object */
        if (ident && !object_aware_p(o_ptr))
@@ -420,6 +420,20 @@ msg_print("
        }
        else if (p_ptr->prace == RACE_SKELETON)
        {
+#if 0
+               if (o_ptr->tval == TV_SKELETON ||
+                   (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON))
+               {
+#ifdef JP
+                       msg_print("¤¢¤Ê¤¿¤Ï¹ü¤Ç¼«Ê¬¤ÎÂΤòÊä¤Ã¤¿¡£");
+#else
+                       msg_print("Your body absorbs the bone.");
+#endif
+                       set_food(p_ptr->food + 5000);
+               }
+               else 
+#endif
+
                if (!((o_ptr->sval == SV_FOOD_WAYBREAD) ||
                      (o_ptr->sval < SV_FOOD_BISCUIT)))
                {
@@ -449,6 +463,118 @@ msg_print("
 
                }
        }
+       else if ((p_ptr->prace == RACE_SKELETON ||
+                 p_ptr->prace == RACE_GOLEM ||
+                 p_ptr->prace == RACE_ZOMBIE ||
+                 p_ptr->prace == RACE_SPECTRE) &&
+                (o_ptr->tval == TV_STAFF || o_ptr->tval == TV_WAND))
+       {
+               cptr staff;
+
+               if (o_ptr->tval == TV_STAFF &&
+                   (item < 0) && (o_ptr->number > 1))
+               {
+#ifdef JP
+                       msg_print("¤Þ¤º¤Ï¾ó¤ò½¦¤ï¤Ê¤±¤ì¤Ð¡£");
+#else
+                       msg_print("You must first pick up the staffs.");
+#endif
+                       return;
+               }
+
+#ifdef JP
+               staff = (o_ptr->tval == TV_STAFF) ? "¾ó" : "ËâË¡ËÀ";
+#else
+               staff = (o_ptr->tval == TV_STAFF) ? "staff" : "wand";
+#endif
+
+               /* "Eat" charges */
+               if (o_ptr->pval == 0)
+               {
+#ifdef JP
+                       msg_format("¤³¤Î%s¤Ë¤Ï¤â¤¦ËâÎϤ¬»Ä¤Ã¤Æ¤¤¤Ê¤¤¡£", staff);
+#else
+                       msg_format("The %s has no charges left.", staff);
+#endif
+                       return;
+               }
+
+#ifdef JP
+               msg_format("¤¢¤Ê¤¿¤Ï%s¤ÎËâÎϤò¥¨¥Í¥ë¥®¡¼¸»¤È¤·¤ÆµÛ¼ý¤·¤¿¡£", staff);
+#else
+               msg_format("You absorb mana of the %s as your energy.", staff);
+#endif
+
+               /* Use a single charge */
+               o_ptr->pval--;
+
+               /* Eat a charge */
+               set_food(p_ptr->food + 5000);
+
+               /* XXX Hack -- unstack if necessary */
+               if (o_ptr->tval == TV_STAFF &&
+                   (item >= 0) && (o_ptr->number > 1))
+               {
+                       object_type forge;
+                       object_type *q_ptr;
+
+                       /* Get local object */
+                       q_ptr = &forge;
+
+                       /* Obtain a local object */
+                       object_copy(q_ptr, o_ptr);
+
+                       /* Modify quantity */
+                       q_ptr->number = 1;
+
+                       /* Restore the charges */
+                       o_ptr->pval++;
+
+                       /* Unstack the used item */
+                       o_ptr->number--;
+                       p_ptr->total_weight -= q_ptr->weight;
+                       item = inven_carry(q_ptr);
+
+                       /* Message */
+#ifdef JP
+                       msg_format("¾ó¤ò¤Þ¤È¤á¤Ê¤ª¤·¤¿¡£");
+#else
+                       msg_print("You unstack your staff.");
+#endif
+               }
+
+               /* Describe charges in the pack */
+               if (item >= 0)
+               {
+                       inven_item_charges(item);
+               }
+
+               /* Describe charges on the floor */
+               else
+               {
+                       floor_item_charges(0 - item);
+               }
+
+               /* Don't eat a staff/wand itself */
+               return;
+       }
+       else if ((p_ptr->prace == RACE_DEMON ||
+                (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON)) &&
+                (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_CORPSE &&
+                 strchr("pht", r_info[o_ptr->pval].d_char)))
+       {
+               /* Drain vitality of humanoids */
+               char o_name[MAX_NLEN];
+
+               object_desc(o_name, o_ptr, FALSE, 0);
+
+#ifdef JP
+               msg_format("%s¤Ïdz¤¨¾å¤ê³¥¤Ë¤Ê¤Ã¤¿¡£ÀºÎϤòµÛ¼ý¤·¤¿µ¤¤¬¤¹¤ë¡£", o_name);
+#else
+               msg_format("%^s is burnt to ashes.  You absorb its vitality!");
+#endif
+               (void)set_food(PY_FOOD_MAX - 1);
+       }
        else if ((p_ptr->prace == RACE_GOLEM) ||
                 (p_ptr->prace == RACE_ZOMBIE) ||
                 (p_ptr->prace == RACE_ENT) ||
@@ -493,8 +619,34 @@ msg_print("
  */
 static bool item_tester_hook_eatable(object_type *o_ptr)
 {
-/*     if ((o_ptr->tval==TV_FOOD) || ((o_ptr->tval==TV_CORPSE) && o_ptr->sval)) return (TRUE); */
-       if (o_ptr->tval==TV_FOOD) return (TRUE);
+       if (o_ptr->tval==TV_FOOD) return TRUE;
+
+#if 0
+       if (p_ptr->prace == RACE_SKELETON)
+       {
+               if (o_ptr->tval == TV_SKELETON ||
+                   (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON))
+                       return TRUE;
+       }
+       else 
+#endif
+
+       if (p_ptr->prace == RACE_SKELETON ||
+           p_ptr->prace == RACE_GOLEM ||
+           p_ptr->prace == RACE_ZOMBIE ||
+           p_ptr->prace == RACE_SPECTRE)
+       {
+               if (o_ptr->tval == TV_STAFF || o_ptr->tval == TV_WAND)
+                       return TRUE;
+       }
+       else if ((p_ptr->prace == RACE_DEMON) ||
+                (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON))
+       {
+               if (o_ptr->tval == TV_CORPSE &&
+                   o_ptr->sval == SV_CORPSE &&
+                   strchr("pht", r_info[o_ptr->pval].d_char))
+                       return TRUE;
+       }
 
        /* Assume not */
        return (FALSE);
@@ -614,51 +766,44 @@ static void do_cmd_quaff_potion_aux(int item)
        lev = get_object_level(q_ptr);
 
        /* Analyze the potion */
-       switch (q_ptr->sval)
+       if (q_ptr->tval == TV_POTION)
        {
+               switch (q_ptr->sval)
+               {
 #ifdef JP
-               /* °û¤ß¤´¤¿¤¨¤ò¥ª¥ê¥¸¥Ê¥ë¤è¤êºÙ¤«¤¯É½¸½ */
+                       /* °û¤ß¤´¤¿¤¨¤ò¥ª¥ê¥¸¥Ê¥ë¤è¤êºÙ¤«¤¯É½¸½ */
                case SV_POTION_WATER:
-               {
                        msg_print("¸ý¤ÎÃ椬¤µ¤Ã¤Ñ¤ê¤·¤¿¡£");
                        msg_print("¤Î¤É¤Î³é¤­¤¬¾¯¤·¤ª¤µ¤Þ¤Ã¤¿¡£");
                        ident = TRUE;
                        break;
-               }
+
                case SV_POTION_APPLE_JUICE:
-               {
                        msg_print("´Å¤¯¤Æ¥µ¥Ã¥Ñ¥ê¤È¤·¤Æ¤¤¤Æ¡¢¤È¤Æ¤â¤ª¤¤¤·¤¤¡£");
                        msg_print("¤Î¤É¤Î³é¤­¤¬¾¯¤·¤ª¤µ¤Þ¤Ã¤¿¡£");
                        ident = TRUE;
                        break;
-               }
+
                case SV_POTION_SLIME_MOLD:
-               {
                        msg_print("¤Ê¤ó¤È¤âÉÔµ¤Ì£¤ÊÌ£¤À¡£");
                        msg_print("¤Î¤É¤Î³é¤­¤¬¾¯¤·¤ª¤µ¤Þ¤Ã¤¿¡£");
                        ident = TRUE;
                        break;
-               }
+
 #else
                case SV_POTION_WATER:
                case SV_POTION_APPLE_JUICE:
                case SV_POTION_SLIME_MOLD:
-               {
                        msg_print("You feel less thirsty.");
                        ident = TRUE;
                        break;
-               }
 #endif
 
-
                case SV_POTION_SLOWNESS:
-               {
                        if (set_slow(randint1(25) + 15, FALSE)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_SALT_WATER:
-               {
 #ifdef JP
                        msg_print("¤¦¤§¡ª»×¤ï¤ºÅǤ¤¤Æ¤·¤Þ¤Ã¤¿¡£");
 #else
@@ -670,10 +815,8 @@ static void do_cmd_quaff_potion_aux(int item)
                        (void)set_paralyzed(p_ptr->paralyzed + 4);
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_POISON:
-               {
                        if (!(p_ptr->resist_pois || p_ptr->oppose_pois))
                        {
                                if (set_poisoned(p_ptr->poisoned + randint0(15) + 10))
@@ -682,10 +825,8 @@ static void do_cmd_quaff_potion_aux(int item)
                                }
                        }
                        break;
-               }
 
                case SV_POTION_BLINDNESS:
-               {
                        if (!p_ptr->resist_blind)
                        {
                                if (set_blind(p_ptr->blind + randint0(100) + 100))
@@ -694,10 +835,8 @@ static void do_cmd_quaff_potion_aux(int item)
                                }
                        }
                        break;
-               }
 
                case SV_POTION_CONFUSION: /* Booze */
-               {
                        if (p_ptr->pclass != CLASS_MONK) chg_virtue(V_HARMONY, -1);
                        else if (!p_ptr->resist_conf) p_ptr->special_attack |= ATTACK_SUIKEN;
                        if (!p_ptr->resist_conf)
@@ -735,10 +874,8 @@ msg_print("
                                }
                        }
                        break;
-               }
 
                case SV_POTION_SLEEP:
-               {
                        if (!p_ptr->free_act)
                        {
 #ifdef JP
@@ -772,10 +909,8 @@ msg_print("
                                }
                        }
                        break;
-               }
 
                case SV_POTION_LOSE_MEMORIES:
-               {
                        if (!p_ptr->hold_life && (p_ptr->exp > 0))
                        {
 #ifdef JP
@@ -789,10 +924,8 @@ msg_print("
                                ident = TRUE;
                        }
                        break;
-               }
 
                case SV_POTION_RUINATION:
-               {
 #ifdef JP
                        msg_print("¿È¤â¿´¤â¼å¤Ã¤Æ¤­¤Æ¡¢Àºµ¤¤¬È´¤±¤Æ¤¤¤¯¤è¤¦¤À¡£");
                        take_hit(DAMAGE_LOSELIFE, damroll(10, 10), "ÇËÌǤÎÌô", -1);
@@ -809,46 +942,32 @@ msg_print("
                        (void)dec_stat(A_INT, 25, TRUE);
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_DEC_STR:
-               {
                        if (do_dec_stat(A_STR)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_DEC_INT:
-               {
                        if (do_dec_stat(A_INT)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_DEC_WIS:
-               {
                        if (do_dec_stat(A_WIS)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_DEC_DEX:
-               {
                        if (do_dec_stat(A_DEX)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_DEC_CON:
-               {
                        if (do_dec_stat(A_CON)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_DEC_CHR:
-               {
                        if (do_dec_stat(A_CHR)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_DETONATIONS:
-               {
 #ifdef JP
                        msg_print("ÂΤÎÃæ¤Ç·ã¤·¤¤Çúȯ¤¬µ¯¤­¤¿¡ª");
                        take_hit(DAMAGE_NOESCAPE, damroll(50, 20), "Çúȯ¤ÎÌô", -1);
@@ -861,10 +980,8 @@ msg_print("
                        (void)set_cut(p_ptr->cut + 5000);
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_DEATH:
-               {
                        chg_virtue(V_VITALITY, -1);
                        chg_virtue(V_UNLIFE, 5);
 #ifdef JP
@@ -877,46 +994,34 @@ msg_print("
 
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_INFRAVISION:
-               {
                        if (set_tim_infra(p_ptr->tim_infra + 100 + randint1(100), FALSE))
                        {
                                ident = TRUE;
                        }
                        break;
-               }
 
                case SV_POTION_DETECT_INVIS:
-               {
                        if (set_tim_invis(p_ptr->tim_invis + 12 + randint1(12), FALSE))
                        {
                                ident = TRUE;
                        }
                        break;
-               }
 
                case SV_POTION_SLOW_POISON:
-               {
                        if (set_poisoned(p_ptr->poisoned / 2)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_CURE_POISON:
-               {
                        if (set_poisoned(0)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_BOLDNESS:
-               {
                        if (set_afraid(0)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_SPEED:
-               {
                        if (!p_ptr->fast)
                        {
                                if (set_fast(randint1(25) + 15, FALSE)) ident = TRUE;
@@ -926,63 +1031,49 @@ msg_print("
                                (void)set_fast(p_ptr->fast + 5, FALSE);
                        }
                        break;
-               }
 
                case SV_POTION_RESIST_HEAT:
-               {
                        if (set_oppose_fire(p_ptr->oppose_fire + randint1(10) + 10, FALSE))
                        {
                                ident = TRUE;
                        }
                        break;
-               }
 
                case SV_POTION_RESIST_COLD:
-               {
                        if (set_oppose_cold(p_ptr->oppose_cold + randint1(10) + 10, FALSE))
                        {
                                ident = TRUE;
                        }
                        break;
-               }
 
                case SV_POTION_HEROISM:
-               {
                        if (set_afraid(0)) ident = TRUE;
                        if (set_hero(p_ptr->hero + randint1(25) + 25, FALSE)) ident = TRUE;
                        if (hp_player(10)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_BESERK_STRENGTH:
-               {
                        if (set_afraid(0)) ident = TRUE;
                        if (set_shero(p_ptr->shero + randint1(25) + 25, FALSE)) ident = TRUE;
                        if (hp_player(30)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_CURE_LIGHT:
-               {
                        if (hp_player(damroll(2, 8))) ident = TRUE;
                        if (set_blind(0)) ident = TRUE;
                        if (set_cut(p_ptr->cut - 10)) ident = TRUE;
                        if (set_shero(0,TRUE)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_CURE_SERIOUS:
-               {
                        if (hp_player(damroll(4, 8))) ident = TRUE;
                        if (set_blind(0)) ident = TRUE;
                        if (set_confused(0)) ident = TRUE;
                        if (set_cut((p_ptr->cut / 2) - 50)) ident = TRUE;
                        if (set_shero(0,TRUE)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_CURE_CRITICAL:
-               {
                        if (hp_player(damroll(6, 8))) ident = TRUE;
                        if (set_blind(0)) ident = TRUE;
                        if (set_confused(0)) ident = TRUE;
@@ -991,10 +1082,8 @@ msg_print("
                        if (set_cut(0)) ident = TRUE;
                        if (set_shero(0,TRUE)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_HEALING:
-               {
                        if (hp_player(300)) ident = TRUE;
                        if (set_blind(0)) ident = TRUE;
                        if (set_confused(0)) ident = TRUE;
@@ -1003,10 +1092,8 @@ msg_print("
                        if (set_cut(0)) ident = TRUE;
                        if (set_shero(0,TRUE)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_STAR_HEALING:
-               {
                        if (hp_player(1200)) ident = TRUE;
                        if (set_blind(0)) ident = TRUE;
                        if (set_confused(0)) ident = TRUE;
@@ -1015,10 +1102,8 @@ msg_print("
                        if (set_cut(0)) ident = TRUE;
                        if (set_shero(0,TRUE)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_LIFE:
-               {
                        chg_virtue(V_VITALITY, 1);
                        chg_virtue(V_UNLIFE, -5);
 #ifdef JP
@@ -1045,10 +1130,8 @@ msg_print("
                        hp_player(5000);
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_RESTORE_MANA:
-               {
                        if (p_ptr->pclass == CLASS_MAGIC_EATER)
                        {
                                int i;
@@ -1088,88 +1171,60 @@ msg_print("
                        }
                        if (set_shero(0,TRUE)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_RESTORE_EXP:
-               {
                        if (restore_level()) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_RES_STR:
-               {
                        if (do_res_stat(A_STR)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_RES_INT:
-               {
                        if (do_res_stat(A_INT)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_RES_WIS:
-               {
                        if (do_res_stat(A_WIS)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_RES_DEX:
-               {
                        if (do_res_stat(A_DEX)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_RES_CON:
-               {
                        if (do_res_stat(A_CON)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_RES_CHR:
-               {
                        if (do_res_stat(A_CHR)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_INC_STR:
-               {
                        if (do_inc_stat(A_STR)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_INC_INT:
-               {
                        if (do_inc_stat(A_INT)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_INC_WIS:
-               {
                        if (do_inc_stat(A_WIS)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_INC_DEX:
-               {
                        if (do_inc_stat(A_DEX)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_INC_CON:
-               {
                        if (do_inc_stat(A_CON)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_INC_CHR:
-               {
                        if (do_inc_stat(A_CHR)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_AUGMENTATION:
-               {
                        if (do_inc_stat(A_STR)) ident = TRUE;
                        if (do_inc_stat(A_INT)) ident = TRUE;
                        if (do_inc_stat(A_WIS)) ident = TRUE;
@@ -1177,10 +1232,8 @@ msg_print("
                        if (do_inc_stat(A_CON)) ident = TRUE;
                        if (do_inc_stat(A_CHR)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_ENLIGHTENMENT:
-               {
 #ifdef JP
                        msg_print("¼«Ê¬¤ÎÃÖ¤«¤ì¤Æ¤¤¤ë¾õ¶·¤¬Ç¾Î¢¤ËÉ⤫¤ó¤Ç¤­¤¿...");
 #else
@@ -1192,10 +1245,8 @@ msg_print("
                        wiz_lite(FALSE, FALSE);
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_STAR_ENLIGHTENMENT:
-               {
 #ifdef JP
                        msg_print("¹¹¤Ê¤ë·¼Ìؤò´¶¤¸¤¿...");
 #else
@@ -1218,10 +1269,8 @@ msg_print("
                        self_knowledge();
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_SELF_KNOWLEDGE:
-               {
 #ifdef JP
                        msg_print("¼«Ê¬¼«¿È¤Î¤³¤È¤¬¾¯¤·¤Ïʬ¤«¤Ã¤¿µ¤¤¬¤¹¤ë...");
 #else
@@ -1232,10 +1281,8 @@ msg_print("
                        self_knowledge();
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_EXPERIENCE:
-               {
                        if (p_ptr->prace == RACE_ANDROID) break;
                        chg_virtue(V_ENLIGHTEN, 1);
                        if (p_ptr->exp < PY_MAX_EXP)
@@ -1252,10 +1299,8 @@ msg_print("
                                ident = TRUE;
                        }
                        break;
-               }
 
                case SV_POTION_RESISTANCE:
-               {
                        (void)set_oppose_acid(p_ptr->oppose_acid + randint1(20) + 20, FALSE);
                        (void)set_oppose_elec(p_ptr->oppose_elec + randint1(20) + 20, FALSE);
                        (void)set_oppose_fire(p_ptr->oppose_fire + randint1(20) + 20, FALSE);
@@ -1263,10 +1308,8 @@ msg_print("
                        (void)set_oppose_pois(p_ptr->oppose_pois + randint1(20) + 20, FALSE);
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_CURING:
-               {
                        if (hp_player(50)) ident = TRUE;
                        if (set_blind(0)) ident = TRUE;
                        if (set_poisoned(0)) ident = TRUE;
@@ -1275,17 +1318,13 @@ msg_print("
                        if (set_cut(0)) ident = TRUE;
                        if (set_image(0)) ident = TRUE;
                        break;
-               }
 
                case SV_POTION_INVULNERABILITY:
-               {
                        (void)set_invuln(p_ptr->invuln + randint1(4) + 4, FALSE);
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_NEW_LIFE:
-               {
                        do_cmd_rerate(FALSE);
                        get_max_stats();
                        p_ptr->update |= PU_BONUS;
@@ -1305,18 +1344,14 @@ msg_print("
                        }
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_NEO_TSUYOSHI:
-               {
                        (void)set_image(0);
                        (void)set_tsuyoshi(p_ptr->tsuyoshi + randint1(100) + 100, FALSE);
                        ident = TRUE;
                        break;
-               }
 
                case SV_POTION_TSUYOSHI:
-               {
 #ifdef JP
 msg_print("¡Ö¥ª¥¯¥ì·»¤µ¤ó¡ª¡×");
 #else
@@ -1331,10 +1366,8 @@ msg_print("
                        }
                        ident = TRUE;
                        break;
-               }
                
                case SV_POTION_POLYMORPH:
-               {
                        if ((p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3) && one_in_(23))
                        {
                                chg_virtue(V_CHANCE, -5);
@@ -1411,12 +1444,33 @@ msg_print("
                                break;
                        case RACE_GOLEM:
                        case RACE_ZOMBIE:
-                       case RACE_ENT:
                        case RACE_DEMON:
                        case RACE_SPECTRE:
-                       case RACE_ANDROID:
                                set_food(p_ptr->food + ((o_ptr->pval) / 20));
                                break;
+                       case RACE_ANDROID:
+                               if (o_ptr->tval == TV_FLASK)
+                               {
+#ifdef JP
+                                       msg_print("¥ª¥¤¥ë¤òÊäµë¤·¤¿¡£");
+#else
+                                       msg_print("You replenish yourself with the oil.");
+#endif
+                                       set_food(p_ptr->food + 5000);
+                               }
+                               else
+                               {
+                                       set_food(p_ptr->food + ((o_ptr->pval) / 20));
+                               }
+                               break;
+                       case RACE_ENT:
+#ifdef JP
+                               msg_print("¿åʬ¤ò¼è¤ê¹þ¤ó¤À¡£");
+#else
+                               msg_print("You are moistened.");
+#endif
+                               set_food(MIN(p_ptr->food + o_ptr->pval + 1000, PY_FOOD_MAX - 1));
+                               break;
                        default:
                                (void)set_food(p_ptr->food + o_ptr->pval);
                                break;
@@ -1436,6 +1490,26 @@ msg_print("
 }
 
 
+/*
+ * Hook to determine if an object can be quaffed
+ */
+static bool item_tester_hook_quaff(object_type *o_ptr)
+{
+       if (o_ptr->tval == TV_POTION) return TRUE;
+
+       if (p_ptr->prace == RACE_ANDROID)
+       {
+               if (o_ptr->tval == TV_FLASK && o_ptr->sval == SV_FLASK_OIL)
+                       return TRUE;
+       }
+
+       return FALSE;
+}
+
+
+/*
+ * Quaff some potion (from the pack or floor)
+ */
 void do_cmd_quaff_potion(void)
 {
        int  item;
@@ -1447,7 +1521,7 @@ void do_cmd_quaff_potion(void)
        }
 
        /* Restrict choices to potions */
-       item_tester_tval = TV_POTION;
+       item_tester_hook = item_tester_hook_quaff;
 
        /* Get an item */
 #ifdef JP
index f85a559..6e4f3af 100644 (file)
 #define SV_PHOTO                       50
 
 /* The "sval" codes for TV_CORPSE */
-#define SV_SKELETON                            0
-#define SV_CORPSE                                      1
+#define SV_SKELETON                    0
+#define SV_CORPSE                      1
 
 /* The "sval" codes for TV_SHOT/TV_ARROW/TV_BOLT */
 #define SV_AMMO_LIGHT                    0     /* pebbles */
 #define SV_STAFF_DESTRUCTION            29
 #define SV_STAFF_ANIMATE_DEAD           30
 #define SV_STAFF_MSTORM                 31
+#define SV_STAFF_NOTHING                32
 
 
 /* The "sval" codes for TV_WAND */
 #define SV_POTION_TSUYOSHI              65
 #define SV_POTION_POLYMORPH             66
 
+/* The "sval" codes for TV_FLASK */
+#define SV_FLASK_OIL                   0
+
 /* The "sval" codes for TV_FOOD */
 #define SV_FOOD_POISON                   0
 #define SV_FOOD_BLINDNESS                1
index 69c106f..3cc1906 100644 (file)
@@ -294,6 +294,7 @@ extern bool leave_corpse;
 extern bool leave_junk;
 extern bool destroy_items;
 extern bool leave_chest;
+extern bool leave_special;
 extern bool record_fix_art;
 extern bool record_rand_art;
 extern bool record_destroy_uniq;
index 920b17f..ddf36f7 100644 (file)
@@ -1115,7 +1115,7 @@ static byte store_table[MAX_STORES][STORE_CHOICES][2] =
 
                { TV_SCROLL, SV_SCROLL_DETECT_INVIS },
                { TV_SCROLL, SV_SCROLL_RECHARGING },
-               { TV_SCROLL, SV_SCROLL_SATISFY_HUNGER },
+               { 0, 0 },
                { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
 
                { TV_SCROLL, SV_SCROLL_WORD_OF_RECALL },
@@ -1149,9 +1149,9 @@ static byte store_table[MAX_STORES][STORE_CHOICES][2] =
                { TV_SCROLL, SV_SCROLL_ENCHANT_ARMOR },
 
                { TV_SCROLL, SV_SCROLL_RECHARGING },
-               { TV_SCROLL, SV_SCROLL_SATISFY_HUNGER },
-               { TV_SCROLL, SV_SCROLL_SATISFY_HUNGER },
-               { TV_SCROLL, SV_SCROLL_SATISFY_HUNGER }
+               { 0, 0 },
+               { 0, 0 },
+               { 0, 0 },
 
        },
 
index a8a6645..8af2bda 100644 (file)
@@ -1342,13 +1342,6 @@ msg_print("
                {
                        if (command == -3)
                        {
-                               if (racial_aux(5, 5, A_DEX, 10))
-                               {
-                                       (void)set_food(PY_FOOD_MAX - 1);
-                               }
-                       }
-                       else if (command == -4)
-                       {
                                if (racial_aux(10, 10, A_DEX, 20))
                                {
                                        if (!word_of_recall()) return FALSE;
@@ -2739,16 +2732,6 @@ strcpy(power_desc[num].name, "
        case CLASS_BERSERKER:
        {
 #ifdef JP
-strcpy(power_desc[num].name, "¶õÊ¢½¼Â­");
-#else
-               strcpy(power_desc[num].name, "Satisfy Hunger");
-#endif
-
-               power_desc[num].level = 5;
-               power_desc[num].cost = 5;
-               power_desc[num].fail = 100 - racial_chance(5, A_DEX, 10);
-               power_desc[num++].number = -3;
-#ifdef JP
 strcpy(power_desc[num].name, "µ¢´Ô");
 #else
                strcpy(power_desc[num].name, "Recall");
index dbcb5dc..b2cc862 100644 (file)
@@ -813,14 +813,6 @@ info[i++] = "
                        }
                        break;
                case CLASS_BERSERKER:
-                       if (plev > 4)
-                       {
-#ifdef JP
-info[i++] = "¤¢¤Ê¤¿¤Ï¼«Ê¬¤Ç¶õÊ¢¤òËþ¤¿¤¹¤³¤È¤¬¤Ç¤­¤ë¡£";
-#else
-                               info[i++] = "You can satisfy hunger.";
-#endif
-                       }
                        if (plev > 9)
                        {
 #ifdef JP
index 22ac928..f965a66 100644 (file)
@@ -7350,6 +7350,14 @@ option_type option_info[] =
        "leave_junk",                   "Auto-destroyer leaves junk" },
 #endif
 
+#ifdef JP
+       { &leave_special,               TRUE, 7, 7, 1,
+       "leave_special",                "¼ï²/¿¦¶È¤ÇÆÃÊ̤ËɬÍפʥ¢¥¤¥Æ¥à¤Ï²õ¤µ¤Ê¤¤" },
+#else
+       { &leave_special,               TRUE, 7, 7, 1,
+       "leave_special",                "Auto-destroyer leaves items your race/class needs" },
+#endif
+
 
        /*** Play-record Options ***/
 
index 23c67cc..44f8c4b 100644 (file)
@@ -963,6 +963,7 @@ bool leave_wanted;
 bool leave_corpse;
 bool leave_junk;
 bool leave_chest;
+bool leave_special;
 
 /* Nikki */
 bool record_fix_art;