diff options
author | Johanna Ploog <j-p-e-g@users.sourceforge.net> | 2010-01-09 14:12:15 +0100 |
---|---|---|
committer | Johanna Ploog <j-p-e-g@users.sourceforge.net> | 2010-01-09 14:12:15 +0100 |
commit | 8f662453f566222479ffcf856d70581c7c131c03 (patch) | |
tree | 18f68db1ca78d616e05f3ba677f385ff62a2c76c | |
parent | 40a5cf776b1309872551df44650a1dc13317fdcf (diff) | |
download | crawl-ref-8f662453f566222479ffcf856d70581c7c131c03.tar.gz crawl-ref-8f662453f566222479ffcf856d70581c7c131c03.zip |
Tiles: Add icons for poisonous/mutagenic/... chunks or corpses.
I'm not sure how to visualize contaminated chunks, so they haven't got
an icon yet (maybe use coagulated blood?) Also, I've opted to only show
the icons for rotten chunks if the character is capable of eating them.
Otherwise, them being rotten is all that's of interest to the player.
-rw-r--r-- | crawl-ref/source/invent.cc | 15 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/dc-item.txt | 20 | ||||
-rw-r--r-- | crawl-ref/source/rltiles/item/food/chunk_brands/i-decay.png | bin | 0 -> 419 bytes | |||
-rw-r--r-- | crawl-ref/source/rltiles/item/food/chunk_brands/i-forbidden.png | bin | 0 -> 339 bytes | |||
-rw-r--r-- | crawl-ref/source/rltiles/item/food/chunk_brands/i-mutation.png | bin | 0 -> 282 bytes | |||
-rw-r--r-- | crawl-ref/source/rltiles/item/food/chunk_brands/i-poison.png | bin | 0 -> 350 bytes | |||
-rw-r--r-- | crawl-ref/source/tilepick.cc | 42 | ||||
-rw-r--r-- | crawl-ref/source/tiles.h | 1 | ||||
-rw-r--r-- | crawl-ref/source/tilesdl.cc | 24 |
9 files changed, 92 insertions, 10 deletions
diff --git a/crawl-ref/source/invent.cc b/crawl-ref/source/invent.cc index 887fbd436c..26b882755c 100644 --- a/crawl-ref/source/invent.cc +++ b/crawl-ref/source/invent.cc @@ -553,9 +553,18 @@ bool InvEntry::get_tiles(std::vector<tile_def>& tileset) const } } } - int brand = tile_known_weapon_brand(*item); - if (brand) - tileset.push_back(tile_def(brand, TEX_DEFAULT)); + if (item->base_type == OBJ_WEAPONS || item->base_type == OBJ_MISSILES) + { + int brand = tile_known_weapon_brand(*item); + if (brand) + tileset.push_back(tile_def(brand, TEX_DEFAULT)); + } + else if (item->base_type == OBJ_CORPSES) + { + int brand = tile_corpse_brand(*item); + if (brand) + tileset.push_back(tile_def(brand, TEX_DEFAULT)); + } return (true); } diff --git a/crawl-ref/source/rltiles/dc-item.txt b/crawl-ref/source/rltiles/dc-item.txt index 0b08cb9cf5..313c8145ef 100644 --- a/crawl-ref/source/rltiles/dc-item.txt +++ b/crawl-ref/source/rltiles/dc-item.txt @@ -416,9 +416,27 @@ lychee FOOD_LYCHEE beef_jerky FOOD_BEEF_JERKY cheese FOOD_CHEESE sausage FOOD_SAUSAGE +bone FOOD_BONE corpse FOOD_CHUNK corpse_rotten FOOD_CHUNK_ROTTEN -bone FOOD_BONE +%back corpse +chunk_brands/i-poison FOOD_CHUNK_POISONED +chunk_brands/i-mutation FOOD_CHUNK_MUTAGENIC +chunk_brands/i-decay FOOD_CHUNK_ROTTING +chunk_brands/i-forbidden FOOD_CHUNK_FORBIDDEN +%back corpse_rotten +chunk_brands/i-poison FOOD_CHUNK_ROTTEN_POISONED +chunk_brands/i-mutation FOOD_CHUNK_ROTTEN_MUTAGENIC +chunk_brands/i-decay FOOD_CHUNK_ROTTEN_ROTTING +chunk_brands/i-forbidden FOOD_CHUNK_ROTTEN_FORBIDDEN +%back none +%shrink 0 +chunk_brands/i-poison FOOD_POISONED +chunk_brands/i-mutation FOOD_MUTAGENIC +chunk_brands/i-decay FOOD_ROTTING +chunk_brands/i-forbidden FOOD_FORBIDDEN +%shrink 1 + #################OBJ_UNKNOWN_I ##################OBJ_SCROLLS %sdir item/scroll diff --git a/crawl-ref/source/rltiles/item/food/chunk_brands/i-decay.png b/crawl-ref/source/rltiles/item/food/chunk_brands/i-decay.png Binary files differnew file mode 100644 index 0000000000..10a08f1c71 --- /dev/null +++ b/crawl-ref/source/rltiles/item/food/chunk_brands/i-decay.png diff --git a/crawl-ref/source/rltiles/item/food/chunk_brands/i-forbidden.png b/crawl-ref/source/rltiles/item/food/chunk_brands/i-forbidden.png Binary files differnew file mode 100644 index 0000000000..68f032ca74 --- /dev/null +++ b/crawl-ref/source/rltiles/item/food/chunk_brands/i-forbidden.png diff --git a/crawl-ref/source/rltiles/item/food/chunk_brands/i-mutation.png b/crawl-ref/source/rltiles/item/food/chunk_brands/i-mutation.png Binary files differnew file mode 100644 index 0000000000..3f81e34c28 --- /dev/null +++ b/crawl-ref/source/rltiles/item/food/chunk_brands/i-mutation.png diff --git a/crawl-ref/source/rltiles/item/food/chunk_brands/i-poison.png b/crawl-ref/source/rltiles/item/food/chunk_brands/i-poison.png Binary files differnew file mode 100644 index 0000000000..2c8c7258f2 --- /dev/null +++ b/crawl-ref/source/rltiles/item/food/chunk_brands/i-poison.png diff --git a/crawl-ref/source/tilepick.cc b/crawl-ref/source/tilepick.cc index afa403ad2f..818655ef98 100644 --- a/crawl-ref/source/tilepick.cc +++ b/crawl-ref/source/tilepick.cc @@ -1594,6 +1594,42 @@ static int _tileidx_armour(const item_def &item) return _apply_variations(item, tile); } +static int _tileidx_chunk(const item_def &item) +{ + if (food_is_rotten(item)) + { + if (!is_inedible(item)) + { + if (is_poisonous(item)) + return TILE_FOOD_CHUNK_ROTTEN_POISONED; + + if (is_mutagenic(item)) + return TILE_FOOD_CHUNK_ROTTEN_MUTAGENIC; + + if (causes_rot(item)) + return TILE_FOOD_CHUNK_ROTTEN_ROTTING; + + if (is_forbidden_food(item)) + return TILE_FOOD_CHUNK_ROTTEN_FORBIDDEN; + } + return TILE_FOOD_CHUNK_ROTTEN; + } + + if (is_poisonous(item)) + return TILE_FOOD_CHUNK_POISONED; + + if (is_mutagenic(item)) + return TILE_FOOD_CHUNK_MUTAGENIC; + + if (causes_rot(item)) + return TILE_FOOD_CHUNK_ROTTING; + + if (is_forbidden_food(item)) + return TILE_FOOD_CHUNK_FORBIDDEN; + + return TILE_FOOD_CHUNK; +} + static int _tileidx_food(const item_def &item) { switch (item.sub_type) @@ -1619,11 +1655,7 @@ static int _tileidx_food(const item_def &item) case FOOD_BEEF_JERKY: return TILE_FOOD_BEEF_JERKY; case FOOD_CHEESE: return TILE_FOOD_CHEESE; case FOOD_SAUSAGE: return TILE_FOOD_SAUSAGE; - - case FOOD_CHUNK: - if (food_is_rotten(item)) - return TILE_FOOD_CHUNK_ROTTEN; - return TILE_FOOD_CHUNK; + case FOOD_CHUNK: return _tileidx_chunk(item); } return TILE_ERROR; diff --git a/crawl-ref/source/tiles.h b/crawl-ref/source/tiles.h index ba41232e43..d50482a673 100644 --- a/crawl-ref/source/tiles.h +++ b/crawl-ref/source/tiles.h @@ -123,6 +123,7 @@ void save_doll_file(FILE *dollf); int item_unid_type(const item_def &item); int tile_known_weapon_brand(const item_def item); +int tile_corpse_brand(const item_def item); int get_clean_map_idx(int tile_idx); diff --git a/crawl-ref/source/tilesdl.cc b/crawl-ref/source/tilesdl.cc index 45bd2d161d..c25fcdd92a 100644 --- a/crawl-ref/source/tilesdl.cc +++ b/crawl-ref/source/tilesdl.cc @@ -7,6 +7,7 @@ #include "coord.h" #include "directn.h" #include "env.h" +#include "food.h" #include "itemname.h" #include "itemprop.h" #include "files.h" @@ -1436,6 +1437,23 @@ int tile_known_weapon_brand(const item_def item) return 0; } +int tile_corpse_brand(const item_def item) +{ + if (is_poisonous(item)) + return TILE_FOOD_POISONED; + + if (is_mutagenic(item)) + return TILE_FOOD_MUTAGENIC; + + if (causes_rot(item)) + return TILE_FOOD_ROTTING; + + if (is_forbidden_food(item)) + return TILE_FOOD_FORBIDDEN; + + return 0; +} + static void _fill_item_info(InventoryTile &desc, const item_def &item) { desc.tile = tileidx_item(item); @@ -1458,7 +1476,11 @@ static void _fill_item_info(InventoryTile &desc, const item_def &item) else desc.quantity = -1; - desc.special = tile_known_weapon_brand(item); + if (type == OBJ_WEAPONS || type == OBJ_MISSILES) + desc.special = tile_known_weapon_brand(item); + else if (type == OBJ_CORPSES) + desc.special = tile_corpse_brand(item); + desc.flag = 0; if (item.cursed() && item_ident(item, ISFLAG_KNOW_CURSE)) desc.flag |= TILEI_FLAG_CURSE; |