From 64cdb4b86cd1711a5b7df08ff0fcd659f3a4b7bf Mon Sep 17 00:00:00 2001 From: hoge Date: Sat, 26 Jan 2002 10:28:55 +0000 Subject: [PATCH] =?utf8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3?= =?utf8?q?=E7=95=AA=E5=8F=B7=E3=81=82=E3=81=A1=E3=81=93=E3=81=A1=E5=A4=89?= =?utf8?q?=E6=9B=B4=20=E2=98=86=E3=81=AExtra4=E4=BD=BF=E3=82=8F=E3=81=9A?= =?utf8?q?=20=E3=82=AF=E3=83=AD=E3=82=B9=E3=83=9C=E3=82=A6=E3=81=AF?= =?utf8?q?=E9=A3=9B=E8=B7=9D=E9=9B=A2=E7=9F=AD=E3=81=8F=E3=81=A6=E4=BD=BF?= =?utf8?q?=E3=81=84=E3=82=84=E3=81=99=E3=81=84=20=E3=82=A2=E3=83=BC?= =?utf8?q?=E3=83=81=E3=83=A3=E3=83=BC=E3=81=AF=E3=82=AF=E3=83=AD=E3=82=B9?= =?utf8?q?=E3=83=9C=E3=82=A6=E6=9C=80=E5=A4=A73=E5=9B=9E=20@nothere?= =?utf8?q?=E3=81=95=E3=82=93=E3=81=AE=E3=83=91=E3=83=83=E3=83=81=E5=90=84?= =?utf8?q?=E7=A8=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- configure.in | 2 +- lib/file/news.txt | 2 +- lib/file/news_j.txt | 2 +- lib/xtra/graf/Makefile.am | 2 +- src/artifact.c | 96 --------------------------------- src/birth.c | 2 +- src/cave.c | 4 +- src/cmd1.c | 1 + src/cmd2.c | 7 ++- src/cmd6.c | 101 ++++++++++++++++++++++++++++++++++- src/dungeon.c | 132 +++++++++++++++++++++++----------------------- src/files.c | 5 +- src/load.c | 99 ---------------------------------- src/spells2.c | 3 +- src/xtra1.c | 5 +- src/xtra2.c | 15 +++--- 16 files changed, 195 insertions(+), 283 deletions(-) diff --git a/configure.in b/configure.in index 19127f951..834a80cf3 100644 --- a/configure.in +++ b/configure.in @@ -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)]) diff --git a/lib/file/news.txt b/lib/file/news.txt index bd5644f7d..aaf8f7dbf 100644 --- a/lib/file/news.txt +++ b/lib/file/news.txt @@ -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 diff --git a/lib/file/news_j.txt b/lib/file/news_j.txt index e6eaf63e0..2c6be9c9d 100644 --- a/lib/file/news_j.txt +++ b/lib/file/news_j.txt @@ -1,6 +1,6 @@ *************************************** - ** ÊѶòÈÚÅÜ 1.0.8 ** + ** ÊѶòÈÚÅÜ 1.0.9 ** *************************************** Based on Moria: Copyright (c) 1985 Robert Alan Koeneke diff --git a/lib/xtra/graf/Makefile.am b/lib/xtra/graf/Makefile.am index 44812f785..44ea3bc56 100644 --- a/lib/xtra/graf/Makefile.am +++ b/lib/xtra/graf/Makefile.am @@ -1,4 +1,4 @@ ## Makefile.am -- Process this file with automake to process Makefile.in EXTRA_DIST = \ - delete.me + 8x8.bmp diff --git a/src/artifact.c b/src/artifact.c index b93870b9d..96ec2ad30 100644 --- a/src/artifact.c +++ b/src/artifact.c @@ -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; diff --git a/src/birth.c b/src/birth.c index 22f2d9b66..c1c057f23 100644 --- a/src/birth.c +++ b/src/birth.c @@ -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)); diff --git a/src/cave.c b/src/cave.c index e090930b5..67f74d2c9 100644 --- a/src/cave.c +++ b/src/cave.c @@ -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 diff --git a/src/cmd1.c b/src/cmd1.c index aa06422fe..38f0c76f7 100644 --- a/src/cmd1.c +++ b/src/cmd1.c @@ -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 diff --git a/src/cmd2.c b/src/cmd2.c index c5545d17c..146e94ed1 100644 --- a/src/cmd2.c +++ b/src/cmd2.c @@ -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; diff --git a/src/cmd6.c b/src/cmd6.c index 6d1fb360d..0ad9acc31 100644 --- a/src/cmd6.c +++ b/src/cmd6.c @@ -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; } diff --git a/src/dungeon.c b/src/dungeon.c index 07862b715..ab51f147a 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -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; } diff --git a/src/files.c b/src/files.c index ecd2fb81c..8f2cee555 100644 --- a/src/files.c +++ b/src/files.c @@ -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); diff --git a/src/load.c b/src/load.c index e58f0eeb6..66bb5c19e 100644 --- a/src/load.c +++ b/src/load.c @@ -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; diff --git a/src/spells2.c b/src/spells2.c index 08793e61a..90a47f8fb 100644 --- a/src/spells2.c +++ b/src/spells2.c @@ -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++] = "¤¢¤Ê¤¿¤Ï¸µÁǤι¶·â¤Ë¼å¤¤¡£"; diff --git a/src/xtra1.c b/src/xtra1.c index cc9dcea23..79be15b82 100644 --- a/src/xtra1.c +++ b/src/xtra1.c @@ -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); } /* diff --git a/src/xtra2.c b/src/xtra2.c index af3ce85f8..f28032d14 100644 --- a/src/xtra2.c +++ b/src/xtra2.c @@ -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; -- 2.11.0