diff options
author | Jude Brown <bookofjude@users.sourceforge.net> | 2009-11-29 18:06:05 +1000 |
---|---|---|
committer | Jude Brown <bookofjude@users.sourceforge.net> | 2009-11-29 18:06:05 +1000 |
commit | 2af84a1dc526c634dd29f3b5f87299c8e026b110 (patch) | |
tree | 4c4471a7bffac879b817b3baf940c178272be368 /crawl-ref/source/dungeon.cc | |
parent | 0680cf8d68d7f51d7e8e2a52d03afe3e555bb8d4 (diff) | |
download | crawl-ref-2af84a1dc526c634dd29f3b5f87299c8e026b110.tar.gz crawl-ref-2af84a1dc526c634dd29f3b5f87299c8e026b110.zip |
Reset uniques and unrands when a level is vetoed.
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r-- | crawl-ref/source/dungeon.cc | 11 |
1 files changed, 11 insertions, 0 deletions
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<vault_placement> Level_Vaults; std::vector<vault_placement> Temp_Vaults; +FixedVector<bool, NUM_MONSTERS> temp_unique_creatures; +FixedVector<unique_item_status_type, MAX_UNRANDARTS> temp_unique_items; + std::set<std::string> Level_Unique_Maps; std::set<std::string> 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(); |