OSDN Git Service

Add POWERFUL flag for generate ego. Easy to make a Cursed but has good pval ego
[hengband/hengband.git] / src / cmd5.c
index ee25b5a..47bcd30 100644 (file)
@@ -61,7 +61,7 @@ static int get_spell(int *sn, cptr prompt, int sval, bool learned, int use_realm
        byte        spells[64];
        bool        flag, redraw, okay;
        char        choice;
-       magic_type  *s_ptr;
+       const magic_type  *s_ptr;
        char        out_val[160];
        cptr        p;
 #ifdef JP
@@ -1101,10 +1101,12 @@ void do_cmd_cast(void)
 
        object_type     *o_ptr;
 
-       magic_type      *s_ptr;
+       const magic_type *s_ptr;
 
        cptr q, s;
 
+       bool over_exerted = FALSE;
+
        /* Require spell ability */
        if (!p_ptr->realm1 && (p_ptr->pclass != CLASS_SORCERER) && (p_ptr->pclass != CLASS_RED_MAGE))
        {
@@ -1307,10 +1309,20 @@ msg_format("
 
        }
 
-
        /* Spell failure chance */
        chance = spell_chance(spell, use_realm);
 
+       /* Sufficient mana */
+       if (need_mana <= p_ptr->csp)
+       {
+               /* Use some mana */
+               p_ptr->csp -= need_mana;
+       }
+       else over_exerted = TRUE;
+
+       /* Redraw mana */
+       p_ptr->redraw |= (PR_MANA);
+
        /* Failed spell */
        if (randint0(100) < chance)
        {
@@ -1542,15 +1554,9 @@ msg_print("An infernal sound echoed.");
        /* Take a turn */
        energy_use = 100;
 
-       /* Sufficient mana */
-       if (need_mana <= p_ptr->csp)
-       {
-               /* Use some mana */
-               p_ptr->csp -= need_mana;
-       }
 
        /* Over-exert the player */
-       else
+       if(over_exerted)
        {
                int oops = need_mana;
 
@@ -1612,9 +1618,6 @@ msg_print("
                }
        }
 
-       /* Redraw mana */
-       p_ptr->redraw |= (PR_MANA);
-
        /* Window stuff */
        p_ptr->window |= (PW_PLAYER);
        p_ptr->window |= (PW_SPELL);
@@ -2356,7 +2359,6 @@ void do_cmd_pet(void)
        int                     powers[36];
        cptr                    power_desc[36];
        bool                    flag, redraw;
-       int                     ask;
        char                    choice;
        char                    out_val[160];
        int                     pet_ctr;
@@ -2689,6 +2691,8 @@ void do_cmd_pet(void)
        /* Get a command from the user */
        while (!flag)
        {
+               int ask = TRUE;
+
                if (choice == ESCAPE) choice = ' ';
                else if (!get_com(out_val, &choice, TRUE)) break;