summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/invent.cc
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2009-01-13 02:43:04 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2009-01-13 02:43:04 +0000
commit75f9186ae567f69eea6aefe43969db3a73b97a2d (patch)
tree1753904a1c3b22ba966a43e9baf93c7977f5fb2f /crawl-ref/source/invent.cc
parent86d73e66d588cf5c885014064d7c44e1a21a4b61 (diff)
downloadcrawl-ref-75f9186ae567f69eea6aefe43969db3a73b97a2d.tar.gz
crawl-ref-75f9186ae567f69eea6aefe43969db3a73b97a2d.zip
FR #2483700: give a better message than "You are not carrying any armour" when
transformed either your armour is melded into you or if none of the armour you're carrying can fit your current form. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8437 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/invent.cc')
-rw-r--r--crawl-ref/source/invent.cc37
1 files changed, 36 insertions, 1 deletions
diff --git a/crawl-ref/source/invent.cc b/crawl-ref/source/invent.cc
index b93bc2c8b9..c782081d2d 100644
--- a/crawl-ref/source/invent.cc
+++ b/crawl-ref/source/invent.cc
@@ -359,6 +359,29 @@ void InvMenu::set_title(const std::string &s)
set_title(new InvTitle(this, stitle, title_annotate));
}
+static bool _has_tran_unwearable_armour(bool &melded)
+{
+ bool unwearable = false;
+ melded = false;
+
+ for (int i = 0; i < ENDOFPACK; i++)
+ {
+ item_def &item(you.inv[i]);
+
+ if (is_valid_item(item) && item.base_type == OBJ_ARMOUR
+ && !you_tran_can_wear(item))
+ {
+ unwearable = true;
+ if (item_is_equipped(item))
+ {
+ melded = true;
+ return (true);
+ }
+ }
+ }
+ return (unwearable);
+}
+
static std::string _no_selectables_message(int item_selector)
{
switch (item_selector)
@@ -369,7 +392,19 @@ static std::string _no_selectables_message(int item_selector)
case OBJ_WEAPONS:
return("You aren't carrying any weapons.");
case OBJ_ARMOUR:
- return("You aren't carrying any armour.");
+ {
+ bool melded = false;
+ if (_has_tran_unwearable_armour(melded))
+ {
+ if (melded)
+ return ("Your armour is currently melded into you.");
+ else
+ return("You aren't carrying any armour you can wear in your "
+ "current form.");
+ }
+ else
+ return("You aren't carrying any armour.");
+ }
case OSEL_UNIDENT:
return("You don't have any unidentified items.");
case OSEL_MEMORISE: