From 75f9186ae567f69eea6aefe43969db3a73b97a2d Mon Sep 17 00:00:00 2001 From: zelgadis Date: Tue, 13 Jan 2009 02:43:04 +0000 Subject: 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 --- crawl-ref/source/invent.cc | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) 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: -- cgit v1.2.3-54-g00ecf