E:of Anubis
I:23:20:4
W:30:90:120:200000
-P:0:3d4:28:22:-30
-F:DEX | CHAOTIC | CURSED | HEAVY_CURSE | TUNNEL | AGGRAVATE | BLOWS |
-F:RES_CONF | RES_CHAOS | RES_FEAR | RES_DISEN | NO_TELE
+P:0:3d4:15:10:0
+F:DEX | VORPAL | CURSED | HEAVY_CURSE | PERSISTENT_CURSE | TUNNEL | AGGRAVATE | BLOWS |
+F:RES_CONF | RES_CHAOS | RES_FEAR | RES_DISEN | BERS_RAGE | VUL_CURSE | LOW_AC
N:159:太公望の
E:of Taikobo
ART_GROND = 111,
ART_BARD = 125,
ART_MJOLLNIR = 136,
+ ART_SILVER_CHARIOT = 140,
ART_MURAMASA = 144,
ART_XIAOLONG = 145,
ART_STONEMASK = 146,
ART_ZANTETSU = 150,
ART_BARD_ARROW = 153,
+ ART_ANUBIS = 158,
ART_HYOUSIGI = 169,
ART_MUSASI_KATANA = 171,
ART_MUSASI_WAKIZASI = 172,
#include "view/display-messages.h"
/*!
+ * @brief 装備時にアイテムを呪う処理
+ */
+static void do_curse_on_equip(OBJECT_IDX slot, object_type *o_ptr, PlayerType *player_ptr)
+{
+ if (set_anubis_and_chariot(player_ptr) && ((slot == INVEN_MAIN_HAND) || (slot == INVEN_SUB_HAND))) {
+
+ object_type *anubis = &(player_ptr->inventory_list[INVEN_MAIN_HAND]);
+ object_type *chariot = &(player_ptr->inventory_list[INVEN_SUB_HAND]);
+
+ anubis->curse_flags.set(CurseTraitType::PERSISTENT_CURSE);
+ anubis->curse_flags.set(CurseTraitType::HEAVY_CURSE);
+ chariot->curse_flags.set(CurseTraitType::PERSISTENT_CURSE);
+ chariot->curse_flags.set(CurseTraitType::HEAVY_CURSE);
+ chariot->curse_flags.set(CurseTraitType::BERS_RAGE);
+ chariot->curse_flags.set(CurseTraitType::LOW_AC);
+ chariot->curse_flags.set(CurseTraitType::VUL_CURSE);
+
+ msg_format(_("『銀の戦車』プラス『アヌビス神』二刀流ッ!", "*Silver Chariot* plus *Anubis God* Two Swords!"));
+ player_ptr->update |= (PU_BONUS);
+ return;
+ }
+
+ if ((object_flags(o_ptr).has(TR_PERSISTENT_CURSE) || o_ptr->curse_flags.has(CurseTraitType::PERSISTENT_CURSE))
+ && o_ptr->curse_flags.has_not(CurseTraitType::HEAVY_CURSE)) {
+
+ GAME_TEXT o_name[MAX_NLEN];
+ describe_flavor(player_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
+ o_ptr->curse_flags.set(CurseTraitType::HEAVY_CURSE);
+ msg_format(_("悪意に満ちた黒いオーラが%sをとりまいた...", "There is a malignant black aura surrounding your %s..."), o_name);
+ o_ptr->feeling = FEEL_NONE;
+ player_ptr->update |= (PU_BONUS);
+ }
+}
+
+/*!
* @brief 装備一覧を表示するコマンドのメインルーチン / Display equipment
*/
void do_cmd_equip(PlayerType *player_ptr)
o_ptr->ident |= (IDENT_SENSE);
}
- if (object_flags(o_ptr).has(TR_PERSITENT_CURSE) && o_ptr->curse_flags.has_not(CurseTraitType::HEAVY_CURSE)) {
- GAME_TEXT o_name[MAX_NLEN];
- describe_flavor(player_ptr, o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));
- o_ptr->curse_flags.set(CurseTraitType::HEAVY_CURSE);
- msg_format(_("悪意に満ちた黒いオーラが%sをとりまいた...", "There is a malignant black aura surrounding your %s..."), o_name);
- o_ptr->feeling = FEEL_NONE;
- player_ptr->update |= (PU_BONUS);
- }
+ do_curse_on_equip(slot, o_ptr, player_ptr);
if ((o_ptr->name1 == ART_STONEMASK) && (player_ptr->prace != PlayerRaceType::VAMPIRE) && (player_ptr->prace != PlayerRaceType::ANDROID))
change_race(player_ptr, PlayerRaceType::VAMPIRE, "");
* @return 速度値の増減分
* @details
* ** 棘セット装備中ならば加算(+7)
- * ** アイシングデス-トゥインクル装備中ならば加算(+7)
+ * ** アイシングデス-トゥインクル装備中ならば加算(+5)
+ * ** アヌビス-チャリオッツ装備中ならば加算(+5)
*/
int16_t PlayerSpeed::special_weapon_set_value()
{
int16_t result = 0;
if (has_melee_weapon(this->player_ptr, INVEN_MAIN_HAND) && has_melee_weapon(this->player_ptr, INVEN_SUB_HAND)) {
- if ((this->player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_QUICKTHORN) && (this->player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_TINYTHORN)) {
+ if (set_quick_and_tiny(this->player_ptr)) {
result += 7;
}
- if ((this->player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_ICINGDEATH) && (this->player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_TWINKLE)) {
+ if (set_icing_and_twinkle(this->player_ptr)) {
+ result += 5;
+ }
+
+ if (set_anubis_and_chariot(this->player_ptr)) {
result += 5;
}
}
if (is_real_value || o_ptr->is_known())
ac += o_ptr->to_a;
- if (o_ptr->curse_flags.has(CurseTraitType::LOW_AC)) {
+ if (o_ptr->curse_flags.has(CurseTraitType::LOW_AC) || object_flags(o_ptr).has(TR_LOW_AC)) {
if (o_ptr->curse_flags.has(CurseTraitType::HEAVY_CURSE)) {
if (is_real_value || o_ptr->is_fully_known())
ac -= 30;
ac += 10 + (player_ptr->lev * 2 / 5);
}
- if ((player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_QUICKTHORN) && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_TINYTHORN)) {
+ if (set_quick_and_tiny(player_ptr)) {
ac += 10;
}
- if ((player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_MUSASI_KATANA)
- && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_MUSASI_WAKIZASI)) {
+ if (set_musasi(player_ptr)) {
ac += 10;
}
auto flags = object_flags(&player_ptr->inventory_list[INVEN_SUB_HAND]);
penalty = ((100 - player_ptr->skill_exp[PlayerSkillKindType::TWO_WEAPON] / 160) - (130 - player_ptr->inventory_list[slot].weight) / 8);
- if (((player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_QUICKTHORN) && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_TINYTHORN))
- || ((player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_ICINGDEATH)
- && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_TWINKLE))) {
+ if (set_quick_and_tiny(player_ptr) || set_icing_and_twinkle(player_ptr) || set_anubis_and_chariot(player_ptr)) {
penalty = penalty / 2 - 5;
}
if (flags.has(TR_SUPPORTIVE))
penalty = std::max(0, penalty - 10);
- if ((player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_MUSASI_KATANA)
- && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_MUSASI_WAKIZASI)) {
+ if (set_musasi(player_ptr)) {
penalty = std::min(0, penalty);
}
}
return PLAYER_HAND_MAIN;
}
+
+bool set_quick_and_tiny(PlayerType *player_ptr)
+{
+ return (player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_QUICKTHORN)
+ && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_TINYTHORN);
+}
+
+bool set_musasi(PlayerType *player_ptr)
+{
+ return (player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_MUSASI_KATANA)
+ && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_MUSASI_WAKIZASI);
+}
+
+bool set_icing_and_twinkle(PlayerType *player_ptr)
+{
+ return (player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_ICINGDEATH)
+ && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_TWINKLE);
+}
+
+bool set_anubis_and_chariot(PlayerType *player_ptr)
+{
+ return (player_ptr->inventory_list[INVEN_MAIN_HAND].name1 == ART_ANUBIS)
+ && (player_ptr->inventory_list[INVEN_SUB_HAND].name1 == ART_SILVER_CHARIOT);
+}
bool is_chargeman(PlayerType *player_ptr);
void stop_mouth(PlayerType *player_ptr);
+
+bool set_quick_and_tiny(PlayerType *player_ptr);
+bool set_musasi(PlayerType *player_ptr);
+bool set_icing_and_twinkle(PlayerType *player_ptr);
+bool set_anubis_and_chariot(PlayerType *player_ptr);