OSDN Git Service

[Refactor] #40514 calc_elec_damage_rate() に免疫処理反映. / Reflect immunity processing...
authordeskull <deskull@users.sourceforge.jp>
Sun, 13 Sep 2020 01:01:25 +0000 (10:01 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sun, 13 Sep 2020 01:01:25 +0000 (10:01 +0900)
src/object/warning.c
src/player/player-damage.c
src/player/player-status-resist.c

index 81ee960..5075886 100644 (file)
@@ -89,9 +89,7 @@ static void spell_damcalc(player_type *target_ptr, monster_type *m_ptr, EFFECT_I
     switch (typ) {
     case GF_ELEC:
         if (is_immune_elec(target_ptr)) {
-            dam = 0;
             ignore_wraith_form = TRUE;
-            break;
         }
         dam = dam * calc_elec_damage_rate(target_ptr) / 100;
         break;
index ff6597b..62a10fd 100644 (file)
@@ -193,14 +193,13 @@ HIT_POINT elec_dam(player_type *creature_ptr, HIT_POINT dam, concptr kb_str, int
     int inv = (dam < 30) ? 1 : (dam < 60) ? 2 : 3;
     bool double_resist = is_oppose_elec(creature_ptr);
 
-    /* Total immunity */
-    if (is_immune_elec(creature_ptr) || (dam <= 0)) {
+    dam = dam * calc_elec_damage_rate(creature_ptr) / 100;
+
+    if (dam <= 0) {
         learn_spell(creature_ptr, monspell);
         return 0;
     }
 
-    dam = dam * calc_elec_damage_rate(creature_ptr) / 100;
-
     if (aura || !check_multishadow(creature_ptr)) {
         if ((!(double_resist || creature_ptr->resist_elec)) && one_in_(HURT_CHANCE))
             (void)do_dec_stat(creature_ptr, A_DEX);
index ff89dd9..00f6d0e 100644 (file)
@@ -81,6 +81,11 @@ PERCENTAGE calc_elec_damage_rate(player_type *creature_ptr)
 {
     PERCENTAGE per = 100;
     int i;
+
+    if (is_immune_elec(creature_ptr)) {
+        return 0;
+    }
+
     BIT_FLAGS flgs = is_vuln_elec(creature_ptr);
     for (i = 0; i < FLAG_CAUSE_MAX; i++) {
         if (flgs & (0x01 << i)) {