From 2af84a1dc526c634dd29f3b5f87299c8e026b110 Mon Sep 17 00:00:00 2001 From: Jude Brown Date: Sun, 29 Nov 2009 18:06:05 +1000 Subject: Reset uniques and unrands when a level is vetoed. --- crawl-ref/source/dungeon.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'crawl-ref/source/dungeon.cc') diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index c0147fb63b..e79550a2c7 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -248,6 +248,9 @@ static bool _fixup_interlevel_connectivity(); map_mask dgn_Map_Mask; std::vector Level_Vaults; std::vector Temp_Vaults; +FixedVector temp_unique_creatures; +FixedVector temp_unique_items; + std::set Level_Unique_Maps; std::set Level_Unique_Tags; std::string dgn_Build_Method; @@ -955,6 +958,9 @@ void dgn_reset_level() Level_Unique_Maps.clear(); Level_Unique_Tags.clear(); + you.unique_creatures = temp_unique_creatures; + you.unique_items = temp_unique_items; + _portal_vault_map_name.clear(); _you_vault_list.clear(); dgn_Build_Method.clear(); @@ -1822,6 +1828,11 @@ static void _build_dungeon_level(int level_number, int level_type) return; } + // Save a copy of unique creatures in case we get vetoed. + temp_unique_creatures = you.unique_creatures; + // And unrands + temp_unique_items = you.unique_items; + // Try to place minivaults that really badly want to be placed. Still // no guarantees, seeing this is a minivault. _place_minivaults(); -- cgit v1.2.3-54-g00ecf