#include "perception/simple-perception.h"
#include "autopick/autopick.h"
+#include "avatar/avatar.h"
#include "core/disturbance.h"
#include "core/player-update-types.h"
#include "core/window-redrawer.h"
#include "inventory/inventory-slot-types.h"
#include "mutation/mutation-flag-types.h"
#include "object-enchant/special-object-flags.h"
-#include "object-hook/hook-checker.h"
-#include "object-hook/hook-enchant.h"
#include "object/object-info.h"
#include "perception/object-perception.h"
-#include "player-info/avatar.h"
-#include "view/display-messages.h"
#include "player/player-status-flags.h"
+#include "system/object-type-definition.h"
+#include "system/player-type-definition.h"
+#include "view/display-messages.h"
/*!
* @brief 擬似鑑定を実際に行い判定を反映する
* @param slot 擬似鑑定を行うプレイヤーの所持リストID
- * @param creature_ptr プレーヤーへの参照ポインタ
+ * @param player_ptr プレイヤーへの参照ポインタ
* @param heavy 重度の擬似鑑定を行うならばTRUE
- * @return なし
*/
-static void sense_inventory_aux(player_type *creature_ptr, INVENTORY_IDX slot, bool heavy)
+static void sense_inventory_aux(player_type *player_ptr, INVENTORY_IDX slot, bool heavy)
{
- object_type *o_ptr = &creature_ptr->inventory_list[slot];
+ object_type *o_ptr = &player_ptr->inventory_list[slot];
GAME_TEXT o_name[MAX_NLEN];
if (o_ptr->ident & (IDENT_SENSE))
return;
- if (object_is_known(o_ptr))
+ if (o_ptr->is_known())
return;
item_feel_type feel = (heavy ? pseudo_value_check_heavy(o_ptr) : pseudo_value_check_light(o_ptr));
if (!feel)
return;
- if ((creature_ptr->muta3 & MUT3_BAD_LUCK) && !randint0(13)) {
+ if ((player_ptr->muta.has(PlayerMutationType::BAD_LUCK)) && !randint0(13)) {
switch (feel) {
case FEEL_TERRIBLE: {
feel = FEEL_SPECIAL;
}
if (disturb_minor)
- disturb(creature_ptr, FALSE, FALSE);
+ disturb(player_ptr, false, false);
- describe_flavor(creature_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
+ describe_flavor(player_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
if (slot >= INVEN_MAIN_HAND) {
#ifdef JP
- msg_format("%s%s(%c)は%sという感じがする...", describe_use(creature_ptr, slot), o_name, index_to_label(slot), game_inscriptions[feel]);
+ msg_format("%s%s(%c)は%sという感じがする...", describe_use(player_ptr, slot), o_name, index_to_label(slot), game_inscriptions[feel]);
#else
- msg_format("You feel the %s (%c) you are %s %s %s...", o_name, index_to_label(slot), describe_use(creature_ptr, slot),
+ msg_format("You feel the %s (%c) you are %s %s %s...", o_name, index_to_label(slot), describe_use(player_ptr, slot),
((o_ptr->number == 1) ? "is" : "are"), game_inscriptions[feel]);
#endif
o_ptr->ident |= (IDENT_SENSE);
o_ptr->feeling = feel;
- autopick_alter_item(creature_ptr, slot, destroy_feeling);
- creature_ptr->update |= (PU_COMBINE | PU_REORDER);
- creature_ptr->window_flags |= (PW_INVEN | PW_EQUIP);
+ autopick_alter_item(player_ptr, slot, destroy_feeling);
+ player_ptr->update |= (PU_COMBINE | PU_REORDER);
+ player_ptr->window_flags |= (PW_INVEN | PW_EQUIP);
}
/*!
* @brief 1プレイヤーターン毎に武器、防具の擬似鑑定が行われるかを判定する。
- * @return なし
* @details
* Sense the inventory\n
*\n
* Class 4 = Ranger --> slow but heavy (changed!)\n
* Class 5 = Paladin --> slow but heavy\n
*/
-void sense_inventory1(player_type *creature_ptr)
+void sense_inventory1(player_type *player_ptr)
{
- PLAYER_LEVEL plev = creature_ptr->lev;
- bool heavy = FALSE;
+ PLAYER_LEVEL plev = player_ptr->lev;
+ bool heavy = false;
object_type *o_ptr;
- if (creature_ptr->confused)
+ if (player_ptr->confused)
return;
- switch (creature_ptr->pclass) {
- case CLASS_WARRIOR:
- case CLASS_ARCHER:
- case CLASS_SAMURAI:
- case CLASS_CAVALRY: {
+ switch (player_ptr->pclass) {
+ case PlayerClassType::WARRIOR:
+ case PlayerClassType::ARCHER:
+ case PlayerClassType::SAMURAI:
+ case PlayerClassType::CAVALRY: {
if (0 != randint0(9000L / (plev * plev + 40)))
return;
- heavy = TRUE;
+ heavy = true;
break;
}
- case CLASS_SMITH: {
+ case PlayerClassType::SMITH: {
if (0 != randint0(6000L / (plev * plev + 50)))
return;
- heavy = TRUE;
+ heavy = true;
break;
}
- case CLASS_MAGE:
- case CLASS_HIGH_MAGE:
- case CLASS_SORCERER:
- case CLASS_MAGIC_EATER:
- case CLASS_ELEMENTALIST: {
+ case PlayerClassType::MAGE:
+ case PlayerClassType::HIGH_MAGE:
+ case PlayerClassType::SORCERER:
+ case PlayerClassType::MAGIC_EATER:
+ case PlayerClassType::ELEMENTALIST: {
if (0 != randint0(240000L / (plev + 5)))
return;
break;
}
- case CLASS_PRIEST:
- case CLASS_BARD: {
+ case PlayerClassType::PRIEST:
+ case PlayerClassType::BARD: {
if (0 != randint0(10000L / (plev * plev + 40)))
return;
break;
}
- case CLASS_ROGUE:
- case CLASS_NINJA: {
+ case PlayerClassType::ROGUE:
+ case PlayerClassType::NINJA: {
if (0 != randint0(20000L / (plev * plev + 40)))
return;
- heavy = TRUE;
+ heavy = true;
break;
}
- case CLASS_RANGER: {
+ case PlayerClassType::RANGER: {
if (0 != randint0(95000L / (plev * plev + 40)))
return;
- heavy = TRUE;
+ heavy = true;
break;
}
- case CLASS_PALADIN:
- case CLASS_SNIPER: {
+ case PlayerClassType::PALADIN:
+ case PlayerClassType::SNIPER: {
if (0 != randint0(77777L / (plev * plev + 40)))
return;
- heavy = TRUE;
+ heavy = true;
break;
}
- case CLASS_WARRIOR_MAGE:
- case CLASS_RED_MAGE: {
+ case PlayerClassType::WARRIOR_MAGE:
+ case PlayerClassType::RED_MAGE: {
if (0 != randint0(75000L / (plev * plev + 40)))
return;
break;
}
- case CLASS_MINDCRAFTER:
- case CLASS_IMITATOR:
- case CLASS_BLUE_MAGE:
- case CLASS_MIRROR_MASTER: {
+ case PlayerClassType::MINDCRAFTER:
+ case PlayerClassType::IMITATOR:
+ case PlayerClassType::BLUE_MAGE:
+ case PlayerClassType::MIRROR_MASTER: {
if (0 != randint0(55000L / (plev * plev + 40)))
return;
break;
}
- case CLASS_CHAOS_WARRIOR: {
+ case PlayerClassType::CHAOS_WARRIOR: {
if (0 != randint0(80000L / (plev * plev + 40)))
return;
- heavy = TRUE;
+ heavy = true;
break;
}
- case CLASS_MONK:
- case CLASS_FORCETRAINER: {
+ case PlayerClassType::MONK:
+ case PlayerClassType::FORCETRAINER: {
if (0 != randint0(20000L / (plev * plev + 40)))
return;
break;
}
- case CLASS_TOURIST: {
+ case PlayerClassType::TOURIST: {
if (0 != randint0(20000L / ((plev + 50) * (plev + 50))))
return;
- heavy = TRUE;
+ heavy = true;
break;
}
- case CLASS_BEASTMASTER: {
+ case PlayerClassType::BEASTMASTER: {
if (0 != randint0(65000L / (plev * plev + 40)))
return;
break;
}
- case CLASS_BERSERKER: {
- heavy = TRUE;
+ case PlayerClassType::BERSERKER: {
+ heavy = true;
break;
}
- case MAX_CLASS:
+ case PlayerClassType::MAX:
break;
}
- if (compare_virtue(creature_ptr, V_KNOWLEDGE, 100, VIRTUE_LARGE))
- heavy = TRUE;
+ if (compare_virtue(player_ptr, V_KNOWLEDGE, 100, VIRTUE_LARGE))
+ heavy = true;
for (INVENTORY_IDX i = 0; i < INVEN_TOTAL; i++) {
- bool okay = FALSE;
+ bool okay = false;
- o_ptr = &creature_ptr->inventory_list[i];
+ o_ptr = &player_ptr->inventory_list[i];
if (!o_ptr->k_idx)
continue;
switch (o_ptr->tval) {
- case TV_SHOT:
- case TV_ARROW:
- case TV_BOLT:
- case TV_BOW:
- case TV_DIGGING:
- case TV_HAFTED:
- case TV_POLEARM:
- case TV_SWORD:
- case TV_BOOTS:
- case TV_GLOVES:
- case TV_HELM:
- case TV_CROWN:
- case TV_SHIELD:
- case TV_CLOAK:
- case TV_SOFT_ARMOR:
- case TV_HARD_ARMOR:
- case TV_DRAG_ARMOR:
- case TV_CARD: {
- okay = TRUE;
+ case ItemKindType::SHOT:
+ case ItemKindType::ARROW:
+ case ItemKindType::BOLT:
+ case ItemKindType::BOW:
+ case ItemKindType::DIGGING:
+ case ItemKindType::HAFTED:
+ case ItemKindType::POLEARM:
+ case ItemKindType::SWORD:
+ case ItemKindType::BOOTS:
+ case ItemKindType::GLOVES:
+ case ItemKindType::HELM:
+ case ItemKindType::CROWN:
+ case ItemKindType::SHIELD:
+ case ItemKindType::CLOAK:
+ case ItemKindType::SOFT_ARMOR:
+ case ItemKindType::HARD_ARMOR:
+ case ItemKindType::DRAG_ARMOR:
+ case ItemKindType::CARD: {
+ okay = true;
break;
}
if ((i < INVEN_MAIN_HAND) && (0 != randint0(5)))
continue;
- if (has_good_luck(creature_ptr) && !randint0(13)) {
- heavy = TRUE;
+ if (has_good_luck(player_ptr) && !randint0(13)) {
+ heavy = true;
}
- sense_inventory_aux(creature_ptr, i, heavy);
+ sense_inventory_aux(player_ptr, i, heavy);
}
}
/*!
* @brief 1プレイヤーターン毎に武器、防具以外の擬似鑑定が行われるかを判定する。
- * @return なし
*/
-void sense_inventory2(player_type *creature_ptr)
+void sense_inventory2(player_type *player_ptr)
{
- PLAYER_LEVEL plev = creature_ptr->lev;
+ PLAYER_LEVEL plev = player_ptr->lev;
object_type *o_ptr;
- if (creature_ptr->confused)
+ if (player_ptr->confused)
return;
- switch (creature_ptr->pclass) {
- case CLASS_WARRIOR:
- case CLASS_ARCHER:
- case CLASS_SAMURAI:
- case CLASS_CAVALRY:
- case CLASS_BERSERKER:
- case CLASS_SNIPER: {
+ switch (player_ptr->pclass) {
+ case PlayerClassType::WARRIOR:
+ case PlayerClassType::ARCHER:
+ case PlayerClassType::SAMURAI:
+ case PlayerClassType::CAVALRY:
+ case PlayerClassType::BERSERKER:
+ case PlayerClassType::SNIPER: {
return;
}
- case CLASS_SMITH:
- case CLASS_PALADIN:
- case CLASS_CHAOS_WARRIOR:
- case CLASS_IMITATOR:
- case CLASS_BEASTMASTER:
- case CLASS_NINJA: {
+ case PlayerClassType::SMITH:
+ case PlayerClassType::PALADIN:
+ case PlayerClassType::CHAOS_WARRIOR:
+ case PlayerClassType::IMITATOR:
+ case PlayerClassType::BEASTMASTER:
+ case PlayerClassType::NINJA: {
if (0 != randint0(240000L / (plev + 5)))
return;
break;
}
- case CLASS_RANGER:
- case CLASS_WARRIOR_MAGE:
- case CLASS_RED_MAGE:
- case CLASS_MONK: {
+ case PlayerClassType::RANGER:
+ case PlayerClassType::WARRIOR_MAGE:
+ case PlayerClassType::RED_MAGE:
+ case PlayerClassType::MONK: {
if (0 != randint0(95000L / (plev * plev + 40)))
return;
break;
}
- case CLASS_PRIEST:
- case CLASS_BARD:
- case CLASS_ROGUE:
- case CLASS_FORCETRAINER:
- case CLASS_MINDCRAFTER: {
+ case PlayerClassType::PRIEST:
+ case PlayerClassType::BARD:
+ case PlayerClassType::ROGUE:
+ case PlayerClassType::FORCETRAINER:
+ case PlayerClassType::MINDCRAFTER: {
if (0 != randint0(20000L / (plev * plev + 40)))
return;
break;
}
- case CLASS_MAGE:
- case CLASS_HIGH_MAGE:
- case CLASS_SORCERER:
- case CLASS_MAGIC_EATER:
- case CLASS_MIRROR_MASTER:
- case CLASS_BLUE_MAGE:
- case CLASS_ELEMENTALIST: {
+ case PlayerClassType::MAGE:
+ case PlayerClassType::HIGH_MAGE:
+ case PlayerClassType::SORCERER:
+ case PlayerClassType::MAGIC_EATER:
+ case PlayerClassType::MIRROR_MASTER:
+ case PlayerClassType::BLUE_MAGE:
+ case PlayerClassType::ELEMENTALIST: {
if (0 != randint0(9000L / (plev * plev + 40)))
return;
break;
}
- case CLASS_TOURIST: {
+ case PlayerClassType::TOURIST: {
if (0 != randint0(20000L / ((plev + 50) * (plev + 50))))
return;
break;
}
- case MAX_CLASS:
+ case PlayerClassType::MAX:
break;
}
for (INVENTORY_IDX i = 0; i < INVEN_TOTAL; i++) {
- bool okay = FALSE;
- o_ptr = &creature_ptr->inventory_list[i];
+ bool okay = false;
+ o_ptr = &player_ptr->inventory_list[i];
if (!o_ptr->k_idx)
continue;
switch (o_ptr->tval) {
- case TV_RING:
- case TV_AMULET:
- case TV_LITE:
- case TV_FIGURINE: {
- okay = TRUE;
+ case ItemKindType::RING:
+ case ItemKindType::AMULET:
+ case ItemKindType::LITE:
+ case ItemKindType::FIGURINE: {
+ okay = true;
break;
}
if ((i < INVEN_MAIN_HAND) && (0 != randint0(5)))
continue;
- sense_inventory_aux(creature_ptr, i, TRUE);
+ sense_inventory_aux(player_ptr, i, true);
}
}
/*!
- * @brief 重度擬似鑑定の判断処理 / Return a "feeling" (or NULL) about an item. Method 1 (Heavy).
+ * @brief 重度擬似鑑定の判断処理 / Return a "feeling" (or nullptr) about an item. Method 1 (Heavy).
* @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。
* @return 擬似鑑定結果のIDを返す。
*/
item_feel_type pseudo_value_check_heavy(object_type *o_ptr)
{
- if (object_is_artifact(o_ptr)) {
- if (object_is_cursed(o_ptr) || object_is_broken(o_ptr))
+ if (o_ptr->is_artifact()) {
+ if (o_ptr->is_cursed() || o_ptr->is_broken())
return FEEL_TERRIBLE;
return FEEL_SPECIAL;
}
- if (object_is_ego(o_ptr)) {
- if (object_is_cursed(o_ptr) || object_is_broken(o_ptr))
+ if (o_ptr->is_ego()) {
+ if (o_ptr->is_cursed() || o_ptr->is_broken())
return FEEL_WORTHLESS;
return FEEL_EXCELLENT;
}
- if (object_is_cursed(o_ptr))
+ if (o_ptr->is_cursed())
return FEEL_CURSED;
- if (object_is_broken(o_ptr))
+ if (o_ptr->is_broken())
return FEEL_BROKEN;
- if ((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET))
+ if ((o_ptr->tval == ItemKindType::RING) || (o_ptr->tval == ItemKindType::AMULET))
return FEEL_AVERAGE;
if (o_ptr->to_a > 0)
return FEEL_GOOD;
}
/*!
- * @brief 軽度擬似鑑定の判断処理 / Return a "feeling" (or NULL) about an item. Method 2 (Light).
+ * @brief 軽度擬似鑑定の判断処理 / Return a "feeling" (or nullptr) about an item. Method 2 (Light).
* @param o_ptr 擬似鑑定を行うオブジェクトの参照ポインタ。
* @return 擬似鑑定結果のIDを返す。
*/
item_feel_type pseudo_value_check_light(object_type *o_ptr)
{
- if (object_is_cursed(o_ptr))
+ if (o_ptr->is_cursed())
return FEEL_CURSED;
- if (object_is_broken(o_ptr))
+ if (o_ptr->is_broken())
return FEEL_BROKEN;
- if (object_is_artifact(o_ptr))
+ if (o_ptr->is_artifact())
return FEEL_UNCURSED;
- if (object_is_ego(o_ptr))
+ if (o_ptr->is_ego())
return FEEL_UNCURSED;
if (o_ptr->to_a > 0)
return FEEL_UNCURSED;