OSDN Git Service

ダンプ出力時に覚えた青魔法も表示するようにした。
authornsk <nsk@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 7 Jun 2003 12:29:06 +0000 (12:29 +0000)
committernsk <nsk@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 7 Jun 2003 12:29:06 +0000 (12:29 +0000)
src/defines.h
src/externs.h
src/files.c
src/mspells3.c
src/tables.c

index 3af846b..bf10474 100644 (file)
        (RF6_BREATH_MASK | RF6_SPECIAL)
 
 
+/*
+ * Hack -- unused spells
+ */
+
+#define RF4_XXX_MASK \
+       (RF4_XXX1 | RF4_XXX2 | RF4_XXX3 | RF4_XXX4)
+
+
 #define MR1_SINKA 0x01
 
 
@@ -4502,6 +4510,11 @@ extern int PlayerUID;
 
 #define MAX_MANE 16
 #define MAX_MONSPELLS 96
+#define MONSPELL_TYPE_BOLT 1
+#define MONSPELL_TYPE_BALL 2
+#define MONSPELL_TYPE_BREATH 3
+#define MONSPELL_TYPE_SUMMON 4
+#define MONSPELL_TYPE_OTHER 5
 
 #define EATER_EXT 36
 #define EATER_CHARGE 0x10000L
index 2b19fac..a4ef7e2 100644 (file)
@@ -113,6 +113,7 @@ extern cptr silly_attacks[MAX_SILLY_ATTACK];
 extern cptr silly_attacks2[MAX_SILLY_ATTACK];
 #endif
 extern monster_power monster_powers[MAX_MONSPELLS];
+extern cptr monster_powers_short[MAX_MONSPELLS];
 extern cptr ident_info[];
 extern mbe_info_type mbe_info[];
 
@@ -1394,6 +1395,7 @@ extern bool do_cmd_mane(bool baigaesi);
 /* mspells3.c */
 extern bool do_cmd_cast_learned(void);
 extern void learn_spell(int monspell);
+extern void set_rf_masks(s32b *f4, s32b *f5, s32b *f6, int mode);
 
 /* hissatsu.c */
 extern void hissatsu_info(char *p, int power);
index c353d8a..f47dada 100644 (file)
@@ -4096,6 +4096,144 @@ errr make_character_dump(FILE *fff)
                if (pet) fprintf(fff, "\n");
        }
 
+
+       if (p_ptr->pclass == CLASS_BLUE_MAGE) {
+
+               int             i = 0;
+               int                 j = 0;
+               int                             l1 = 0;
+               int                             l2 = 0;
+               int             num = 0;
+               int             spellnum[MAX_MONSPELLS];
+               s32b            f4 = 0, f5 = 0, f6 = 0;
+               char                    p[60][80];
+               int                             col = 0;
+               bool                    pcol = FALSE;
+
+               for (i=0;i<60;i++) { p[i][0] = '\0'; }
+
+#ifdef JP
+               strcat(p[col], "\n  [³Ø½¬ºÑ¤ß¤ÎÀÄËâË¡]\n");
+#else
+               strcat(p[col], "\n  [Learned blue magic]\n");
+#endif
+
+
+               for (j=1;j<6;j++)
+               {
+                       col++;
+                       set_rf_masks(&f4, &f5, &f6, j);
+                       switch(j)
+                       {
+                               case MONSPELL_TYPE_BOLT:
+#ifdef JP
+                                       strcat(p[col], "\n     [¥Ü¥ë¥È·¿]\n");
+#else
+                                       strcat(p[col], "\n     [Bolt  type]\n");
+#endif
+                                       break;
+
+                               case MONSPELL_TYPE_BALL:
+#ifdef JP
+                                       strcat(p[col], "\n     [¥Ü¡¼¥ë·¿]\n");
+#else
+                                       strcat(p[col], "\n     [Ball  type]\n");
+#endif
+                                       break;
+
+                               case MONSPELL_TYPE_BREATH:
+#ifdef JP
+                                       strcat(p[col], "\n     [¥Ö¥ì¥¹·¿]\n");
+#else
+                                       strcat(p[col], "\n     [  Breath  ]\n");
+#endif
+                                       break;
+
+                               case MONSPELL_TYPE_SUMMON:
+#ifdef JP
+                                       strcat(p[col], "\n     [¾¤´­ËâË¡]\n");
+#else
+                                       strcat(p[col], "\n     [Summonning]\n");
+#endif
+                                       break;
+
+                               case MONSPELL_TYPE_OTHER:
+#ifdef JP
+                                       strcat(p[col], "\n     [ ¤½¤Î¾ ]\n");
+#else
+                                       strcat(p[col], "\n     [Other type]\n");
+#endif
+                                       break;
+                       }
+
+                       for (i = 0, num = 0; i < 32; i++)
+                       {
+                               if ((0x00000001 << i) & f4) spellnum[num++] = i;
+                       }
+                       for (; i < 64; i++)
+                       {
+                               if ((0x00000001 << (i - 32)) & f5) spellnum[num++] = i;
+                       }
+                       for (; i < 96; i++)
+                       {
+                               if ((0x00000001 << (i - 64)) & f6) spellnum[num++] = i;
+                       }
+
+                       col++;
+                       pcol = FALSE;
+                       strcat(p[col], "       ");
+
+                       for (i = 0; i < num; i++)
+                       {
+                               if (p_ptr->magic_num2[spellnum[i]])
+                               {
+                                       pcol = TRUE;
+                                       /* Dump blue magic */
+                                       l1 = strlen(p[col]);
+                                       l2 = strlen(monster_powers_short[spellnum[i]]);
+                                       if ((l1 + l2) >= 75)
+                                       {
+                                               strcat(p[col], "\n");
+                                               col++;
+                                               strcat(p[col], "       ");
+                                       }
+                                       strcat(p[col], monster_powers_short[spellnum[i]]);
+                                       strcat(p[col], ", ");
+                               }
+                       }
+                       
+                       if (!pcol)
+                       {
+#ifdef JP
+                               strcat(p[col], "¤Ê¤·");
+#else
+                               strcat(p[col], "None");
+#endif
+                       }
+                       else
+                       {
+                               if (p[col][strlen(p[col])-2] == ',')
+                               {
+                                       p[col][strlen(p[col])-2] = '\0';
+                               }
+                               else
+                               {
+                                       p[col][strlen(p[col])-10] = '\0';
+                               }
+                       }
+                       
+                       strcat(p[col], "\n");
+               }
+
+               for (i=0;i<=col;i++)
+               {
+                       fprintf(fff, p[i]);
+               }
+       }
+
+       fprintf(fff, "\n");
+
+
 #ifdef JP
        fprintf(fff, "\n  [¥¯¥¨¥¹¥È¾ðÊó]\n");
 #else
index a7db86c..190df24 100644 (file)
@@ -385,36 +385,7 @@ cptr            p = "
        }
        }
 
-       if (mode == 1)
-       {
-               f4 = ((RF4_BOLT_MASK | RF4_BEAM_MASK) & ~(RF4_ROCKET));
-               f5 = RF5_BOLT_MASK | RF5_BEAM_MASK;
-               f6 = RF6_BOLT_MASK | RF6_BEAM_MASK;
-       }
-       else if (mode == 2)
-       {
-               f4 = (RF4_BALL_MASK & ~(RF4_BREATH_MASK));
-               f5 = (RF5_BALL_MASK & ~(RF5_BREATH_MASK));
-               f6 = (RF6_BALL_MASK & ~(RF6_BREATH_MASK));
-       }
-       else if (mode == 3)
-       {
-               f4 = RF4_BREATH_MASK;
-               f5 = RF5_BREATH_MASK;
-               f6 = RF6_BREATH_MASK;
-       }
-       else if (mode == 4)
-       {
-               f4 = RF4_SUMMON_MASK;
-               f5 = RF5_SUMMON_MASK;
-               f6 = RF6_SUMMON_MASK;
-       }
-       else if (mode == 5)
-       {
-               f4 = ~(RF4_BOLT_MASK | RF4_BEAM_MASK | RF4_BALL_MASK | RF4_SUMMON_MASK | RF4_INDIRECT_MASK | RF4_RIDING_MASK);
-               f5 = ~(RF5_BOLT_MASK | RF5_BEAM_MASK | RF5_BALL_MASK | RF5_SUMMON_MASK | RF5_INDIRECT_MASK | RF5_RIDING_MASK);
-               f6 = (~(RF6_BOLT_MASK | RF6_BEAM_MASK | RF6_BALL_MASK | RF6_SUMMON_MASK | RF6_INDIRECT_MASK | RF6_RIDING_MASK)) | (RF6_TRAPS | RF6_DARKNESS);
-       }
+       set_rf_masks(&f4, &f5, &f6, mode);
 
        for (i = 0, num = 0; i < 32; i++)
        {
@@ -2172,3 +2143,42 @@ void learn_spell(int monspell)
                p_ptr->redraw |= (PR_STATE);
        }
 }
+
+
+void set_rf_masks(s32b *f4,  s32b *f5, s32b *f6, int mode)
+{
+       switch(mode)
+       {
+               case MONSPELL_TYPE_BOLT:
+                       *f4 = ((RF4_BOLT_MASK | RF4_BEAM_MASK) & ~(RF4_ROCKET));
+                       *f5 = RF5_BOLT_MASK | RF5_BEAM_MASK;
+                       *f6 = RF6_BOLT_MASK | RF6_BEAM_MASK;
+                       break;
+
+               case MONSPELL_TYPE_BALL:
+                       *f4 = (RF4_BALL_MASK & ~(RF4_BREATH_MASK));
+                       *f5 = (RF5_BALL_MASK & ~(RF5_BREATH_MASK));
+                       *f6 = (RF6_BALL_MASK & ~(RF6_BREATH_MASK));
+                       break;
+
+               case MONSPELL_TYPE_BREATH:
+                       *f4 = RF4_BREATH_MASK;
+                       *f5 = RF5_BREATH_MASK;
+                       *f6 = RF6_BREATH_MASK;
+                       break;
+
+               case MONSPELL_TYPE_SUMMON:
+                       *f4 = RF4_SUMMON_MASK;
+                       *f5 = RF5_SUMMON_MASK;
+                       *f6 = RF6_SUMMON_MASK;
+                       break;
+
+               case MONSPELL_TYPE_OTHER:
+                       *f4 = ~(RF4_BOLT_MASK | RF4_BEAM_MASK | RF4_BALL_MASK | RF4_SUMMON_MASK | RF4_INDIRECT_MASK | RF4_RIDING_MASK | RF4_XXX_MASK);
+                       *f5 = ~(RF5_BOLT_MASK | RF5_BEAM_MASK | RF5_BALL_MASK | RF5_SUMMON_MASK | RF5_INDIRECT_MASK | RF5_RIDING_MASK);
+                       *f6 = (~(RF6_BOLT_MASK | RF6_BEAM_MASK | RF6_BALL_MASK | RF6_SUMMON_MASK | RF6_INDIRECT_MASK | RF6_RIDING_MASK)) | (RF6_TRAPS | RF6_DARKNESS);
+                       break;
+       }
+
+       return;
+}
index 2704c8a..0a88ce2 100644 (file)
@@ -6217,6 +6217,44 @@ monster_power monster_powers[MAX_MONSPELLS] =
 };
 
 
+cptr monster_powers_short[MAX_MONSPELLS] = {
+#ifdef JP
+
+       "¶«¤Ö", "²¿¤«", "ËâÎϾõî", "¥í¥±¥Ã¥È", "¼Í·â", "²¿¤«", "²¿¤«", "²¿¤«",
+       "»À", "ÅÅ·â", "²Ð±ê", "Î䵤", "ÆÇ", "ÃϹö", "Á®¸÷", "°Å¹õ",
+       "º®Íð", "¹ì²»", "¥«¥ª¥¹", "Îô²½", "°ø²Ìº®Íð", "»þ´ÖµÕž", "ÃÙÆß", "½ÅÎÏ",
+       "ÇËÊÒ", "¥×¥é¥º¥Þ", "¥Õ¥©¡¼¥¹", "ËâÎÏ", "Êü¼Íǽµå", "Êü¼ÍÀ­ÇÑ´þʪ", "½ã¥í¥°¥ë¥¹", "ʬ²ò",
+
+       "»À", "ÅÅ·â", "²Ð±ê", "Î䵤", "°­½­±À", "ÃϹöµå", "¥¦¥©¡¼¥¿¡¼", "ËâÎϤÎÍò",
+       "°Å¹õ¤ÎÍò", "ËâÎϵۼý", "Àº¿À¹¶·â", "Ǿ¹¶·â", "·Ú½ý", "½Å½ý", "Ã×Ì¿½ý", "È빦¤òÆͤ¯",
+       "»À", "ÅÅ·â", "²Ð±ê", "Î䵤", "¥¹¥¿¡¼¥Ð¡¼¥¹¥È", "ÃϹö¤ÎÌð", "¥¦¥©¡¼¥¿¡¼", "ËâÎϤÎÌð",
+       "¥×¥é¥º¥Þ", "¶Ë´¨", "¥Þ¥¸¥Ã¥¯¥ß¥µ¥¤¥ë", "¶²¹²", "ÌÕÌÜ", "º®Íð", "¸ºÂ®", "¿ç̲",
+
+       "²Ã®", "ÇËÌǤμê", "ÂÎÎϲóÉü", "̵½ý¤Îµå", "¥·¥ç¡¼¥È¥Æ¥ì¥Ý¡¼¥È", "¥Æ¥ì¥Ý¡¼¥È", "»þ¤ò»ß¤á¤ë", "²¿¤«",
+       "°ú¤­¤è¤»¤ë", "¥Æ¥ì¥Ý¡¼¥È¥¢¥¦¥§¥¤", "¥Æ¥ì¥Ý¡¼¥È¥ì¥Ù¥ë", "¸÷¤Î·õ", "°Å°Ç", "¥È¥é¥Ã¥×ÁϤ", "µ­²±ÁÓ¼º", "»à¼ÔÉü³è",
+       "±ç·³", "¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó", "¥â¥ó¥¹¥¿¡¼", "Ê£¿ô¤Î¥â¥ó¥¹¥¿¡¼", "µÂ", "ÃØéá", "¥Ï¥¦¥ó¥É", "¥Ò¥É¥é",
+       "Å·»È", "°­Ëâ", "¥¢¥ó¥Ç¥Ã¥É", "¥É¥é¥´¥ó", "¾åµé¥¢¥ó¥Ç¥Ã¥É", "¸ÅÂå¥É¥é¥´¥ó", "¥¢¥ó¥Ð¡¼¤Î²¦Â²", "¥æ¥Ë¡¼¥¯"
+
+#else
+
+       "Shriek", "Something", "Dispel-magic", "Rocket", "Arrow", "Arrows", "Missile", "Missiles",
+       "Acid", "Lightning", "Fire", "Cold", "Poison", "Nether", "Light", "Dark",
+       "Confusion", "Sound", "Chaos", "Disenchantment", "Nexus", "Time", "Inertia", "Gravity",
+       "Shards", "Plasma", "Force", "Mana", "Nuke", "Nuke", "Logrus", "Disintergrate",
+
+       "Acid", "Lightning", "Fire", "Frost", "Stinking Cloud", "Nether", "Water", "Mana storm",
+       "Darkness storm", "Drain mana", "Mind blast", "Brain smash", "Cause Light Wound", "Cause Serious Wound", "Cause Critical Wound", "Cause Mortal Wound",
+       "Acid", "Lightning", "Fire", "Frost", "Starburst", "Nether", "Water", "Mana",
+       "Plasm", "Ice", "Magic missile", "Scare", "Blind", "Confuse", "Slow", "Sleep",
+
+       "Speed", "Hand of doom", "Heal-self", "Invulnerable", "Blink", "Teleport", "The world", "Something",
+       "Teleport to", "Teleport away", "Teleport level", "Psycho-spear", "Create darkness", "Create traps", "Amnesia", "Raise dead",
+       "Aid", "Cyberdeamons", "A monster", "Monsters", "Ants", "Spiders", "Hounds", "Hydras",
+       "Angel", "Daemon", "Undead", "Dragon", "Greater Undead", "Ancient Dragon", "Lords of Amber", "Unique monsters"
+
+#endif
+};
+
 
 /*
  * Hack -- the "basic" color names (see "TERM_xxx")