• R/O
  • HTTP
  • SSH
  • HTTPS

hengband: Commit

変愚蛮怒のメインリポジトリです


Commit MetaInfo

Revisionfc6c8b560d94e8867b62e8323024eefdc869b130 (tree)
Time2003-05-11 22:56:16
Authornothere <nothere@0568...>
Commiternothere

Log Message

HDを振る処理はキャラクタメイク時と新生等のdo_cmd_rerate()時で共通の関
数を呼ぶように変更.

Change Summary

Incremental Difference

--- a/src/birth.c
+++ b/src/birth.c
@@ -2726,7 +2726,7 @@ void get_max_stats(void)
27262726 */
27272727 static void get_extra(bool roll_hitdie)
27282728 {
2729- int i, j, min_value, max_value;
2729+ int i, j;
27302730
27312731 /* Experience factor */
27322732 if (p_ptr->prace == RACE_ANDROID) p_ptr->expfact = rp_ptr->r_exp;
@@ -2766,45 +2766,7 @@ static void get_extra(bool roll_hitdie)
27662766 p_ptr->hitdie = rp_ptr->r_mhp + cp_ptr->c_mhp + ap_ptr->a_mhp;
27672767
27682768 /* Roll for hit point unless quick-start */
2769- if (roll_hitdie)
2770- {
2771- /* Minimum hitpoints at highest level */
2772- min_value = ((PY_MAX_LEVEL+2) * (p_ptr->hitdie + 1)) * 3 / 8;
2773- min_value += p_ptr->hitdie;
2774-
2775- /* Maximum hitpoints at highest level */
2776- max_value = ((PY_MAX_LEVEL+2) * (p_ptr->hitdie + 1)) * 5 / 8;
2777- max_value += p_ptr->hitdie;
2778-
2779- /* Roll out the hitpoints */
2780- while (TRUE)
2781- {
2782- /* Pre-calculate level 1 hitdice */
2783- p_ptr->player_hp[0] = p_ptr->hitdie;
2784-
2785- for (i = 1; i < 4; i++)
2786- {
2787- j = randint1(p_ptr->hitdie);
2788- p_ptr->player_hp[0] += j;
2789- }
2790-
2791- /* Roll the hitpoint values */
2792- for (i = 1; i < PY_MAX_LEVEL; i++)
2793- {
2794- j = randint1(p_ptr->hitdie);
2795- p_ptr->player_hp[i] = p_ptr->player_hp[i - 1] + j;
2796- }
2797-
2798- /* XXX Could also require acceptable "mid-level" hitpoints */
2799-
2800- /* Require "valid" hitpoints at highest level */
2801- if (p_ptr->player_hp[PY_MAX_LEVEL - 1] < min_value) continue;
2802- if (p_ptr->player_hp[PY_MAX_LEVEL - 1] > max_value) continue;
2803-
2804- /* Acceptable */
2805- break;
2806- }
2807- }
2769+ if (roll_hitdie) do_cmd_rerate_aux();
28082770
28092771 /* Initial hitpoints */
28102772 p_ptr->mhp = p_ptr->player_hp[0];
--- a/src/externs.h
+++ b/src/externs.h
@@ -692,6 +692,7 @@ extern void do_cmd_aim_wand(void);
692692 extern void do_cmd_use_staff(void);
693693 extern void do_cmd_zap_rod(void);
694694 extern void do_cmd_activate(void);
695+extern void do_cmd_rerate_aux(void);
695696 extern void do_cmd_rerate(bool display);
696697 extern void ring_of_power(int dir);
697698 extern void do_cmd_use(void);
--- a/src/wizard2.c
+++ b/src/wizard2.c
@@ -14,40 +14,51 @@
1414
1515
1616 /*
17- * Hack -- Rerate Hitpoints
17+ * Roll the hitdie -- aux of do_cmd_rerate()
1818 */
19-void do_cmd_rerate(bool display)
19+void do_cmd_rerate_aux(void)
2020 {
21- int min_value, max_value, i, percent, j;
21+ /* Minimum hitpoints at highest level */
22+ int min_value = p_ptr->hitdie + ((PY_MAX_LEVEL + 2) * (p_ptr->hitdie + 1)) * 3 / 8;
2223
23- min_value = ((PY_MAX_LEVEL+2) * (p_ptr->hitdie + 1)) * 3 / 8;
24- min_value += p_ptr->hitdie;
24+ /* Maximum hitpoints at highest level */
25+ int max_value = p_ptr->hitdie + ((PY_MAX_LEVEL + 2) * (p_ptr->hitdie + 1)) * 5 / 8;
2526
26- max_value = ((PY_MAX_LEVEL+2) * (p_ptr->hitdie + 1)) * 5 / 8;
27- max_value += p_ptr->hitdie;
27+ int i;
2828
2929 /* Rerate */
3030 while (1)
3131 {
32+ /* Pre-calculate level 1 hitdice */
3233 p_ptr->player_hp[0] = p_ptr->hitdie;
3334
3435 for (i = 1; i < 4; i++)
3536 {
36- j = randint1(p_ptr->hitdie);
37- p_ptr->player_hp[0] += j;
37+ p_ptr->player_hp[0] += randint1(p_ptr->hitdie);
3838 }
3939
40- /* Collect values */
40+ /* Roll the hitpoint values */
4141 for (i = 1; i < PY_MAX_LEVEL; i++)
4242 {
43- p_ptr->player_hp[i] = randint1(p_ptr->hitdie);
44- p_ptr->player_hp[i] += p_ptr->player_hp[i - 1];
43+ p_ptr->player_hp[i] = p_ptr->player_hp[i - 1] + randint1(p_ptr->hitdie);
4544 }
4645
47- /* Legal values */
46+ /* Require "valid" hitpoints at highest level */
4847 if ((p_ptr->player_hp[PY_MAX_LEVEL - 1] >= min_value) &&
4948 (p_ptr->player_hp[PY_MAX_LEVEL - 1] <= max_value)) break;
5049 }
50+}
51+
52+
53+/*
54+ * Hack -- Rerate Hitpoints
55+ */
56+void do_cmd_rerate(bool display)
57+{
58+ int percent;
59+
60+ /* Rerate */
61+ do_cmd_rerate_aux();
5162
5263 percent = (int)(((long)p_ptr->player_hp[PY_MAX_LEVEL - 1] * 200L) /
5364 (2 * p_ptr->hitdie +
Show on old repository browser