summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mapdef.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-04-10 15:11:07 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-04-10 15:11:07 +0000
commit684f80b554daadb08cf2c40b8e905737e8655530 (patch)
treee506d5ff31e40b979983a44f5f85b7f3930c0521 /crawl-ref/source/mapdef.cc
parentf8179d2e319879c5cdfa9083efb7edc1327c9bb5 (diff)
downloadcrawl-ref-684f80b554daadb08cf2c40b8e905737e8655530.tar.gz
crawl-ref-684f80b554daadb08cf2c40b8e905737e8655530.zip
Allow "any trap" and "any shop" (alternatives to "random trap" and "random
shop") in des files. Allow using '8', '9' and '0' in monster specifications. Tossed out some unused functions. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1281 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/mapdef.cc')
-rw-r--r--crawl-ref/source/mapdef.cc25
1 files changed, 19 insertions, 6 deletions
diff --git a/crawl-ref/source/mapdef.cc b/crawl-ref/source/mapdef.cc
index 6a8a79802a..42849a8a17 100644
--- a/crawl-ref/source/mapdef.cc
+++ b/crawl-ref/source/mapdef.cc
@@ -909,6 +909,7 @@ mons_list::mons_spec_slot mons_list::parse_mons_spec(std::string spec)
{
std::string s = specs[i];
int weight = find_weight(s);
+ int mlevel = 0;
if (weight == TAG_UNFOUND || weight <= 0)
weight = 10;
@@ -916,15 +917,26 @@ mons_list::mons_spec_slot mons_list::parse_mons_spec(std::string spec)
const bool generate_awake = strip_tag(s, "generate_awake");
trim_string(s);
- const int mid = mons_by_name(s);
- if (mid == MONS_PROGRAM_BUG)
+ int mid = RANDOM_MONSTER;
+
+ if (s == "8")
+ mlevel = -8;
+ else if (s == "9")
+ mlevel = -9;
+ else if (s != "0")
{
- error = make_stringf("unrecognised monster \"%s\"", s.c_str());
- return (slot);
+ mid = mons_by_name(s);
+
+ if (mid == MONS_PROGRAM_BUG)
+ {
+ error = make_stringf("unrecognised monster \"%s\"", s.c_str());
+ return (slot);
+ }
}
- slot.mlist.push_back( mons_spec(mid, weight, fixmons, generate_awake) );
+ slot.mlist.push_back(
+ mons_spec(mid, weight, mlevel, fixmons, generate_awake) );
}
return (slot);
@@ -1350,7 +1362,8 @@ feature_spec_list keyed_mapspec::parse_feature(const std::string &str)
return (list);
}
- std::vector<dungeon_feature_type> feats = features_by_desc(s);
+ std::vector<dungeon_feature_type> feats =
+ features_by_desc( text_pattern(s, true) );
for (int i = 0, size = feats.size(); i < size; ++i)
list.push_back( feature_spec(feats[i], weight) );