From ba6ffa65ea23bb51def7980bdeef4f72663d7603 Mon Sep 17 00:00:00 2001 From: deskull Date: Sun, 13 Sep 2020 01:50:23 +0900 Subject: [PATCH 1/1] =?utf8?q?[Refactor]=20#40514=20randrate()=20=E3=81=A8?= =?utf8?q?=20rate=5Fcalc=5Ftype=5Fmode=20=E5=88=97=E6=8C=99=E4=BD=93?= =?utf8?q?=E5=AE=9F=E8=A3=85=EF=BC=8E=20/=20Implement=20randrate()=20and?= =?utf8?q?=20rate=5Fcalc=5Ftype=5Fmode.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/player/player-status-resist.c | 27 ++++++++++++++++++++++++--- src/player/player-status-resist.h | 8 ++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/player/player-status-resist.c b/src/player/player-status-resist.c index ada163aab..242fbb52d 100644 --- a/src/player/player-status-resist.c +++ b/src/player/player-status-resist.c @@ -1,4 +1,4 @@ -#include "player/player-status-flags.h" +#include "player/player-status-resist.h" #include "art-definition/art-sword-types.h" #include "grid/grid.h" #include "inventory/inventory-slot-types.h" @@ -16,12 +16,14 @@ #include "player/player-race-types.h" #include "player/player-race.h" #include "player/player-skill.h" +#include "player/player-status-flags.h" #include "player/player-status.h" #include "player/special-defense-types.h" #include "realm/realm-hex-numbers.h" #include "realm/realm-song-numbers.h" #include "realm/realm-types.h" #include "spell-realm/spells-hex.h" +#include "status/element-resistance.h" #include "sv-definition/sv-weapon-types.h" #include "system/floor-type-definition.h" #include "system/monster-type-definition.h" @@ -29,7 +31,27 @@ #include "util/bit-flags-calculator.h" #include "util/quarks.h" #include "util/string-processor.h" -#include "status/element-resistance.h" + +PERCENTAGE randrate(int dice, int fix, rate_calc_type_mode mode) +{ + switch (mode) { + case CALC_RAND: + return randint1(dice) * 100 + fix * 100; + break; + case CALC_AVERAGE: + return (dice + 1) * 50 + fix * 100; + break; + case CALC_MIN: + return (fix + 1) * 100; + break; + case CALC_MAX: + return (dice + fix) * 100; + break; + default: + return (fix + 1) * 100; + break; + } +} PERCENTAGE calc_acid_damage_rate(player_type *creature_ptr) { @@ -53,7 +75,6 @@ PERCENTAGE calc_acid_damage_rate(player_type *creature_ptr) per = (per + 2) / 3; return per; - } PERCENTAGE calc_elec_damage_rate(player_type *creature_ptr) diff --git a/src/player/player-status-resist.h b/src/player/player-status-resist.h index 53bb48c53..821d28a0e 100644 --- a/src/player/player-status-resist.h +++ b/src/player/player-status-resist.h @@ -1,5 +1,13 @@ #include "player/player-status.h" +typedef enum rate_calc_type_mode { + CALC_RAND = 0, + CALC_AVERAGE = 1, + CALC_MIN = 2, + CALC_MAX = 3, +} rate_calc_type_mode; + + 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); -- 2.11.0