summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohanna Ploog <j-p-e-g@users.sourceforge.net>2010-01-09 14:12:15 +0100
committerJohanna Ploog <j-p-e-g@users.sourceforge.net>2010-01-09 14:12:15 +0100
commit8f662453f566222479ffcf856d70581c7c131c03 (patch)
tree18f68db1ca78d616e05f3ba677f385ff62a2c76c
parent40a5cf776b1309872551df44650a1dc13317fdcf (diff)
downloadcrawl-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.cc15
-rw-r--r--crawl-ref/source/rltiles/dc-item.txt20
-rw-r--r--crawl-ref/source/rltiles/item/food/chunk_brands/i-decay.pngbin0 -> 419 bytes
-rw-r--r--crawl-ref/source/rltiles/item/food/chunk_brands/i-forbidden.pngbin0 -> 339 bytes
-rw-r--r--crawl-ref/source/rltiles/item/food/chunk_brands/i-mutation.pngbin0 -> 282 bytes
-rw-r--r--crawl-ref/source/rltiles/item/food/chunk_brands/i-poison.pngbin0 -> 350 bytes
-rw-r--r--crawl-ref/source/tilepick.cc42
-rw-r--r--crawl-ref/source/tiles.h1
-rw-r--r--crawl-ref/source/tilesdl.cc24
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
new file mode 100644
index 0000000000..10a08f1c71
--- /dev/null
+++ b/crawl-ref/source/rltiles/item/food/chunk_brands/i-decay.png
Binary files differ
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
new file mode 100644
index 0000000000..68f032ca74
--- /dev/null
+++ b/crawl-ref/source/rltiles/item/food/chunk_brands/i-forbidden.png
Binary files differ
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
new file mode 100644
index 0000000000..3f81e34c28
--- /dev/null
+++ b/crawl-ref/source/rltiles/item/food/chunk_brands/i-mutation.png
Binary files differ
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
new file mode 100644
index 0000000000..2c8c7258f2
--- /dev/null
+++ b/crawl-ref/source/rltiles/item/food/chunk_brands/i-poison.png
Binary files differ
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;