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)])
***************************************
- ** Hengband 1.0.8 English version **
+ ** Hengband 1.0.9 English version **
***************************************
Based on Moria: Copyright (c) 1985 Robert Alan Koeneke
***************************************
- ** ÊѶòÈÚÅÜ 1.0.8 **
+ ** ÊѶòÈÚÅÜ 1.0.9 **
***************************************
Based on Moria: Copyright (c) 1985 Robert Alan Koeneke
## Makefile.am -- Process this file with automake to process Makefile.in
EXTRA_DIST = \
- delete.me
+ 8x8.bmp
}
}
- 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;
/* 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));
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
(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
/* 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);
/* 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;
/* 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 */
}
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;
}
/* -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;
}
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);
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;
#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++] = "¤¢¤Ê¤¿¤Ï¸µÁǤι¶·â¤Ë¼å¤¤¡£";
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);
}
/*
}
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;
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;