OSDN Git Service

バージョン番号あちこち変更
authorhoge <hoge@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 26 Jan 2002 10:28:55 +0000 (10:28 +0000)
committerhoge <hoge@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 26 Jan 2002 10:28:55 +0000 (10:28 +0000)
☆のxtra4使わず
クロスボウは飛距離短くて使いやすい
アーチャーはクロスボウ最大3回
@nothereさんのパッチ各種

16 files changed:
configure.in
lib/file/news.txt
lib/file/news_j.txt
lib/xtra/graf/Makefile.am
src/artifact.c
src/birth.c
src/cave.c
src/cmd1.c
src/cmd2.c
src/cmd6.c
src/dungeon.c
src/files.c
src/load.c
src/spells2.c
src/xtra1.c
src/xtra2.c

index 19127f9..834a80c 100644 (file)
@@ -8,7 +8,7 @@ AC_LANG_C
 dnl Checks for programs.
 AC_PROG_CC
 
-AM_INIT_AUTOMAKE(hengband, 1.0.8)
+AM_INIT_AUTOMAKE(hengband, 1.0.9)
 
 AC_ARG_ENABLE(japanese,
 [  --disable-japanese      build english version], use_japanese=no, [AC_DEFINE(JP) AC_DEFINE(EUC)])
index bd5644f..aaf8f7d 100644 (file)
@@ -1,6 +1,6 @@
 
                   ***************************************
-                  **   Hengband 1.0.8 English version  **
+                  **   Hengband 1.0.9 English version  **
                   ***************************************
 
           Based on Moria:    Copyright (c) 1985 Robert Alan Koeneke
index e6eaf63..2c6be9c 100644 (file)
@@ -1,6 +1,6 @@
 
                   ***************************************
-                  **          ÊѶòÈÚÅÜ  1.0.8          **
+                  **          ÊѶòÈÚÅÜ  1.0.9          **
                   ***************************************
 
           Based on Moria:    Copyright (c) 1985 Robert Alan Koeneke
index 44812f7..44ea3bc 100644 (file)
@@ -1,4 +1,4 @@
 ## Makefile.am -- Process this file with automake to process Makefile.in
 
 EXTRA_DIST = \
-       delete.me
+       8x8.bmp
index b93870b..96ec2ad 100644 (file)
@@ -1346,102 +1346,6 @@ static void give_activation_power(object_type *o_ptr)
                }
        }
 
-       switch (type)
-       {
-               case ACT_SUNLIGHT:
-               case ACT_BO_MISS_1:
-               case ACT_BA_POIS_1:
-               case ACT_CONFUSE:
-               case ACT_SLEEP:
-               case ACT_CURE_LW:
-               case ACT_CURE_POISON:
-               case ACT_BERSERK:
-               case ACT_LIGHT:
-               case ACT_DEST_DOOR:
-               case ACT_TELEPORT:
-                       o_ptr->xtra4 = 10;
-                       break;
-               case ACT_BO_ELEC_1:
-               case ACT_BO_ACID_1:
-               case ACT_BO_COLD_1:
-               case ACT_BO_FIRE_1:
-               case ACT_MAP_LIGHT:
-               case ACT_STONE_MUD:
-               case ACT_CURE_MW:
-               case ACT_QUAKE:
-                       o_ptr->xtra4 = 20;
-                       break;
-               case ACT_DRAIN_1:
-               case ACT_TELE_AWAY:
-               case ACT_ESP:
-               case ACT_RESIST_ALL:
-               case ACT_DETECT_ALL:
-               case ACT_RECALL:
-               case ACT_SATIATE:
-               case ACT_RECHARGE:
-                       o_ptr->xtra4 = 30;
-                       break;
-               case ACT_BA_COLD_1:
-               case ACT_BA_FIRE_1:
-               case ACT_TERROR:
-               case ACT_PROT_EVIL:
-               case ACT_ID_PLAIN:
-               case ACT_REST_LIFE:
-               case ACT_SPEED:
-               case ACT_BANISH_EVIL:
-                       o_ptr->xtra4 = 40;
-                       break;
-               case ACT_DRAIN_2:
-               case ACT_VAMPIRE_1:
-               case ACT_BO_MISS_2:
-               case ACT_BA_FIRE_2:
-               case ACT_WHIRLWIND:
-               case ACT_CHARM_ANIMAL:
-               case ACT_SUMMON_ANIMAL:
-               case ACT_DISP_EVIL:
-               case ACT_DISP_GOOD:
-               case ACT_XTRA_SPEED:
-               case ACT_DETECT_XTRA:
-               case ACT_ID_FULL:
-                       o_ptr->xtra4 = 50;
-                       break;
-               case ACT_VAMPIRE_2:
-               case ACT_BA_COLD_3:
-               case ACT_BA_ELEC_3:
-               case ACT_GENOCIDE:
-               case ACT_CHARM_UNDEAD:
-               case ACT_CHARM_OTHER:
-               case ACT_SUMMON_PHANTOM:
-               case ACT_SUMMON_ELEMENTAL:
-               case ACT_RUNE_EXPLO:
-                       o_ptr->xtra4 = 60;
-                       break;
-               case ACT_MASS_GENO:
-               case ACT_CHARM_ANIMALS:
-               case ACT_CHARM_OTHERS:
-               case ACT_CURE_700:
-               case ACT_RUNE_PROT:
-               case ACT_ALCHEMY:
-               case ACT_REST_ALL:
-                       o_ptr->xtra4 = 70;
-                       break;
-               case ACT_CALL_CHAOS:
-               case ACT_ROCKET:
-               case ACT_BA_MISS_3:
-               case ACT_CURE_1000:
-               case ACT_DIM_DOOR:
-               case ACT_SUMMON_UNDEAD:
-               case ACT_SUMMON_DEMON:
-                       o_ptr->xtra4 = 80;
-                       break;
-               case ACT_WRAITH:
-               case ACT_INVULN:
-                       o_ptr->xtra4 = 100;
-                       break;
-               default:
-                       o_ptr->xtra4 = 0;
-       }
-
        /* A type was chosen... */
        o_ptr->xtra2 = type;
        o_ptr->art_flags3 |= TR3_ACTIVATE;
index 22f2d9b..c1c057f 100644 (file)
@@ -3555,7 +3555,7 @@ void player_outfit(void)
        /* Get local object */
        q_ptr = &forge;
 
-       if (p_ptr->prace == RACE_VAMPIRE)
+       if ((p_ptr->prace == RACE_VAMPIRE) && (p_ptr->pclass != CLASS_NINJA))
        {
                /* Hack -- Give the player scrolls of DARKNESS! */
                object_prep(q_ptr, lookup_kind(TV_SCROLL, SV_SCROLL_DARKNESS));
index e090930..67f74d2 100644 (file)
@@ -1386,8 +1386,8 @@ void map_info(int y, int x, byte *ap, char *cp)
                                        else
                                        {
                                                (*cp) = (randint(25) == 1 ?
-                                                       image_object_hack[randint(strlen(image_object_hack))] :
-                                                       image_monster_hack[randint(strlen(image_monster_hack))]);
+                                                       image_object_hack[rand_int(strlen(image_object_hack))] :
+                                                       image_monster_hack[rand_int(strlen(image_monster_hack))]);
                                        }
                                }
                                else
index aa06422..38f0c76 100644 (file)
@@ -741,6 +741,7 @@ void py_pickup_aux(int o_idx)
                    (quest[i].status == QUEST_STATUS_TAKEN) &&
                           (quest[i].k_idx == o_ptr->name1))
                {
+                       if (record_fix_quest) do_cmd_write_nikki(NIKKI_FIX_QUEST_C, i, NULL);
                        quest[i].status = QUEST_STATUS_COMPLETED;
                        quest[i].complev = (byte)p_ptr->lev;
 #ifdef JP
index c5545d1..146e94e 100644 (file)
@@ -3613,7 +3613,10 @@ void do_cmd_fire_aux(int item, object_type *j_ptr)
 
        /* Actually "fire" the object */
        bonus = (p_ptr->to_h_b + o_ptr->to_h + j_ptr->to_h);
-       chance = (p_ptr->skill_thb + ((weapon_exp[0][j_ptr->sval]-4000)/200 + bonus) * BTH_PLUS_ADJ);
+       if ((j_ptr->sval == SV_LIGHT_XBOW) || (j_ptr->sval == SV_HEAVY_XBOW))
+               chance = (p_ptr->skill_thb + ((weapon_exp[0][j_ptr->sval])/400 + bonus) * BTH_PLUS_ADJ);
+       else
+               chance = (p_ptr->skill_thb + ((weapon_exp[0][j_ptr->sval]-4000)/200 + bonus) * BTH_PLUS_ADJ);
 
        energy_use = bow_energy(j_ptr->sval);
        tmul = bow_tmul(j_ptr->sval);
@@ -3630,7 +3633,7 @@ void do_cmd_fire_aux(int item, object_type *j_ptr)
        /* Base range */
        tdis = 10 + tmul/40;
        if ((j_ptr->sval == SV_LIGHT_XBOW) || (j_ptr->sval == SV_HEAVY_XBOW))
-               tdis += 5;
+               tdis -= 5;
 
        project_length = tdis + 1;
 
index 6d1fb36..0ad9acc 100644 (file)
@@ -3876,7 +3876,104 @@ static void do_cmd_activate_aux(int item)
 
        /* Hack -- use artifact level instead */
        if (artifact_p(o_ptr)) lev = a_info[o_ptr->name1].level;
-       else if (o_ptr->art_name) lev = o_ptr->xtra4;
+       else if (o_ptr->art_name)
+       {
+               switch (o_ptr->xtra2)
+               {
+                       case ACT_SUNLIGHT:
+                       case ACT_BO_MISS_1:
+                       case ACT_BA_POIS_1:
+                       case ACT_CONFUSE:
+                       case ACT_SLEEP:
+                       case ACT_CURE_LW:
+                       case ACT_CURE_POISON:
+                       case ACT_BERSERK:
+                       case ACT_LIGHT:
+                       case ACT_DEST_DOOR:
+                       case ACT_TELEPORT:
+                               lev = 10;
+                               break;
+                       case ACT_BO_ELEC_1:
+                       case ACT_BO_ACID_1:
+                       case ACT_BO_COLD_1:
+                       case ACT_BO_FIRE_1:
+                       case ACT_MAP_LIGHT:
+                       case ACT_STONE_MUD:
+                       case ACT_CURE_MW:
+                       case ACT_QUAKE:
+                               lev = 20;
+                               break;
+                       case ACT_DRAIN_1:
+                       case ACT_TELE_AWAY:
+                       case ACT_ESP:
+                       case ACT_RESIST_ALL:
+                       case ACT_DETECT_ALL:
+                       case ACT_RECALL:
+                       case ACT_SATIATE:
+                       case ACT_RECHARGE:
+                               lev = 30;
+                               break;
+                       case ACT_BA_COLD_1:
+                       case ACT_BA_FIRE_1:
+                       case ACT_TERROR:
+                       case ACT_PROT_EVIL:
+                       case ACT_ID_PLAIN:
+                       case ACT_REST_LIFE:
+                       case ACT_SPEED:
+                       case ACT_BANISH_EVIL:
+                               lev = 40;
+                               break;
+                       case ACT_DRAIN_2:
+                       case ACT_VAMPIRE_1:
+                       case ACT_BO_MISS_2:
+                       case ACT_BA_FIRE_2:
+                       case ACT_WHIRLWIND:
+                       case ACT_CHARM_ANIMAL:
+                       case ACT_SUMMON_ANIMAL:
+                       case ACT_DISP_EVIL:
+                       case ACT_DISP_GOOD:
+                       case ACT_XTRA_SPEED:
+                       case ACT_DETECT_XTRA:
+                       case ACT_ID_FULL:
+                               lev = 50;
+                               break;
+                       case ACT_VAMPIRE_2:
+                       case ACT_BA_COLD_3:
+                       case ACT_BA_ELEC_3:
+                       case ACT_GENOCIDE:
+                       case ACT_CHARM_UNDEAD:
+                       case ACT_CHARM_OTHER:
+                       case ACT_SUMMON_PHANTOM:
+                       case ACT_SUMMON_ELEMENTAL:
+                       case ACT_RUNE_EXPLO:
+                               lev = 60;
+                               break;
+                       case ACT_MASS_GENO:
+                       case ACT_CHARM_ANIMALS:
+                       case ACT_CHARM_OTHERS:
+                       case ACT_CURE_700:
+                       case ACT_RUNE_PROT:
+                       case ACT_ALCHEMY:
+                       case ACT_REST_ALL:
+                               lev = 70;
+                               break;
+                       case ACT_CALL_CHAOS:
+                       case ACT_ROCKET:
+                       case ACT_BA_MISS_3:
+                       case ACT_CURE_1000:
+                       case ACT_DIM_DOOR:
+                       case ACT_SUMMON_UNDEAD:
+                       case ACT_SUMMON_DEMON:
+                               lev = 80;
+                               break;
+                       case ACT_WRAITH:
+                       case ACT_INVULN:
+                               lev = 100;
+                               break;
+                       default:
+                               lev = 0;
+               }
+       }
        else if (((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET)) && o_ptr->name2) lev = e_info[o_ptr->name2].level;
 
        /* Base chance of success */
@@ -4953,7 +5050,7 @@ msg_print("
                                }
 
                                for (i = 0; i < num; i++)
-                                       project(0, p_ptr->lev/20+1, ty, tx, p_ptr->lev*6, GF_ROCKET, flg, -1);
+                                       project(0, p_ptr->lev/20+1, ty, tx, p_ptr->lev*p_ptr->lev*6/50, GF_ROCKET, flg, -1);
                                o_ptr->timeout = 15;
                                break;
                        }
index 07862b7..ab51f14 100644 (file)
@@ -4146,105 +4146,105 @@ msg_print("
                        /* -KMW- */
                        if (!p_ptr->wild_mode)
                        {
-                       if (dun_level && (d_info[dungeon_type].flags1 & DF1_NO_MAGIC) && (p_ptr->pclass != CLASS_BERSERKER) && (p_ptr->pclass != CLASS_SMITH))
-                       {
+                               if ((p_ptr->pclass == CLASS_WARRIOR) || (p_ptr->pclass == CLASS_ARCHER) || (p_ptr->pclass == CLASS_CAVALRY))
+                               {
 #ifdef JP
-msg_print("¥À¥ó¥¸¥ç¥ó¤¬ËâË¡¤òµÛ¼ý¤·¤¿¡ª");
+                                       msg_print("¼öʸ¤ò¾§¤¨¤é¤ì¤Ê¤¤¡ª");
 #else
-                               msg_print("The arena absorbs all attempted magic!");
+                                       msg_print("You cannot cast spells!");
 #endif
-
-                               msg_print(NULL);
-                       }
-                       else if (p_ptr->anti_magic && (p_ptr->pclass != CLASS_BERSERKER) && (p_ptr->pclass != CLASS_SMITH))
-                       {
+                               }
+                               else if (dun_level && (d_info[dungeon_type].flags1 & DF1_NO_MAGIC) && (p_ptr->pclass != CLASS_BERSERKER) && (p_ptr->pclass != CLASS_SMITH))
+                               {
 #ifdef JP
-cptr which_power = "ËâË¡";
+                                       msg_print("¥À¥ó¥¸¥ç¥ó¤¬ËâË¡¤òµÛ¼ý¤·¤¿¡ª");
 #else
-                               cptr which_power = "magic";
+                                       msg_print("The arena absorbs all attempted magic!");
 #endif
+                                       msg_print(NULL);
+                               }
+                               else if (p_ptr->anti_magic && (p_ptr->pclass != CLASS_BERSERKER) && (p_ptr->pclass != CLASS_SMITH))
+                               {
+#ifdef JP
 
-                               if (p_ptr->pclass == CLASS_MINDCRAFTER)
+                                       cptr which_power = "ËâË¡";
+#else
+                                       cptr which_power = "magic";
+#endif
+                                       if (p_ptr->pclass == CLASS_MINDCRAFTER)
 #ifdef JP
-which_power = "ĶǽÎÏ";
+                                               which_power = "ĶǽÎÏ";
 #else
-                                       which_power = "psionic powers";
+                                               which_power = "psionic powers";
 #endif
-
-                               else if (p_ptr->pclass == CLASS_IMITATOR)
+                                       else if (p_ptr->pclass == CLASS_IMITATOR)
 #ifdef JP
-which_power = "¤â¤Î¤Þ¤Í";
+                                               which_power = "¤â¤Î¤Þ¤Í";
 #else
-                                       which_power = "mane";
+                                               which_power = "imitation";
 #endif
-
-                               else if (p_ptr->pclass == CLASS_SAMURAI)
+                                       else if (p_ptr->pclass == CLASS_SAMURAI)
 #ifdef JP
-which_power = "ɬ»¦·õ";
+                                               which_power = "ɬ»¦·õ";
 #else
-                                       which_power = "hissatsu";
+                                               which_power = "hissatsu";
 #endif
-                               else if (p_ptr->pclass == CLASS_MIRROR_MASTER)
+                                       else if (p_ptr->pclass == CLASS_MIRROR_MASTER)
 #ifdef JP
-which_power = "¶ÀËâË¡";
+                                               which_power = "¶ÀËâË¡";
 #else
-                                       which_power = "mirror magic";
+                                               which_power = "mirror magic";
 #endif
-
-                               else if (p_ptr->pclass == CLASS_NINJA)
+                                       else if (p_ptr->pclass == CLASS_NINJA)
 #ifdef JP
-which_power = "Ǧ½Ñ";
+                                               which_power = "Ǧ½Ñ";
 #else
-                                       which_power = "ninjutsu";
+                                               which_power = "ninjutsu";
 #endif
-
-                               else if (mp_ptr->spell_book == TV_LIFE_BOOK)
+                                       else if (mp_ptr->spell_book == TV_LIFE_BOOK)
 #ifdef JP
-which_power = "µ§¤ê";
+                                               which_power = "µ§¤ê";
 #else
-                                       which_power = "prayer";
+                                               which_power = "prayer";
 #endif
 
-
 #ifdef JP
-msg_format("È¿ËâË¡¥Ð¥ê¥¢¤¬%s¤ò¼ÙË⤷¤¿¡ª", which_power);
+                                       msg_format("È¿ËâË¡¥Ð¥ê¥¢¤¬%s¤ò¼ÙË⤷¤¿¡ª", which_power);
 #else
-                               msg_format("An anti-magic shell disrupts your %s!", which_power);
+                                       msg_format("An anti-magic shell disrupts your %s!", which_power);
 #endif
-
-
-                               energy_use = 0;
-                       }
-                       else if (p_ptr->shero && (p_ptr->pclass != CLASS_BERSERKER))
-                       {
+                                       energy_use = 0;
+                               }
+                               else if (p_ptr->shero && (p_ptr->pclass != CLASS_BERSERKER))
+                               {
 #ifdef JP
-msg_format("¶¸Àï»Î²½¤·¤Æ¤¤¤ÆƬ¤¬²ó¤é¤Ê¤¤¡ª");
+                                       msg_format("¶¸Àï»Î²½¤·¤Æ¤¤¤ÆƬ¤¬²ó¤é¤Ê¤¤¡ª");
 #else
-                               msg_format("You cannot think directly!");
+                                       msg_format("You cannot think directly!");
 #endif
-                               energy_use = 0;
-                       }
-                       else
-                       {
-                               if ((p_ptr->pclass == CLASS_MINDCRAFTER) ||
-                                   (p_ptr->pclass == CLASS_BERSERKER) ||
-                                   (p_ptr->pclass == CLASS_NINJA) ||
-                                   (p_ptr->pclass == CLASS_MIRROR_MASTER) 
-                                   )
-                                       do_cmd_mind();
-                               else if (p_ptr->pclass == CLASS_IMITATOR)
-                                       do_cmd_mane(FALSE);
-                               else if (p_ptr->pclass == CLASS_MAGIC_EATER)
-                                       do_cmd_magic_eater();
-                               else if (p_ptr->pclass == CLASS_SAMURAI)
-                                       do_cmd_hissatsu();
-                               else if (p_ptr->pclass == CLASS_BLUE_MAGE)
-                                       do_cmd_cast_learned();
-                               else if (p_ptr->pclass == CLASS_SMITH)
-                                       do_cmd_kaji(FALSE);
+                                       energy_use = 0;
+                               }
                                else
-                                       do_cmd_cast();
-                       }
+                               {
+                                       if ((p_ptr->pclass == CLASS_MINDCRAFTER) ||
+                                           (p_ptr->pclass == CLASS_BERSERKER) ||
+                                           (p_ptr->pclass == CLASS_NINJA) ||
+                                           (p_ptr->pclass == CLASS_MIRROR_MASTER)
+                                           )
+                                               do_cmd_mind();
+                                       else if (p_ptr->pclass == CLASS_IMITATOR)
+                                               do_cmd_mane(FALSE);
+                                       else if (p_ptr->pclass == CLASS_MAGIC_EATER)
+                                               do_cmd_magic_eater();
+                                       else if (p_ptr->pclass == CLASS_SAMURAI)
+                                               do_cmd_hissatsu();
+                                       else if (p_ptr->pclass == CLASS_BLUE_MAGE)
+                                               do_cmd_cast_learned();
+                                       else if (p_ptr->pclass == CLASS_SMITH)
+                                               do_cmd_kaji(FALSE);
+                                       else
+                                               do_cmd_cast();
+                               }
                        }
                        break;
                }
index ecd2fb8..8f2cee5 100644 (file)
@@ -1803,7 +1803,10 @@ static void display_player_middle(void)
        if (object_known_p(o_ptr)) show_tohit += o_ptr->to_h;
        if (object_known_p(o_ptr)) show_todam += o_ptr->to_d;
 
-       show_tohit += (weapon_exp[0][o_ptr->sval]-4000)/200;
+       if ((o_ptr->sval == SV_LIGHT_XBOW) || (o_ptr->sval == SV_HEAVY_XBOW))
+               show_tohit += (weapon_exp[0][o_ptr->sval])/400;
+       else
+               show_tohit += (weapon_exp[0][o_ptr->sval]-4000)/200;
 
        /* Range attacks */
        display_player_one_line(ENTRY_SHOOT_HIT_DAM, format("(%+d,%+d)", show_tohit, show_todam), TERM_L_BLUE);
index e58f0ee..66bb5c1 100644 (file)
@@ -483,105 +483,6 @@ static void rd_item(object_type *o_ptr)
        rd_string(buf, 128);
        if (buf[0]) o_ptr->art_name = quark_add(buf);
 
-       if (o_ptr->art_name && (o_ptr->art_flags3 & TR3_ACTIVATE) && !o_ptr->xtra4)
-       {
-               switch (o_ptr->xtra2)
-               {
-                       case ACT_SUNLIGHT:
-                       case ACT_BO_MISS_1:
-                       case ACT_BA_POIS_1:
-                       case ACT_CONFUSE:
-                       case ACT_SLEEP:
-                       case ACT_CURE_LW:
-                       case ACT_CURE_POISON:
-                       case ACT_BERSERK:
-                       case ACT_LIGHT:
-                       case ACT_DEST_DOOR:
-                       case ACT_TELEPORT:
-                               o_ptr->xtra4 = 10;
-                               break;
-                       case ACT_BO_ELEC_1:
-                       case ACT_BO_ACID_1:
-                       case ACT_BO_COLD_1:
-                       case ACT_BO_FIRE_1:
-                       case ACT_MAP_LIGHT:
-                       case ACT_STONE_MUD:
-                       case ACT_CURE_MW:
-                       case ACT_QUAKE:
-                               o_ptr->xtra4 = 20;
-                               break;
-                       case ACT_DRAIN_1:
-                       case ACT_TELE_AWAY:
-                       case ACT_ESP:
-                       case ACT_RESIST_ALL:
-                       case ACT_DETECT_ALL:
-                       case ACT_RECALL:
-                       case ACT_SATIATE:
-                       case ACT_RECHARGE:
-                               o_ptr->xtra4 = 30;
-                               break;
-                       case ACT_BA_COLD_1:
-                       case ACT_BA_FIRE_1:
-                       case ACT_TERROR:
-                       case ACT_PROT_EVIL:
-                       case ACT_ID_PLAIN:
-                       case ACT_REST_LIFE:
-                       case ACT_SPEED:
-                       case ACT_BANISH_EVIL:
-                               o_ptr->xtra4 = 40;
-                               break;
-                       case ACT_DRAIN_2:
-                       case ACT_VAMPIRE_1:
-                       case ACT_BO_MISS_2:
-                       case ACT_BA_FIRE_2:
-                       case ACT_WHIRLWIND:
-                       case ACT_CHARM_ANIMAL:
-                       case ACT_SUMMON_ANIMAL:
-                       case ACT_DISP_EVIL:
-                       case ACT_DISP_GOOD:
-                       case ACT_XTRA_SPEED:
-                       case ACT_DETECT_XTRA:
-                       case ACT_ID_FULL:
-                               o_ptr->xtra4 = 50;
-                               break;
-                       case ACT_VAMPIRE_2:
-                       case ACT_BA_COLD_3:
-                       case ACT_BA_ELEC_3:
-                       case ACT_GENOCIDE:
-                       case ACT_CHARM_UNDEAD:
-                       case ACT_CHARM_OTHER:
-                       case ACT_SUMMON_PHANTOM:
-                       case ACT_SUMMON_ELEMENTAL:
-                       case ACT_RUNE_EXPLO:
-                               o_ptr->xtra4 = 60;
-                               break;
-                       case ACT_MASS_GENO:
-                       case ACT_CHARM_ANIMALS:
-                       case ACT_CHARM_OTHERS:
-                       case ACT_CURE_700:
-                       case ACT_RUNE_PROT:
-                       case ACT_ALCHEMY:
-                       case ACT_REST_ALL:
-                               o_ptr->xtra4 = 70;
-                               break;
-                       case ACT_CALL_CHAOS:
-                       case ACT_ROCKET:
-                       case ACT_BA_MISS_3:
-                       case ACT_CURE_1000:
-                       case ACT_DIM_DOOR:
-                       case ACT_SUMMON_UNDEAD:
-                       case ACT_SUMMON_DEMON:
-                               o_ptr->xtra4 = 80;
-                               break;
-                       case ACT_WRAITH:
-                       case ACT_INVULN:
-                               o_ptr->xtra4 = 100;
-                               break;
-                       default:
-                               o_ptr->xtra4 = 0;
-               }
-       }
-       
        /* The Python object */
        {
                s32b tmp32s;
index 08793e6..90a47f8 100644 (file)
@@ -1674,8 +1674,7 @@ info[i++] = "
 #endif
 
                }
-               if (((p_ptr->muta3 & MUT3_VULN_ELEM) || (p_ptr->special_defense & KATA_KOUKIJIN))
-                   && !(p_ptr->immune_acid && p_ptr->immune_elec && p_ptr->immune_fire && p_ptr->immune_cold))
+               if (p_ptr->muta3 & MUT3_VULN_ELEM)
                {
 #ifdef JP
 info[i++] = "¤¢¤Ê¤¿¤Ï¸µÁǤι¶·â¤Ë¼å¤¤¡£";
index cc9dcea..79be15b 100644 (file)
@@ -4682,7 +4682,10 @@ void calc_bonuses(void)
 
                        if (p_ptr->pclass == CLASS_ARCHER)
                        {
-                               p_ptr->num_fire += (p_ptr->lev * 6);
+                               if (p_ptr->tval_ammo == TV_ARROW)
+                                       p_ptr->num_fire += (p_ptr->lev * 6);
+                               else if ((p_ptr->tval_ammo == TV_BOLT) || (p_ptr->tval_ammo == TV_SHOT))
+                                       p_ptr->num_fire += (p_ptr->lev * 4);
                        }
 
                        /*
index af3ce85..f28032d 100644 (file)
@@ -1337,6 +1337,11 @@ msg_print("
        }
        if ((r_ptr->flags7 & RF7_GUARDIAN) && !p_ptr->inside_battle && (d_info[dungeon_type].final_guardian == m_ptr->r_idx))
        {
+               s16b k_idx = 198; /* Acquirement */;
+
+               if (d_info[dungeon_type].final_object)
+                       k_idx = d_info[dungeon_type].final_object;
+
                if (d_info[dungeon_type].final_artifact)
                {
                        byte a_idx = d_info[dungeon_type].final_artifact;
@@ -1346,16 +1351,12 @@ msg_print("
                                create_named_art(a_idx, y, x);
 
                                a_info[a_idx].cur_num = 1;
+                               k_idx = 0;
                        }
                }
-               else
-               {
-                       s16b k_idx;
-
-                       if (d_info[dungeon_type].final_object)
-                               k_idx = d_info[dungeon_type].final_object;
-                       else k_idx = 198;/* Acquirement */
 
+               if (k_idx)
+               {
                        /* Get local object */
                        q_ptr = &forge;