From 99dd2c330e26980704721fa037201f1f7fc8cb0f Mon Sep 17 00:00:00 2001 From: Matthew Cline Date: Thu, 12 Nov 2009 02:10:52 -0800 Subject: Use specialized single-altar overflow temples For overflow temples with a single altar, look for a map tagged with "temple_overflow_GODNAME" and use that if available. --- crawl-ref/source/dat/altar.des | 16 ++++++++-------- crawl-ref/source/dungeon.cc | 36 ++++++++++++++++++++++++++++++------ 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()); + } } } -- cgit v1.2.3-54-g00ecf