OSDN Git Service

[Refactor] #40514 randrate() と rate_calc_type_mode 列挙体実装. / Implement randrate()...
authordeskull <deskull@users.sourceforge.jp>
Sat, 12 Sep 2020 16:50:23 +0000 (01:50 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sat, 12 Sep 2020 16:50:23 +0000 (01:50 +0900)
src/player/player-status-resist.c
src/player/player-status-resist.h

index ada163a..242fbb5 100644 (file)
@@ -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"
 #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"
 #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)
index 53bb48c..821d28a 100644 (file)
@@ -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);