+/*対邪平均ダメージの計算処理*/
+int calc_arm_avgdamage(object_type *o_ptr)
+{
+ u32b flgs[TR_FLAG_SIZE];
+ object_flags(o_ptr, flgs);
+
+ HIT_POINT dam, base, s_evil, forced, vorpal;
+ dam = base = s_evil = forced = vorpal = 0;
+
+ dam = base = (o_ptr->dd * o_ptr->ds + o_ptr->dd) / 2;
+
+ if(have_flag(flgs, TR_KILL_EVIL))
+ {
+ dam = s_evil = dam * 7 / 2;
+ }
+ else if(!have_flag(flgs, TR_KILL_EVIL) && have_flag(flgs, TR_SLAY_EVIL))
+ {
+ dam = s_evil = dam * 2;
+ }
+ else s_evil = dam;
+
+ if (have_flag(flgs, TR_FORCE_WEAPON))
+ {
+ dam = forced = dam * 3 / 2 + (o_ptr->dd * o_ptr->ds + o_ptr->dd);
+ }
+ else forced = dam;
+
+ if(have_flag(flgs, TR_VORPAL))
+ {
+ dam = vorpal = dam * 11 / 9;
+ }
+ else vorpal = dam;
+
+ dam = dam + o_ptr->to_d;
+
+ msg_format_wizard(CHEAT_OBJECT,"素:%d> 対邪:%d> 理力:%d> 切:%d> 最終:%d",
+ base, s_evil, forced, vorpal, dam);
+
+ return(dam);
+}
+
+static int suppression_evil_dam(object_type *o_ptr)
+{
+ int num = FALSE;
+ u32b flgs[TR_FLAG_SIZE];
+ object_flags(o_ptr, flgs);
+
+ if (have_flag(flgs, TR_VAMPIRIC))
+ {
+ if(have_flag(flgs, TR_BLOWS) && (o_ptr->pval == 1) && (calc_arm_avgdamage(o_ptr) > 52))
+ {
+ num = TRUE;
+ }
+ else if(have_flag(flgs, TR_BLOWS) && (o_ptr->pval == 2) && (calc_arm_avgdamage(o_ptr) > 43))
+ {
+ num = TRUE;
+ }
+ else if( have_flag(flgs, TR_BLOWS) && (o_ptr->pval == 3) && (calc_arm_avgdamage(o_ptr) > 33))
+ {
+ num = TRUE;
+ }
+ else if (calc_arm_avgdamage(o_ptr) > 63)
+ {
+ num = TRUE;
+ }
+ }
+ else
+ {
+ if (have_flag(flgs, TR_BLOWS) && (o_ptr->pval == 1) && (calc_arm_avgdamage(o_ptr) > 65))
+ {
+ num = TRUE;
+ }
+ else if (have_flag(flgs, TR_BLOWS) && (o_ptr->pval == 2) && (calc_arm_avgdamage(o_ptr) > 52))
+ {
+ num = TRUE;
+ }
+ else if (have_flag(flgs, TR_BLOWS) && (o_ptr->pval == 3) && (calc_arm_avgdamage(o_ptr) > 40))
+ {
+ num = TRUE;
+ }
+ else if (calc_arm_avgdamage(o_ptr) > 75)
+ {
+ num = TRUE;
+ }
+ }
+ return(num);
+}
+
+static int weakening_artifact(object_type *o_ptr)
+{
+ KIND_OBJECT_IDX k_idx = lookup_kind(o_ptr->sval, o_ptr->tval);
+ object_kind *k_ptr = &k_info[k_idx];
+
+ if ((k_ptr->dd < o_ptr->dd) || (k_ptr->ds < o_ptr->ds))
+ {
+ int pre_dd = o_ptr->dd;
+ int pre_ds = o_ptr->ds;
+
+ if (o_ptr->dd > o_ptr->ds)
+ {
+ o_ptr->dd--;
+ }
+ else
+ {
+ o_ptr->ds--;
+ }
+
+ msg_format_wizard(CHEAT_OBJECT,
+ _("ダイスが抑制されました。%dd%d -> %dd%d", "Dice Supress %dd%d -> %dd%d"),
+ pre_dd, pre_ds, o_ptr->dd, o_ptr->ds);
+ return 1;
+ }
+
+ if (o_ptr->to_d > 10)
+ {
+ int pre_damage = o_ptr->to_d;
+
+ o_ptr->to_d = o_ptr->to_d - damroll(1, 6);
+ if (o_ptr->to_d < 10)
+ {
+ o_ptr->to_d = 10;
+ }
+
+ msg_format_wizard(CHEAT_OBJECT,
+ _("ダメージ修正が抑制されました。 %d -> %d", "Plus-Damage Supress %d -> %d"),
+ pre_damage, o_ptr->to_d);
+
+ return 1;
+ }
+ return 0;
+}
\ No newline at end of file