#include "object-enchant/object-ego.h"
#include "object/object-flags.h"
#include "object/object-kind.h"
+#include "player-base/player-class.h"
#include "player/player-realm.h"
#include "realm/realm-names-table.h"
#include "sv-definition/sv-other-types.h"
#include "sv-definition/sv-ring-types.h"
#include "system/floor-type-definition.h"
-#include "system/object-type-definition.h"
#include "system/monster-race-definition.h"
+#include "system/object-type-definition.h"
#include "system/player-type-definition.h"
#include "term/term-color-types.h"
#include "util/bit-flags-calculator.h"
* @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
* @return concptr 発動名称を返す文字列ポインタ
*/
-static concptr item_activation_dragon_breath(object_type *o_ptr)
+static concptr item_activation_dragon_breath(ObjectType *o_ptr)
{
static char desc[256];
int n = 0;
for (int i = 0; dragonbreath_info[i].flag != 0; i++) {
if (flgs.has(dragonbreath_info[i].flag)) {
- if (n > 0)
+ if (n > 0) {
strcat(desc, _("、", ", "));
+ }
strcat(desc, dragonbreath_info[i].name);
n++;
}
strcat(desc, _("のブレス(250)", " (250)"));
- return (desc);
+ return desc;
}
/*!
* @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
* @return concptr 発動名称を返す文字列ポインタ
*/
-static concptr item_activation_aux(object_type *o_ptr)
+static concptr item_activation_aux(ObjectType *o_ptr)
{
static char activation_detail[512];
char timeout[64];
case RandomArtActType::NONE:
break;
case RandomArtActType::BR_FIRE:
- if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES))
+ if ((o_ptr->tval == ItemKindType::RING) && (o_ptr->sval == SV_RING_FLAMES)) {
desc = _("火炎のブレス (200) と火への耐性", "breathe fire (200) and resist fire");
+ }
break;
case RandomArtActType::BR_COLD:
- if ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE))
+ if ((o_ptr->tval == ItemKindType::RING) && (o_ptr->sval == SV_RING_ICE)) {
desc = _("冷気のブレス (200) と冷気への耐性", "breathe cold (200) and resist cold");
+ }
break;
case RandomArtActType::BR_DRAGON:
desc = item_activation_dragon_breath(o_ptr);
break;
case RandomArtActType::AGGRAVATE:
- if (o_ptr->name1 == ART_HYOUSIGI)
+ if (o_ptr->fixed_artifact_idx == ART_HYOUSIGI) {
desc = _("拍子木を打ちならす", "beat wooden clappers");
+ }
break;
case RandomArtActType::ACID_BALL_AND_RESISTANCE:
desc = _("アシッド・ボール (100) と酸への耐性", "ball of acid (100) and resist acid");
/* Activations that have special timeout */
switch (act_ptr->index) {
case RandomArtActType::BR_FIRE:
- sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_FLAMES)) ? 200 : 250);
+ sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == ItemKindType::RING) && (o_ptr->sval == SV_RING_FLAMES)) ? 200 : 250);
break;
case RandomArtActType::BR_COLD:
- sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == TV_RING) && (o_ptr->sval == SV_RING_ICE)) ? 200 : 250);
+ sprintf(timeout, _("%d ターン毎", "every %d turns"), ((o_ptr->tval == ItemKindType::RING) && (o_ptr->sval == SV_RING_ICE)) ? 200 : 250);
break;
case RandomArtActType::TERROR:
strcpy(timeout, _("3*(レベル+10) ターン毎", "every 3 * (level+10) turns"));
* @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
* @return concptr 発動名称を返す文字列ポインタ
*/
-concptr activation_explanation(object_type *o_ptr)
+concptr activation_explanation(ObjectType *o_ptr)
{
auto flgs = object_flags(o_ptr);
- if (flgs.has_not(TR_ACTIVATE))
- return (_("なし", "nothing"));
+ if (flgs.has_not(TR_ACTIVATE)) {
+ return _("なし", "nothing");
+ }
if (activation_index(o_ptr) > RandomArtActType::NONE) {
return item_activation_aux(o_ptr);
}
- if (o_ptr->tval == TV_WHISTLE) {
+ if (o_ptr->tval == ItemKindType::WHISTLE) {
return _("ペット呼び寄せ : 100+d100ターン毎", "call pet every 100+d100 turns");
}
- if (o_ptr->tval == TV_CAPTURE) {
+ if (o_ptr->tval == ItemKindType::CAPTURE) {
return _("モンスターを捕える、又は解放する。", "captures or releases a monster.");
}
* @return 対応するアルファベット
* @details Note that the label does NOT distinguish inven/equip.
*/
-char index_to_label(int i) { return (i < INVEN_MAIN_HAND) ? (I2A(i)) : (I2A(i - INVEN_MAIN_HAND)); }
+char index_to_label(int i)
+{
+ return i < INVEN_MAIN_HAND ? I2A(i) : I2A(i - INVEN_MAIN_HAND);
+}
/*!
* @brief オブジェクトの該当装備部位IDを返す /
* @param o_ptr 名称を取得する元のオブジェクト構造体参照ポインタ
* @return 対応する装備部位ID
*/
-int16_t wield_slot(player_type *player_ptr, const object_type *o_ptr)
+int16_t wield_slot(PlayerType *player_ptr, const ObjectType *o_ptr)
{
switch (o_ptr->tval) {
- case TV_DIGGING:
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_SWORD: {
- if (!player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx)
- return (INVEN_MAIN_HAND);
- if (player_ptr->inventory_list[INVEN_SUB_HAND].k_idx)
- return (INVEN_MAIN_HAND);
- return (INVEN_SUB_HAND);
+ case ItemKindType::DIGGING:
+ case ItemKindType::HAFTED:
+ case ItemKindType::POLEARM:
+ case ItemKindType::SWORD: {
+ if (!player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx) {
+ return INVEN_MAIN_HAND;
+ }
+ if (player_ptr->inventory_list[INVEN_SUB_HAND].k_idx) {
+ return INVEN_MAIN_HAND;
+ }
+ return INVEN_SUB_HAND;
}
- case TV_CAPTURE:
- case TV_CARD:
- case TV_SHIELD: {
- if (!player_ptr->inventory_list[INVEN_SUB_HAND].k_idx)
- return (INVEN_SUB_HAND);
- if (player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx)
- return (INVEN_SUB_HAND);
- return (INVEN_MAIN_HAND);
+ case ItemKindType::CAPTURE:
+ case ItemKindType::CARD:
+ case ItemKindType::SHIELD: {
+ if (!player_ptr->inventory_list[INVEN_SUB_HAND].k_idx) {
+ return INVEN_SUB_HAND;
+ }
+ if (player_ptr->inventory_list[INVEN_MAIN_HAND].k_idx) {
+ return INVEN_SUB_HAND;
+ }
+ return INVEN_MAIN_HAND;
}
- case TV_BOW: {
- return (INVEN_BOW);
+ case ItemKindType::BOW: {
+ return INVEN_BOW;
}
- case TV_RING: {
- if (!player_ptr->inventory_list[INVEN_MAIN_RING].k_idx)
- return (INVEN_MAIN_RING);
+ case ItemKindType::RING: {
+ if (!player_ptr->inventory_list[INVEN_MAIN_RING].k_idx) {
+ return INVEN_MAIN_RING;
+ }
- return (INVEN_SUB_RING);
+ return INVEN_SUB_RING;
}
- case TV_AMULET:
- case TV_WHISTLE: {
- return (INVEN_NECK);
+ case ItemKindType::AMULET:
+ case ItemKindType::WHISTLE: {
+ return INVEN_NECK;
}
- case TV_LITE: {
- return (INVEN_LITE);
+ case ItemKindType::LITE: {
+ return INVEN_LITE;
}
- case TV_DRAG_ARMOR:
- case TV_HARD_ARMOR:
- case TV_SOFT_ARMOR: {
- return (INVEN_BODY);
+ case ItemKindType::DRAG_ARMOR:
+ case ItemKindType::HARD_ARMOR:
+ case ItemKindType::SOFT_ARMOR: {
+ return INVEN_BODY;
}
- case TV_CLOAK: {
- return (INVEN_OUTER);
+ case ItemKindType::CLOAK: {
+ return INVEN_OUTER;
}
- case TV_CROWN:
- case TV_HELM: {
- return (INVEN_HEAD);
+ case ItemKindType::CROWN:
+ case ItemKindType::HELM: {
+ return INVEN_HEAD;
}
- case TV_GLOVES: {
- return (INVEN_ARMS);
+ case ItemKindType::GLOVES: {
+ return INVEN_ARMS;
}
- case TV_BOOTS: {
- return (INVEN_FEET);
+ case ItemKindType::BOOTS: {
+ return INVEN_FEET;
}
default:
* @param book_sval ベースアイテムのsval
* @return 使用可能な魔法書ならばTRUEを返す。
*/
-bool check_book_realm(player_type *player_ptr, const tval_type book_tval, const OBJECT_SUBTYPE_VALUE book_sval)
+bool check_book_realm(PlayerType *player_ptr, const ItemKindType book_tval, const OBJECT_SUBTYPE_VALUE book_sval)
{
- if (book_tval < TV_LIFE_BOOK)
+ if (book_tval < ItemKindType::LIFE_BOOK) {
return false;
- if (player_ptr->pclass == CLASS_SORCERER) {
+ }
+
+ PlayerClass pc(player_ptr);
+ if (pc.equals(PlayerClassType::SORCERER)) {
return is_magic(tval2realm(book_tval));
- } else if (player_ptr->pclass == CLASS_RED_MAGE) {
- if (is_magic(tval2realm(book_tval)))
- return ((book_tval == TV_ARCANE_BOOK) || (book_sval < 2));
+ } else if (pc.equals(PlayerClassType::RED_MAGE)) {
+ if (is_magic(tval2realm(book_tval))) {
+ return ((book_tval == ItemKindType::ARCANE_BOOK) || (book_sval < 2));
+ }
}
- return (get_realm1_book(player_ptr) == book_tval || get_realm2_book(player_ptr) == book_tval);
+ return (get_realm1_book(player_ptr) == book_tval) || (get_realm2_book(player_ptr) == book_tval);
}
-object_type *ref_item(player_type *player_ptr, INVENTORY_IDX item)
+ObjectType *ref_item(PlayerType *player_ptr, INVENTORY_IDX item)
{
- floor_type *floor_ptr = player_ptr->current_floor_ptr;
+ auto *floor_ptr = player_ptr->current_floor_ptr;
return item >= 0 ? &player_ptr->inventory_list[item] : &(floor_ptr->o_list[0 - item]);
}
* Use "flavor" if available.
* Default to user definitions.
*/
-TERM_COLOR object_attr(object_type *o_ptr)
+TERM_COLOR object_attr(ObjectType *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)));
+ ? (k_info[k_info[o_ptr->k_idx].flavor].x_attr)
+ : ((!o_ptr->k_idx || (o_ptr->tval != ItemKindType::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)));
}