OSDN Git Service

Separate 'massacre' process to independent function.
[hengband/hengband.git] / src / effects.c
index b244442..98c7a49 100644 (file)
@@ -87,6 +87,7 @@ void set_action(int typ)
 #else
                                msg_print("You are no longer walking extremely fast.");
 #endif
+                               energy_use = 100;
                                break;
                        }
                        case ACTION_SPELL:
@@ -386,8 +387,7 @@ bool set_mimic(int v, int p, bool do_dec)
                return (FALSE);
 
        /* Disturb */
-       if (disturb_state)
-               disturb(0, 0);
+       if (disturb_state) disturb(0, 1);
 
        /* Redraw title */
        p_ptr->redraw |= (PR_BASIC | PR_STATUS);
@@ -883,7 +883,7 @@ msg_print("
        if (!notice) return (FALSE);
 
        /* Disturb */
-       if (disturb_state) disturb(0, 0);
+       if (disturb_state) disturb(0, 1);
 
        /* Redraw map */
        p_ptr->redraw |= (PR_MAP);
@@ -4926,7 +4926,7 @@ msg_print("
        if ((power > randint0(20)) && one_in_(3) && (p_ptr->prace != RACE_ANDROID))
        {
                char effect_msg[80] = "";
-               int new_race, expfact, goalexpfact;
+               int new_race;
 
                /* Some form of racial polymorph... */
                power -= 10;
@@ -5017,21 +5017,11 @@ msg_print("
 
                }
 
-               /*
-                * Restrict the race choices by exp penalty so
-                * weak polymorph always means weak race
-                */
-               if (power < 0)
-                       goalexpfact = 100;
-               else
-                       goalexpfact = 100 + 3 * randint0(power);
-
                do
                {
                        new_race = randint0(MAX_RACES);
-                       expfact = race_info[new_race].r_exp;
                }
-               while (((new_race == p_ptr->prace) && (expfact > goalexpfact)) || (new_race == RACE_ANDROID));
+               while ((new_race == p_ptr->prace) || (new_race == RACE_ANDROID));
 
                change_race(new_race, effect_msg);
        }
@@ -5127,7 +5117,7 @@ int take_hit(int damage_type, int damage, cptr hit_from, int monspell)
        if (damage_type != DAMAGE_USELIFE)
        {
                /* Disturb */
-               disturb(1, 0);
+               disturb(1, 1);
                if (auto_more)
                {
                        now_damaged = TRUE;
@@ -5222,8 +5212,6 @@ int take_hit(int damage_type, int damage, cptr hit_from, int monspell)
        /* Window stuff */
        p_ptr->window |= (PW_PLAYER);
 
-       handle_stuff();
-
        if (damage_type != DAMAGE_GENO && p_ptr->chp == 0)
        {
                chg_virtue(V_SACRIFICE, 1);
@@ -5245,6 +5233,8 @@ int take_hit(int damage_type, int damage, cptr hit_from, int monspell)
 
                chg_virtue(V_SACRIFICE, 10);
 
+               handle_stuff();
+
                /* Leaving */
                p_ptr->leaving = TRUE;
 
@@ -5482,6 +5472,8 @@ int take_hit(int damage_type, int damage, cptr hit_from, int monspell)
                return damage;
        }
 
+       handle_stuff();
+
        /* Hitpoint warning */
        if (p_ptr->chp < warning)
        {