F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
F:RES_LITE | RES_DARK | RES_SOUN | RES_CHAO | RES_NETH | RES_DISE |
F:RES_WALL | RES_INER | RES_TIME | RES_GRAV | RES_PLAS | RES_NEXU | RES_SHAR |
+F:RES_VOID | RES_ABYSS
F:NO_CONF | NO_SLEEP | NO_FEAR | NO_STUN | NONLIVING |
S:1_IN_6 |
S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS |
S:BR_LITE | BR_DARK | BR_SOUN | BR_CONF | BR_CHAO |
S:BR_NETH | BR_DISE | BR_FORC | BR_INER | BR_TIME |
-S:BR_GRAV | BR_PLAS | BR_NEXU | BR_SHAR | BR_NUKE
+S:BR_GRAV | BR_PLAS | BR_NEXU | BR_SHAR | BR_NUKE |
+S:BR_VOID | BR_ABYSS
V:150
D:$An awesome vortex of pure magic, power radiates from its frame.
D:純粋に魔力のみでできた恐るべき渦巻きで、辺りに魔力を発散している。
F:ANIMAL | IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS |
F:RES_LITE | RES_DARK | RES_SOUN | RES_CHAO | RES_NETH | RES_DISE |
F:RES_WALL | RES_INER | RES_TIME | RES_GRAV | RES_PLAS | RES_NEXU | RES_SHAR |
+F:RES_VOID | RES_ABYSS
F:NO_CONF | NO_SLEEP
S:1_IN_5 |
S:BR_ACID | BR_FIRE | BR_COLD | BR_ELEC | BR_POIS |
S:BR_LITE | BR_DARK | BR_SOUN | BR_CONF | BR_CHAO |
S:BR_NETH | BR_DISE | BR_FORC | BR_INER | BR_TIME |
-S:BR_GRAV | BR_PLAS | BR_NEXU | BR_SHAR | BR_NUKE
+S:BR_GRAV | BR_PLAS | BR_NEXU | BR_SHAR | BR_NUKE |
+S:BR_VOID | BR_ABYSS
V:150
D:$A shifting, swirling form. It seems to be all colours and sizes and
D:$shapes, though the dominant form is that of a huge dog. You feel very
F:IM_ACID | IM_FIRE | IM_COLD | IM_ELEC | IM_POIS | NO_CONF | NO_SLEEP |
F:RES_NETH | RES_LITE | RES_DARK | RES_SOUN | RES_CHAO | RES_DISE |
F:RES_NEXU | RES_TIME | RES_INER | RES_GRAV | RES_SHAR | RES_PLAS |
-F:RES_WALL | RES_TELE | RIDING |
+F:RES_WALL | RES_TELE | RES_VOID | RES_ABYSS | RIDING |
S:1_IN_3 |
S:S_HI_DRAGON | S_DRAGON | S_KIN |
S:BR_NUKE | BR_ACID | BR_ELEC | BR_FIRE |
S:BR_COLD | BR_POIS | BR_NETH | BR_LITE | BR_DARK |
S:BR_CONF | BR_SOUN | BR_CHAO | BR_DISE | BR_NEXU |
S:BR_TIME | BR_INER | BR_GRAV | BR_SHAR | BR_PLAS |
-S:BR_FORC | BR_MANA | BR_DISI
+S:BR_FORC | BR_MANA | BR_DISI | BR_VOID | BR_ABYSS
V:200
D:$The mightiest of all dragonkind, a great wyrm of power is seldom
D:$encountered in our world. It can crush stars with its might.
F:IM_ACID | IM_ELEC | IM_FIRE | IM_COLD | IM_POIS | HUMAN | ANGEL
F:RES_LITE | RES_DARK | RES_NETH | RES_WATE | RES_PLAS | RES_SHAR | RES_SOUN |
F:RES_CHAO | RES_NEXU | RES_DISE | RES_WALL | RES_INER | RES_TIME | RES_GRAV |
+F:RES_VOID | RES_ABYSS |
F:RES_TELE | NO_FEAR | NO_STUN | NO_CONF | NO_SLEEP |
F:CAN_SWIM | CAN_FLY | UNIQUE2 | WILD_SHORE |
F:WILD_OCEAN | WILD_WASTE | WILD_WOOD | WILD_VOLCANO | WILD_MOUNTAIN |
S:BR_SOUN | BR_CHAO | BR_DISE | BR_NEXU | BR_TIME | BR_INER | BR_GRAV | BR_SHAR |
S:BR_PLAS | BR_FORC | BR_MANA | BA_NUKE | BR_NUKE | BA_CHAO | BR_DISI | BA_ACID |
S:BA_ELEC | BA_FIRE | BA_COLD | BA_POIS | BA_NETH | BA_WATE | BA_MANA | BA_DARK |
+S:BA_ABYSS | BA_VOID | BR_ABYSS | BR_VOID | BO_ABYSS | BO_VOID
S:DRAIN_MANA | MIND_BLAST| BRAIN_SMASH | CAUSE_1 | CAUSE_2 | CAUSE_3 | CAUSE_4 |
S:BO_ACID | BO_ELEC | BO_FIRE | BO_COLD | BO_NETH | BO_WATE | BO_MANA |
S:BO_PLAS | BO_ICEE | MISSILE | BLIND | CONF | SLOW | HOLD | HASTE | HAND_DOOM |
#include "sv-definition/sv-other-types.h"
#include "system/baseitem-info.h"
#include "system/item-entity.h"
+#include "util/bit-flags-calculator.h"
/*!
* @brief 魔法棒やロッドのスロット分割時に使用回数を分配する /
*/
int object_similar_part(const ItemEntity *o_ptr, const ItemEntity *j_ptr)
{
- const int max_stack_size = 99;
- int max_num = max_stack_size;
if (o_ptr->bi_id != j_ptr->bi_id) {
return 0;
}
+ constexpr auto max_stack_size = 99;
+ auto max_num = max_stack_size;
switch (o_ptr->bi_key.tval()) {
case ItemKindType::CHEST:
case ItemKindType::CARD:
- case ItemKindType::CAPTURE: {
+ case ItemKindType::CAPTURE:
return 0;
- }
case ItemKindType::STATUE: {
const auto o_sval = o_ptr->bi_key.sval();
const auto j_sval = j_ptr->bi_key.sval();
break;
}
case ItemKindType::FIGURINE:
- case ItemKindType::CORPSE: {
+ case ItemKindType::CORPSE:
if (o_ptr->pval != j_ptr->pval) {
return 0;
}
break;
- }
case ItemKindType::FOOD:
case ItemKindType::POTION:
- case ItemKindType::SCROLL: {
+ case ItemKindType::SCROLL:
break;
- }
- case ItemKindType::STAFF: {
- if ((!(o_ptr->ident & (IDENT_EMPTY)) && !o_ptr->is_known()) || (!(j_ptr->ident & (IDENT_EMPTY)) && !j_ptr->is_known())) {
+ case ItemKindType::STAFF:
+ if ((none_bits(o_ptr->ident, IDENT_EMPTY) && !o_ptr->is_known()) || (none_bits(j_ptr->ident, IDENT_EMPTY) && !j_ptr->is_known())) {
return 0;
}
}
break;
- }
- case ItemKindType::WAND: {
+ case ItemKindType::WAND:
if ((!(o_ptr->ident & (IDENT_EMPTY)) && !o_ptr->is_known()) || (!(j_ptr->ident & (IDENT_EMPTY)) && !j_ptr->is_known())) {
return 0;
}
break;
- }
- case ItemKindType::ROD: {
+ case ItemKindType::ROD:
max_num = std::min(max_num, MAX_SHORT / baseitems_info[o_ptr->bi_id].pval);
break;
- }
case ItemKindType::GLOVES:
if (o_ptr->is_glove_same_temper(j_ptr)) {
return 0;
return 0;
}
+ if (!o_ptr->is_known() || !j_ptr->is_known()) {
+ return 0;
+ }
+
if (!o_ptr->can_pile(j_ptr)) {
return 0;
}
}
break;
- default: {
+ default:
if (!o_ptr->is_known() || !j_ptr->is_known()) {
return 0;
}
break;
}
- }
if (o_ptr->art_flags != j_ptr->art_flags) {
return 0;
if (o_ptr->curse_flags != j_ptr->curse_flags) {
return 0;
}
- if ((o_ptr->ident & (IDENT_BROKEN)) != (j_ptr->ident & (IDENT_BROKEN))) {
+
+ if (any_bits(o_ptr->ident, IDENT_BROKEN) != any_bits(j_ptr->ident, IDENT_BROKEN)) {
return 0;
}
if (!stack_force_notes && (o_ptr->inscription != j_ptr->inscription)) {
return 0;
}
+
if (!stack_force_costs && (o_ptr->discount != j_ptr->discount)) {
return 0;
}