OSDN Git Service

Add Doxygen comment to cmd1.c.
[hengband/hengband.git] / src / init1.c
index c0bc33f..f290234 100644 (file)
@@ -507,7 +507,7 @@ static cptr r_info_flags7[] =
        "SELF_LITE_2",
        "GUARDIAN",
        "CHAMELEON",
-       "KILL_EXP",
+       "XXXX4XXX",
        "TANUKI",
        "HAS_DARK_1",
        "SELF_DARK_1",
@@ -730,7 +730,7 @@ static cptr k_info_flags[] =
        "WARNING",
        "HIDE_TYPE",
        "SHOW_MODS",
-       "XXX1",
+       "SLAY_GOOD",
        "LEVITATION",
        "LITE",
        "SEE_INVIS",
@@ -748,9 +748,9 @@ static cptr k_info_flags[] =
        "TELEPORT",
        "AGGRAVATE",
        "BLESSED",
-       "XXX3",
-       "XXX4",
-       "XXX5",
+       "XXX3", /* Fake flag for Smith */
+       "XXX4", /* Fake flag for Smith */
+       "KILL_GOOD",
 
        "KILL_ANIMAL",
        "KILL_EVIL",
@@ -774,9 +774,30 @@ static cptr k_info_flags[] =
        "ESP_UNIQUE",
        "FULL_NAME",
        "FIXED_FLAVOR",
+       "ADD_L_CURSE",
+       "ADD_H_CURSE",
+       "DRAIN_HP",
+       "DRAIN_MANA",
+       
+       "LITE_2",
+       "LITE_3",
+       "LITE_M1",
+       "LITE_M2",
+       "LITE_M3",
+       "LITE_FUEL",
+       
+       "CALL_ANIMAL",
+       "CALL_DEMON",
+       "CALL_DRAGON",
+       "CALL_UNDEAD",
+       "COWARDICE",
+       "LOW_MELEE",
+       "LOW_AC",
+       "LOW_MAGIC",
+       "FAST_DIGEST",
+       "SLOW_REGEN",
 };
 
-
 static cptr k_info_gen_flags[] =
 {
        "INSTA_ART",
@@ -796,7 +817,7 @@ static cptr k_info_gen_flags[] =
        "RANDOM_CURSE1",
        "RANDOM_CURSE2",
        "XTRA_DICE",
-       "XXX",
+       "POWERFUL",
        "XXX",
        "XXX",
        "XXX",
@@ -814,139 +835,6 @@ static cptr k_info_gen_flags[] =
 };
 
 /*
- * Activate flags
- */
-struct k_info_activation_flag
-{
-       cptr flag;
-       byte index;
-} k_info_activation_flags[] =
-{
-       { "SUNLIGHT", ACT_SUNLIGHT },
-       { "BO_MISS_1", ACT_BO_MISS_1 },
-       { "BA_POIS_1", ACT_BA_POIS_1 },
-       { "BO_ELEC_1", ACT_BO_ELEC_1 },
-       { "BO_ACID_1", ACT_BO_ACID_1 },
-       { "BO_COLD_1", ACT_BO_COLD_1 },
-       { "BO_FIRE_1", ACT_BO_FIRE_1 },
-       { "BA_COLD_1", ACT_BA_COLD_1 },
-       { "BA_FIRE_1", ACT_BA_FIRE_1 },
-       { "DRAIN_1", ACT_DRAIN_1 },
-       { "BA_COLD_2", ACT_BA_COLD_2 },
-       { "BA_ELEC_2", ACT_BA_ELEC_2 },
-       { "DRAIN_2", ACT_DRAIN_2 },
-       { "VAMPIRE_1", ACT_VAMPIRE_1 },
-       { "BO_MISS_2", ACT_BO_MISS_2 },
-       { "BA_FIRE_3", ACT_BA_FIRE_3 },
-       { "BA_COLD_3", ACT_BA_COLD_3 },
-       { "BA_ELEC_3", ACT_BA_ELEC_3 },
-       { "WHIRLWIND", ACT_WHIRLWIND },
-       { "VAMPIRE_2", ACT_VAMPIRE_2 },
-       { "CALL_CHAOS", ACT_CALL_CHAOS },
-       { "ROCKET", ACT_ROCKET },
-       { "DISP_EVIL", ACT_DISP_EVIL },
-       { "BA_MISS_3", ACT_BA_MISS_3 },
-       { "DISP_GOOD", ACT_DISP_GOOD },
-       { "BO_MANA", ACT_BO_MANA },
-       { "BA_FIRE_2", ACT_BA_FIRE_2 },
-       { "BA_WATER", ACT_BA_WATER },
-       { "BA_STAR", ACT_BA_STAR },
-       { "BA_DARK", ACT_BA_DARK },
-       { "BA_MANA", ACT_BA_MANA },
-       { "PESTICIDE", ACT_PESTICIDE },
-       { "BLINDING_LIGHT", ACT_BLINDING_LIGHT },
-       { "BIZARRE", ACT_BIZARRE },
-       { "CAST_BA_STAR", ACT_CAST_BA_STAR },
-       { "BLADETURNER", ACT_BLADETURNER },
-
-       { "CONFUSE", ACT_CONFUSE },
-       { "SLEEP", ACT_SLEEP },
-       { "QUAKE", ACT_QUAKE },
-       { "TERROR", ACT_TERROR },
-       { "TELE_AWAY", ACT_TELE_AWAY },
-       { "BANISH_EVIL", ACT_BANISH_EVIL },
-       { "GENOCIDE", ACT_GENOCIDE },
-       { "MASS_GENO", ACT_MASS_GENO },
-       { "SCARE_AREA", ACT_SCARE_AREA },
-       { "AGGRAVATE", ACT_AGGRAVATE },
-
-       { "CHARM_ANIMAL", ACT_CHARM_ANIMAL },
-       { "CHARM_UNDEAD", ACT_CHARM_UNDEAD },
-       { "CHARM_OTHER", ACT_CHARM_OTHER },
-       { "CHARM_ANIMALS", ACT_CHARM_ANIMALS },
-       { "CHARM_OTHERS", ACT_CHARM_OTHERS },
-       { "SUMMON_ANIMAL", ACT_SUMMON_ANIMAL },
-       { "SUMMON_PHANTOM", ACT_SUMMON_PHANTOM },
-       { "SUMMON_ELEMENTAL", ACT_SUMMON_ELEMENTAL },
-       { "SUMMON_DEMON", ACT_SUMMON_DEMON },
-       { "SUMMON_UNDEAD", ACT_SUMMON_UNDEAD },
-       { "SUMMON_HOUND", ACT_SUMMON_HOUND },
-       { "SUMMON_DAWN", ACT_SUMMON_DAWN },
-       { "SUMMON_OCTOPUS", ACT_SUMMON_OCTOPUS },
-
-       { "CHOIR_SINGS", ACT_CHOIR_SINGS },
-       { "CURE_LW", ACT_CURE_LW },
-       { "CURE_MW", ACT_CURE_MW },
-       { "CURE_POISON", ACT_CURE_POISON },
-       { "REST_LIFE", ACT_REST_LIFE },
-       { "REST_ALL", ACT_REST_ALL },
-       { "CURE_700", ACT_CURE_700 },
-       { "CURE_1000", ACT_CURE_1000 },
-       { "CURING", ACT_CURING },
-       { "CURE_MANA_FULL", ACT_CURE_MANA_FULL },
-
-       { "ESP", ACT_ESP },
-       { "BERSERK", ACT_BERSERK },
-       { "PROT_EVIL", ACT_PROT_EVIL },
-       { "RESIST_ALL", ACT_RESIST_ALL },
-       { "SPEED", ACT_SPEED },
-       { "XTRA_SPEED", ACT_XTRA_SPEED },
-       { "WRAITH", ACT_WRAITH },
-       { "INVULN", ACT_INVULN },
-       { "HELO", ACT_HELO },
-       { "HELO_SPEED", ACT_HELO_SPEED },
-       { "RESIST_ACID", ACT_RESIST_ACID },
-       { "RESIST_FIRE", ACT_RESIST_ACID },
-       { "RESIST_COLD", ACT_RESIST_ACID },
-       { "RESIST_ELEC", ACT_RESIST_ACID },
-       { "RESIST_POIS", ACT_RESIST_ACID },
-
-       { "LIGHT", ACT_LIGHT },
-       { "MAP_LIGHT", ACT_MAP_LIGHT },
-       { "DETECT_ALL", ACT_DETECT_ALL },
-       { "DETECT_XTRA", ACT_DETECT_XTRA },
-       { "ID_FULL", ACT_ID_FULL },
-       { "ID_PLAIN", ACT_ID_PLAIN },
-       { "RUNE_EXPLO", ACT_RUNE_EXPLO },
-       { "RUNE_PROT", ACT_RUNE_PROT },
-       { "SATIATE", ACT_SATIATE },
-       { "DEST_DOOR", ACT_DEST_DOOR },
-       { "STONE_MUD", ACT_STONE_MUD },
-       { "RECHARGE", ACT_RECHARGE },
-       { "ALCHEMY", ACT_ALCHEMY },
-       { "DIM_DOOR", ACT_DIM_DOOR },
-       { "TELEPORT", ACT_TELEPORT },
-       { "RECALL", ACT_RECALL },
-       { "JUDGE", ACT_JUDGE },
-       { "TELEKINESIS", ACT_TELEKINESIS },
-       { "DETECT_UNIQUE", ACT_DETECT_UNIQUE },
-       { "ESCAPE", ACT_ESCAPE },
-       { "DISP_CURSE_XTRA", ACT_DISP_CURSE_XTRA },
-       { "BRAND_FIRE_BOLTS", ACT_BRAND_FIRE_BOLTS },
-       { "RECHARGE_XTRA", ACT_RECHARGE_XTRA },
-       { "LORE", ACT_LORE },
-       { "SHIKOFUMI", ACT_SHIKOFUMI },
-
-       { "FISHING", ACT_FISHING },
-       { "INROU", ACT_INROU },
-       { "MURAMASA", ACT_MURAMASA },
-       { "BLOODY_MOON", ACT_BLOODY_MOON },
-       { "CRIMSON", ACT_CRIMSON },
-
-       { NULL, 0 }
-};
-
-/*
  * Dungeon flags
  */
 static cptr d_info_flags1[] =
@@ -963,7 +851,7 @@ static cptr d_info_flags1[] =
        "GLASS_DOOR",
        "CAVE",
        "CAVERN",
-       "XXX",
+       "ARCADE",
        "XXX",
        "XXX",
        "XXX",
@@ -1977,6 +1865,40 @@ static errr grab_one_kind_flag(object_kind *k_ptr, cptr what)
        return (1);
 }
 
+/*
+ * Grab one activation index flag
+ */
+static byte grab_one_activation_flag(cptr what)
+{
+       int i;
+
+       for (i = 0; ; i++)
+       {
+               if (activation_info[i].flag == NULL) break;
+
+               if (streq(what, activation_info[i].flag))
+               {
+                       return activation_info[i].index;
+               }
+       }
+
+       i = atoi(what);
+        if (i > 0)
+        {
+                return ((byte) i);
+        }
+
+       /* Oops */
+#ifdef JP
+       msg_format("̤ÃΤÎȯư¡¦¥Õ¥é¥° '%s'¡£", what);
+#else
+       msg_format("Unknown activation flag '%s'.", what);
+#endif
+
+       /* Error */
+       return (0);
+}
+
 
 /*
  * Initialize the "k_info" array, by parsing an ascii "template" file
@@ -2204,6 +2126,21 @@ errr parse_k_info(char *buf, header *head)
                k_ptr->to_a =  ta;
        }
 
+       /* Hack -- Process 'U' for activation index */
+       else if (buf[0] == 'U')
+       {
+               byte n;
+               n = grab_one_activation_flag(buf + 2);
+               if (n > 0)
+               {
+                       k_ptr->act_idx = n;
+               }
+               else
+               {
+                       return (5);
+               }
+       }
+
        /* Hack -- Process 'F' for flags */
        else if (buf[0] == 'F')
        {
@@ -2270,40 +2207,6 @@ static errr grab_one_artifact_flag(artifact_type *a_ptr, cptr what)
        return (1);
 }
 
-/*
- * Grab one activation index flag
- */
-static byte grab_one_activation_flag(cptr what)
-{
-       int i;
-
-       for (i = 0; ; i++)
-       {
-               if (k_info_activation_flags[i].flag == NULL) break;
-
-               if (streq(what, k_info_activation_flags[i].flag))
-               {
-                       return k_info_activation_flags[i].index;
-               }
-       }
-
-       i = atoi(what);
-        if (i > 0)
-        {
-                return ((byte) i);
-        }
-
-       /* Oops */
-#ifdef JP
-       msg_format("̤ÃΤÎȯư¡¦¥Õ¥é¥° '%s'¡£", what);
-#else
-       msg_format("Unknown activation flag '%s'.", what);
-#endif
-
-       /* Error */
-       return (0);
-}
-
 
 /*
  * Initialize the "a_info" array, by parsing an ascii "template" file
@@ -2670,6 +2573,21 @@ errr parse_e_info(char *buf, header *head)
                e_ptr->max_pval = pv;
        }
 
+       /* Hack -- Process 'U' for activation index */
+       else if (buf[0] == 'U')
+       {
+               byte n;
+               n = grab_one_activation_flag(buf + 2);
+               if (n > 0)
+               {
+                       e_ptr->act_idx = n;
+               }
+               else
+               {
+                       return (5);
+               }
+       }
+
        /* Hack -- Process 'F' for flags */
        else if (buf[0] == 'F')
        {
@@ -2927,6 +2845,23 @@ errr parse_r_info(char *buf, header *head)
                r_ptr->next_r_idx = nextmon;
        }
 
+       /* Process 'R' for "Reinforcement" (up to six lines) */
+       else if (buf[0] == 'R')
+       {
+               int id, ds, dd;
+               /* Find the next empty blow slot (if any) */
+               for (i = 0; i < 6; i++) if (r_ptr->reinforce_id[i] == 0) break;
+
+               /* Oops, no more slots */
+               if (i == 6) return (1);
+
+               /* Scan for the values */
+               if (3 != sscanf(buf+2, "%d:%dd%d", &id, &dd, &ds)) return (1);
+               r_ptr->reinforce_id[i] = id;
+               r_ptr->reinforce_dd[i] = dd;
+               r_ptr->reinforce_ds[i] = ds;
+       }
+
        /* Process 'B' for "Blows" (up to four lines) */
        else if (buf[0] == 'B')
        {
@@ -3848,7 +3783,7 @@ static errr process_dungeon_file_aux(char *buf, int ymin, int xmin, int ymax, in
        if (!buf[0]) return (0);
 
        /* Skip "blank" lines */
-       if (isspace(buf[0])) return (0);
+       if (iswspace(buf[0])) return (0);
 
        /* Skip comments */
        if (buf[0] == '#') return (0);
@@ -4337,7 +4272,7 @@ static cptr process_dungeon_file_expr(char **sp, char *fp)
        s = (*sp);
 
        /* Skip spaces */
-       while (isspace(*s)) s++;
+       while (iswspace(*s)) s++;
 
        /* Save start */
        b = s;
@@ -4687,7 +4622,7 @@ errr process_dungeon_file(cptr name, int ymin, int xmin, int ymax, int xmax)
                if (!buf[0]) continue;
 
                /* Skip "blank" lines */
-               if (isspace(buf[0])) continue;
+               if (iswspace(buf[0])) continue;
 
                /* Skip comments */
                if (buf[0] == '#') continue;
@@ -4950,7 +4885,7 @@ void write_r_info_txt(void)
                        /* Start the line */
                        sprintf(buf, "D:");
 
-                       for (bc = 0, t = buf + 2; ((bc < 60) || !isspace(desc[j])) && (j < dlen); j++, bc++, t++)
+                       for (bc = 0, t = buf + 2; ((bc < 60) || !iswspace(desc[j])) && (j < dlen); j++, bc++, t++)
                        {
                                *t = desc[j];
                        }