OSDN Git Service

[Refactor] #37353 グローバル変数 dungeon_type を他の慣例に従い dungeon_idx に改名。 / Rename dungeon_typ...
[hengband/hengband.git] / src / init1.c
index 7010093..d4ba605 100644 (file)
@@ -48,6 +48,9 @@
 
 #include "angband.h"
 #include "trap.h"
+#include "monster.h"
+#include "artifact.h"
+#include "cmd-activate.h"
 
 
 
@@ -3752,7 +3755,7 @@ static errr parse_line_feature(char *buf)
 static errr parse_line_building(char *buf)
 {
        int i;
-       char *zz[37];
+       char *zz[1000];
        int index;
        char *s;
 
@@ -3838,49 +3841,37 @@ static errr parse_line_building(char *buf)
                /* Building Classes */
                case 'C':
                {
-                       if (tokenize(s + 2, MAX_CLASS, zz, 0) == MAX_CLASS)
-                       {
-                               for (i = 0; i < MAX_CLASS; i++)
-                               {
-                                       building[index].member_class[i] = (CLASS_IDX)atoi(zz[i]);
-                               }
-
-                               break;
+                       int n;
+                       n = tokenize(s + 2, MAX_CLASS, zz, 0);
+                       for (i = 0; i < MAX_CLASS; i++)
+                       {       
+                               building[index].member_class[i] = ((i < n) ? (CLASS_IDX)atoi(zz[i]) : 1);
                        }
-
-                       return (PARSE_ERROR_TOO_FEW_ARGUMENTS);
+                       break;
                }
 
                /* Building Races */
                case 'R':
                {
-                       if (tokenize(s+2, MAX_RACES, zz, 0) == MAX_RACES)
+                       int n;
+                       n = tokenize(s + 2, MAX_RACES, zz, 0);
+                       for (i = 0; i < MAX_RACES; i++)
                        {
-                               for (i = 0; i < MAX_RACES; i++)
-                               {
-                                       building[index].member_race[i] = (RACE_IDX)atoi(zz[i]);
-                               }
-
-                               break;
+                               building[index].member_race[i] = ((i < n) ? (RACE_IDX)atoi(zz[i]) : 1);
                        }
-
-                       return (PARSE_ERROR_TOO_FEW_ARGUMENTS);
+                       break;
                }
 
                /* Building Realms */
                case 'M':
                {
-                       if (tokenize(s+2, MAX_MAGIC, zz, 0) == MAX_MAGIC)
+                       int n;
+                       n = tokenize(s + 2, MAX_MAGIC, zz, 0);
+                       for (i = 0; i < MAX_MAGIC; i++)
                        {
-                               for (i = 0; i < MAX_MAGIC; i++)
-                               {
-                                       building[index].member_realm[i+1] = (REALM_IDX)atoi(zz[i]);
-                               }
-
-                               break;
+                               building[index].member_realm[i+1] = ((i < n) ? (REALM_IDX)atoi(zz[i]) : 1);
                        }
-
-                       return (PARSE_ERROR_TOO_FEW_ARGUMENTS);
+                       break;
                }
 
                case 'Z':