OSDN Git Service

[Refactor] #38997 chg_virtue() に player_type * 引数を追加.
authordeskull <deskull@users.sourceforge.jp>
Mon, 1 Jul 2019 15:02:50 +0000 (00:02 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Mon, 1 Jul 2019 15:02:50 +0000 (00:02 +0900)
38 files changed:
src/artifact.c
src/avatar.c
src/avatar.h
src/bldg.c
src/cmd-activate.c
src/cmd-basic.c
src/cmd-eat.c
src/cmd-item.c
src/cmd-magiceat.c
src/cmd-quaff.c
src/cmd-read.c
src/cmd-spell.c
src/cmd-usestaff.c
src/cmd-zaprod.c
src/cmd-zapwand.c
src/load.c
src/melee1.c
src/mind.c
src/monster-process.c
src/monster-status.c
src/monster1.c
src/mspells3.c
src/mutation.c
src/player-damage.c
src/player-effects.c
src/player-status.c
src/realm-arcane.c
src/realm-death.c
src/realm-nature.c
src/realm-sorcery.c
src/selfinfo.c
src/shoot.c
src/spells-object.c
src/spells-status.c
src/spells1.c
src/spells2.c
src/spells3.c
src/store.c

index 63ec1c0..ed46d9c 100644 (file)
@@ -1850,8 +1850,8 @@ bool become_random_artifact(object_type *o_ptr, bool a_scroll)
                        }
                }
                sprintf(new_name, _("《%s》", "'%s'"), dummy_name);
-               chg_virtue(V_INDIVIDUALISM, 2);
-               chg_virtue(V_ENCHANT, 5);
+               chg_virtue(p_ptr, V_INDIVIDUALISM, 2);
+               chg_virtue(p_ptr, V_ENCHANT, 5);
        }
        else
        {
index 2bdcf50..2090dca 100644 (file)
@@ -402,59 +402,59 @@ void get_virtues(player_type *creature_ptr)
  * @param amount 加減量
  * @return なし
  */
-void chg_virtue(int virtue_id, int amount)
+void chg_virtue(player_type *creature_ptr, int virtue_id, int amount)
 {
        int i = 0;
 
        for (i = 0; i < 8; i++)
        {
-               if (p_ptr->vir_types[i] == virtue_id)
+               if (creature_ptr->vir_types[i] == virtue_id)
                {
                        if (amount > 0)
                        {
-                               if ((amount + p_ptr->virtues[i] > 50) && one_in_(2))
+                               if ((amount + creature_ptr->virtues[i] > 50) && one_in_(2))
                                {
-                                       p_ptr->virtues[i] = MAX(p_ptr->virtues[i], 50);
+                                       creature_ptr->virtues[i] = MAX(creature_ptr->virtues[i], 50);
                                        return;
                                }
-                               if ((amount + p_ptr->virtues[i] > 80) && one_in_(2))
+                               if ((amount + creature_ptr->virtues[i] > 80) && one_in_(2))
                                {
-                                       p_ptr->virtues[i] = MAX(p_ptr->virtues[i], 80);
+                                       creature_ptr->virtues[i] = MAX(creature_ptr->virtues[i], 80);
                                        return;
                                }
-                               if ((amount + p_ptr->virtues[i] > 100) && one_in_(2))
+                               if ((amount + creature_ptr->virtues[i] > 100) && one_in_(2))
                                {
-                                       p_ptr->virtues[i] = MAX(p_ptr->virtues[i], 100);
+                                       creature_ptr->virtues[i] = MAX(creature_ptr->virtues[i], 100);
                                        return;
                                }
-                               if (amount + p_ptr->virtues[i] > 125)
-                                       p_ptr->virtues[i] = 125;
+                               if (amount + creature_ptr->virtues[i] > 125)
+                                       creature_ptr->virtues[i] = 125;
                                else
-                                       p_ptr->virtues[i] = p_ptr->virtues[i] + amount;
+                                       creature_ptr->virtues[i] = creature_ptr->virtues[i] + amount;
                        }
                        else
                        {
-                               if ((amount + p_ptr->virtues[i] < -50) && one_in_(2))
+                               if ((amount + creature_ptr->virtues[i] < -50) && one_in_(2))
                                {
-                                       p_ptr->virtues[i] = MIN(p_ptr->virtues[i], -50);
+                                       creature_ptr->virtues[i] = MIN(creature_ptr->virtues[i], -50);
                                        return;
                                }
-                               if ((amount + p_ptr->virtues[i] < -80) && one_in_(2))
+                               if ((amount + creature_ptr->virtues[i] < -80) && one_in_(2))
                                {
-                                       p_ptr->virtues[i] = MIN(p_ptr->virtues[i], -80);
+                                       creature_ptr->virtues[i] = MIN(creature_ptr->virtues[i], -80);
                                        return;
                                }
-                               if ((amount + p_ptr->virtues[i] < -100) && one_in_(2))
+                               if ((amount + creature_ptr->virtues[i] < -100) && one_in_(2))
                                {
-                                       p_ptr->virtues[i] = MIN(p_ptr->virtues[i], -100);
+                                       creature_ptr->virtues[i] = MIN(creature_ptr->virtues[i], -100);
                                        return;
                                }
-                               if (amount + p_ptr->virtues[i] < -125)
-                                       p_ptr->virtues[i] = -125;
+                               if (amount + creature_ptr->virtues[i] < -125)
+                                       creature_ptr->virtues[i] = -125;
                                else
-                                       p_ptr->virtues[i] = p_ptr->virtues[i] + amount;
+                                       creature_ptr->virtues[i] = creature_ptr->virtues[i] + amount;
                        }
-                       p_ptr->update |= (PU_BONUS);
+                       creature_ptr->update |= (PU_BONUS);
                        return;
                }
        }
index 1600d38..421716d 100644 (file)
@@ -26,6 +26,6 @@ extern bool compare_virtue(int type, int num, int tekitou);
 extern int virtue_number(int type);
 extern concptr virtue[MAX_VIRTUE];
 extern void get_virtues(player_type *creature_ptr);
-extern void chg_virtue(int virtue, int amount);
+extern void chg_virtue(player_type *creature_ptr, int virtue, int amount);
 extern void set_virtue(int virtue, int amount);
 extern void dump_virtues(FILE * OutFile);
index 8cd5c48..e90d8ff 100644 (file)
@@ -1428,12 +1428,12 @@ static bool gamble_comm(int cmd)
                        {
                                msg_print(_("「今回は儲けたな!でも次はこっちが勝ってやるからな、絶対に!」",
                                                        "You came out a winner! We'll win next time, I'm sure."));
-                               chg_virtue(V_CHANCE, 3);
+                               chg_virtue(p_ptr, V_CHANCE, 3);
                        }
                        else
                        {
                                msg_print(_("「金をスッてしまったな、わはは!うちに帰った方がいいぜ。」", "You lost gold! Haha, better head home."));
-                               chg_virtue(V_CHANCE, -3);
+                               chg_virtue(p_ptr, V_CHANCE, -3);
                        }
                }
                msg_print(NULL);
@@ -1937,7 +1937,7 @@ static bool kankin(void)
                                inven_item_increase(i, -o_ptr->number);
                                inven_item_describe(i);
                                inven_item_optimize(i);
-                               chg_virtue(V_JUSTICE, 5);
+                               chg_virtue(p_ptr, V_JUSTICE, 5);
                                current_world_ptr->bounty_r_idx[j] += 10000;
 
                                change = TRUE;
@@ -1948,7 +1948,7 @@ static bool kankin(void)
                                inven_item_describe(i);
                                inven_item_optimize(i);
 
-                               chg_virtue(V_JUSTICE, 5);
+                               chg_virtue(p_ptr, V_JUSTICE, 5);
                                current_world_ptr->bounty_r_idx[j] += 10000;
 
                                /* Count number of unique corpses already handed */
index d5367ac..04d6306 100644 (file)
@@ -1557,8 +1557,8 @@ bool activate_artifact(object_type *o_ptr)
        case ACT_JUDGE:
        {
                msg_format(_("%sは赤く明るく光った!", "The %s flashes bright red!"), name);
-               chg_virtue(V_KNOWLEDGE, 1);
-               chg_virtue(V_ENLIGHTEN, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+               chg_virtue(p_ptr, V_ENLIGHTEN, 1);
                wiz_lite(FALSE);
 
                msg_format(_("%sはあなたの体力を奪った...", "The %s drains your vitality..."), name);
index 0997e45..c155941 100644 (file)
@@ -1162,8 +1162,8 @@ static bool do_cmd_tunnel_aux(POSITION y, POSITION x)
                        /* Remove the feature */
                        cave_alter_feat(y, x, FF_TUNNEL);
 
-                       chg_virtue(V_DILIGENCE, 1);
-                       chg_virtue(V_NATURE, -1);
+                       chg_virtue(p_ptr, V_DILIGENCE, 1);
+                       chg_virtue(p_ptr, V_NATURE, -1);
                }
 
                /* Keep trying */
@@ -2213,7 +2213,7 @@ void do_cmd_rest(void)
        take_turn(p_ptr, 100);
 
        /* The sin of sloth */
-       if (command_arg > 100) chg_virtue(V_DILIGENCE, -1);
+       if (command_arg > 100) chg_virtue(p_ptr, V_DILIGENCE, -1);
        
        /* Why are you sleeping when there's no need?  WAKE UP!*/
        if ((p_ptr->chp == p_ptr->mhp) &&
@@ -2224,7 +2224,7 @@ void do_cmd_rest(void)
            !p_ptr->slow && !p_ptr->paralyzed &&
            !p_ptr->image && !p_ptr->word_recall &&
            !p_ptr->alter_reality)
-                       chg_virtue(V_DILIGENCE, -1);
+                       chg_virtue(p_ptr, V_DILIGENCE, -1);
 
        /* Save the rest code */
        p_ptr->resting = command_arg;
index 1afe7eb..d4a38b3 100644 (file)
@@ -316,9 +316,9 @@ void exe_eat_food(INVENTORY_IDX item)
 
        if (!(object_is_aware(o_ptr)))
        {
-               chg_virtue(V_KNOWLEDGE, -1);
-               chg_virtue(V_PATIENCE, -1);
-               chg_virtue(V_CHANCE, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, -1);
+               chg_virtue(p_ptr, V_PATIENCE, -1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
        }
 
        /* We have tried it */
index f36e053..044d1fa 100644 (file)
@@ -439,7 +439,7 @@ void do_cmd_wield(void)
        if (object_is_cursed(o_ptr))
        {
                msg_print(_("うわ! すさまじく冷たい!", "Oops! It feels deathly cold!"));
-               chg_virtue(V_HARMONY, -1);
+               chg_virtue(p_ptr, V_HARMONY, -1);
 
                /* Note the curse */
                o_ptr->ident |= (IDENT_SENSE);
@@ -802,27 +802,27 @@ void do_cmd_destroy(void)
                }
                if (item_tester_high_level_book(q_ptr) && q_ptr->tval == TV_LIFE_BOOK)
                {
-                       chg_virtue(V_UNLIFE, 1);
-                       chg_virtue(V_VITALITY, -1);
+                       chg_virtue(p_ptr, V_UNLIFE, 1);
+                       chg_virtue(p_ptr, V_VITALITY, -1);
                }
                else if (item_tester_high_level_book(q_ptr) && q_ptr->tval == TV_DEATH_BOOK)
                {
-                       chg_virtue(V_UNLIFE, -1);
-                       chg_virtue(V_VITALITY, 1);
+                       chg_virtue(p_ptr, V_UNLIFE, -1);
+                       chg_virtue(p_ptr, V_VITALITY, 1);
                }
        
                if (q_ptr->to_a || q_ptr->to_h || q_ptr->to_d)
-                       chg_virtue(V_ENCHANT, -1);
+                       chg_virtue(p_ptr, V_ENCHANT, -1);
        
                if (object_value_real(q_ptr) > 30000)
-                       chg_virtue(V_SACRIFICE, 2);
+                       chg_virtue(p_ptr, V_SACRIFICE, 2);
        
                else if (object_value_real(q_ptr) > 10000)
-                       chg_virtue(V_SACRIFICE, 1);
+                       chg_virtue(p_ptr, V_SACRIFICE, 1);
        }
 
        if (q_ptr->to_a != 0 || q_ptr->to_d != 0 || q_ptr->to_h != 0)
-               chg_virtue(V_HARMONY, 1);
+               chg_virtue(p_ptr, V_HARMONY, 1);
 
        if (item >= INVEN_RARM) calc_android_exp(p_ptr);
 }
index 8b2652e..56b4449 100644 (file)
@@ -558,7 +558,7 @@ bool do_cmd_magic_eater(bool only_browse, bool powerful)
                msg_print(_("呪文をうまく唱えられなかった!", "You failed to get the magic off!"));
                sound(SOUND_FAIL);
                if (randint1(100) >= chance)
-                       chg_virtue(V_CHANCE,-1);
+                       chg_virtue(p_ptr, V_CHANCE,-1);
                take_turn(p_ptr, 100);
 
                return TRUE;
@@ -585,7 +585,7 @@ bool do_cmd_magic_eater(bool only_browse, bool powerful)
                        if (!use_charge) return FALSE;
                }
                if (randint1(100) < chance)
-                       chg_virtue(V_CHANCE,1);
+                       chg_virtue(p_ptr, V_CHANCE,1);
        }
        take_turn(p_ptr, 100);
        if (tval == TV_ROD) p_ptr->magic_num1[item] += k_info[k_idx].pval * EATER_ROD_CHARGE;
index 51cfafc..8ae3a10 100644 (file)
@@ -197,7 +197,7 @@ void exe_quaff_potion(INVENTORY_IDX item)
                        if (!p_ptr->hold_exp && (p_ptr->exp > 0))
                        {
                                msg_print(_("過去の記憶が薄れていく気がする。", "You feel your memories fade."));
-                               chg_virtue(V_KNOWLEDGE, -5);
+                               chg_virtue(p_ptr, V_KNOWLEDGE, -5);
 
                                lose_exp(p_ptr, p_ptr->exp / 4);
                                ident = TRUE;
@@ -246,8 +246,8 @@ void exe_quaff_potion(INVENTORY_IDX item)
                        break;
 
                case SV_POTION_DEATH:
-                       chg_virtue(V_VITALITY, -1);
-                       chg_virtue(V_UNLIFE, 5);
+                       chg_virtue(p_ptr, V_VITALITY, -1);
+                       chg_virtue(p_ptr, V_UNLIFE, 5);
                        msg_print(_("死の予感が体中を駆けめぐった。", "A feeling of Death flows through your body."));
                        take_hit(DAMAGE_LOSELIFE, 5000, _("死の薬", "a potion of Death"), -1);
                        ident = TRUE;
@@ -403,16 +403,16 @@ void exe_quaff_potion(INVENTORY_IDX item)
 
                case SV_POTION_ENLIGHTENMENT:
                        msg_print(_("自分の置かれている状況が脳裏に浮かんできた...", "An image of your surroundings forms in your mind..."));
-                       chg_virtue(V_KNOWLEDGE, 1);
-                       chg_virtue(V_ENLIGHTEN, 1);
+                       chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+                       chg_virtue(p_ptr, V_ENLIGHTEN, 1);
                        wiz_lite(FALSE);
                        ident = TRUE;
                        break;
 
                case SV_POTION_STAR_ENLIGHTENMENT:
                        msg_print(_("更なる啓蒙を感じた...", "You begin to feel more enlightened..."));
-                       chg_virtue(V_KNOWLEDGE, 1);
-                       chg_virtue(V_ENLIGHTEN, 2);
+                       chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+                       chg_virtue(p_ptr, V_ENLIGHTEN, 2);
                        msg_print(NULL);
                        wiz_lite(FALSE);
                        (void)do_inc_stat(p_ptr, A_INT);
@@ -437,7 +437,7 @@ void exe_quaff_potion(INVENTORY_IDX item)
 
                case SV_POTION_EXPERIENCE:
                        if (p_ptr->prace == RACE_ANDROID) break;
-                       chg_virtue(V_ENLIGHTEN, 1);
+                       chg_virtue(p_ptr, V_ENLIGHTEN, 1);
                        if (p_ptr->exp < PY_MAX_EXP)
                        {
                                EXP ee = (p_ptr->exp / 2) + 10;
@@ -521,9 +521,9 @@ void exe_quaff_potion(INVENTORY_IDX item)
 
        if (!(object_is_aware(q_ptr)))
        {
-               chg_virtue(V_PATIENCE, -1);
-               chg_virtue(V_CHANCE, 1);
-               chg_virtue(V_KNOWLEDGE, -1);
+               chg_virtue(p_ptr, V_PATIENCE, -1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, -1);
        }
 
        /* The item has been tried */
index ac4a763..996921a 100644 (file)
@@ -569,9 +569,9 @@ void exe_read(INVENTORY_IDX item, bool known)
 
        if (!(object_is_aware(o_ptr)))
        {
-               chg_virtue(V_PATIENCE, -1);
-               chg_virtue(V_CHANCE, 1);
-               chg_virtue(V_KNOWLEDGE, -1);
+               chg_virtue(p_ptr, V_PATIENCE, -1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, -1);
        }
 
        /* The item was tried */
index 9c87701..b8f396c 100644 (file)
@@ -1009,16 +1009,16 @@ void do_cmd_study(void)
        switch (mp_ptr->spell_book)
        {
        case TV_LIFE_BOOK:
-               chg_virtue(V_FAITH, 1);
+               chg_virtue(p_ptr, V_FAITH, 1);
                break;
        case TV_DEATH_BOOK:
-               chg_virtue(V_UNLIFE, 1);
+               chg_virtue(p_ptr, V_UNLIFE, 1);
                break;
        case TV_NATURE_BOOK:
-               chg_virtue(V_NATURE, 1);
+               chg_virtue(p_ptr, V_NATURE, 1);
                break;
        default:
-               chg_virtue(V_KNOWLEDGE, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, 1);
                break;
        }
 
@@ -1220,25 +1220,25 @@ void do_cmd_cast(void)
                switch (realm)
                {
                case REALM_LIFE:
-                       if (randint1(100) < chance) chg_virtue(V_VITALITY, -1);
+                       if (randint1(100) < chance) chg_virtue(p_ptr, V_VITALITY, -1);
                        break;
                case REALM_DEATH:
-                       if (randint1(100) < chance) chg_virtue(V_UNLIFE, -1);
+                       if (randint1(100) < chance) chg_virtue(p_ptr, V_UNLIFE, -1);
                        break;
                case REALM_NATURE:
-                       if (randint1(100) < chance) chg_virtue(V_NATURE, -1);
+                       if (randint1(100) < chance) chg_virtue(p_ptr, V_NATURE, -1);
                        break;
                case REALM_DAEMON:
-                       if (randint1(100) < chance) chg_virtue(V_JUSTICE, 1);
+                       if (randint1(100) < chance) chg_virtue(p_ptr, V_JUSTICE, 1);
                        break;
                case REALM_CRUSADE:
-                       if (randint1(100) < chance) chg_virtue(V_JUSTICE, -1);
+                       if (randint1(100) < chance) chg_virtue(p_ptr, V_JUSTICE, -1);
                        break;
                case REALM_HEX:
-                       if (randint1(100) < chance) chg_virtue(V_COMPASSION, -1);
+                       if (randint1(100) < chance) chg_virtue(p_ptr, V_COMPASSION, -1);
                        break;
                default:
-                       if (randint1(100) < chance) chg_virtue(V_KNOWLEDGE, -1);
+                       if (randint1(100) < chance) chg_virtue(p_ptr, V_KNOWLEDGE, -1);
                        break;
                }
 
@@ -1272,7 +1272,7 @@ void do_cmd_cast(void)
                        aggravate_monsters(0);
                }
                if (randint1(100) >= chance)
-                       chg_virtue(V_CHANCE, -1);
+                       chg_virtue(p_ptr, V_CHANCE, -1);
        }
 
        /* Process spell */
@@ -1282,7 +1282,7 @@ void do_cmd_cast(void)
                if (!do_spell(realm, spell, SPELL_CAST)) return;
 
                if (randint1(100) < chance)
-                       chg_virtue(V_CHANCE, 1);
+                       chg_virtue(p_ptr, V_CHANCE, 1);
 
                /* A spell was cast */
                if (!(increment ?
@@ -1312,79 +1312,79 @@ void do_cmd_cast(void)
                        switch (realm)
                        {
                        case REALM_LIFE:
-                               chg_virtue(V_TEMPERANCE, 1);
-                               chg_virtue(V_COMPASSION, 1);
-                               chg_virtue(V_VITALITY, 1);
-                               chg_virtue(V_DILIGENCE, 1);
+                               chg_virtue(p_ptr, V_TEMPERANCE, 1);
+                               chg_virtue(p_ptr, V_COMPASSION, 1);
+                               chg_virtue(p_ptr, V_VITALITY, 1);
+                               chg_virtue(p_ptr, V_DILIGENCE, 1);
                                break;
                        case REALM_DEATH:
-                               chg_virtue(V_UNLIFE, 1);
-                               chg_virtue(V_JUSTICE, -1);
-                               chg_virtue(V_FAITH, -1);
-                               chg_virtue(V_VITALITY, -1);
+                               chg_virtue(p_ptr, V_UNLIFE, 1);
+                               chg_virtue(p_ptr, V_JUSTICE, -1);
+                               chg_virtue(p_ptr, V_FAITH, -1);
+                               chg_virtue(p_ptr, V_VITALITY, -1);
                                break;
                        case REALM_DAEMON:
-                               chg_virtue(V_JUSTICE, -1);
-                               chg_virtue(V_FAITH, -1);
-                               chg_virtue(V_HONOUR, -1);
-                               chg_virtue(V_TEMPERANCE, -1);
+                               chg_virtue(p_ptr, V_JUSTICE, -1);
+                               chg_virtue(p_ptr, V_FAITH, -1);
+                               chg_virtue(p_ptr, V_HONOUR, -1);
+                               chg_virtue(p_ptr, V_TEMPERANCE, -1);
                                break;
                        case REALM_CRUSADE:
-                               chg_virtue(V_FAITH, 1);
-                               chg_virtue(V_JUSTICE, 1);
-                               chg_virtue(V_SACRIFICE, 1);
-                               chg_virtue(V_HONOUR, 1);
+                               chg_virtue(p_ptr, V_FAITH, 1);
+                               chg_virtue(p_ptr, V_JUSTICE, 1);
+                               chg_virtue(p_ptr, V_SACRIFICE, 1);
+                               chg_virtue(p_ptr, V_HONOUR, 1);
                                break;
                        case REALM_NATURE:
-                               chg_virtue(V_NATURE, 1);
-                               chg_virtue(V_HARMONY, 1);
+                               chg_virtue(p_ptr, V_NATURE, 1);
+                               chg_virtue(p_ptr, V_HARMONY, 1);
                                break;
                        case REALM_HEX:
-                               chg_virtue(V_JUSTICE, -1);
-                               chg_virtue(V_FAITH, -1);
-                               chg_virtue(V_HONOUR, -1);
-                               chg_virtue(V_COMPASSION, -1);
+                               chg_virtue(p_ptr, V_JUSTICE, -1);
+                               chg_virtue(p_ptr, V_FAITH, -1);
+                               chg_virtue(p_ptr, V_HONOUR, -1);
+                               chg_virtue(p_ptr, V_COMPASSION, -1);
                                break;
                        default:
-                               chg_virtue(V_KNOWLEDGE, 1);
+                               chg_virtue(p_ptr, V_KNOWLEDGE, 1);
                                break;
                        }
                }
                switch (realm)
                {
                case REALM_LIFE:
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_TEMPERANCE, 1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_COMPASSION, 1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_VITALITY, 1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_DILIGENCE, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_TEMPERANCE, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_COMPASSION, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_VITALITY, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_DILIGENCE, 1);
                        break;
                case REALM_DEATH:
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_UNLIFE, 1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_JUSTICE, -1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_FAITH, -1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_VITALITY, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_UNLIFE, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_JUSTICE, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_FAITH, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_VITALITY, -1);
                        break;
                case REALM_DAEMON:
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_JUSTICE, -1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_FAITH, -1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_HONOUR, -1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_TEMPERANCE, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_JUSTICE, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_FAITH, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_HONOUR, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_TEMPERANCE, -1);
                        break;
                case REALM_CRUSADE:
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_FAITH, 1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_JUSTICE, 1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_SACRIFICE, 1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_HONOUR, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_FAITH, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_JUSTICE, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_SACRIFICE, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_HONOUR, 1);
                        break;
                case REALM_NATURE:
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_NATURE, 1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_HARMONY, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_NATURE, 1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_HARMONY, 1);
                        break;
                case REALM_HEX:
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_JUSTICE, -1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_FAITH, -1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_HONOUR, -1);
-                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(V_COMPASSION, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_JUSTICE, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_FAITH, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_HONOUR, -1);
+                       if (randint1(100 + p_ptr->lev) < need_mana) chg_virtue(p_ptr, V_COMPASSION, -1);
                        break;
                }
                if (mp_ptr->spell_xtra & MAGIC_GAIN_EXP)
@@ -1433,25 +1433,25 @@ void do_cmd_cast(void)
                switch (realm)
                {
                case REALM_LIFE:
-                       chg_virtue(V_VITALITY, -10);
+                       chg_virtue(p_ptr, V_VITALITY, -10);
                        break;
                case REALM_DEATH:
-                       chg_virtue(V_UNLIFE, -10);
+                       chg_virtue(p_ptr, V_UNLIFE, -10);
                        break;
                case REALM_DAEMON:
-                       chg_virtue(V_JUSTICE, 10);
+                       chg_virtue(p_ptr, V_JUSTICE, 10);
                        break;
                case REALM_NATURE:
-                       chg_virtue(V_NATURE, -10);
+                       chg_virtue(p_ptr, V_NATURE, -10);
                        break;
                case REALM_CRUSADE:
-                       chg_virtue(V_JUSTICE, -10);
+                       chg_virtue(p_ptr, V_JUSTICE, -10);
                        break;
                case REALM_HEX:
-                       chg_virtue(V_COMPASSION, 10);
+                       chg_virtue(p_ptr, V_COMPASSION, 10);
                        break;
                default:
-                       chg_virtue(V_KNOWLEDGE, -10);
+                       chg_virtue(p_ptr, V_KNOWLEDGE, -10);
                        break;
                }
 
index 2ad7712..9ff446a 100644 (file)
@@ -361,9 +361,9 @@ void exe_use_staff(INVENTORY_IDX item)
 
        if (!(object_is_aware(o_ptr)))
        {
-               chg_virtue(V_PATIENCE, -1);
-               chg_virtue(V_CHANCE, 1);
-               chg_virtue(V_KNOWLEDGE, -1);
+               chg_virtue(p_ptr, V_PATIENCE, -1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, -1);
        }
        p_ptr->update |= (PU_COMBINE | PU_REORDER);
 
index e0bc2c2..2012eb0 100644 (file)
@@ -376,9 +376,9 @@ void exe_zap_rod(INVENTORY_IDX item)
 
        if (!(object_is_aware(o_ptr)))
        {
-               chg_virtue(V_PATIENCE, -1);
-               chg_virtue(V_CHANCE, 1);
-               chg_virtue(V_KNOWLEDGE, -1);
+               chg_virtue(p_ptr, V_PATIENCE, -1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, -1);
        }
 
        /* Tried the object */
index 9139e3c..7c8669a 100644 (file)
@@ -48,7 +48,7 @@ bool wand_effect(OBJECT_SUBTYPE_VALUE sval, DIRECTION dir, bool powerful, bool m
                        }
                }
                if (sval < SV_WAND_TELEPORT_AWAY)
-                       chg_virtue(V_CHANCE, 1);
+                       chg_virtue(p_ptr, V_CHANCE, 1);
        }
 
        /* Analyze the wand */
@@ -416,9 +416,9 @@ void exe_aim_wand(INVENTORY_IDX item)
 
        if (!(object_is_aware(o_ptr)))
        {
-               chg_virtue(V_PATIENCE, -1);
-               chg_virtue(V_CHANCE, 1);
-               chg_virtue(V_KNOWLEDGE, -1);
+               chg_virtue(p_ptr, V_PATIENCE, -1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, -1);
        }
 
        /* Mark it as tried */
index cc28d51..2b7882a 100644 (file)
@@ -1376,7 +1376,7 @@ static void home_carry(store_type *st_ptr, object_type *o_ptr)
        /* Insert the new item */
        st_ptr->stock[slot] = *o_ptr;
 
-       chg_virtue(V_SACRIFICE, -1);
+       chg_virtue(p_ptr, V_SACRIFICE, -1);
 
        /* Return the location */
        return;
index db5575a..5eeeab2 100644 (file)
@@ -1460,7 +1460,7 @@ static void py_attack_aux(POSITION y, POSITION x, bool *fear, bool *mdeath, s16b
                        if ((have_flag(flgs, TR_CHAOTIC)) && one_in_(2))
                        {
                                if (one_in_(10))
-                                       chg_virtue(V_CHANCE, 1);
+                                       chg_virtue(p_ptr, V_CHANCE, 1);
 
                                if (randint1(5) < 3)
                                {
@@ -2147,7 +2147,7 @@ static void py_attack_aux(POSITION y, POSITION x, bool *fear, bool *mdeath, s16b
        {
                if (one_in_(4))
                {
-                       chg_virtue(V_UNLIFE, 1);
+                       chg_virtue(p_ptr, V_UNLIFE, 1);
                }
        }
        /* Mega-Hack -- apply earthquake brand */
@@ -2226,19 +2226,19 @@ bool py_attack(POSITION y, POSITION x, COMBAT_OPTION_IDX mode)
                if (stormbringer)
                {
                        msg_format(_("黒い刃は強欲に%sを攻撃した!", "Your black blade greedily attacks %s!"), m_name);
-                       chg_virtue(V_INDIVIDUALISM, 1);
-                       chg_virtue(V_HONOUR, -1);
-                       chg_virtue(V_JUSTICE, -1);
-                       chg_virtue(V_COMPASSION, -1);
+                       chg_virtue(p_ptr, V_INDIVIDUALISM, 1);
+                       chg_virtue(p_ptr, V_HONOUR, -1);
+                       chg_virtue(p_ptr, V_JUSTICE, -1);
+                       chg_virtue(p_ptr, V_COMPASSION, -1);
                }
                else if (p_ptr->pclass != CLASS_BERSERKER)
                {
                        if (get_check(_("本当に攻撃しますか?", "Really hit it? ")))
                        {
-                               chg_virtue(V_INDIVIDUALISM, 1);
-                               chg_virtue(V_HONOUR, -1);
-                               chg_virtue(V_JUSTICE, -1);
-                               chg_virtue(V_COMPASSION, -1);
+                               chg_virtue(p_ptr, V_INDIVIDUALISM, 1);
+                               chg_virtue(p_ptr, V_HONOUR, -1);
+                               chg_virtue(p_ptr, V_JUSTICE, -1);
+                               chg_virtue(p_ptr, V_COMPASSION, -1);
                        }
                        else
                        {
@@ -2265,8 +2265,8 @@ bool py_attack(POSITION y, POSITION x, COMBAT_OPTION_IDX mode)
 
        if (MON_CSLEEP(m_ptr)) /* It is not honorable etc to attack helpless victims */
        {
-               if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(V_COMPASSION, -1);
-               if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(V_HONOUR, -1);
+               if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(p_ptr, V_COMPASSION, -1);
+               if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(p_ptr, V_HONOUR, -1);
        }
 
        if (p_ptr->migite && p_ptr->hidarite)
@@ -2948,13 +2948,13 @@ bool make_attack_normal(MONSTER_IDX m_idx)
                                                {
                                                        msg_print(_("財布が軽くなった気がする。", "Your purse feels lighter."));
                                                        msg_format(_("$%ld のお金が盗まれた!", "%ld coins were stolen!"), (long)gold);
-                                                       chg_virtue(V_SACRIFICE, 1);
+                                                       chg_virtue(p_ptr, V_SACRIFICE, 1);
                                                }
                                                else
                                                {
                                                        msg_print(_("財布が軽くなった気がする。", "Your purse feels lighter."));
                                                        msg_print(_("お金が全部盗まれた!", "All of your coins were stolen!"));
-                                                       chg_virtue(V_SACRIFICE, 2);
+                                                       chg_virtue(p_ptr, V_SACRIFICE, 2);
                                                }
 
                                                /* Redraw gold */
@@ -3014,7 +3014,7 @@ bool make_attack_normal(MONSTER_IDX m_idx)
 #else
                                                msg_format("%sour %s (%c) was stolen!", ((o_ptr->number > 1) ? "One of y" : "Y"), o_name, index_to_label(i));
 #endif
-                                               chg_virtue(V_SACRIFICE, 1);
+                                               chg_virtue(p_ptr, V_SACRIFICE, 1);
                                                o_idx = o_pop();
 
                                                /* Success */
index 5cd76a6..b3206ff 100644 (file)
@@ -1040,8 +1040,8 @@ static bool cast_mindcrafter_spell(int spell)
        case 0:   /* Precog */
                if (plev > 44)
                {
-                       chg_virtue(V_KNOWLEDGE, 1);
-                       chg_virtue(V_ENLIGHTEN, 1);
+                       chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+                       chg_virtue(p_ptr, V_ENLIGHTEN, 1);
                        wiz_lite(FALSE);
                }
                else if (plev > 19)
index eeb1297..d00ac49 100644 (file)
@@ -2418,7 +2418,7 @@ void process_monster(MONSTER_IDX m_idx)
                        msg_format(_("%^sは戦いを決意した!", "%^s turns to fight!"), m_name);
                }
 
-               if (m_ptr->ml) chg_virtue(V_COMPASSION, -1);
+               if (m_ptr->ml) chg_virtue(p_ptr, V_COMPASSION, -1);
 
                /* Actually do something now (?) */
        }
index 8a5a878..dd4b402 100644 (file)
@@ -1164,77 +1164,77 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                {
                        if (!current_floor_ptr->dun_level && !p_ptr->ambush_flag && !p_ptr->inside_arena)
                        {
-                               chg_virtue(V_VALOUR, -1);
+                               chg_virtue(p_ptr, V_VALOUR, -1);
                        }
                        else if (r_ptr->level > current_floor_ptr->dun_level)
                        {
                                if (randint1(10) <= (r_ptr->level - current_floor_ptr->dun_level))
-                                       chg_virtue(V_VALOUR, 1);
+                                       chg_virtue(p_ptr, V_VALOUR, 1);
                        }
                        if (r_ptr->level > 60)
                        {
-                               chg_virtue(V_VALOUR, 1);
+                               chg_virtue(p_ptr, V_VALOUR, 1);
                        }
                        if (r_ptr->level >= 2 * (p_ptr->lev + 1))
-                               chg_virtue(V_VALOUR, 2);
+                               chg_virtue(p_ptr, V_VALOUR, 2);
                }
 
                if (r_ptr->flags1 & RF1_UNIQUE)
                {
-                       if (r_ptr->flags3 & (RF3_EVIL | RF3_GOOD)) chg_virtue(V_HARMONY, 2);
+                       if (r_ptr->flags3 & (RF3_EVIL | RF3_GOOD)) chg_virtue(p_ptr, V_HARMONY, 2);
 
                        if (r_ptr->flags3 & RF3_GOOD)
                        {
-                               chg_virtue(V_UNLIFE, 2);
-                               chg_virtue(V_VITALITY, -2);
+                               chg_virtue(p_ptr, V_UNLIFE, 2);
+                               chg_virtue(p_ptr, V_VITALITY, -2);
                        }
 
-                       if (one_in_(3)) chg_virtue(V_INDIVIDUALISM, -1);
+                       if (one_in_(3)) chg_virtue(p_ptr, V_INDIVIDUALISM, -1);
                }
 
                if (m_ptr->r_idx == MON_BEGGAR || m_ptr->r_idx == MON_LEPER)
                {
-                       chg_virtue(V_COMPASSION, -1);
+                       chg_virtue(p_ptr, V_COMPASSION, -1);
                }
 
                if ((r_ptr->flags3 & RF3_GOOD) && ((r_ptr->level) / 10 + (3 * current_floor_ptr->dun_level) >= randint1(100)))
-                       chg_virtue(V_UNLIFE, 1);
+                       chg_virtue(p_ptr, V_UNLIFE, 1);
 
                if (r_ptr->d_char == 'A')
                {
                        if (r_ptr->flags1 & RF1_UNIQUE)
-                               chg_virtue(V_FAITH, -2);
+                               chg_virtue(p_ptr, V_FAITH, -2);
                        else if ((r_ptr->level) / 10 + (3 * current_floor_ptr->dun_level) >= randint1(100))
                        {
-                               if (r_ptr->flags3 & RF3_GOOD) chg_virtue(V_FAITH, -1);
-                               else chg_virtue(V_FAITH, 1);
+                               if (r_ptr->flags3 & RF3_GOOD) chg_virtue(p_ptr, V_FAITH, -1);
+                               else chg_virtue(p_ptr, V_FAITH, 1);
                        }
                }
                else if (r_ptr->flags3 & RF3_DEMON)
                {
                        if (r_ptr->flags1 & RF1_UNIQUE)
-                               chg_virtue(V_FAITH, 2);
+                               chg_virtue(p_ptr, V_FAITH, 2);
                        else if ((r_ptr->level) / 10 + (3 * current_floor_ptr->dun_level) >= randint1(100))
-                               chg_virtue(V_FAITH, 1);
+                               chg_virtue(p_ptr, V_FAITH, 1);
                }
 
                if ((r_ptr->flags3 & RF3_UNDEAD) && (r_ptr->flags1 & RF1_UNIQUE))
-                       chg_virtue(V_VITALITY, 2);
+                       chg_virtue(p_ptr, V_VITALITY, 2);
 
                if (r_ptr->r_deaths)
                {
                        if (r_ptr->flags1 & RF1_UNIQUE)
                        {
-                               chg_virtue(V_HONOUR, 10);
+                               chg_virtue(p_ptr, V_HONOUR, 10);
                        }
                        else if ((r_ptr->level) / 10 + (2 * current_floor_ptr->dun_level) >= randint1(100))
                        {
-                               chg_virtue(V_HONOUR, 1);
+                               chg_virtue(p_ptr, V_HONOUR, 1);
                        }
                }
                if ((r_ptr->flags2 & RF2_MULTIPLY) && (r_ptr->r_akills > 1000) && one_in_(10))
                {
-                       chg_virtue(V_VALOUR, -1);
+                       chg_virtue(p_ptr, V_VALOUR, -1);
                }
 
                for (i = 0; i < 4; i++)
@@ -1253,18 +1253,18 @@ bool mon_take_hit(MONSTER_IDX m_idx, HIT_POINT dam, bool *fear, concptr note)
                if (thief)
                {
                        if (r_ptr->flags1 & RF1_UNIQUE)
-                               chg_virtue(V_JUSTICE, 3);
+                               chg_virtue(p_ptr, V_JUSTICE, 3);
                        else if (1 + ((r_ptr->level) / 10 + (2 * current_floor_ptr->dun_level)) >= randint1(100))
-                               chg_virtue(V_JUSTICE, 1);
+                               chg_virtue(p_ptr, V_JUSTICE, 1);
                }
                else if (innocent)
                {
-                       chg_virtue(V_JUSTICE, -1);
+                       chg_virtue(p_ptr, V_JUSTICE, -1);
                }
 
                if ((r_ptr->flags3 & RF3_ANIMAL) && !(r_ptr->flags3 & RF3_EVIL) && !(r_ptr->flags4 & ~(RF4_NOMAGIC_MASK)) && !(r_ptr->a_ability_flags1 & ~(RF5_NOMAGIC_MASK)) && !(r_ptr->a_ability_flags2 & ~(RF6_NOMAGIC_MASK)))
                {
-                       if (one_in_(4)) chg_virtue(V_NATURE, -1);
+                       if (one_in_(4)) chg_virtue(p_ptr, V_NATURE, -1);
                }
 
                if ((r_ptr->flags1 & RF1_UNIQUE) && record_destroy_uniq)
index 784f51c..27af5f7 100644 (file)
@@ -2258,10 +2258,10 @@ void anger_monster(monster_type *m_ptr)
 
                set_hostile(m_ptr);
 
-               chg_virtue(V_INDIVIDUALISM, 1);
-               chg_virtue(V_HONOUR, -1);
-               chg_virtue(V_JUSTICE, -1);
-               chg_virtue(V_COMPASSION, -1);
+               chg_virtue(p_ptr, V_INDIVIDUALISM, 1);
+               chg_virtue(p_ptr, V_HONOUR, -1);
+               chg_virtue(p_ptr, V_JUSTICE, -1);
+               chg_virtue(p_ptr, V_COMPASSION, -1);
        }
 }
 
index d073040..6d4c45d 100644 (file)
@@ -1749,7 +1749,7 @@ bool do_cmd_cast_learned(void)
                /* Hack -- Bypass free action */
                (void)set_paralyzed(p_ptr, p_ptr->paralyzed + randint1(5 * oops + 1));
 
-               chg_virtue(V_KNOWLEDGE, -10);
+               chg_virtue(p_ptr, V_KNOWLEDGE, -10);
 
                /* Damage CON (possibly permanently) */
                if (randint0(100) < 50)
index bdde951..87e8cd0 100644 (file)
@@ -658,7 +658,7 @@ bool gain_mutation(player_type *creature_ptr, MUTATION_IDX choose_mut)
        }
        else
        {
-               chg_virtue(V_CHANCE, 1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
 
                /*
                  some races are apt to gain specified mutations
@@ -1505,7 +1505,7 @@ void lose_all_mutations(player_type *creature_ptr)
 {
        if (creature_ptr->muta1 || creature_ptr->muta2 || creature_ptr->muta3)
        {
-               chg_virtue(V_CHANCE, -5);
+               chg_virtue(p_ptr, V_CHANCE, -5);
                msg_print(_("全ての突然変異が治った。", "You are cured of all mutations."));
                creature_ptr->muta1 = creature_ptr->muta2 = creature_ptr->muta3 = 0;
                creature_ptr->update |= PU_BONUS;
index ca5a789..49ae920 100644 (file)
@@ -710,8 +710,8 @@ int take_hit(int damage_type, HIT_POINT damage, concptr hit_from, int monspell)
 
        if (damage_type != DAMAGE_GENO && p_ptr->chp == 0)
        {
-               chg_virtue(V_SACRIFICE, 1);
-               chg_virtue(V_CHANCE, 2);
+               chg_virtue(p_ptr, V_SACRIFICE, 1);
+               chg_virtue(p_ptr, V_CHANCE, 2);
        }
 
        /* Dead player */
@@ -726,7 +726,7 @@ int take_hit(int damage_type, HIT_POINT damage, concptr hit_from, int monspell)
 
                sound(SOUND_DEATH);
 
-               chg_virtue(V_SACRIFICE, 10);
+               chg_virtue(p_ptr, V_SACRIFICE, 10);
 
                handle_stuff();
                p_ptr->leaving = TRUE;
index af05792..ec3843c 100644 (file)
@@ -443,7 +443,7 @@ bool set_blind(player_type *creature_ptr, TIME_EFFECT v)
                        }
 
                        notice = TRUE;
-                       chg_virtue(V_ENLIGHTEN, -1);
+                       chg_virtue(p_ptr, V_ENLIGHTEN, -1);
                }
        }
 
@@ -536,7 +536,7 @@ bool set_confused(player_type *creature_ptr, TIME_EFFECT v)
 
                        notice = TRUE;
                        creature_ptr->counter = FALSE;
-                       chg_virtue(V_HARMONY, -1);
+                       chg_virtue(p_ptr, V_HARMONY, -1);
                }
        }
 
@@ -641,7 +641,7 @@ bool set_afraid(player_type *creature_ptr, TIME_EFFECT v)
 
                        notice = TRUE;
                        creature_ptr->counter = FALSE;
-                       chg_virtue(V_VALOUR, -1);
+                       chg_virtue(p_ptr, V_VALOUR, -1);
                }
        }
 
@@ -799,8 +799,8 @@ bool set_fast(player_type *creature_ptr, TIME_EFFECT v, bool do_dec)
                {
                        msg_print(_("素早く動けるようになった!", "You feel yourself moving much faster!"));
                        notice = TRUE;
-                       chg_virtue(V_PATIENCE, -1);
-                       chg_virtue(V_DILIGENCE, 1);
+                       chg_virtue(p_ptr, V_PATIENCE, -1);
+                       chg_virtue(p_ptr, V_DILIGENCE, 1);
                }
        }
 
@@ -852,8 +852,8 @@ bool set_lightspeed(player_type *creature_ptr, TIME_EFFECT v, bool do_dec)
                {
                        msg_print(_("非常に素早く動けるようになった!", "You feel yourself moving extremely faster!"));
                        notice = TRUE;
-                       chg_virtue(V_PATIENCE, -1);
-                       chg_virtue(V_DILIGENCE, 1);
+                       chg_virtue(p_ptr, V_PATIENCE, -1);
+                       chg_virtue(p_ptr, V_DILIGENCE, 1);
                }
        }
 
@@ -1312,10 +1312,10 @@ bool set_wraith_form(player_type *creature_ptr, TIME_EFFECT v, bool do_dec)
                {
                        msg_print(_("物質界を離れて幽鬼のような存在になった!", "You leave the physical world and current_world_ptr->game_turn into a wraith-being!"));
                        notice = TRUE;
-                       chg_virtue(V_UNLIFE, 3);
-                       chg_virtue(V_HONOUR, -2);
-                       chg_virtue(V_SACRIFICE, -2);
-                       chg_virtue(V_VALOUR, -5);
+                       chg_virtue(p_ptr, V_UNLIFE, 3);
+                       chg_virtue(p_ptr, V_HONOUR, -2);
+                       chg_virtue(p_ptr, V_SACRIFICE, -2);
+                       chg_virtue(p_ptr, V_VALOUR, -5);
 
                        creature_ptr->redraw |= (PR_MAP);
                        creature_ptr->update |= (PU_MONSTERS);
@@ -1378,10 +1378,10 @@ bool set_invuln(player_type *creature_ptr, TIME_EFFECT v, bool do_dec)
                        msg_print(_("無敵だ!", "Invulnerability!"));
                        notice = TRUE;
 
-                       chg_virtue(V_UNLIFE, -2);
-                       chg_virtue(V_HONOUR, -2);
-                       chg_virtue(V_SACRIFICE, -3);
-                       chg_virtue(V_VALOUR, -5);
+                       chg_virtue(p_ptr, V_UNLIFE, -2);
+                       chg_virtue(p_ptr, V_HONOUR, -2);
+                       chg_virtue(p_ptr, V_SACRIFICE, -3);
+                       chg_virtue(p_ptr, V_VALOUR, -5);
 
                        creature_ptr->redraw |= (PR_MAP);
                        creature_ptr->update |= (PU_MONSTERS);
@@ -2254,7 +2254,7 @@ bool set_tsuyoshi(player_type *creature_ptr, TIME_EFFECT v, bool do_dec)
                {
                        msg_print(_("「オクレ兄さん!」", "Brother OKURE!"));
                        notice = TRUE;
-                       chg_virtue(V_VITALITY, 2);
+                       chg_virtue(p_ptr, V_VITALITY, 2);
                }
        }
 
@@ -2269,7 +2269,7 @@ bool set_tsuyoshi(player_type *creature_ptr, TIME_EFFECT v, bool do_dec)
                        (void)dec_stat(creature_ptr, A_STR, 20, TRUE);
 
                        notice = TRUE;
-                       chg_virtue(V_VITALITY, -3);
+                       chg_virtue(p_ptr, V_VITALITY, -3);
                }
        }
 
@@ -3118,13 +3118,13 @@ bool set_food(player_type *creature_ptr, TIME_EFFECT v)
        }
 
        if (old_aux < 1 && new_aux > 0)
-               chg_virtue(V_PATIENCE, 2);
+               chg_virtue(p_ptr, V_PATIENCE, 2);
        else if (old_aux < 3 && (old_aux != new_aux))
-               chg_virtue(V_PATIENCE, 1);
+               chg_virtue(p_ptr, V_PATIENCE, 1);
        if (old_aux == 2)
-               chg_virtue(V_TEMPERANCE, 1);
+               chg_virtue(p_ptr, V_TEMPERANCE, 1);
        if (old_aux == 0)
-               chg_virtue(V_TEMPERANCE, -1);
+               chg_virtue(p_ptr, V_TEMPERANCE, -1);
 
        /* Food increase */
        if (new_aux > old_aux)
@@ -3147,9 +3147,9 @@ bool set_food(player_type *creature_ptr, TIME_EFFECT v)
                        /* Bloated */
                        case 5:
                        msg_print(_("食べ過ぎだ!", "You have gorged yourself!"));
-                       chg_virtue(V_HARMONY, -1);
-                       chg_virtue(V_PATIENCE, -1);
-                       chg_virtue(V_TEMPERANCE, -2);
+                       chg_virtue(p_ptr, V_HARMONY, -1);
+                       chg_virtue(p_ptr, V_PATIENCE, -1);
+                       chg_virtue(p_ptr, V_TEMPERANCE, -2);
 
                        break;
                }
@@ -3341,9 +3341,9 @@ bool dec_stat(player_type *creature_ptr, int stat, int amount, int permanent)
        /* Damage "max" value */
        if (permanent && (max > 3))
        {
-               chg_virtue(V_SACRIFICE, 1);
+               chg_virtue(p_ptr, V_SACRIFICE, 1);
                if (stat == A_WIS || stat == A_INT)
-                       chg_virtue(V_ENLIGHTEN, -2);
+                       chg_virtue(p_ptr, V_ENLIGHTEN, -2);
 
                /* Handle "low" values */
                if (max <= 18)
@@ -3433,7 +3433,7 @@ bool hp_player(player_type *creature_ptr, int num)
        if (creature_ptr->chp < creature_ptr->mhp)
        {
                if ((num > 0) && (creature_ptr->chp < (creature_ptr->mhp/3)))
-                       chg_virtue(V_TEMPERANCE, 1);
+                       chg_virtue(p_ptr, V_TEMPERANCE, 1);
                /* Gain hitpoints */
                creature_ptr->chp += num;
 
@@ -3582,16 +3582,16 @@ bool do_inc_stat(player_type *creature_ptr, int stat)
        {
                if (stat == A_WIS)
                {
-                       chg_virtue(V_ENLIGHTEN, 1);
-                       chg_virtue(V_FAITH, 1);
+                       chg_virtue(p_ptr, V_ENLIGHTEN, 1);
+                       chg_virtue(p_ptr, V_FAITH, 1);
                }
                else if (stat == A_INT)
                {
-                       chg_virtue(V_KNOWLEDGE, 1);
-                       chg_virtue(V_ENLIGHTEN, 1);
+                       chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+                       chg_virtue(p_ptr, V_ENLIGHTEN, 1);
                }
                else if (stat == A_CON)
-                       chg_virtue(V_VITALITY, 1);
+                       chg_virtue(p_ptr, V_VITALITY, 1);
 
                msg_format(_("ワーオ!とても%sなった!", "Wow!  You feel very %s!"), desc_stat_pos[stat]);
 
@@ -3642,8 +3642,8 @@ bool lose_all_info(player_type *creature_ptr)
 {
        int i;
 
-       chg_virtue(V_KNOWLEDGE, -5);
-       chg_virtue(V_ENLIGHTEN, -5);
+       chg_virtue(p_ptr, V_KNOWLEDGE, -5);
+       chg_virtue(p_ptr, V_ENLIGHTEN, -5);
 
        /* Forget info about objects */
        for (i = 0; i < INVEN_TOTAL; i++)
@@ -3718,7 +3718,7 @@ void change_race(player_type *creature_ptr, CHARACTER_IDX new_race, concptr effe
        msg_format("You current_world_ptr->game_turn into %s %s%s!", (!effect_msg[0] && is_a_vowel(title[0]) ? "an" : "a"), effect_msg, title);
 #endif
 
-       chg_virtue(V_CHANCE, 2);
+       chg_virtue(p_ptr, V_CHANCE, 2);
 
        if (creature_ptr->prace < 32)
        {
@@ -3774,7 +3774,7 @@ void do_poly_self(player_type *creature_ptr)
        int power = creature_ptr->lev;
 
        msg_print(_("あなたは変化の訪れを感じた...", "You feel a change coming over you..."));
-       chg_virtue(V_CHANCE, 1);
+       chg_virtue(p_ptr, V_CHANCE, 1);
 
        if ((power > randint0(20)) && one_in_(3) && (creature_ptr->prace != RACE_ANDROID))
        {
index b58f0d2..5a78eca 100644 (file)
@@ -3807,7 +3807,7 @@ void calc_bonuses(void)
                                msg_print(_("今の装備はどうも自分にふさわしくない気がする。", "You do not feel comfortable with your weapon."));
                                if (current_world_ptr->is_loading_now)
                                {
-                                       chg_virtue(V_FAITH, -1);
+                                       chg_virtue(p_ptr, V_FAITH, -1);
                                }
                        }
                        else if (has_melee_weapon(INVEN_RARM + i))
@@ -3853,7 +3853,7 @@ void calc_bonuses(void)
                        msg_print(_("装備が重くてバランスを取れない。", "The weight of your armor disrupts your balance."));
                        if (current_world_ptr->is_loading_now)
                        {
-                               chg_virtue(V_HARMONY, -1);
+                               chg_virtue(p_ptr, V_HARMONY, -1);
                        }
                }
                else
index cd0b63b..f9b6928 100644 (file)
@@ -546,8 +546,8 @@ concptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               chg_virtue(V_KNOWLEDGE, 1);
-                               chg_virtue(V_ENLIGHTEN, 1);
+                               chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+                               chg_virtue(p_ptr, V_ENLIGHTEN, 1);
 
                                wiz_lite(FALSE);
 
index 84e265c..65bb562 100644 (file)
@@ -310,8 +310,8 @@ concptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                                if (hypodynamic_bolt(dir, dam))
                                {
-                                       chg_virtue(V_SACRIFICE, -1);
-                                       chg_virtue(V_VITALITY, -1);
+                                       chg_virtue(p_ptr, V_SACRIFICE, -1);
+                                       chg_virtue(p_ptr, V_VITALITY, -1);
 
                                        hp_player(p_ptr, dam);
 
@@ -463,8 +463,8 @@ concptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               chg_virtue(V_SACRIFICE, -1);
-                               chg_virtue(V_VITALITY, -1);
+                               chg_virtue(p_ptr, V_SACRIFICE, -1);
+                               chg_virtue(p_ptr, V_VITALITY, -1);
 
                                for (i = 0; i < 3; i++)
                                {
index d108a84..3137fbe 100644 (file)
@@ -522,8 +522,8 @@ concptr do_nature_spell(SPELL_IDX spell, BIT_FLAGS mode)
                        if (cast)
                        {
                                fire_ball(GF_LITE, 0, dam, rad);
-                               chg_virtue(V_KNOWLEDGE, 1);
-                               chg_virtue(V_ENLIGHTEN, 1);
+                               chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+                               chg_virtue(p_ptr, V_ENLIGHTEN, 1);
                                wiz_lite(FALSE);
 
                                if ((PRACE_IS_(p_ptr, RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) && !p_ptr->resist_lite)
index 23907ba..524e61b 100644 (file)
@@ -480,8 +480,8 @@ concptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               chg_virtue(V_KNOWLEDGE, 1);
-                               chg_virtue(V_ENLIGHTEN, 1);
+                               chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+                               chg_virtue(p_ptr, V_ENLIGHTEN, 1);
 
                                wiz_lite(FALSE);
 
index 3c51d5c..c49aa4c 100644 (file)
@@ -80,8 +80,8 @@ void self_knowledge(void)
        info[i++] = buf[0];
        info[i++] = "";
 
-       chg_virtue(V_KNOWLEDGE, 1);
-       chg_virtue(V_ENLIGHTEN, 1);
+       chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+       chg_virtue(p_ptr, V_ENLIGHTEN, 1);
 
        /* Acquire item flags from equipment */
        for (k = INVEN_RARM; k < INVEN_TOTAL; k++)
index 4a6f5cd..59b1764 100644 (file)
@@ -626,8 +626,8 @@ void exe_fire(INVENTORY_IDX item, object_type *j_ptr, SPELL_IDX snipe_type)
 
                                if (MON_CSLEEP(m_ptr))
                                {
-                                       if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(V_COMPASSION, -1);
-                                       if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(V_HONOUR, -1);
+                                       if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(p_ptr, V_COMPASSION, -1);
+                                       if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(p_ptr, V_HONOUR, -1);
                                }
 
                                if ((r_ptr->level + 10) > p_ptr->lev)
index dae3841..fe7ec73 100644 (file)
@@ -630,7 +630,7 @@ bool curse_armor(void)
        else
        {
                msg_format(_("恐怖の暗黒オーラがあなたの%sを包み込んだ!", "A terrible black aura blasts your %s!"), o_name);
-               chg_virtue(V_ENCHANT, -5);
+               chg_virtue(p_ptr, V_ENCHANT, -5);
 
                /* Blast the armor */
                o_ptr->name1 = 0;
@@ -690,7 +690,7 @@ bool curse_weapon_object(bool force, object_type *o_ptr)
        else
        {
                if (!force) msg_format(_("恐怖の暗黒オーラがあなたの%sを包み込んだ!", "A terrible black aura blasts your %s!"), o_name);
-               chg_virtue(V_ENCHANT, -5);
+               chg_virtue(p_ptr, V_ENCHANT, -5);
 
                /* Shatter the weapon */
                o_ptr->name1 = 0;
@@ -1125,7 +1125,7 @@ bool pulish_shield(void)
                enchant(o_ptr, randint0(3) + 4, ENCH_TOAC);
 
                o_ptr->discount = 99;
-               chg_virtue(V_ENCHANT, 2);
+               chg_virtue(p_ptr, V_ENCHANT, 2);
 
                return TRUE;
        }
@@ -1134,7 +1134,7 @@ bool pulish_shield(void)
                if (flush_failure) flush();
 
                msg_print(_("失敗した。", "Failed."));
-               chg_virtue(V_ENCHANT, -2);
+               chg_virtue(p_ptr, V_ENCHANT, -2);
        }
        calc_android_exp(p_ptr);
 
@@ -1320,10 +1320,10 @@ bool enchant_spell(HIT_PROB num_hit, HIT_POINT num_dam, ARMOUR_CLASS num_ac)
        {
                if (flush_failure) flush();
                msg_print(_("強化に失敗した。", "The enchantment failed."));
-               if (one_in_(3)) chg_virtue(V_ENCHANT, -1);
+               if (one_in_(3)) chg_virtue(p_ptr, V_ENCHANT, -1);
        }
        else
-               chg_virtue(V_ENCHANT, 1);
+               chg_virtue(p_ptr, V_ENCHANT, 1);
 
        calc_android_exp(p_ptr);
 
@@ -1464,14 +1464,14 @@ void brand_weapon(int brand_type)
                enchant(o_ptr, randint0(3) + 4, ENCH_TOHIT | ENCH_TODAM);
 
                o_ptr->discount = 99;
-               chg_virtue(V_ENCHANT, 2);
+               chg_virtue(p_ptr, V_ENCHANT, 2);
        }
        else
        {
                if (flush_failure) flush();
 
                msg_print(_("属性付加に失敗した。", "The Branding failed."));
-               chg_virtue(V_ENCHANT, -2);
+               chg_virtue(p_ptr, V_ENCHANT, -2);
        }
        calc_android_exp(p_ptr);
 }
index 56eea21..8b3e01f 100644 (file)
@@ -123,7 +123,7 @@ bool poly_monster(DIRECTION dir, int power)
        BIT_FLAGS flg = PROJECT_STOP | PROJECT_KILL | PROJECT_REFLECTABLE;
        bool tester = (project_hook(GF_OLD_POLY, dir, power, flg));
        if (tester)
-               chg_virtue(V_CHANCE, 1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
        return(tester);
 }
 
@@ -269,8 +269,8 @@ bool_hack life_stream(bool_hack message, bool_hack virtue_change)
 {
        if (virtue_change)
        {
-               chg_virtue(V_VITALITY, 1);
-               chg_virtue(V_UNLIFE, -5);
+               chg_virtue(p_ptr, V_VITALITY, 1);
+               chg_virtue(p_ptr, V_UNLIFE, -5);
        }
        if (message)
        {
index a59cbd0..cd3a73a 100644 (file)
@@ -2166,29 +2166,29 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
 
                                if (!who)
                                {
-                                       chg_virtue(V_VITALITY, 1);
+                                       chg_virtue(p_ptr, V_VITALITY, 1);
 
                                        if (r_ptr->flags1 & RF1_UNIQUE)
-                                               chg_virtue(V_INDIVIDUALISM, 1);
+                                               chg_virtue(p_ptr, V_INDIVIDUALISM, 1);
 
                                        if (is_friendly(m_ptr))
-                                               chg_virtue(V_HONOUR, 1);
+                                               chg_virtue(p_ptr, V_HONOUR, 1);
                                        else if (!(r_ptr->flags3 & RF3_EVIL))
                                        {
                                                if (r_ptr->flags3 & RF3_GOOD)
-                                                       chg_virtue(V_COMPASSION, 2);
+                                                       chg_virtue(p_ptr, V_COMPASSION, 2);
                                                else
-                                                       chg_virtue(V_COMPASSION, 1);
+                                                       chg_virtue(p_ptr, V_COMPASSION, 1);
                                        }
 
                                        if (r_ptr->flags3 & RF3_ANIMAL)
-                                               chg_virtue(V_NATURE, 1);
+                                               chg_virtue(p_ptr, V_NATURE, 1);
                                }
 
                                if (m_ptr->r_idx == MON_LEPER)
                                {
                                        heal_leper = TRUE;
-                                       if (!who) chg_virtue(V_COMPASSION, 5);
+                                       if (!who) chg_virtue(p_ptr, V_COMPASSION, 5);
                                }
 
                                /* Redraw (later) if needed */
@@ -2217,9 +2217,9 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
                                if (!who)
                                {
                                        if (r_ptr->flags1 & RF1_UNIQUE)
-                                               chg_virtue(V_INDIVIDUALISM, 1);
+                                               chg_virtue(p_ptr, V_INDIVIDUALISM, 1);
                                        if (is_friendly(m_ptr))
-                                               chg_virtue(V_HONOUR, 1);
+                                               chg_virtue(p_ptr, V_HONOUR, 1);
                                }
 
                                /* No "real" damage */
@@ -2376,9 +2376,9 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
                                        note = _("は突然友好的になったようだ!", " suddenly seems friendly!");
                                        set_pet(m_ptr);
 
-                                       chg_virtue(V_INDIVIDUALISM, -1);
+                                       chg_virtue(p_ptr, V_INDIVIDUALISM, -1);
                                        if (r_ptr->flags3 & RF3_ANIMAL)
-                                               chg_virtue(V_NATURE, 1);
+                                               chg_virtue(p_ptr, V_NATURE, 1);
                                }
 
                                /* No "real" damage */
@@ -2510,7 +2510,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
                                        note = _("はなついた。", " is tamed!");
                                        set_pet(m_ptr);
                                        if (r_ptr->flags3 & RF3_ANIMAL)
-                                               chg_virtue(V_NATURE, 1);
+                                               chg_virtue(p_ptr, V_NATURE, 1);
                                }
 
                                /* No "real" damage */
@@ -2560,7 +2560,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
                                        note = _("を支配した。", " is tamed!");
                                        set_pet(m_ptr);
                                        if (r_ptr->flags3 & RF3_ANIMAL)
-                                               chg_virtue(V_NATURE, 1);
+                                               chg_virtue(p_ptr, V_NATURE, 1);
                                }
 
                                /* No "real" damage */
@@ -3476,7 +3476,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
                                if (genocide_aux(g_ptr->m_idx, dam, !who, (r_ptr->level + 1) / 2, _("モンスター消滅", "Genocide One")))
                                {
                                        if (seen_msg) msg_format(_("%sは消滅した!", "%^s disappered!"), m_name);
-                                       chg_virtue(V_VITALITY, -1);
+                                       chg_virtue(p_ptr, V_VITALITY, -1);
                                        return TRUE;
                                }
 
@@ -3620,8 +3620,8 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
 
        if (!who && slept)
        {
-               if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(V_COMPASSION, -1);
-               if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(V_HONOUR, -1);
+               if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(p_ptr, V_COMPASSION, -1);
+               if (!(r_ptr->flags3 & RF3_EVIL) || one_in_(5)) chg_virtue(p_ptr, V_HONOUR, -1);
        }
 
        /* Modify the damage */
@@ -3739,7 +3739,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
 
                        note = _("が消え去った!", " disappears!");
 
-                       if (!who) chg_virtue(V_VALOUR, -1);
+                       if (!who) chg_virtue(p_ptr, V_VALOUR, -1);
 
                        /* Teleport */
                        teleport_away(g_ptr->m_idx, do_dist,
index 02c7669..3743297 100644 (file)
@@ -866,7 +866,7 @@ bool turn_undead(void)
 {
        bool tester = (project_all_los(GF_TURN_UNDEAD, p_ptr->lev));
        if (tester)
-               chg_virtue(V_UNLIFE, -1);
+               chg_virtue(p_ptr, V_UNLIFE, -1);
        return tester;
 }
 
@@ -878,7 +878,7 @@ bool dispel_undead(HIT_POINT dam)
 {
        bool tester = (project_all_los(GF_DISP_UNDEAD, dam));
        if (tester)
-               chg_virtue(V_UNLIFE, -2);
+               chg_virtue(p_ptr, V_UNLIFE, -2);
        return tester;
 }
 
@@ -1136,8 +1136,8 @@ bool symbol_genocide(int power, bool player_cast)
 
        if (result)
        {
-               chg_virtue(V_VITALITY, -2);
-               chg_virtue(V_CHANCE, -1);
+               chg_virtue(p_ptr, V_VITALITY, -2);
+               chg_virtue(p_ptr, V_CHANCE, -1);
        }
 
        return result;
@@ -1176,8 +1176,8 @@ bool mass_genocide(int power, bool player_cast)
 
        if (result)
        {
-               chg_virtue(V_VITALITY, -2);
-               chg_virtue(V_CHANCE, -1);
+               chg_virtue(p_ptr, V_VITALITY, -2);
+               chg_virtue(p_ptr, V_CHANCE, -1);
        }
 
        return result;
@@ -1219,8 +1219,8 @@ bool mass_genocide_undead(int power, bool player_cast)
 
        if (result)
        {
-               chg_virtue(V_UNLIFE, -2);
-               chg_virtue(V_CHANCE, -1);
+               chg_virtue(p_ptr, V_UNLIFE, -2);
+               chg_virtue(p_ptr, V_CHANCE, -1);
        }
 
        return result;
@@ -1355,7 +1355,7 @@ bool probing(void)
 
        if (probe)
        {
-               chg_virtue(V_KNOWLEDGE, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, 1);
                msg_print(_("これで全部です。", "That's all."));
        }
        return (probe);
@@ -3454,7 +3454,7 @@ void cast_wonder(DIRECTION dir)
        }
 
        if (die < 26)
-               chg_virtue(V_CHANCE, 1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
 
        if (die > 100)
        {
@@ -3537,7 +3537,7 @@ void cast_invoke_spirits(DIRECTION dir)
 
        msg_print(_("あなたは死者たちの力を招集した...", "You call on the power of the dead..."));
        if (die < 26)
-               chg_virtue(V_CHANCE, 1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
 
        if (die > 100)
        {
@@ -3550,7 +3550,7 @@ void cast_invoke_spirits(DIRECTION dir)
                        "Oh no! Mouldering forms rise from the earth around you!"));
 
                (void)summon_specific(0, p_ptr->y, p_ptr->x, current_floor_ptr->dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
-               chg_virtue(V_UNLIFE, 1);
+               chg_virtue(p_ptr, V_UNLIFE, 1);
        }
        else if (die < 14)
        {
@@ -3697,7 +3697,7 @@ void cast_shuffle(void)
        msg_print(_("あなたはカードを切って一枚引いた...", "You shuffle the deck and draw a card..."));
 
        if (die < 30)
-               chg_virtue(V_CHANCE, 1);
+               chg_virtue(p_ptr, V_CHANCE, 1);
 
        if (die < 7)
        {
@@ -3820,8 +3820,8 @@ void cast_shuffle(void)
        else if (die < 120)
        {
                msg_print(_("《太陽》だ。", "It's the Sun."));
-               chg_virtue(V_KNOWLEDGE, 1);
-               chg_virtue(V_ENLIGHTEN, 1);
+               chg_virtue(p_ptr, V_KNOWLEDGE, 1);
+               chg_virtue(p_ptr, V_ENLIGHTEN, 1);
                wiz_lite(FALSE);
        }
        else
index 052c11a..db3e187 100644 (file)
@@ -95,7 +95,7 @@ bool teleport_away(MONSTER_IDX m_idx, POSITION dis, BIT_FLAGS mode)
            (((p_ptr->chp * 10) / p_ptr->mhp) > 5) &&
                (4+randint1(5) < ((p_ptr->chp * 10) / p_ptr->mhp)))
        {
-               chg_virtue(V_VALOUR, -1);
+               chg_virtue(p_ptr, V_VALOUR, -1);
        }
 
        /* Look until done */
@@ -1013,8 +1013,8 @@ bool apply_disenchant(BIT_FLAGS mode)
                        ((o_ptr->number != 1) ? "were" : "was"));
 #endif
 
-               chg_virtue(V_HARMONY, 1);
-               chg_virtue(V_ENCHANT, -2);
+               chg_virtue(p_ptr, V_HARMONY, 1);
+               chg_virtue(p_ptr, V_ENCHANT, -2);
                p_ptr->update |= (PU_BONUS);
                p_ptr->window |= (PW_EQUIP | PW_PLAYER);
 
@@ -1660,7 +1660,7 @@ bool artifact_scroll(void)
        {
                if (flush_failure) flush();
                msg_print(_("強化に失敗した。", "The enchantment failed."));
-               if (one_in_(3)) chg_virtue(V_ENCHANT, -1);
+               if (one_in_(3)) chg_virtue(p_ptr, V_ENCHANT, -1);
        }
        else
        {
@@ -1669,7 +1669,7 @@ bool artifact_scroll(void)
                        object_desc(o_name, o_ptr, OD_NAME_ONLY);
                        do_cmd_write_nikki(NIKKI_ART_SCROLL, 0, o_name);
                }
-               chg_virtue(V_ENCHANT, 1);
+               chg_virtue(p_ptr, V_ENCHANT, 1);
        }
 
        calc_android_exp(p_ptr);
@@ -1698,7 +1698,7 @@ bool identify_item(object_type *o_ptr)
        if (!(o_ptr->ident & (IDENT_MENTAL)))
        {
                if (object_is_artifact(o_ptr) || one_in_(5))
-                       chg_virtue(V_KNOWLEDGE, 1);
+                       chg_virtue(p_ptr, V_KNOWLEDGE, 1);
        }
 
        object_aware(o_ptr);
@@ -3430,7 +3430,7 @@ bool shock_power(void)
 bool booze(player_type *creature_ptr)
 {
        bool ident = FALSE;
-       if (creature_ptr->pclass != CLASS_MONK) chg_virtue(V_HARMONY, -1);
+       if (creature_ptr->pclass != CLASS_MONK) chg_virtue(p_ptr, V_HARMONY, -1);
        else if (!creature_ptr->resist_conf) creature_ptr->special_attack |= ATTACK_SUIKEN;
        if (!creature_ptr->resist_conf)
        {
index 294ce10..dcd07a9 100644 (file)
@@ -1892,8 +1892,8 @@ static void purchase_analyze(PRICE price, PRICE value, PRICE guess)
        if ((value <= 0) && (price > value))
        {
                msg_print(comment_7a[randint0(MAX_COMMENT_7A)]);
-               chg_virtue(V_HONOUR, -1);
-               chg_virtue(V_JUSTICE, -1);
+               chg_virtue(p_ptr, V_HONOUR, -1);
+               chg_virtue(p_ptr, V_JUSTICE, -1);
                sound(SOUND_STORE1);
        }
 
@@ -1901,8 +1901,8 @@ static void purchase_analyze(PRICE price, PRICE value, PRICE guess)
        else if ((value < guess) && (price > value))
        {
                msg_print(comment_7b[randint0(MAX_COMMENT_7B)]);
-               chg_virtue(V_JUSTICE, -1);
-               if (one_in_(4)) chg_virtue(V_HONOUR, -1);
+               chg_virtue(p_ptr, V_JUSTICE, -1);
+               if (one_in_(4)) chg_virtue(p_ptr, V_HONOUR, -1);
                sound(SOUND_STORE2);
        }
 
@@ -1910,8 +1910,8 @@ static void purchase_analyze(PRICE price, PRICE value, PRICE guess)
        else if ((value > guess) && (value < (4 * guess)) && (price < value))
        {
                msg_print(comment_7c[randint0(MAX_COMMENT_7C)]);
-               if (one_in_(4)) chg_virtue(V_HONOUR, -1);
-               else if (one_in_(4)) chg_virtue(V_HONOUR, 1);
+               if (one_in_(4)) chg_virtue(p_ptr, V_HONOUR, -1);
+               else if (one_in_(4)) chg_virtue(p_ptr, V_HONOUR, 1);
                sound(SOUND_STORE3);
        }
 
@@ -1919,9 +1919,9 @@ static void purchase_analyze(PRICE price, PRICE value, PRICE guess)
        else if ((value > guess) && (price < value))
        {
                msg_print(comment_7d[randint0(MAX_COMMENT_7D)]);
-               if (one_in_(2)) chg_virtue(V_HONOUR, -1);
-               if (one_in_(4)) chg_virtue(V_HONOUR, 1);
-               if (10 * price < value) chg_virtue(V_SACRIFICE, 1);
+               if (one_in_(2)) chg_virtue(p_ptr, V_HONOUR, -1);
+               if (one_in_(4)) chg_virtue(p_ptr, V_HONOUR, 1);
+               if (10 * price < value) chg_virtue(p_ptr, V_SACRIFICE, 1);
                sound(SOUND_STORE4);
        }
 }
@@ -3109,7 +3109,7 @@ static int home_carry(object_type *o_ptr)
        /* Insert the new item */
        st_ptr->stock[slot] = *o_ptr;
 
-       chg_virtue(V_SACRIFICE, -1);
+       chg_virtue(p_ptr, V_SACRIFICE, -1);
 
        (void)combine_and_reorder_home(cur_store_num);
 
@@ -4708,9 +4708,9 @@ static void store_purchase(void)
                                say_comment_1();
 
                                if (cur_store_num == STORE_BLACK) /* The black market is illegal! */
-                                       chg_virtue(V_JUSTICE, -1);
+                                       chg_virtue(p_ptr, V_JUSTICE, -1);
                                if((o_ptr->tval == TV_BOTTLE) && (cur_store_num != STORE_HOME))
-                                       chg_virtue(V_NATURE, -1);
+                                       chg_virtue(p_ptr, V_NATURE, -1);
 
                                /* Make a sound */
                                sound(SOUND_BUY);
@@ -4882,7 +4882,7 @@ static void store_purchase(void)
                        else if (store_top >= st_ptr->stock_num) store_top -= store_bottom;
                        display_inventory();
 
-                       chg_virtue(V_SACRIFICE, 1);
+                       chg_virtue(p_ptr, V_SACRIFICE, 1);
                }
        }
 
@@ -5027,10 +5027,10 @@ static void store_sell(void)
 
                        /* Be happy */
                        if (cur_store_num == STORE_BLACK) /* The black market is illegal! */
-                               chg_virtue(V_JUSTICE, -1);
+                               chg_virtue(p_ptr, V_JUSTICE, -1);
 
                        if((o_ptr->tval == TV_BOTTLE) && (cur_store_num != STORE_HOME))
-                               chg_virtue(V_NATURE, 1);
+                               chg_virtue(p_ptr, V_NATURE, 1);
                        decrease_insults();
 
                        /* Get some money */