summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dungeon.cc
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2008-12-23 01:49:34 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2008-12-23 01:49:34 +0000
commita792e2a40b177ed0bc4bb31c40be1b6a5af9bae9 (patch)
treee22ec612415cd337f08bc17b97490005275db4b8 /crawl-ref/source/dungeon.cc
parent8bb3d6a64ba1a6fd46cb19f49d7bbdcf9f0ce27d (diff)
downloadcrawl-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.cc16
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);
}