summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/tiledoll.cc
diff options
context:
space:
mode:
authorEnne Walker <enne.walker@gmail.com>2010-06-09 21:38:00 -0400
committerEnne Walker <enne.walker@gmail.com>2010-06-09 21:49:51 -0400
commit8e9347d3720a9113faf96ccb6b16eab7c609f547 (patch)
treec43b5cd5322e25b4b001fcb96b301b24daf591be /crawl-ref/source/tiledoll.cc
parent1583ebae1559aeb681d22c783f89fddaa47cb8ad (diff)
downloadcrawl-ref-8e9347d3720a9113faf96ccb6b16eab7c609f547.tar.gz
crawl-ref-8e9347d3720a9113faf96ccb6b16eab7c609f547.zip
Assign tile dolls random trousers for SHOW_EQUIP.
This way they don't have to be hardcoded in dolls.txt.
Diffstat (limited to 'crawl-ref/source/tiledoll.cc')
-rw-r--r--crawl-ref/source/tiledoll.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/crawl-ref/source/tiledoll.cc b/crawl-ref/source/tiledoll.cc
index 188a881c11..d661805acc 100644
--- a/crawl-ref/source/tiledoll.cc
+++ b/crawl-ref/source/tiledoll.cc
@@ -254,6 +254,20 @@ void create_random_doll(dolls_data &rdoll)
_fill_doll_part(rdoll, TILEP_PART_BEARD);
}
+// Deterministically pick a pair of trousers for this character to use
+// for SHOW_EQUIP, as there's no corresponding item slot for this.
+static tileidx_t _random_trousers()
+{
+ int offset = static_cast<int>(you.species) * 9887
+ + static_cast<int>(you.char_class) * 8719;
+ const char *name = you.your_name.c_str();
+ for (int i = 0; i < 8 && *name; ++i, ++name)
+ offset += name[i] * 4643;
+
+ const int range = TILEP_LEG_LAST_NORM - TILEP_LEG_FIRST_NORM + 1;
+ return (TILEP_LEG_FIRST_NORM + offset % range);
+}
+
void fill_doll_equipment(dolls_data &result)
{
// Base tile.
@@ -333,6 +347,11 @@ void fill_doll_equipment(dolls_data &result)
result.parts[TILEP_PART_HELM] = 0;
}
}
+ // Leg.
+ if (result.parts[TILEP_PART_LEG] == TILEP_SHOW_EQUIP)
+ {
+ result.parts[TILEP_PART_LEG] = _random_trousers();
+ }
// Boots.
if (result.parts[TILEP_PART_BOOTS] == TILEP_SHOW_EQUIP)
{