{
/* Lose a level */
p_ptr->lev--;
- lite_spot(py, px);
/* Update some stuff */
p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
{
/* Gain a level */
p_ptr->lev++;
- lite_spot(py, px);
/* Save the highest level */
if (p_ptr->lev > p_ptr->max_plv)
/* Window stuff */
p_ptr->window |= (PW_PLAYER | PW_SPELL);
-#ifdef JP
+ /* HP¤ÈMP¤Î¾å¾ºÎ̤òɽ¼¨ */
level_up = 1;
-#endif
+
/* Handle stuff */
handle_stuff();
-#ifdef JP
level_up = 0;
-#endif
- if (level_reward)
- {
- gain_level_reward(0);
- level_reward = FALSE;
- }
if (level_inc_stat)
{
level_mutation = FALSE;
}
+ /*
+ * Ê󽷤ǥì¥Ù¥ë¤¬¾å¤ë¤ÈºÆµ¢Åª¤Ë check_experience() ¤¬
+ * ¸Æ¤Ð¤ì¤ë¤Î¤Ç½çÈÖ¤òºÇ¸å¤Ë¤¹¤ë¡£
+ */
+ if (level_reward)
+ {
+ gain_level_reward(0);
+ level_reward = FALSE;
+ }
+
/* Update some stuff */
p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
object_kind *k_ptr = &k_info[k_idx];
/* Analyze the item type */
- if ((k_ptr->tval >= TV_LIFE_BOOK) && (k_ptr->tval <= TV_HAJA_BOOK))
+ if ((k_ptr->tval >= TV_LIFE_BOOK) && (k_ptr->tval <= TV_CRUSADE_BOOK))
{
return (TRUE);
}
object_kind *k_ptr = &k_info[k_idx];
/* Analyze the item type */
- if ((k_ptr->tval >= TV_LIFE_BOOK) && (k_ptr->tval <= TV_HAJA_BOOK) && (k_ptr->tval != TV_ARCANE_BOOK) && (k_ptr->sval > 1))
+ if ((k_ptr->tval >= TV_LIFE_BOOK) && (k_ptr->tval <= TV_CRUSADE_BOOK) && (k_ptr->tval != TV_ARCANE_BOOK) && (k_ptr->sval > 1))
{
return (TRUE);
}
p_ptr->inside_quest = 0;
}
- if (!quest[i].flags & QUEST_FLAG_SILENT)
+ if (!(quest[i].flags & QUEST_FLAG_SILENT))
{
#ifdef JP
msg_print("¥¯¥¨¥¹¥È¤òãÀ®¤·¤¿¡ª");
quest[i].status = QUEST_STATUS_COMPLETED;
quest[i].complev = (byte)p_ptr->lev;
- if (!quest[i].flags & QUEST_FLAG_SILENT)
+ if (!(quest[i].flags & QUEST_FLAG_SILENT))
{
#ifdef JP
msg_print("¥¯¥¨¥¹¥È¤òãÀ®¤·¤¿¡ª");
if (create_stairs)
{
/* Stagger around */
- while (cave_perma_bold(y, x) || cave[y][x].o_idx)
+ while (cave_perma_bold(y, x) || cave[y][x].o_idx || (cave[y][x].info & CAVE_IN_MIRROR) )
{
/* Pick a location */
scatter(&ny, &nx, y, x, 1, 0);
break;
}
- if ((a_idx > 0) && ((randint0(100) < chance) || (wizard)))
+ if ((a_idx > 0) && ((randint0(100) < chance) || (p_ptr->wizard)))
{
if (a_info[a_idx].cur_num == 0)
{
if (m_ptr->r_idx == MON_SERPENT)
{
/* Total winner */
- total_winner = TRUE;
+ p_ptr->total_winner = TRUE;
/* Redraw the "title" */
p_ptr->redraw |= (PR_TITLE);
* Run (sometimes) if at 10% or less of max hit points,
* or (usually) when hit for half its current hit points
*/
- if (((percentage <= 10) && (randint0(10) < percentage)) ||
+ if ((randint1(10) >= percentage) ||
((dam >= m_ptr->hp) && (randint0(100) < 80)))
{
/* Hack -- note fear */
cptr look_mon_desc(int m_idx)
{
monster_type *m_ptr = &m_list[m_idx];
- monster_race *r_ptr = &r_info[m_ptr->r_idx];
+ monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx];
bool living;
int perc;
-
+ cptr desc = NULL;
/* Determine if the monster is "living" */
- living = monster_living(r_ptr);
+ living = monster_living(ap_r_ptr);
+ /* Calculate a health "percentage" */
+ perc = 100L * m_ptr->hp / m_ptr->maxhp;
/* Healthy monsters */
if (m_ptr->hp >= m_ptr->maxhp)
{
/* No damage */
#ifdef JP
-return (living ? "̵½ý" : "̵¥À¥á¡¼¥¸");
+ desc = living ? "̵½ý" : "̵¥À¥á¡¼¥¸";
#else
- return (living ? "unhurt" : "undamaged");
+ desc = living ? "unhurt" : "undamaged";
#endif
}
-
- /* Calculate a health "percentage" */
- perc = 100L * m_ptr->hp / m_ptr->maxhp;
-
- if (perc >= 60)
+ else if (perc >= 60)
{
#ifdef JP
-return (living ? "·Ú½ý" : "¾®¥À¥á¡¼¥¸");
+ desc = living ? "·Ú½ý" : "¾®¥À¥á¡¼¥¸";
#else
- return (living ? "somewhat wounded" : "somewhat damaged");
+ desc = living ? "somewhat wounded" : "somewhat damaged";
#endif
}
- if (perc >= 25)
+ else if (perc >= 25)
{
#ifdef JP
-return (living ? "Éé½ý" : "Ãæ¥À¥á¡¼¥¸");
+ desc = living ? "Éé½ý" : "Ãæ¥À¥á¡¼¥¸";
#else
- return (living ? "wounded" : "damaged");
+ desc = living ? "wounded" : "damaged";
#endif
}
- if (perc >= 10)
+ else if (perc >= 10)
{
#ifdef JP
-return (living ? "½Å½ý" : "Âç¥À¥á¡¼¥¸");
+ desc = living ? "½Å½ý" : "Âç¥À¥á¡¼¥¸";
#else
- return (living ? "badly wounded" : "badly damaged");
+ desc = living ? "badly wounded" : "badly damaged";
#endif
}
+ else
+ {
#ifdef JP
-return (living ? "Ⱦ»àȾÀ¸" : "Åݤ줫¤±");
+ desc = living ? "Ⱦ»àȾÀ¸" : "Åݤ줫¤±";
#else
- return (living ? "almost dead" : "almost destroyed");
+ desc = living ? "almost dead" : "almost destroyed";
#endif
+ }
+ /* Display monster's level --- idea borrowed from ToME */
+ if (ap_r_ptr->r_tkills && !(m_ptr->mflag2 & MFLAG_KAGE))
+ {
+#ifdef JP
+ return format("¥ì¥Ù¥ë%d, %s", ap_r_ptr->level, desc);
+#else
+ return format("Level %d, %s", ap_r_ptr->level, desc);
+#endif
+ }
+ else
+ {
+#ifdef JP
+ return format("¥ì¥Ù¥ë???, %s", desc);
+#else
+ return format("Level ???, %s", desc);
+#endif
+ }
}
/* Notice glyphs */
if (c_ptr->feat == FEAT_GLYPH) return (TRUE);
if (c_ptr->feat == FEAT_MINOR_GLYPH) return (TRUE);
- if (c_ptr->feat == FEAT_MIRROR) return (TRUE);
+ if ((c_ptr->info & CAVE_IN_MIRROR)) return (TRUE);
/* Notice the Pattern */
if ((c_ptr->feat <= FEAT_PATTERN_XTRA2) &&
if (c_ptr->m_idx)
{
monster_type *m_ptr = &m_list[c_ptr->m_idx];
- monster_race *r_ptr = &r_info[m_ptr->r_idx];
+ monster_race *ap_r_ptr = &r_info[m_ptr->ap_r_idx];
/* Visible */
if (m_ptr->ml)
char acount[10];
u32b tmp_h,tmp_l;
int bit,result;
- u32b exp_mon= (r_ptr->mexp)*(r_ptr->level);
+ u32b exp_mon= (ap_r_ptr->mexp)*(ap_r_ptr->level);
u32b exp_mon_h= exp_mon / (p_ptr->max_plv+2);
u32b exp_mon_l= ((exp_mon % (p_ptr->max_plv+2))*0x10000/(p_ptr->max_plv+2))&0xFFFF;
M_INT_SUB(exp_adv_h, exp_adv_l, p_ptr->exp, p_ptr->exp_frac);
if ((p_ptr->lev>=PY_MAX_LEVEL) || (p_ptr->prace == RACE_ANDROID))
sprintf(acount,"[**]");
- else if (!r_ptr->r_tkills || (m_ptr->mflag2 & MFLAG_KAGE))
+ else if (!ap_r_ptr->r_tkills || (m_ptr->mflag2 & MFLAG_KAGE))
sprintf(acount,"[??]");
else if (M_INT_GREATER(exp_mon_h, exp_mon_l, exp_adv_h, exp_adv_l))
sprintf(acount,"[001]");
/* Hack -- take account of gender */
#ifdef JP
-if (r_ptr->flags1 & (RF1_FEMALE)) s1 = "Èà½÷¤Ï";
+if (ap_r_ptr->flags1 & (RF1_FEMALE)) s1 = "Èà½÷¤Ï";
#else
- if (r_ptr->flags1 & (RF1_FEMALE)) s1 = "She is ";
+ if (ap_r_ptr->flags1 & (RF1_FEMALE)) s1 = "She is ";
#endif
#ifdef JP
-else if (r_ptr->flags1 & (RF1_MALE)) s1 = "Èà¤Ï";
+else if (ap_r_ptr->flags1 & (RF1_MALE)) s1 = "Èà¤Ï";
#else
- else if (r_ptr->flags1 & (RF1_MALE)) s1 = "He is ";
+ else if (ap_r_ptr->flags1 & (RF1_MALE)) s1 = "He is ";
#endif
}
/* Terrain feature if needed */
- if (boring || (feat > FEAT_INVIS))
+ if (boring || (feat > FEAT_INVIS) || (c_ptr->info & CAVE_IN_MIRROR))
{
cptr name;
name = "road";
#endif
}
- else
+ else if ( (c_ptr->info & CAVE_IN_MIRROR) )
{
- name = f_name + f_info[feat].name;
- }
-
- /* Hack -- handle unknown grids */
#ifdef JP
-if (feat == FEAT_NONE) name = "̤ÃΤÎÃÏ·Á";
+ name = "¶À";
#else
- if (feat == FEAT_NONE) name = "unknown grid";
+ name = "a mirror";
#endif
+ }
+ else
+ {
+ name = f_name + f_info[feat].name;
+ }
/* Pick a prefix */
#endif
}
- else if ((feat == FEAT_TOWN) || (feat == FEAT_FLOOR) || (feat == FEAT_DIRT) || (feat == FEAT_FLOWER))
+ else if ((feat == FEAT_TOWN) || (feat == FEAT_FLOOR) || (feat == FEAT_DIRT) || (feat == FEAT_FLOWER) || (c_ptr->info & CAVE_IN_MIRROR))
{
#ifndef JP
s3 ="";
}
/* Display a message */
- if (wizard)
+ if (p_ptr->wizard)
#ifdef JP
sprintf(out_val, "%s%s%s%s[%s] %x %d %d %d %d (%d,%d)", s1, name, s2, s3, info, c_ptr->info, c_ptr->feat, c_ptr->dist, c_ptr->cost, c_ptr->when, x, y);
#else
else if (p_ptr->riding)
{
monster_type *m_ptr = &m_list[p_ptr->riding];
- monster_race *r_ptr = &r_info[m_ptr->ap_r_idx];
+ monster_race *r_ptr = &r_info[m_ptr->r_idx];
if (m_ptr->confused)
{