OSDN Git Service

[Refactor] #40514 calc_vuln_lite_rate() を calc_lite_damage_rate() に改名して耐性処理反映. /...
authordeskull <deskull@users.sourceforge.jp>
Sat, 12 Sep 2020 16:59:01 +0000 (01:59 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sat, 12 Sep 2020 16:59:01 +0000 (01:59 +0900)
src/effect/effect-player-resist-hurt.c
src/object/warning.c
src/player/player-status-resist.c
src/player/player-status-resist.h

index f230a8e..843bf7f 100644 (file)
@@ -359,22 +359,17 @@ void effect_player_lite(player_type *target_ptr, effect_player_type *ep_ptr)
 {
     if (target_ptr->blind)
         msg_print(_("何かで攻撃された!", "You are hit by something!"));
-    if (target_ptr->resist_lite) {
-        ep_ptr->dam *= 4;
-        ep_ptr->dam /= (randint1(4) + 7);
-    } else if (!target_ptr->blind && !target_ptr->resist_blind && !check_multishadow(target_ptr)) {
+    if (!target_ptr->blind && !target_ptr->resist_blind && !check_multishadow(target_ptr)) {
         (void)set_blind(target_ptr, target_ptr->blind + randint1(5) + 2);
     }
 
-    ep_ptr->dam = ep_ptr->dam * calc_vuln_lite_rate(target_ptr) / 100;
+    ep_ptr->dam = ep_ptr->dam * calc_lite_damage_rate(target_ptr, CALC_RAND) / 100;
 
     if (is_specific_player_race(target_ptr, RACE_VAMPIRE) || (target_ptr->mimic_form == MIMIC_VAMPIRE)) {
         if (!check_multishadow(target_ptr))
             msg_print(_("光で肉体が焦がされた!", "The light scorches your flesh!"));
     }
 
-    if (target_ptr->wraith_form)
-        ep_ptr->dam *= 2;
     ep_ptr->get_damage = take_hit(target_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer, ep_ptr->monspell);
 
     if (!target_ptr->wraith_form || check_multishadow(target_ptr))
index 25eaeaa..6bef054 100644 (file)
@@ -146,9 +146,7 @@ static void spell_damcalc(player_type *target_ptr, monster_type *m_ptr, EFFECT_I
         break;
 
     case GF_LITE:
-        if (target_ptr->resist_lite)
-            dam /= 2; /* Worst case of 4 / (d4 + 7) */
-        dam = dam * calc_vuln_lite_rate(target_ptr) / 100;
+        dam = dam * calc_lite_damage_rate(target_ptr, RAND_MAX) / 100;
         break;
 
     case GF_DARK:
index 242fbb5..6654883 100644 (file)
@@ -147,7 +147,7 @@ PERCENTAGE calc_cold_damage_rate(player_type *creature_ptr)
     return per;
 }
 
-PERCENTAGE calc_vuln_lite_rate(player_type *creature_ptr)
+PERCENTAGE calc_lite_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode)
 {
     PERCENTAGE per = 100;
     if (is_specific_player_race(creature_ptr, RACE_VAMPIRE) || (creature_ptr->mimic_form == MIMIC_VAMPIRE)) {
@@ -156,6 +156,11 @@ PERCENTAGE calc_vuln_lite_rate(player_type *creature_ptr)
         per = per * 4 / 3;
     }
 
+    if (creature_ptr->resist_lite) {
+        per *= 400;
+        per /= randrate(4, 7, mode);
+    }
+
     if (creature_ptr->wraith_form)
         per *= 2;
 
index 821d28a..9be4494 100644 (file)
@@ -12,4 +12,4 @@ PERCENTAGE calc_acid_damage_rate(player_type *creature_ptr);
 PERCENTAGE calc_elec_damage_rate(player_type *creature_ptr);
 PERCENTAGE calc_fire_damage_rate(player_type *creature_ptr);
 PERCENTAGE calc_cold_damage_rate(player_type *creature_ptr);
-PERCENTAGE calc_vuln_lite_rate(player_type *creature_ptr);
+PERCENTAGE calc_lite_damage_rate(player_type *creature_ptr, rate_calc_type_mode mode);