diff options
Diffstat (limited to 'crawl-ref/source/invent.cc')
-rw-r--r-- | crawl-ref/source/invent.cc | 37 |
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: |