OSDN Git Service

死亡/勝利 ダンプの主なペットの表示をちゃんとするように修正。
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 3 Feb 2002 18:53:22 +0000 (18:53 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sun, 3 Feb 2002 18:53:22 +0000 (18:53 +0000)
その仮定で riding_mon を廃止、party_mon[0] を乗馬モンスターの保存用に仕様した。

src/dungeon.c
src/externs.h
src/files.c
src/generate.c
src/variable.c
src/xtra1.c

index b32efca..0201313 100644 (file)
@@ -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++;
index cb8a16d..dfc2133 100644 (file)
@@ -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;
index b6bee80..4456d42 100644 (file)
@@ -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");
                }
index f2bb695..6e82837 100644 (file)
@@ -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);
-                               }
-                       }
                }
        }
 }
index c9a4d4a..73398bc 100644 (file)
@@ -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;
 
index a3690d0..b8619c9 100644 (file)
@@ -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];