From 46f6262935a9d7464bd89e9c49b88734735cacd0 Mon Sep 17 00:00:00 2001 From: mogami Date: Sun, 3 Feb 2002 18:53:22 +0000 Subject: [PATCH] =?utf8?q?=E6=AD=BB=E4=BA=A1/=E5=8B=9D=E5=88=A9=20?= =?utf8?q?=E3=83=80=E3=83=B3=E3=83=97=E3=81=AE=E4=B8=BB=E3=81=AA=E3=83=9A?= =?utf8?q?=E3=83=83=E3=83=88=E3=81=AE=E8=A1=A8=E7=A4=BA=E3=82=92=E3=81=A1?= =?utf8?q?=E3=82=83=E3=82=93=E3=81=A8=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?utf8?q?=E3=81=AB=E4=BF=AE=E6=AD=A3=E3=80=82=20=E3=81=9D=E3=81=AE?= =?utf8?q?=E4=BB=AE=E5=AE=9A=E3=81=A7=20riding=5Fmon=20=E3=82=92=E5=BB=83?= =?utf8?q?=E6=AD=A2=E3=80=81party=5Fmon[0]=20=E3=82=92=E4=B9=97=E9=A6=AC?= =?utf8?q?=E3=83=A2=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=BC=E3=81=AE=E4=BF=9D?= =?utf8?q?=E5=AD=98=E7=94=A8=E3=81=AB=E4=BB=95=E6=A7=98=E3=81=97=E3=81=9F?= =?utf8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/dungeon.c | 37 +++++---- src/externs.h | 3 +- src/files.c | 29 +++++-- src/generate.c | 244 ++++++++++++++++++--------------------------------------- src/variable.c | 3 +- src/xtra1.c | 2 +- 6 files changed, 128 insertions(+), 190 deletions(-) diff --git a/src/dungeon.c b/src/dungeon.c index b32efca49..0201313a7 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -5809,35 +5809,44 @@ msg_print(" r_info[quest[quest_num].r_idx].flags1 &= ~RF1_QUESTOR; } - if (alive) { - if (p_ptr->riding) - { - COPY(&riding_mon, &m_list[p_ptr->riding], monster_type); - } - else + if (alive) + { + for(num = 0; num < 21; num++) { - riding_mon.r_idx = 0; + party_mon[num].r_idx = 0; } - for(num = 0; num < 20; num++) + + if (p_ptr->riding) { - party_mon[num].r_idx = 0; + COPY(&party_mon[0], &m_list[p_ptr->riding], monster_type); } - for(i = m_max - 1, num = 0; (i >= 1 && num < 20); i--) + + for(i = m_max - 1, num = 1; (i >= 1 && num < 21); i--) { monster_type *m_ptr = &m_list[i]; if (!m_ptr->r_idx) continue; if (!is_pet(m_ptr)) continue; if (i == p_ptr->riding) continue; - if (m_ptr->nickname && (player_has_los_bold(m_ptr->fy, m_ptr->fx) || los(m_ptr->fy, m_ptr->fx, py, px))) + + /* »à¤ó¤À¤È¤­¤Ë¤Ï¼ç¤Ê¥Ú¥Ã¥È¤Îɽ¼¨ÍѤˡ¢µ÷Î¥À©¸Â¤òűÇѤ¹¤ë¡£ */ + if (death) { - if (distance(py, px, m_ptr->fy, m_ptr->fx) > 3) continue; + if (!m_ptr->nickname) continue; } else { - if (distance(py, px, m_ptr->fy, m_ptr->fx) > 1) continue; + if (m_ptr->nickname && (player_has_los_bold(m_ptr->fy, m_ptr->fx) || los(m_ptr->fy, m_ptr->fx, py, px))) + { + if (distance(py, px, m_ptr->fy, m_ptr->fx) > 3) continue; + } + else + { + if (distance(py, px, m_ptr->fy, m_ptr->fx) > 1) continue; + } + if (m_ptr->confused || m_ptr->stunned || m_ptr->csleep) continue; } - if (m_ptr->confused || m_ptr->stunned || m_ptr->csleep) continue; + COPY(&party_mon[num], &m_list[i], monster_type); delete_monster_idx(i); num++; diff --git a/src/externs.h b/src/externs.h index cb8a16d83..dfc213333 100644 --- a/src/externs.h +++ b/src/externs.h @@ -515,8 +515,7 @@ extern int pet_t_m_idx; extern int riding_t_m_idx; extern s16b kubi_r_idx[MAX_KUBI]; extern s16b today_mon; -extern monster_type riding_mon; -extern monster_type party_mon[20]; +extern monster_type party_mon[21]; extern bool write_level; extern u32b playtime; extern u32b start_time; diff --git a/src/files.c b/src/files.c index b6bee8097..4456d423f 100644 --- a/src/files.c +++ b/src/files.c @@ -4338,15 +4338,34 @@ errr make_character_dump(FILE *fff) fprintf(fff, " "); { bool pet = FALSE; + int max_num, min_num, riding_num; - for (i = m_max - 1; i >= 1; i--) + if (death) { - monster_type *m_ptr = &m_list[i]; + max_num = 21; + min_num = 0; + riding_num = 0; + } + else + { + max_num = m_max; + min_num = 1; + riding_num = p_ptr->riding; + } + + for (i = max_num - 1; i >= min_num; i--) + { + monster_type *m_ptr; char pet_name[80]; + if (death) + m_ptr = &party_mon[i]; + else + m_ptr = &m_list[i]; + if (!m_ptr->r_idx) continue; if (!is_pet(m_ptr)) continue; - if (!m_ptr->nickname && (p_ptr->riding != i)) continue; + if (!m_ptr->nickname && (riding_num != i)) continue; if (!pet) { #ifdef JP @@ -4358,11 +4377,11 @@ errr make_character_dump(FILE *fff) } monster_desc(pet_name, m_ptr, 0x88); fprintf(fff, "%s", pet_name); - if (p_ptr->riding == i) + if (riding_num == i) #ifdef JP fprintf(fff, " ¾èÇÏÃæ"); #else - fprintf(fff, " riding"); + fprintf(fff, " (riding)"); #endif fprintf(fff, "\n"); } diff --git a/src/generate.c b/src/generate.c index f2bb6951d..6e8283797 100644 --- a/src/generate.c +++ b/src/generate.c @@ -1457,203 +1457,115 @@ static byte extract_feeling(void) static void place_pet(void) { - int i; + int i, max_num; + + if (p_ptr->wild_mode) + max_num = 1; + else + max_num = 21; - if (p_ptr->riding) + for (i = 0; i < max_num; i++) { - p_ptr->riding = m_pop(); - if (p_ptr->riding) + int cy, cx, m_idx; + + if (!(party_mon[i].r_idx)) continue; + + + if (i == 0) { - monster_type *m_ptr = &m_list[p_ptr->riding]; - monster_race *r_ptr = &r_info[m_ptr->r_idx]; + m_idx = m_pop(); + p_ptr->riding = m_idx; + if (m_idx) + { + cy = py; + cx = px; + } + } + else + { + int j, d; - cave[py][px].m_idx = p_ptr->riding; - m_ptr->r_idx = riding_mon.r_idx; - m_ptr->fy = py; - m_ptr->fx = px; - m_ptr->cdis = riding_mon.cdis; - m_ptr->mflag = riding_mon.mflag; - m_ptr->mflag2 = riding_mon.mflag2; + for(d = 1; d < 6; d++) + { + for(j = 1000; j > 0; j--) + { + scatter(&cy, &cx, py, px, d, 0); + if ((cave_floor_bold(cy, cx) || (cave[cy][cx].feat == FEAT_TREES)) && !cave[cy][cx].m_idx && !((cy == py) && (cx == px))) break; + } + if (j) break; + } + if (d == 6 || p_ptr->inside_arena || p_ptr->inside_battle) + m_idx = 0; + else + m_idx = m_pop(); + } + + if (m_idx) + { + monster_type *m_ptr = &m_list[m_idx]; + monster_race *r_ptr = &r_info[m_ptr->r_idx]; + + cave[cy][cx].m_idx = m_idx; + m_ptr->r_idx = party_mon[i].r_idx; + m_ptr->fy = cy; + m_ptr->fx = cx; + m_ptr->cdis = party_mon[i].cdis; + m_ptr->mflag = party_mon[i].mflag; + m_ptr->mflag2 = party_mon[i].mflag2; m_ptr->ml = TRUE; - m_ptr->hp = riding_mon.hp; - m_ptr->maxhp = riding_mon.maxhp; - m_ptr->max_maxhp = riding_mon.max_maxhp; - m_ptr->mspeed = riding_mon.mspeed; - m_ptr->fast = riding_mon.fast; - m_ptr->slow = riding_mon.slow; - m_ptr->stunned = riding_mon.stunned; - m_ptr->confused = riding_mon.confused; - m_ptr->monfear = riding_mon.monfear; - m_ptr->invulner = riding_mon.invulner; - m_ptr->smart = riding_mon.smart; + m_ptr->hp = party_mon[i].hp; + m_ptr->maxhp = party_mon[i].maxhp; + m_ptr->max_maxhp = party_mon[i].max_maxhp; + m_ptr->mspeed = party_mon[i].mspeed; + m_ptr->fast = party_mon[i].fast; + m_ptr->slow = party_mon[i].slow; + m_ptr->stunned = party_mon[i].stunned; + m_ptr->confused = party_mon[i].confused; + m_ptr->monfear = party_mon[i].monfear; + m_ptr->invulner = party_mon[i].invulner; + m_ptr->smart = party_mon[i].smart; m_ptr->csleep = 0; - m_ptr->nickname = riding_mon.nickname; - m_ptr->energy = riding_mon.energy; - m_ptr->exp = riding_mon.exp; + m_ptr->nickname = party_mon[i].nickname; + m_ptr->energy = party_mon[i].energy; + m_ptr->exp = party_mon[i].exp; set_pet(m_ptr); - + if ((r_ptr->flags1 & RF1_FORCE_SLEEP) && !ironman_nightmare) { /* Monster is still being nice */ m_ptr->mflag |= (MFLAG_NICE); - + /* Must repair monsters */ repair_monsters = TRUE; } - + /* Update the monster */ - update_mon(p_ptr->riding, TRUE); - + update_mon(m_idx, TRUE); + lite_spot(cy, cx); + r_ptr->cur_num++; - + /* Hack -- Count the number of "reproducers" */ if (r_ptr->flags2 & RF2_MULTIPLY) num_repro++; - + /* Hack -- Notice new multi-hued monsters */ if (r_ptr->flags1 & RF1_ATTR_MULTI) shimmer_monsters = TRUE; } else { char m_name[80]; - - monster_desc(m_name, &riding_mon, 0); + + monster_desc(m_name, &party_mon[i], 0); #ifdef JP -msg_format("%s¤È¤Ï¤°¤ì¤Æ¤·¤Þ¤Ã¤¿¡£", m_name); + msg_format("%s¤È¤Ï¤°¤ì¤Æ¤·¤Þ¤Ã¤¿¡£", m_name); #else msg_format("You have lost sight of %s.", m_name); #endif - if (record_named_pet && riding_mon.nickname) + if (record_named_pet && party_mon[i].nickname) { - monster_desc(m_name, &riding_mon, 0x08); + monster_desc(m_name, &party_mon[i], 0x08); do_cmd_write_nikki(NIKKI_NAMED_PET, 5, m_name); } - p_ptr->riding = 0; - } - } - - if (p_ptr->wild_mode) - { - for (i = 0; i < 20; i++) - { - if (party_mon[i].r_idx) - { - char m_name[80]; - - monster_desc(m_name, &party_mon[i], 0); -#ifdef JP -msg_format("%s¤È¤Ï¤°¤ì¤Æ¤·¤Þ¤Ã¤¿¡£", m_name); -#else - msg_format("You have lost sight of %s.", m_name); -#endif - if (record_named_pet && party_mon[i].nickname) - { - monster_desc(m_name, &party_mon[i], 0x08); - do_cmd_write_nikki(NIKKI_NAMED_PET, 5, m_name); - } - } - } - return; - } - for (i = 0; i < 20; i++) - { - if (party_mon[i].r_idx) - { - int cy, cx, m_idx, j, d; - for(d = 1; d < 6; d++) - { - for(j = 1000; j > 0; j--) - { - scatter(&cy, &cx, py, px, d, 0); - if ((cave_floor_bold(cy, cx) || (cave[cy][cx].feat == FEAT_TREES)) && !cave[cy][cx].m_idx && !((cy == py) && (cx == px))) break; - } - if (j) break; - } - if (d == 6 || p_ptr->inside_arena || p_ptr->inside_battle) - { - char m_name[80]; - - monster_desc(m_name, &party_mon[i], 0); -#ifdef JP -msg_format("%s¤È¤Ï¤°¤ì¤Æ¤·¤Þ¤Ã¤¿¡£", m_name); -#else - msg_format("You have lost sight of %s.", m_name); -#endif - if (record_named_pet && party_mon[i].nickname) - { - monster_desc(m_name, &party_mon[i], 0x08); - do_cmd_write_nikki(NIKKI_NAMED_PET, 5, m_name); - } - continue; - } - m_idx = m_pop(); - - if (m_idx) - { - monster_type *m_ptr = &m_list[m_idx]; - monster_race *r_ptr = &r_info[m_ptr->r_idx]; - - cave[cy][cx].m_idx = m_idx; - m_ptr->r_idx = party_mon[i].r_idx; - m_ptr->fy = cy; - m_ptr->fx = cx; - m_ptr->cdis = party_mon[i].cdis; - m_ptr->mflag = party_mon[i].mflag; - m_ptr->mflag2 = party_mon[i].mflag2; - m_ptr->ml = TRUE; - m_ptr->hp = party_mon[i].hp; - m_ptr->maxhp = party_mon[i].maxhp; - m_ptr->max_maxhp = party_mon[i].max_maxhp; - m_ptr->mspeed = party_mon[i].mspeed; - m_ptr->fast = party_mon[i].fast; - m_ptr->slow = party_mon[i].slow; - m_ptr->stunned = party_mon[i].stunned; - m_ptr->confused = party_mon[i].confused; - m_ptr->monfear = party_mon[i].monfear; - m_ptr->invulner = party_mon[i].invulner; - m_ptr->smart = party_mon[i].smart; - m_ptr->csleep = 0; - m_ptr->nickname = party_mon[i].nickname; - m_ptr->energy = party_mon[i].energy; - m_ptr->exp = party_mon[i].exp; - set_pet(m_ptr); - - if ((r_ptr->flags1 & RF1_FORCE_SLEEP) && !ironman_nightmare) - { - /* Monster is still being nice */ - m_ptr->mflag |= (MFLAG_NICE); - - /* Must repair monsters */ - repair_monsters = TRUE; - } - - /* Update the monster */ - update_mon(m_idx, TRUE); - lite_spot(cy, cx); - - r_ptr->cur_num++; - - /* Hack -- Count the number of "reproducers" */ - if (r_ptr->flags2 & RF2_MULTIPLY) num_repro++; - - /* Hack -- Notice new multi-hued monsters */ - if (r_ptr->flags1 & RF1_ATTR_MULTI) shimmer_monsters = TRUE; - } - else - { - char m_name[80]; - - monster_desc(m_name, &party_mon[i], 0); -#ifdef JP -msg_format("%s¤È¤Ï¤°¤ì¤Æ¤·¤Þ¤Ã¤¿¡£", m_name); -#else - msg_format("You have lost sight of %s.", m_name); -#endif - if (record_named_pet && party_mon[i].nickname) - { - monster_desc(m_name, &party_mon[i], 0x08); - do_cmd_write_nikki(NIKKI_NAMED_PET, 5, m_name); - } - } } } } diff --git a/src/variable.c b/src/variable.c index c9a4d4a62..73398bc18 100644 --- a/src/variable.c +++ b/src/variable.c @@ -1176,8 +1176,7 @@ int riding_t_m_idx; s16b kubi_r_idx[MAX_KUBI]; s16b today_mon; -monster_type riding_mon; -monster_type party_mon[20]; +monster_type party_mon[21]; bool write_level; diff --git a/src/xtra1.c b/src/xtra1.c index a3690d05a..b8619c98e 100644 --- a/src/xtra1.c +++ b/src/xtra1.c @@ -3264,7 +3264,7 @@ void calc_bonuses(void) /* Your horse or riding monster */ if (death) - riding_m_ptr = &riding_mon; + riding_m_ptr = &party_mon[0]; else riding_m_ptr = &m_list[p_ptr->riding]; -- 2.11.0