OSDN Git Service

[Refactor] #40399 Reshaped object1.c
authorHourier <hourier@users.sourceforge.jp>
Sun, 7 Jun 2020 03:45:07 +0000 (12:45 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 7 Jun 2020 03:45:07 +0000 (12:45 +0900)
src/object/object1.c

index 4de7b49..5e42058 100644 (file)
 #include "object/object1.h"
 #include "art-definition/art-weapon-types.h"
 #include "cmd-item/cmd-activate.h"
-#include "cmd-item/cmd-smith.h"
-#include "combat/snipe.h"
 #include "floor/floor.h"
-#include "inventory/player-inventory.h"
-#include "io/files-util.h"
-#include "io/read-pref-file.h"
-#include "monster/monster.h"
 #include "object-enchant/artifact.h"
-#include "object-enchant/item-apply-magic.h"
-#include "perception/object-perception.h"
 #include "object-enchant/object-ego.h"
 #include "object/object-flags.h"
-#include "object/object-flavor.h"
-#include "object/object-hook.h"
 #include "object/object-kind.h"
-#include "object-enchant/special-object-flags.h"
-#include "sv-definition/sv-amulet-types.h"
-#include "sv-definition/sv-lite-types.h"
 #include "sv-definition/sv-other-types.h"
 #include "sv-definition/sv-ring-types.h"
-#include "sv-definition/sv-weapon-types.h"
-#include "object-enchant/tr-types.h"
-#include "object-enchant/trc-types.h"
-#include "player/player-class.h"
-#include "player/player-move.h"
-#include "system/system-variables.h"
 #include "term/term-color-types.h"
-#include "util/util.h"
-#include "view/display-main-window.h"
 
 /*!
  * @brief オブジェクトの発動効果名称を返す(サブルーチン/ブレス)
  */
 static concptr item_activation_dragon_breath(object_type *o_ptr)
 {
-       static char desc[256];
-       BIT_FLAGS flgs[TR_FLAG_SIZE]; /* for resistance flags */
-       int n = 0;
+    static char desc[256];
+    BIT_FLAGS flgs[TR_FLAG_SIZE]; /* for resistance flags */
+    int n = 0;
 
-       object_flags(o_ptr, flgs);
-       strcpy(desc, _("", "breath "));
+    object_flags(o_ptr, flgs);
+    strcpy(desc, _("", "breath "));
 
-       for (int i = 0; dragonbreath_info[i].flag != 0; i++)
-       {
-               if (have_flag(flgs, dragonbreath_info[i].flag))
-               {
-                       if (n > 0) strcat(desc, _("、", ", "));
+    for (int i = 0; dragonbreath_info[i].flag != 0; i++) {
+        if (have_flag(flgs, dragonbreath_info[i].flag)) {
+            if (n > 0)
+                strcat(desc, _("、", ", "));
 
-                       strcat(desc, dragonbreath_info[i].name);
-                       n++;
-               }
-       }
+            strcat(desc, dragonbreath_info[i].name);
+            n++;
+        }
+    }
 
-       strcat(desc, _("のブレス(250)", ""));
-       return (desc);
+    strcat(desc, _("のブレス(250)", ""));
+    return (desc);
 }
 
-
 /*!
  * @brief オブジェクトの発動効果名称を返す(サブルーチン/汎用)
  * @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
@@ -80,93 +57,89 @@ static concptr item_activation_dragon_breath(object_type *o_ptr)
  */
 static concptr item_activation_aux(object_type *o_ptr)
 {
-       static char activation_detail[256];
-       char timeout[32];
-       const activation_type* const act_ptr = find_activation_info(o_ptr);
+    static char activation_detail[256];
+    char timeout[32];
+    const activation_type *const act_ptr = find_activation_info(o_ptr);
 
-       if (!act_ptr) return _("未定義", "something undefined");
+    if (!act_ptr)
+        return _("未定義", "something undefined");
 
-       concptr desc = act_ptr->desc;
-       switch (act_ptr->index) {
-       case ACT_BR_FIRE:
-               if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
-                       desc = _("火炎のブレス (200) と火への耐性", "breath of fire (200) and resist fire");
-               break;
-       case ACT_BR_COLD:
-               if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
-                       desc = _("冷気のブレス (200) と冷気への耐性", "breath of cold (200) and resist cold");
-               break;
-       case ACT_BR_DRAGON:
-               desc = item_activation_dragon_breath(o_ptr);
-               break;
-       case ACT_AGGRAVATE:
-               if (o_ptr->name1 == ART_HYOUSIGI)
-                       desc = _("拍子木を打ちならす", "beat wooden clappers");
-               break;
-       case ACT_RESIST_ACID:
-               if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ACID)) || (o_ptr->name2 == EGO_BRAND_ACID))
-                       desc = _("アシッド・ボール (100) と酸への耐性", "ball of acid (100) and resist acid");
-               break;
-       case ACT_RESIST_FIRE:
-               if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) || (o_ptr->name2 == EGO_BRAND_FIRE))
-                       desc = _("ファイア・ボール (100) と火への耐性", "ball of fire (100) and resist fire");
-               break;
-       case ACT_RESIST_COLD:
-               if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) || (o_ptr->name2 == EGO_BRAND_COLD))
-                       desc = _("アイス・ボール (100) と冷気への耐性", "ball of cold (100) and resist cold");
-               break;
-       case ACT_RESIST_ELEC:
-               if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ELEC)) || (o_ptr->name2 == EGO_BRAND_ELEC))
-                       desc = _("サンダー・ボール (100) と電撃への耐性", "ball of elec (100) and resist elec");
-               break;
-       case ACT_RESIST_POIS:
-               if (o_ptr->name2 == EGO_BRAND_POIS)
-                       desc = _("悪臭雲 (100) と毒への耐性", "ball of poison (100) and resist elec");
-               break;
-       }
+    concptr desc = act_ptr->desc;
+    switch (act_ptr->index) {
+    case ACT_BR_FIRE:
+        if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
+            desc = _("火炎のブレス (200) と火への耐性", "breath of fire (200) and resist fire");
+        break;
+    case ACT_BR_COLD:
+        if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
+            desc = _("冷気のブレス (200) と冷気への耐性", "breath of cold (200) and resist cold");
+        break;
+    case ACT_BR_DRAGON:
+        desc = item_activation_dragon_breath(o_ptr);
+        break;
+    case ACT_AGGRAVATE:
+        if (o_ptr->name1 == ART_HYOUSIGI)
+            desc = _("拍子木を打ちならす", "beat wooden clappers");
+        break;
+    case ACT_RESIST_ACID:
+        if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ACID)) || (o_ptr->name2 == EGO_BRAND_ACID))
+            desc = _("アシッド・ボール (100) と酸への耐性", "ball of acid (100) and resist acid");
+        break;
+    case ACT_RESIST_FIRE:
+        if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) || (o_ptr->name2 == EGO_BRAND_FIRE))
+            desc = _("ファイア・ボール (100) と火への耐性", "ball of fire (100) and resist fire");
+        break;
+    case ACT_RESIST_COLD:
+        if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) || (o_ptr->name2 == EGO_BRAND_COLD))
+            desc = _("アイス・ボール (100) と冷気への耐性", "ball of cold (100) and resist cold");
+        break;
+    case ACT_RESIST_ELEC:
+        if (((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ELEC)) || (o_ptr->name2 == EGO_BRAND_ELEC))
+            desc = _("サンダー・ボール (100) と電撃への耐性", "ball of elec (100) and resist elec");
+        break;
+    case ACT_RESIST_POIS:
+        if (o_ptr->name2 == EGO_BRAND_POIS)
+            desc = _("悪臭雲 (100) と毒への耐性", "ball of poison (100) and resist elec");
+        break;
+    }
 
-       /* Timeout description */
-       int constant = act_ptr->timeout.constant;
-       int dice = act_ptr->timeout.dice;
-       if (constant == 0 && dice == 0) {
-               /* We can activate it every turn */
-               strcpy(timeout, _("いつでも", "every turn"));
-       } else if (constant < 0) {
-               /* Activations that have special timeout */
-               switch (act_ptr->index) {
-               case ACT_BR_FIRE:
-                       sprintf(timeout, _("%d ターン毎", "every %d turns"),
-                               ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) ? 200 : 250);
-                       break;
-               case ACT_BR_COLD:
-                       sprintf(timeout, _("%d ターン毎", "every %d turns"),
-                               ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) ? 200 : 250);
-                       break;
-               case ACT_TERROR:
-                       strcpy(timeout, _("3*(レベル+10) ターン毎", "every 3 * (level+10) turns"));
-                       break;
-               case ACT_MURAMASA:
-                       strcpy(timeout, _("確率50%で壊れる", "(destroyed 50%)"));
-                       break;
-               default:
-                       strcpy(timeout, "undefined");
-                       break;
-               }
-       } else {
-               char constant_str[16], dice_str[16];
-               sprintf(constant_str, "%d", constant);
-               sprintf(dice_str, "d%d", dice);
-               sprintf(timeout, _("%s%s%s ターン毎", "every %s%s%s turns"),
-                       (constant > 0) ? constant_str : "",
-                       (constant > 0 && dice > 0) ? "+" : "",
-                       (dice > 0) ? dice_str : "");
-       }
+    /* Timeout description */
+    int constant = act_ptr->timeout.constant;
+    int dice = act_ptr->timeout.dice;
+    if (constant == 0 && dice == 0) {
+        /* We can activate it every turn */
+        strcpy(timeout, _("いつでも", "every turn"));
+    } else if (constant < 0) {
+        /* Activations that have special timeout */
+        switch (act_ptr->index) {
+        case ACT_BR_FIRE:
+            sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) ? 200 : 250);
+            break;
+        case ACT_BR_COLD:
+            sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) ? 200 : 250);
+            break;
+        case ACT_TERROR:
+            strcpy(timeout, _("3*(レベル+10) ターン毎", "every 3 * (level+10) turns"));
+            break;
+        case ACT_MURAMASA:
+            strcpy(timeout, _("確率50%で壊れる", "(destroyed 50%)"));
+            break;
+        default:
+            strcpy(timeout, "undefined");
+            break;
+        }
+    } else {
+        char constant_str[16], dice_str[16];
+        sprintf(constant_str, "%d", constant);
+        sprintf(dice_str, "d%d", dice);
+        sprintf(timeout, _("%s%s%s ターン毎", "every %s%s%s turns"), (constant > 0) ? constant_str : "", (constant > 0 && dice > 0) ? "+" : "",
+            (dice > 0) ? dice_str : "");
+    }
 
-       sprintf(activation_detail, _("%s : %s", "%s %s"), desc, timeout);
-       return activation_detail;
+    sprintf(activation_detail, _("%s : %s", "%s %s"), desc, timeout);
+    return activation_detail;
 }
 
-
 /*!
  * @brief オブジェクトの発動効果名称を返す(メインルーチン) /
  * Determine the "Activation" (if any) for an artifact Return a string, or NULL for "no activation"
@@ -175,29 +148,26 @@ static concptr item_activation_aux(object_type *o_ptr)
  */
 concptr item_activation(object_type *o_ptr)
 {
-       BIT_FLAGS flgs[TR_FLAG_SIZE];
-       object_flags(o_ptr, flgs);
-       if (!(have_flag(flgs, TR_ACTIVATE))) return (_("なし", "nothing"));
+    BIT_FLAGS flgs[TR_FLAG_SIZE];
+    object_flags(o_ptr, flgs);
+    if (!(have_flag(flgs, TR_ACTIVATE)))
+        return (_("なし", "nothing"));
 
-       if (activation_index(o_ptr))
-       {
-               return item_activation_aux(o_ptr);
-       }
+    if (activation_index(o_ptr)) {
+        return item_activation_aux(o_ptr);
+    }
 
-       if (o_ptr->tval == TV_WHISTLE)
-       {
-               return _("ペット呼び寄せ : 100+d100ターン毎", "call pet every 100+d100 turns");
-       }
+    if (o_ptr->tval == TV_WHISTLE) {
+        return _("ペット呼び寄せ : 100+d100ターン毎", "call pet every 100+d100 turns");
+    }
 
-       if (o_ptr->tval == TV_CAPTURE)
-       {
-               return _("モンスターを捕える、又は解放する。", "captures or releases a monster.");
-       }
+    if (o_ptr->tval == TV_CAPTURE) {
+        return _("モンスターを捕える、又は解放する。", "captures or releases a monster.");
+    }
 
-       return _("何も起きない", "Nothing");
+    return _("何も起きない", "Nothing");
 }
 
-
 /*!
  * @brief オブジェクト選択時の選択アルファベットラベルを返す /
  * Convert an inventory index into a one character label
@@ -205,11 +175,7 @@ concptr item_activation(object_type *o_ptr)
  * @return 対応するアルファベット
  * @details Note that the label does NOT distinguish inven/equip.
  */
-char index_to_label(int i)
-{
-       return (i < INVEN_RARM) ? (I2A(i)) : (I2A(i - INVEN_RARM));
-}
-
+char index_to_label(int i) { return (i < INVEN_RARM) ? (I2A(i)) : (I2A(i - INVEN_RARM)); }
 
 /*!
  * @brief オブジェクトの該当装備部位IDを返す /
@@ -219,73 +185,65 @@ char index_to_label(int i)
  */
 s16b wield_slot(player_type *owner_ptr, object_type *o_ptr)
 {
-       switch (o_ptr->tval)
-       {
-               case TV_DIGGING:
-               case TV_HAFTED:
-               case TV_POLEARM:
-               case TV_SWORD:
-               {
-                       if (!owner_ptr->inventory_list[INVEN_RARM].k_idx) return (INVEN_RARM);
-                       if (owner_ptr->inventory_list[INVEN_LARM].k_idx) return (INVEN_RARM);
-                       return (INVEN_LARM);
-               }
-               case TV_CAPTURE:
-               case TV_CARD:
-               case TV_SHIELD:
-               {
-                       if (!owner_ptr->inventory_list[INVEN_LARM].k_idx) return (INVEN_LARM);
-                       if (owner_ptr->inventory_list[INVEN_RARM].k_idx) return (INVEN_LARM);
-                       return (INVEN_RARM);
-               }
-               case TV_BOW:
-               {
-                       return (INVEN_BOW);
-               }
-               case TV_RING:
-               {
-                       if (!owner_ptr->inventory_list[INVEN_RIGHT].k_idx) return (INVEN_RIGHT);
+    switch (o_ptr->tval) {
+    case TV_DIGGING:
+    case TV_HAFTED:
+    case TV_POLEARM:
+    case TV_SWORD: {
+        if (!owner_ptr->inventory_list[INVEN_RARM].k_idx)
+            return (INVEN_RARM);
+        if (owner_ptr->inventory_list[INVEN_LARM].k_idx)
+            return (INVEN_RARM);
+        return (INVEN_LARM);
+    }
+    case TV_CAPTURE:
+    case TV_CARD:
+    case TV_SHIELD: {
+        if (!owner_ptr->inventory_list[INVEN_LARM].k_idx)
+            return (INVEN_LARM);
+        if (owner_ptr->inventory_list[INVEN_RARM].k_idx)
+            return (INVEN_LARM);
+        return (INVEN_RARM);
+    }
+    case TV_BOW: {
+        return (INVEN_BOW);
+    }
+    case TV_RING: {
+        if (!owner_ptr->inventory_list[INVEN_RIGHT].k_idx)
+            return (INVEN_RIGHT);
 
-                       return (INVEN_LEFT);
-               }
-               case TV_AMULET:
-               case TV_WHISTLE:
-               {
-                       return (INVEN_NECK);
-               }
-               case TV_LITE:
-               {
-                       return (INVEN_LITE);
-               }
-               case TV_DRAG_ARMOR:
-               case TV_HARD_ARMOR:
-               case TV_SOFT_ARMOR:
-               {
-                       return (INVEN_BODY);
-               }
-               case TV_CLOAK:
-               {
-                       return (INVEN_OUTER);
-               }
-               case TV_CROWN:
-               case TV_HELM:
-               {
-                       return (INVEN_HEAD);
-               }
-               case TV_GLOVES:
-               {
-                       return (INVEN_HANDS);
-               }
-               case TV_BOOTS:
-               {
-                       return (INVEN_FEET);
-               }
-       }
+        return (INVEN_LEFT);
+    }
+    case TV_AMULET:
+    case TV_WHISTLE: {
+        return (INVEN_NECK);
+    }
+    case TV_LITE: {
+        return (INVEN_LITE);
+    }
+    case TV_DRAG_ARMOR:
+    case TV_HARD_ARMOR:
+    case TV_SOFT_ARMOR: {
+        return (INVEN_BODY);
+    }
+    case TV_CLOAK: {
+        return (INVEN_OUTER);
+    }
+    case TV_CROWN:
+    case TV_HELM: {
+        return (INVEN_HEAD);
+    }
+    case TV_GLOVES: {
+        return (INVEN_HANDS);
+    }
+    case TV_BOOTS: {
+        return (INVEN_FEET);
+    }
+    }
 
-       return -1;
+    return -1;
 }
 
-
 /*!
  * @brief tval/sval指定のベースアイテムがプレイヤーの使用可能な魔法書かどうかを返す /
  * Hack: Check if a spellbook is one of the realms we can use. -- TY
@@ -295,24 +253,22 @@ s16b wield_slot(player_type *owner_ptr, object_type *o_ptr)
  */
 bool check_book_realm(player_type *owner_ptr, const tval_type book_tval, const OBJECT_SUBTYPE_VALUE book_sval)
 {
-       if (book_tval < TV_LIFE_BOOK) return FALSE;
-       if (owner_ptr->pclass == CLASS_SORCERER)
-       {
-               return is_magic(tval2realm(book_tval));
-       }
-       else if (owner_ptr->pclass == CLASS_RED_MAGE)
-       {
-               if (is_magic(tval2realm(book_tval)))
-                       return ((book_tval == TV_ARCANE_BOOK) || (book_sval < 2));
-       }
+    if (book_tval < TV_LIFE_BOOK)
+        return FALSE;
+    if (owner_ptr->pclass == CLASS_SORCERER) {
+        return is_magic(tval2realm(book_tval));
+    } else if (owner_ptr->pclass == CLASS_RED_MAGE) {
+        if (is_magic(tval2realm(book_tval)))
+            return ((book_tval == TV_ARCANE_BOOK) || (book_sval < 2));
+    }
 
-       return (REALM1_BOOK == book_tval || REALM2_BOOK == book_tval);
+    return (REALM1_BOOK == book_tval || REALM2_BOOK == book_tval);
 }
 
 object_type *ref_item(player_type *owner_ptr, INVENTORY_IDX item)
 {
     floor_type *floor_ptr = owner_ptr->current_floor_ptr;
-       return item >= 0 ? &owner_ptr->inventory_list[item] : &(floor_ptr->o_list[0 - item]);
+    return item >= 0 ? &owner_ptr->inventory_list[item] : &(floor_ptr->o_list[0 - item]);
 }
 
 /*
@@ -322,8 +278,9 @@ object_type *ref_item(player_type *owner_ptr, INVENTORY_IDX item)
  */
 TERM_COLOR object_attr(object_type *o_ptr)
 {
-    return((k_info[o_ptr->k_idx].flavor) ? (k_info[k_info[o_ptr->k_idx].flavor].x_attr)
-                                   : ((!o_ptr->k_idx || (o_ptr->tval != TV_CORPSE) || (o_ptr->sval != SV_CORPSE) || (k_info[o_ptr->k_idx].x_attr != TERM_DARK))
-                                           ? (k_info[o_ptr->k_idx].x_attr)
-                                           : (r_info[o_ptr->pval].x_attr)));
+    return ((k_info[o_ptr->k_idx].flavor)
+            ? (k_info[k_info[o_ptr->k_idx].flavor].x_attr)
+            : ((!o_ptr->k_idx || (o_ptr->tval != TV_CORPSE) || (o_ptr->sval != SV_CORPSE) || (k_info[o_ptr->k_idx].x_attr != TERM_DARK))
+                    ? (k_info[o_ptr->k_idx].x_attr)
+                    : (r_info[o_ptr->pval].x_attr)));
 }