OSDN Git Service

[Fix] #37359 アーティファクト生成時、殺戮修正以外は極端にベースより性能が落ちないように修正。 / Fix extreme deterioration...
authorDeskull <deskull@users.sourceforge.jp>
Mon, 7 Jan 2019 14:21:00 +0000 (23:21 +0900)
committerDeskull <deskull@users.sourceforge.jp>
Mon, 7 Jan 2019 14:21:00 +0000 (23:21 +0900)
src/artifact.c
src/spells3.c

index ce3c880..5239a5f 100644 (file)
@@ -2380,44 +2380,35 @@ static bool suppression_evil_dam(object_type *o_ptr)
 
 static bool weakening_artifact(object_type *o_ptr)
 {
-       KIND_OBJECT_IDX k_idx = lookup_kind(o_ptr->sval, o_ptr->tval);
+       KIND_OBJECT_IDX k_idx = lookup_kind(o_ptr->tval, o_ptr->sval);
        object_kind *k_ptr = &k_info[k_idx];
+       BIT_FLAGS flgs[TR_FLAG_SIZE];
+       object_flags(o_ptr, flgs);
 
-       if ((k_ptr->dd < o_ptr->dd) || (k_ptr->ds < o_ptr->ds))
+       if (have_flag(flgs, TR_KILL_EVIL))
        {
-               DICE_NUMBER pre_dd = o_ptr->dd;
-               DICE_SID pre_ds = o_ptr->ds;
-
-               if (o_ptr->dd > o_ptr->ds)
-               {
-                       o_ptr->dd--;
-               }
-               else
-               {
-                       o_ptr->ds--;
-               }
-
-               msg_format_wizard(CHEAT_OBJECT,
-                       _("ダイスが抑制されました。%dd%d -> %dd%d", "Dice Supress %dd%d -> %dd%d"),
-                       pre_dd, pre_ds, o_ptr->dd, o_ptr->ds);
-               return 1;
+               remove_flag(o_ptr->art_flags, TR_KILL_EVIL);
+               add_flag(o_ptr->art_flags, TR_SLAY_EVIL);
+               return TRUE;
        }
-
-       if (o_ptr->to_d > 10)
+       else if (k_ptr->dd < o_ptr->dd)
+       {
+               o_ptr->dd--;
+               return TRUE;
+       }
+       else if (k_ptr->ds < o_ptr->ds)
+       {
+               o_ptr->ds--;
+               return TRUE;
+       }
+       else if (o_ptr->to_d > 10)
        {
-               HIT_POINT pre_damage = o_ptr->to_d;
-
                o_ptr->to_d = o_ptr->to_d - damroll(1, 6);
                if (o_ptr->to_d < 10)
                {
                        o_ptr->to_d = 10;
                }
-
-               msg_format_wizard(CHEAT_OBJECT,
-                       _("ダメージ修正が抑制されました。 %d -> %d", "Plus-Damage Supress %d -> %d"),
-                       pre_damage, o_ptr->to_d);
-
-               return 1;
+               return TRUE;
        }
-       return 0;
+       return FALSE;
 }
\ No newline at end of file
index 6fa6c13..e074f74 100644 (file)
@@ -2221,10 +2221,10 @@ bool enchant_spell(HIT_PROB num_hit, HIT_POINT num_dam, ARMOUR_CLASS num_ac)
 bool artifact_scroll(void)
 {
        OBJECT_IDX item;
-       bool            okay = FALSE;
-       object_type     *o_ptr;
+       bool okay = FALSE;
+       object_type *o_ptr;
        GAME_TEXT o_name[MAX_NLEN];
-       cptr            q, s;
+       cptr q, s;
 
        /* Enchant weapon/armour */
        item_tester_hook = item_tester_hook_nameless_weapon_armour;
@@ -2291,21 +2291,20 @@ bool artifact_scroll(void)
        {
                if (o_ptr->number > 1)
                {
+                       msg_print(_("複数のアイテムに魔法をかけるだけのエネルギーはありません!", "Not enough enough energy to enchant more than one object!"));
 #ifdef JP
-                       msg_print("複数のアイテムに魔法をかけるだけのエネルギーはありません!");
                        msg_format("%d 個の%sが壊れた!",(o_ptr->number)-1, o_name);
 #else
-                       msg_print("Not enough enough energy to enchant more than one object!");
                        msg_format("%d of your %s %s destroyed!",(o_ptr->number)-1, o_name, (o_ptr->number>2?"were":"was"));
 #endif
 
                        if (item >= 0)
                        {
-                               inven_item_increase(item, 1-(o_ptr->number));
+                               inven_item_increase(item, 1 - (o_ptr->number));
                        }
                        else
                        {
-                               floor_item_increase(0-item, 1-(o_ptr->number));
+                               floor_item_increase(0 - item, 1 - (o_ptr->number));
                        }
                }
                okay = create_artifact(o_ptr, TRUE);