#include "angband.h"
#include "trap.h"
+#include "monster.h"
+#include "artifact.h"
+#include "cmd-activate.h"
static errr parse_line_building(char *buf)
{
int i;
- char *zz[37];
+ char *zz[1000];
int index;
char *s;
/* 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':