summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/tilereg.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-08-19 15:22:26 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-08-19 15:22:26 +0000
commitdc1341888ccd8cfb3d6cd2518103670a12601745 (patch)
tree1932db5f18da82ab9206253a2db381b6bd222980 /crawl-ref/source/tilereg.cc
parent309425214082f560faa1d32b1d834644e0d4464d (diff)
downloadcrawl-ref-dc1341888ccd8cfb3d6cd2518103670a12601745.tar.gz
crawl-ref-dc1341888ccd8cfb3d6cd2518103670a12601745.zip
Fix draconians not being handled correctly in the doll edit screen.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10579 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/tilereg.cc')
-rw-r--r--crawl-ref/source/tilereg.cc44
1 files changed, 33 insertions, 11 deletions
diff --git a/crawl-ref/source/tilereg.cc b/crawl-ref/source/tilereg.cc
index a22d1b6654..f56ef9b8d4 100644
--- a/crawl-ref/source/tilereg.cc
+++ b/crawl-ref/source/tilereg.cc
@@ -613,13 +613,24 @@ static void _fill_doll_equipment(dolls_data &result)
result.parts[TILEP_PART_ENCH] =
(you.duration[DUR_LIQUID_FLAMES] ? TILEP_ENCH_STICKY_FLAME : 0);
}
+ // Draconian head/wings
+ if (player_genus(GENPC_DRACONIAN))
+ {
+ int base = 0;
+ int head = 0;
+ int wing = 0;
+ tilep_draconian_init(you.species, you.experience_level, base, head, wing);
+
+ if (result.parts[TILEP_PART_DRCHEAD] == TILEP_SHOW_EQUIP)
+ result.parts[TILEP_PART_DRCHEAD] = head;
+ if (result.parts[TILEP_PART_DRCWING] == TILEP_SHOW_EQUIP)
+ result.parts[TILEP_PART_DRCWING] = wing;
+ }
// Various other slots.
for (int i = 0; i < TILEP_PART_MAX; i++)
- {
if (result.parts[i] == TILEP_SHOW_EQUIP)
result.parts[i] = 0;
- }
}
// Writes equipment information into per-character doll file.
@@ -3269,7 +3280,11 @@ void DollEditRegion::clear()
// shadow tile if it's the last species.
static int _get_next_species_tile()
{
- switch (you.species)
+ int sp = you.species;
+ if (player_genus(GENPC_DRACONIAN) && you.experience_level < 7)
+ sp = SP_BASE_DRACONIAN;
+
+ switch (sp)
{
case SP_HUMAN:
return TILEP_BASE_ELF;
@@ -3289,17 +3304,24 @@ static int _get_next_species_tile()
case SP_TROLL:
return TILEP_BASE_DRACONIAN;
case SP_BASE_DRACONIAN:
- return TILEP_BASE_DRACONIAN_RED;
- case SP_RED_DRACONIAN:
- case SP_WHITE_DRACONIAN:
- case SP_GREEN_DRACONIAN:
+ return TILEP_BASE_DRACONIAN_BLACK;
+ case SP_BLACK_DRACONIAN:
+ return TILEP_BASE_DRACONIAN_GOLD;
case SP_YELLOW_DRACONIAN:
+ return TILEP_BASE_DRACONIAN_GREY;
case SP_GREY_DRACONIAN:
- case SP_BLACK_DRACONIAN:
- case SP_PURPLE_DRACONIAN:
+ return TILEP_BASE_DRACONIAN_GREEN;
+ case SP_GREEN_DRACONIAN:
+ return TILEP_BASE_DRACONIAN_MOTTLED;
case SP_MOTTLED_DRACONIAN:
- return tilep_species_to_base_tile(you.species + 1);
+ return TILEP_BASE_DRACONIAN_PALE;
case SP_PALE_DRACONIAN:
+ return TILEP_BASE_DRACONIAN_PURPLE;
+ case SP_PURPLE_DRACONIAN:
+ return TILEP_BASE_DRACONIAN_RED;
+ case SP_RED_DRACONIAN:
+ return TILEP_BASE_DRACONIAN_WHITE;
+ case SP_WHITE_DRACONIAN:
return TILEP_BASE_CENTAUR;
case SP_CENTAUR:
case SP_DEMIGOD:
@@ -3331,7 +3353,7 @@ static int _get_next_part(int cat, int part, int inc)
if (cat == TILEP_PART_BASE)
{
- offset = tilep_species_to_base_tile(you.species);
+ offset = tilep_species_to_base_tile(you.species, you.experience_level);
max_part = _get_next_species_tile() - offset;
}