put_str("HP", ROW_CURHP, COL_CURHP);
/* ¸½ºß¤Î¥Ò¥Ã¥È¥Ý¥¤¥ó¥È */
- sprintf(tmp, "%4ld", p_ptr->chp);
+ sprintf(tmp, "%4ld", (long int)p_ptr->chp);
if (p_ptr->chp >= p_ptr->mhp)
{
put_str( "/", ROW_CURHP, COL_CURHP + 7 );
/* ºÇÂç¥Ò¥Ã¥È¥Ý¥¤¥ó¥È */
- sprintf(tmp, "%4ld", p_ptr->mhp);
+ sprintf(tmp, "%4ld", (long int)p_ptr->mhp);
color = TERM_L_GREEN;
c_put_str(color, tmp, ROW_CURHP, COL_CURHP + 8 );
#endif
/* ¸½ºß¤Î¥Þ¥¸¥Ã¥¯¥Ý¥¤¥ó¥È */
- sprintf(tmp, "%4ld", p_ptr->csp);
+ sprintf(tmp, "%4ld", (long int)p_ptr->csp);
if (p_ptr->csp >= p_ptr->msp)
{
put_str( "/", ROW_CURSP, COL_CURSP + 7 );
/* ºÇÂç¥Þ¥¸¥Ã¥¯¥Ý¥¤¥ó¥È */
- sprintf(tmp, "%4ld", p_ptr->msp);
+ sprintf(tmp, "%4ld", (long int)p_ptr->msp);
color = TERM_L_GREEN;
c_put_str(color, tmp, ROW_CURSP, COL_CURSP + 8);
}
+/*
+ * Print monster info in line
+ * nnn X LV name
+ * nnn : number or unique(U) or wanted unique(W)
+ * X : symbol of monster
+ * LV : monster lv if known
+ * name: name of monster
+ */
+static void print_monster_line(int x, int y, monster_type* m_ptr, int n_same){
+ char buf[256];
+ int i;
+ int r_idx = m_ptr->ap_r_idx;
+ monster_race* r_ptr = &r_info[r_idx];
+
+ Term_gotoxy(x, y);
+ if(!r_ptr)return;
+ //Number of 'U'nique
+ if(r_ptr->flags1&RF1_UNIQUE){//unique
+ bool is_kubi = FALSE;
+ for(i=0;i<MAX_KUBI;i++){
+ if(kubi_r_idx[i] == r_idx){
+ is_kubi = TRUE;
+ break;
+ }
+ }
+ Term_addstr(-1, TERM_WHITE, is_kubi?" W":" U");
+ }else{
+ sprintf(buf, "%3d", n_same);
+ Term_addstr(-1, TERM_WHITE, buf);
+ }
+ //symbol
+ Term_addstr(-1, TERM_WHITE, " ");
+ //Term_add_bigch(r_ptr->d_attr, r_ptr->d_char);
+ //Term_addstr(-1, TERM_WHITE, "/");
+ Term_add_bigch(r_ptr->x_attr, r_ptr->x_char);
+ //LV
+ if (r_ptr->r_tkills && !(m_ptr->mflag2 & MFLAG2_KAGE)){
+ sprintf(buf, " %2d", r_ptr->level);
+ }else{
+ strcpy(buf, " ??");
+ }
+ Term_addstr(-1, TERM_WHITE, buf);
+ //name
+ sprintf(buf, " %s ", r_name+r_ptr->name);
+ Term_addstr(-1, TERM_WHITE, buf);
+
+ //Term_addstr(-1, TERM_WHITE, look_mon_desc(m_ptr, 0));
+}
+
+ /*
+ max_lines : ºÇÂ粿¹ÔÉÁ²è¤¹¤ë¤«¡¥
+*/
+void print_monster_list(int x, int y, int max_lines){
+ int line = y;
+ monster_type* last_mons = NULL;
+ monster_type* m_ptr = NULL;
+ int n_same = 0;
+ int i;
+
+ for(i=0;i<temp_n;i++){
+ cave_type* c_ptr = &cave[temp_y[i]][temp_x[i]];
+ if(!c_ptr->m_idx || !m_list[c_ptr->m_idx].ml)continue;//no mons or cannot look
+ m_ptr = &m_list[c_ptr->m_idx];
+ if(is_pet(m_ptr))continue;//pet
+ if(!m_ptr->r_idx)continue;//dead?
+ {
+ int r_idx = m_ptr->ap_r_idx;
+ monster_race* r_ptr = &r_info[r_idx];
+ cptr name = (r_name + r_ptr->name);
+ cptr ename = (r_name + r_ptr->name);
+ /*
+ //¥ß¥ß¥Ã¥¯Îà¤ä¡Ö¤½¤ì¡×Åù¤Ï¡¢°ìÍ÷¤Ë½Ð¤Æ¤Ï¤¤¤±¤Ê¤¤
+ if(r_ptr->flags1&RF1_CHAR_CLEAR)continue;
+ if((r_ptr->flags1&RF1_NEVER_MOVE)&&(r_ptr->flags2&RF2_CHAR_MULTI))continue;
+ //¡Ø¥Ì¥ë¡Ù¤Ï¡¢°ìÍ÷¤Ë½Ð¤Æ¤Ï¤¤¤±¤Ê¤¤
+ if((strcmp(name, "À¸¤±¤ëµõ̵¡Ø¥Ì¥ë¡Ù")==0)||
+ (strcmp(ename, "Null the Living Void")==0))continue;
+ //"¶â̵¹¤¤Î»ØÎØ"¤Ï¡¢°ìÍ÷¤Ë½Ð¤Æ¤Ï¤¤¤±¤Ê¤¤
+ if((strcmp(name, "¶â̵¹¤¤Î»ØÎØ")==0)||
+ (strcmp(ename, "Plain Gold Ring")==0))continue;
+ */
+ }
+
+ //¥½¡¼¥ÈºÑ¤ß¤Ê¤Î¤ÇƱ¤¸¥â¥ó¥¹¥¿¡¼¤ÏϢ³¤¹¤ë¡¥¤³¤ì¤òÍøÍѤ·¤ÆƱ¤¸¥â¥ó¥¹¥¿¡¼¤ò¥«¥¦¥ó¥È¡¤¤Þ¤È¤á¤Æɽ¼¨¤¹¤ë¡¥
+ if(!last_mons){//ÀèƬ¥â¥ó¥¹¥¿¡¼
+ last_mons = m_ptr;
+ n_same = 1;
+ continue;
+ }
+ //same race?
+ if(last_mons->ap_r_idx == m_ptr->ap_r_idx){
+ n_same++;
+ continue;//ɽ¼¨½èÍý¤ò¼¡¤Ë²ó¤¹
+ }
+ //print last mons info
+ print_monster_line(x, line++, last_mons, n_same);
+ n_same = 1;
+ last_mons = m_ptr;
+ if(line-y-1==max_lines){//»Ä¤ê1¹Ô
+ break;
+ }
+ }
+ if(line-y-1==max_lines && i!=temp_n){
+ Term_gotoxy(x, line);
+ Term_addstr(-1, TERM_WHITE, "-- and more --");
+ }else{
+ if(last_mons)print_monster_line(x, line++, last_mons, n_same);
+ }
+}
+/*
+ * Hack -- display monster list in sub-windows
+ */
+static void fix_monster_list(void)
+{
+ int j;
+ int w, h;
+
+ /* Scan windows */
+ for (j = 0; j < 8; j++)
+ {
+ term *old = Term;
+
+ /* No window */
+ if (!angband_term[j]) continue;
+
+ /* No relevant flags */
+ if (!(window_flag[j] & (PW_MONSTER_LIST))) continue;
+
+ /* Activate */
+ Term_activate(angband_term[j]);
+ Term_get_size(&w, &h);
+
+ Term_clear();
+
+ target_set_prepare_look();//¥â¥ó¥¹¥¿¡¼°ìÍ÷¤òÀ¸À®¡¤¥½¡¼¥È
+ print_monster_list(0, 0, h);
+
+ /* Fresh */
+ Term_fresh();
+
+ /* Restore */
+ Term_activate(old);
+ }
+}
+
+
+
/*
* Hack -- display equipment in sub-windows
int num_allowed;
int num_boukyaku = 0;
- magic_type *s_ptr;
+ const magic_type *s_ptr;
int which;
int bonus = 0;
/* Normal gloves hurt mage-type spells */
if (o_ptr->k_idx &&
!(have_flag(flgs, TR_FREE_ACT)) &&
- !(have_flag(flgs, TR_MAGIC_MASTERY)) &&
+ !(have_flag(flgs, TR_DEC_MANA)) &&
+ !(have_flag(flgs, TR_EASY_SPELL)) &&
+ !((have_flag(flgs, TR_MAGIC_MASTERY)) && (o_ptr->pval > 0)) &&
!((have_flag(flgs, TR_DEX)) && (o_ptr->pval > 0)))
{
/* Encumbered */
bool easy_2weapon = FALSE;
bool riding_levitation = FALSE;
s16b this_o_idx, next_o_idx = 0;
- player_race *tmp_rp_ptr;
+ const player_race *tmp_rp_ptr;
/* Save the old vision stuff */
bool old_telepathy = p_ptr->telepathy;
if (have_flag(flgs, TR_AGGRAVATE)) p_ptr->cursed |= TRC_AGGRAVATE;
if (have_flag(flgs, TR_DRAIN_EXP)) p_ptr->cursed |= TRC_DRAIN_EXP;
if (have_flag(flgs, TR_TY_CURSE)) p_ptr->cursed |= TRC_TY_CURSE;
+ if (have_flag(flgs, TR_ADD_L_CURSE)) p_ptr->cursed |= TRC_ADD_L_CURSE;
+ if (have_flag(flgs, TR_ADD_H_CURSE)) p_ptr->cursed |= TRC_ADD_H_CURSE;
if (have_flag(flgs, TR_DEC_MANA)) p_ptr->dec_mana = TRUE;
if (have_flag(flgs, TR_BLESSED)) p_ptr->bless_blade = TRUE;
if (have_flag(flgs, TR_XTRA_MIGHT)) p_ptr->xtra_might = TRUE;
#if 0
if (have_dd_s && ((p_ptr->realm1 == REALM_SORCERY) || (p_ptr->realm2 == REALM_SORCERY) || (p_ptr->pclass == CLASS_SORCERER)))
{
- magic_type *s_ptr = &mp_ptr->info[REALM_SORCERY-1][SPELL_DD_S];
+ const magic_type *s_ptr = &mp_ptr->info[REALM_SORCERY-1][SPELL_DD_S];
if (p_ptr->lev >= s_ptr->slevel) p_ptr->no_flowed = TRUE;
}
if (have_dd_t && ((p_ptr->realm1 == REALM_TRUMP) || (p_ptr->realm2 == REALM_TRUMP) || (p_ptr->pclass == CLASS_SORCERER) || (p_ptr->pclass == CLASS_RED_MAGE)))
{
- magic_type *s_ptr = &mp_ptr->info[REALM_TRUMP-1][SPELL_DD_T];
+ const magic_type *s_ptr = &mp_ptr->info[REALM_TRUMP-1][SPELL_DD_T];
if (p_ptr->lev >= s_ptr->slevel) p_ptr->no_flowed = TRUE;
}
#endif
if (have_sw && ((p_ptr->realm1 == REALM_NATURE) || (p_ptr->realm2 == REALM_NATURE) || (p_ptr->pclass == CLASS_SORCERER)))
{
- magic_type *s_ptr = &mp_ptr->info[REALM_NATURE-1][SPELL_SW];
+ const magic_type *s_ptr = &mp_ptr->info[REALM_NATURE-1][SPELL_SW];
if (p_ptr->lev >= s_ptr->slevel) p_ptr->no_flowed = TRUE;
}
if (have_kabe && ((p_ptr->realm1 == REALM_CRAFT) || (p_ptr->realm2 == REALM_CRAFT) || (p_ptr->pclass == CLASS_SORCERER)))
{
- magic_type *s_ptr = &mp_ptr->info[REALM_CRAFT-1][SPELL_KABE];
+ const magic_type *s_ptr = &mp_ptr->info[REALM_CRAFT-1][SPELL_KABE];
if (p_ptr->lev >= s_ptr->slevel) p_ptr->no_flowed = TRUE;
}
}
p_ptr->window &= ~(PW_PLAYER);
fix_player();
}
-
+
+ /* Display monster list */
+ if (p_ptr->window & (PW_MONSTER_LIST))
+ {
+ p_ptr->window &= ~(PW_MONSTER_LIST);
+ fix_monster_list();
+ }
+
/* Display overhead view */
if (p_ptr->window & (PW_MESSAGE))
{