From dc1341888ccd8cfb3d6cd2518103670a12601745 Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Wed, 19 Aug 2009 15:22:26 +0000 Subject: 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 --- crawl-ref/source/tilereg.cc | 44 +++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) (limited to 'crawl-ref/source/tilereg.cc') 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; } -- cgit v1.2.3-54-g00ecf