や*破壊*が生成されるのを待たなくとも狭い階でのプレイヤー配置をしやす
いように変更. また, alloc_stairs()ではwalls == 0で階段配置に失敗した
ら失敗を返し, アイテムで埋まった階で無限ループに陥らないように修正.
for (i = 0; i < num; i++)
{
/* Try several times */
- for (flag = FALSE; !flag; )
+ for (flag = FALSE; !flag && (walls >= 0); walls--)
{
/* Try several times, then decrease "walls" */
for (j = 0; j <= 3000; j++)
}
/* Require fewer walls */
- if (walls) walls--;
}
+
+ if (!flag) return FALSE;
}
return TRUE;
}
/* Assume normal cave */
room_info_type *room_info_ptr = room_info_normal;
+ bool greater_vault_only = FALSE;
+
/*
* Initialize probability list.
*/
if (i == ROOM_T_GREATER_VAULT) prob_list[i] = 1;
else prob_list[i] = 0;
}
+
+ greater_vault_only = TRUE;
}
/* Forbidden vaults */
}
}
+ if (greater_vault_only)
+ {
+ /* Increase the room built count. */
+ if (room_build(ROOM_T_NORMAL)) rooms_built++;
+ else return FALSE;
+ }
+
/*
* Build each type of room one by one until we cannot build any more.
* [from SAngband (originally from OAngband)]