OSDN Git Service

Leon氏の勧めに従って、Vanillaのコードと同様に各ソースファイルの頭の
[hengband/hengband.git] / src / racial.c
index fa2fbe0..789cf4c 100644 (file)
@@ -1,15 +1,15 @@
 /* File: racial.c */
 
-/* Purpose: Racial powers (and mutations) */
-
 /*
- * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
+ * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
  *
- * This software may be copied and distributed for educational, research, and
- * not for profit purposes provided that this copyright and statement are
- * included in all such copies.
+ * This software may be copied and distributed for educational, research,
+ * and not for profit purposes provided that this copyright and statement
+ * are included in all such copies.  Other copyrights may also apply.
  */
 
+/* Purpose: Racial powers (and mutations) */
+
 #include "angband.h"
 
 /*
@@ -316,6 +316,17 @@ s = "
                o_ptr = &o_list[0 - item];
        }
 
+       if (o_ptr->tval == TV_STAFF && o_ptr->sval == SV_STAFF_NOTHING)
+       {
+#ifdef JP
+               msg_print("¤³¤Î¾ó¤Ë¤Ïȯư¤Î°Ù¤ÎǽÎϤϲ¿¤âÈ÷¤ï¤Ã¤Æ¤¤¤Ê¤¤¤è¤¦¤À¡£");
+#else
+               msg_print("This staff doesn't have any magical ability.");
+#endif
+               return FALSE;
+       }
+
+
        if (!object_known_p(o_ptr))
        {
 #ifdef JP
@@ -458,7 +469,7 @@ static bool choose_kamae(void)
 #ifdef JP
                                msg_print("¤â¤È¤â¤È¹½¤¨¤Æ¤¤¤Ê¤¤¡£");
 #else
-                               msg_print("You are not assuming a posture.");
+                               msg_print("You are not assuming a posture.");
 #endif
                        screen_load();
                        return TRUE;
@@ -869,7 +880,7 @@ msg_print("
                }
                case CLASS_PRIEST:
                {
-                       if (p_ptr->realm1 == REALM_LIFE)
+                       if (is_good_realm(p_ptr->realm1))
                        {
                                if (racial_aux(35, 70, A_WIS, 50))
                                {
@@ -936,7 +947,7 @@ msg_print("Ũ
                }
                case CLASS_PALADIN:
                {
-                       if (p_ptr->realm1 == REALM_LIFE)
+                       if (is_good_realm(p_ptr->realm1))
                        {
                                if (racial_aux(30, 30, A_WIS, 20))
                                {
@@ -960,14 +971,14 @@ msg_print("Ũ
                        {
                                if (racial_aux(25, 0, A_INT, 10))
                                {
-                                       if (take_hit(DAMAGE_USELIFE, p_ptr->lev, 
+                                       int gain_sp;
 #ifdef JP
-"£È£Ð¤«¤é£Í£Ð¤Ø¤Î̵ËŤÊÊÑ´¹", -1))
+                                       if ((gain_sp = take_hit(DAMAGE_USELIFE, p_ptr->lev, "£È£Ð¤«¤é£Í£Ð¤Ø¤Î̵ËŤÊÊÑ´¹", -1)))
 #else
-"thoughtless convertion from HP to SP", -1))
+                                       if ((gain_sp = take_hit(DAMAGE_USELIFE, p_ptr->lev, "thoughtless convertion from HP to SP", -1)))
 #endif
                                        {
-                                               p_ptr->csp += p_ptr->lev / 5;
+                                               p_ptr->csp += gain_sp / 5;
                                                if (p_ptr->csp > p_ptr->msp)
                                                {
                                                        p_ptr->csp = p_ptr->msp;
@@ -1316,7 +1327,7 @@ msg_print("
                                rlev = r_ptr->level;
                                if (r_ptr->flags1 & RF1_UNIQUE) rlev = rlev * 3 / 2;
                                if (rlev > 60) rlev = 60+(rlev-60)/2;
-                               if ((randint1(skill_exp[GINOU_RIDING]/120+p_ptr->lev*2/3) > rlev) && one_in_(2) && !p_ptr->inside_arena && !p_ptr->inside_battle && !(r_ptr->flags7 & (RF7_GUARDIAN)) && !(r_ptr->flags1 & (RF1_QUESTOR)) && (rlev < p_ptr->lev*3/2+randint0(p_ptr->lev/5)))
+                               if ((randint1(p_ptr->skill_exp[GINOU_RIDING]/120+p_ptr->lev*2/3) > rlev) && one_in_(2) && !p_ptr->inside_arena && !p_ptr->inside_battle && !(r_ptr->flags7 & (RF7_GUARDIAN)) && !(r_ptr->flags1 & (RF1_QUESTOR)) && (rlev < p_ptr->lev*3/2+randint0(p_ptr->lev/5)))
                                {
 #ifdef JP
                                        msg_format("%s¤ò¼ê¤Ê¤º¤±¤¿¡£",m_name);
@@ -1333,6 +1344,10 @@ msg_print("
                                        msg_format("You have thrown off by %s.",m_name);
 #endif
                                        rakuba(1,TRUE);
+
+                                       /* Paranoia */
+                                       /* ÍîÇϽèÍý¤Ë¼ºÇÔ¤·¤Æ¤â¤È¤Ë¤«¤¯¾èÇϲò½ü */
+                                       p_ptr->riding = 0;
                                }
                        }
                        break;
@@ -1341,13 +1356,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;
@@ -1378,9 +1386,9 @@ msg_print("
                            int x,y;
                              for( x=0 ; x < cur_wid ;x++){
                                for( y=0 ; y < cur_hgt ;y++){
-                                 if( cave[y][x].feat == FEAT_MIRROR){
-                                   cave_set_feat( y , x , FEAT_FLOOR );
-                                   project(0,2,y,x, p_ptr->lev /2 +5 ,GF_SHARDS,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_REF|PROJECT_NO_HANGEKI),-1);
+                                 if( is_mirror_grid(&cave[y][x])) {
+                                   remove_mirror(y,x);
+                                   project(0,2,y,x, p_ptr->lev /2 +5 ,GF_SHARDS,(PROJECT_GRID|PROJECT_ITEM|PROJECT_KILL|PROJECT_JUMP|PROJECT_NO_HANGEKI),-1);
                                  }
                                }
                              }
@@ -1398,7 +1406,7 @@ msg_print("
                                  return FALSE;
                          }
                          if (racial_aux(30, 0, A_INT, 20)){
-                               if( cave[py][px].feat == FEAT_MIRROR)
+                               if( is_mirror_grid(&cave[py][px]))
                                {
 #ifdef JP
 msg_print("¾¯¤·Æ¬¤¬¥Ï¥Ã¥­¥ê¤·¤¿¡£");
@@ -1546,7 +1554,7 @@ msg_print("
                                msg_print("You examine your surroundings.");
 #endif
 
-                               (void)detect_traps(DETECT_RAD_DEFAULT);
+                               (void)detect_traps(DETECT_RAD_DEFAULT, TRUE);
                                (void)detect_doors(DETECT_RAD_DEFAULT);
                                (void)detect_stairs(DETECT_RAD_DEFAULT);
                        }
@@ -1650,30 +1658,12 @@ msg_print("
                        {
                                if (racial_aux(30, 50, A_INT, 50))
                                {
-                                       /* No effect in arena or quest */
-                                       if (p_ptr->inside_arena || p_ptr->inside_quest)
-                                       {
 #ifdef JP
-msg_print("¸ú²Ì¤¬¤Ê¤«¤Ã¤¿¡£");
+                                       msg_print("¤¢¤Ê¤¿¤ÏÊ⤭¼þ¤ê»Ï¤á¤¿¡£");
 #else
-                                               msg_print("There is no effect.");
+                                       msg_print("You start walking around. ");
 #endif
-
-                                       }
-                                       else
-                                       {
-#ifdef JP
-msg_print("¤¢¤Ê¤¿¤ÏÊ⤭¼þ¤ê»Ï¤á¤¿¡£¼þ°Ï¤¬ÊѲ½¤·¤Æ¤¤¤ë¡£");
-#else
-                                               msg_print("You start walking around. Your surroundings change.");
-#endif
-
-
-                                               if (autosave_l) do_cmd_save_game(TRUE);
-
-                                               /* Leaving */
-                                               p_ptr->leaving = TRUE;
-                                       }
+                                       alter_reality();
                                }
                        }
                        break;
@@ -1802,7 +1792,7 @@ msg_print("
                                msg_print("You examine your surroundings.");
 #endif
 
-                               (void)detect_traps(DETECT_RAD_DEFAULT);
+                               (void)detect_traps(DETECT_RAD_DEFAULT, TRUE);
                                (void)detect_doors(DETECT_RAD_DEFAULT);
                                (void)detect_stairs(DETECT_RAD_DEFAULT);
                        }
@@ -2402,7 +2392,7 @@ strcpy(power_desc[num].name, "
        }
        case CLASS_PRIEST:
        {
-               if (p_ptr->realm1 == REALM_LIFE)
+               if (is_good_realm(p_ptr->realm1))
                {
 #ifdef JP
 strcpy(power_desc[num].name, "Éð´ï½ËÊ¡");
@@ -2460,7 +2450,7 @@ strcpy(power_desc[num].name, "
        }
        case CLASS_PALADIN:
        {
-               if (p_ptr->realm1 == REALM_LIFE)
+               if (is_good_realm(p_ptr->realm1))
                {
 #ifdef JP
 strcpy(power_desc[num].name, "¥Û¡¼¥ê¡¼¡¦¥é¥ó¥¹");
@@ -2536,7 +2526,7 @@ strcpy(power_desc[num].name, "
 
                power_desc[num].level = 25;
                power_desc[num].cost = 0;
-               power_desc[num].fail = 100 - racial_chance(20, A_DEX, 0);
+               power_desc[num].fail = 100 - racial_chance(25, A_DEX, 0);
                power_desc[num++].number = -3;
 #ifdef JP
 strcpy(power_desc[num].name, "É´Îö·ý");
@@ -2546,7 +2536,7 @@ strcpy(power_desc[num].name, "ɴ
 
                power_desc[num].level = 30;
                power_desc[num].cost = 30;
-               power_desc[num].fail = 100 - racial_chance(20, A_STR, 20);
+               power_desc[num].fail = 100 - racial_chance(30, A_STR, 20);
                power_desc[num++].number = -4;
                break;
        }
@@ -2738,16 +2728,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");
@@ -2756,7 +2736,7 @@ strcpy(power_desc[num].name, "
                power_desc[num].level = 10;
                power_desc[num].cost = 10;
                power_desc[num].fail = 100 - racial_chance(10, A_DEX, 20);
-               power_desc[num++].number = -4;
+               power_desc[num++].number = -3;
                break;
        }
        case CLASS_MIRROR_MASTER:
@@ -3721,9 +3701,9 @@ if (!repeat_pull(&i) || i<0 || i>=num) {
        if (use_menu) screen_save();
         /* Get a spell from the user */
 
-        choice = (always_show_list || use_menu) ? ESCAPE:1;
-        while (!flag)
-        {
+       choice = (always_show_list || use_menu) ? ESCAPE:1;
+       while (!flag)
+       {
                if( choice==ESCAPE ) choice = ' '; 
                else if( !get_com(out_val, &choice, FALSE) )break;