diff options
author | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-12-23 01:49:34 +0000 |
---|---|---|
committer | zelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-12-23 01:49:34 +0000 |
commit | a792e2a40b177ed0bc4bb31c40be1b6a5af9bae9 (patch) | |
tree | e22ec612415cd337f08bc17b97490005275db4b8 /crawl-ref/source/dungeon.cc | |
parent | 8bb3d6a64ba1a6fd46cb19f49d7bbdcf9f0ce27d (diff) | |
download | crawl-ref-a792e2a40b177ed0bc4bb31c40be1b6a5af9bae9.tar.gz crawl-ref-a792e2a40b177ed0bc4bb31c40be1b6a5af9bae9.zip |
Possibly detect and work around bug #2455248: if a map for a specific place
(e.g., Slime:6) tries to place a unique monster which has already been
generated elsewhere then force it to be placed anyways and give an error
message.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7913 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r-- | crawl-ref/source/dungeon.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index 3a43bfe349..f831d7254d 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -5034,7 +5034,23 @@ static void _vault_grid( vault_placement &place, monster_level = 30; if (vgrid != '8' && vgrid != '9' && vgrid != '0') + { monster_type_thing = place.map.mons.get_monster(vgrid - '1'); + // Is a map for a specific place trying to place a unique which + // somehow already got created? + if (place.map.place.is_valid() + && !invalid_monster_class(monster_type_thing.mid) + && mons_is_unique(monster_type_thing.mid) + && you.unique_creatures[monster_type_thing.mid]) + { + mprf(MSGCH_ERROR, "ERROR: %s already generated somewhere " + "else; please file a bug report.", + mons_type_name(monster_type_thing.mid, + DESC_CAP_THE).c_str()); + // Force it to be generated anyways. + you.unique_creatures[monster_type_thing.mid] = false; + } + } _dgn_place_monster(place, monster_type_thing, monster_level, where); } |