summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/dat/altar.des16
-rw-r--r--crawl-ref/source/dungeon.cc36
2 files changed, 38 insertions, 14 deletions
diff --git a/crawl-ref/source/dat/altar.des b/crawl-ref/source/dat/altar.des
index 64b26657bd..af1979eb5e 100644
--- a/crawl-ref/source/dat/altar.des
+++ b/crawl-ref/source/dat/altar.des
@@ -278,7 +278,7 @@ ENDMAP
# more than 12 gods.
NAME: fedhas_altar_1
-TAGS: uniq_altar_fedhas
+TAGS: uniq_altar_fedhas temple_overflow_fedhas
DEPTH: D:2-7
WEIGHT: 75
KFEAT: C = altar_fedhas
@@ -292,7 +292,7 @@ MAP
ENDMAP
NAME: fedhas_altar_2
-TAGS: uniq_altar_fedhas
+TAGS: uniq_altar_fedhas temple_overflow_fedhas
DEPTH: D:2-7
WEIGHT: 75
KFEAT: C = altar_fedhas
@@ -308,7 +308,7 @@ MAP
ENDMAP
NAME: fedhas_altar_3
-TAGS: uniq_altar_fedhas
+TAGS: uniq_altar_fedhas temple_overflow_fedhas
DEPTH: D:2-7
WEIGHT: 75
KFEAT: C = altar_fedhas
@@ -323,7 +323,7 @@ MAP
ENDMAP
NAME: fedhas_altar_4
-TAGS: uniq_altar_fedhas
+TAGS: uniq_altar_fedhas temple_overflow_fedhas
DEPTH: D:2-7
WEIGHT: 75
KFEAT: C = altar_fedhas
@@ -358,7 +358,7 @@ MAP
ENDMAP
NAME: cheibriados_altar_1
-TAGS: uniq_altar_cheibriados
+TAGS: uniq_altar_cheibriados temple_overflow_cheibriados
PLACE: D:7
KFEAT: _ = altar_cheibriados
MAP
@@ -388,7 +388,7 @@ MAP
ENDMAP
NAME: cheibriados_altar_3
-TAGS: uniq_altar_cheibriados
+TAGS: uniq_altar_cheibriados temple_overflow_cheibriados
DEPTH: D:2-6
WEIGHT: 100
KFEAT: _ = altar_cheibriados
@@ -480,7 +480,7 @@ ENDMAP
NAME: lemuel_blue_sif_altar
DEPTH: D:2-18, Elf, Vault
-TAGS: no_monster_gen mini_float
+TAGS: no_monster_gen mini_float temple_overflow_sif_muna
COLOUR: . = blue
FTILE: . = floor_hall, C = floor_hall, @ = floor_hall, + = floor_hall
KFEAT: _ = altar_sif_muna
@@ -634,7 +634,7 @@ ENDMAP
###############################################################################
# Blood-stained Trog altar!
NAME: bloody_trog
-TAGS: uniq_bloody_trog
+TAGS: uniq_bloody_trog temple_overflow_trog
DEPTH: D:2-20, Orc, Vault
KPROP: . = bloody / nothing
KFEAT: _ = altar_trog
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 7623cd77b3..9ace2a865e 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -1694,15 +1694,39 @@ static void _build_overflow_temples(int level_number)
}
else
{
- std::string vault_tag =
- make_stringf("temple_overflow_%d", num_gods);
+ std::string vault_tag;
+
+ // For a single-altar temple, first try to find a temple specialized
+ // for that god.
+ if (num_gods == 1)
+ {
+ CrawlVector &god_vec = temple[TEMPLE_GODS_KEY];
+ god_type god = (god_type) god_vec[0].get_byte();
+
+ vault_tag = make_stringf("temple_overflow_%s",
+ god_name(god).c_str());
+ vault_tag = replace_all(vault_tag, " ", "_");
+ lowercase(vault_tag);
+
+ vault = random_map_for_tag(vault_tag, true);
+#ifdef DEBUG_DIAGNOSTICS
+ if (vault == NULL)
+ mprf(MSGCH_DIAGNOSTICS, "Couldn't find overflow temple "
+ "for god %s", god_name(god).c_str());
+#endif
+ }
- vault = random_map_for_tag(vault_tag, true);
if (vault == NULL)
{
- mprf(MSGCH_ERROR,
- "Couldn't find overflow temple tag '%s'!",
- vault_tag.c_str());
+ vault_tag = make_stringf("temple_overflow_%d", num_gods);
+
+ vault = random_map_for_tag(vault_tag, true);
+ if (vault == NULL)
+ {
+ mprf(MSGCH_ERROR,
+ "Couldn't find overflow temple tag '%s'!",
+ vault_tag.c_str());
+ }
}
}