level_range was segfaulting when compared against Abyss and Pan level_ids, fixed.
Fixed level_id operator < ().
Enabled use of vaults in non-Dungeon areas (Lair specific vaults were unused). These vaults are placed as extras, and are subject to the same constraints as branch entry vaults (the smaller the vault, the better the chance of being placed).
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1811 c06c8d41-db1a-0410-9941-cceddc491573
ZVK4J5HTKFNOOIVCI62ZWEYGXEE5TYJ65DLYYZAZWTADFSXE62ZAC
ANBVGN4RZOMY5LI4QSHOV2477FN55H353ZYLSVCPTXC7AWWSQZBAC
ECJNCUSSE63BKED3EAYIXQCI62I76QGNHCSFO3CDWPRZF3JQP44QC
6HG6JFO47Y3BZLU7Y6G3R2CX6JFGN4X5PKK6S5IGUXUYQ5GVZYFQC
T4IH76FA5TWHFOZUJFHLQXQJENJHWTUZZP4EGNA7D4GTZY7D4ZKAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
7KWDC7XFNMBLSUO2HISIROBINZBX5T67LJEEXTAORXW2YZ7VWFGAC
6QWZDCP5HGYLTJO3WWYJJGRRT7QFY6IG64TC7TUB553Z7GAA2HIQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
KXUQB3WNWC5IFL6VFWADEPQMMU3VV3NDI5FLA666PGOEWFYUHCLQC
WLX2RQMMOMP2PYPAGJRM4VFD2WTLJTOAZZPPY3MV76FU2EGEJ54QC
CUNNC574MESEMTTONZ6YB6CJ2S5P6VA3V7Z3OODESWAK37GYOBPAC
ZJLJGSB2XSBQU42OFQMXL3EG4CXAQGOYAU6YTV2SAWZEJIPFH2CAC
3XZOL3FFQZITUJIGDD6B6V6ZYMBN524JKNN6ZPJAXEC7RY433I3QC
MI7CWKRDXHAU7PIHLXXOSFBULRGT2OOMIMOSQLMVYOUVGABIVXGAC
return (level_type == LEVEL_DUNGEON?
branch == id.branch && depth == id.depth
&& level_type == id.level_type
: level_type == id.level_type);
return (level_type == id.level_type
&& (level_type != LEVEL_DUNGEON
|| (branch == id.branch && depth == id.depth)));
static bool mg_do_build_level(int niters)
{
mesclr();
mprf("On %s (%d); %d levels, %d failed, %d errors%s, %d maps",
level_id::current().describe().c_str(), niters,
mg_levels_tried, mg_levels_failed, mapgen_errors.size(),
mapgen_last_error.empty()? ""
: (" (" + mapgen_last_error + ")").c_str(),
mapgen_use_count.size());
no_messages mx;
for (int i = 0; i < niters; ++i)
{
if (kbhit() && getch() == ESCAPE)
return (false);
++mg_levels_tried;
if (!builder(you.your_level, you.level_type))
++mg_levels_failed;
}
return (true);
}
mesclr();
mprf("On %s (%d); %d levels, %d failed, %d errors%s, %d maps",
level_id::current().describe().c_str(), niters,
mg_levels_tried, mg_levels_failed, mapgen_errors.size(),
mapgen_last_error.empty()? ""
: (" (" + mapgen_last_error + ")").c_str(),
mapgen_use_count.size());
no_messages mx;
for (int i = 0; i < niters; ++i)
{
if (kbhit() && getch() == ESCAPE)
return;
++mg_levels_tried;
if (!builder(you.your_level, you.level_type))
++mg_levels_failed;
}
if (!mg_do_build_level(niters))
return;
std::vector<std::string> unused_maps;
for (int i = 0, size = map_count(); i < size; ++i)
{
const map_def *map = map_by_index(i);
if (mapgen_try_count.find(map->name) == mapgen_try_count.end()
&& !map->has_tag("dummy"))
{
unused_maps.push_back(map->name);
}
}
if (!unused_maps.empty())
{
fprintf(outf, "\n\nUnused maps:\n\n");
for (int i = 0, size = unused_maps.size(); i < size; ++i)
fprintf(outf, "%3d) %s\n", i + 1, unused_maps[i].c_str());
}