W:80:16:0:30000:0:0
B:GAZE:PARALYZE
B:GAZE:CONFUSE
-B:HIT:EAT_FOOD:8d8
+B:HIT:HUNGRY:8d60
B:HIT:STUN:8d8
F:UNIQUE | MALE | DROP_CORPSE
F:ONLY_ITEM | DROP_4D2 | DROP_GREAT
{ "DR_MANA", RBE_DR_MANA },
{ "SUPERHURT", RBE_SUPERHURT },
{ "INERTIA", RBE_INERTIA },
- { "STUN", RBE_STUN },
- { "FLAVOR", RBE_FLAVOR },
+ { "STUN", RBE_STUN },
+ { "HUNGRY", RBE_HUNGRY },
+ { "FLAVOR", RBE_FLAVOR },
};
/*!
{"GF_E_GENOCIDE", GF_E_GENOCIDE },
{"GF_VOID", GF_VOID },
{"GF_ABYSS", GF_ABYSS },
+ {"GF_HUNGRY", GF_HUNGRY },
};
#include "system/angband.h"
-#define MAX_NAMED_NUM 102
+#define MAX_NAMED_NUM 103
typedef struct named_num
{
lore_ptr->q = _("朦朧とさせる", "stun");
lore_ptr->qc = TERM_ORANGE;
break;
+ case RBE_HUNGRY:
+ lore_ptr->q = _("空腹を進行させる", "be hangry");
+ lore_ptr->qc = TERM_L_BLUE;
+ break;
case RBE_FLAVOR:
// フレーバー打撃には何の効果もないので付加説明もない。
break;
case RBE_STUN:
mam_ptr->pt = GF_SOUND;
break;
+ case RBE_HUNGRY:
+ mam_ptr->pt = GF_HUNGRY;
+ break;
case RBE_FLAVOR:
// フレーバー打撃には何の効果もない。
mam_ptr->pt = GF_NONE;
RBE_INERTIA = 34, /*!< モンスターの攻撃効果: 減速させる*/
RBE_STUN = 35, /*!< モンスターの攻撃効果: 朦朧とさせる*/
RBE_FLAVOR = 36, /*!< モンスターの攻撃効果: フレーバー(メッセージ表示のみ) */
+ RBE_HUNGRY = 37, /*!< モンスターの攻撃効果: 空腹を進行させる*/
NB_RBE_TYPE, /*!< enum バリアント数 */
};
monap_ptr->obvious = true;
}
+/*!
+* @brief 空腹進行度を計算する (急速回復があれば+100%、遅消化があれば-50%)
+*/
+static void calc_blow_hungry(player_type *target_ptr, monap_type *monap_ptr)
+{
+ if (target_ptr->regenerate)
+ monap_ptr->damage = monap_ptr->damage * 2;
+ if (target_ptr->slow_digest)
+ monap_ptr->damage = monap_ptr->damage / 2;
+
+ process_monster_attack_hungry(target_ptr, monap_ptr);
+}
+
void switch_monster_blow_to_player(player_type *target_ptr, monap_type *monap_ptr)
{
switch (monap_ptr->effect) {
monap_ptr->get_damage += take_hit(target_ptr, DAMAGE_ATTACK, monap_ptr->damage, monap_ptr->ddesc);
if (target_ptr->is_dead)
break;
-
process_stun_attack(target_ptr, monap_ptr);
break;
case RBE_FLAVOR:
monap_ptr->obvious = true;
monap_ptr->damage = 0;
break;
+ case RBE_HUNGRY:
+ calc_blow_hungry(target_ptr, monap_ptr);
+ break;
case NB_RBE_TYPE:
break;
GF_MISSILE,
}, /* STUN */
{
+ 5,
+ GF_MISSILE,
+ }, /* HUNGRY */
+ {
0,
GF_NONE,
}, /* FLAVOR */
#include "system/player-type-definition.h"
#include "view/display-messages.h"
#include "world/world-object.h"
+#include "player/digestion-processor.h"
void process_eat_gold(player_type *target_ptr, monap_type *monap_ptr)
{
target_ptr->redraw |= (PR_MANA);
}
+
+/*!
+ * @brief モンスターからの空腹進行処理
+ * @param target_ptr プレーヤーへの参照ポインタ
+ * @monap_ptr モンスターからモンスターへの直接攻撃構造体への参照ポインタ
+ */
+void process_monster_attack_hungry(player_type *target_ptr, monap_type *monap_ptr)
+{
+ /*hungry*/
+ set_food(target_ptr, target_ptr->food - monap_ptr->damage);
+#ifdef JP
+ msg_format("あなたは腹が減った!");
+#else
+ msg_format("You feel hungry!");
+#endif
+}
bool check_drain_hp(player_type *target_ptr, const s32b d);
void process_drain_life(player_type *target_ptr, monap_type *monap_ptr, const bool resist_drain);
void process_drain_mana(player_type *target_ptr, monap_type *monap_ptr);
+void process_monster_attack_hungry(player_type *target_ptr, monap_type *monap_ptr);
GF_E_GENOCIDE = 117, /*!< 魔法効果: 元素抹殺 */
GF_VOID = 118, /*!< 魔法効果: 虚無 */
GF_ABYSS = 119, /*!< 魔法効果: 深淵 */
- MAX_GF = 120, /*!< 欠番を無視した最大サイズ (直上の値+1) */
+ GF_HUNGRY = 120, /*!< 魔法効果: 空腹>*/
+ MAX_GF = 121, /*!< 欠番を無視した最大サイズ (直上の値+1) */
};