diff options
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/dungeon.cc | 5 | ||||
-rw-r--r-- | crawl-ref/source/mapdef.cc | 16 |
2 files changed, 16 insertions, 5 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index 294944dba5..381eb18982 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -19,6 +19,7 @@ #include "branch.h" #include "chardump.h" #include "cloud.h" +#include "colour.h" #include "defines.h" #include "effects.h" #include "enum.h" @@ -4852,6 +4853,10 @@ int dgn_place_monster(mons_spec &mspec, mg.colour = mspec.colour; mg.mname = mspec.monname; + // XXX: hack. + if (mg.colour == BLACK) + mg.colour = random_colour(); + coord_def place(where); if (!force_pos && monster_at(place) && (mg.cls < NUM_MONSTERS || mg.cls == RANDOM_MONSTER)) diff --git a/crawl-ref/source/mapdef.cc b/crawl-ref/source/mapdef.cc index ebafae76e2..c295cc5394 100644 --- a/crawl-ref/source/mapdef.cc +++ b/crawl-ref/source/mapdef.cc @@ -2576,12 +2576,18 @@ mons_list::mons_spec_slot mons_list::parse_mons_spec(std::string spec) std::string colour = strip_tag_prefix(mon_str, "col:"); if (!colour.empty()) { - mspec.colour = str_to_colour(colour, BLACK); - if (mspec.colour == BLACK) + if (colour == "any") + // XXX: Hack + mspec.colour = BLACK; + else { - error = make_stringf("bad monster colour \"%s\" in \"%s\"", - colour.c_str(), specs[i].c_str()); - return (slot); + mspec.colour = str_to_colour(colour, BLACK); + if (mspec.colour == BLACK) + { + error = make_stringf("bad monster colour \"%s\" in \"%s\"", + colour.c_str(), specs[i].c_str()); + return (slot); + } } } |