diff --git a/engines/wage/entities.cpp b/engines/wage/entities.cpp index 0503b8573a98..588a7cf47f39 100644 --- a/engines/wage/entities.cpp +++ b/engines/wage/entities.cpp @@ -483,4 +483,12 @@ const char *Chr::getDefiniteArticle(bool capitalize) { return ""; } +bool Chr::isWearing(Obj *obj) { + for (int i = 0; i < NUMBER_OF_ARMOR_TYPES; i++) + if (_armor[i] == obj) + return true; + + return false; +} + } // End of namespace Wage diff --git a/engines/wage/entities.h b/engines/wage/entities.h index 5fc1a08b36a8..b1101f93aa62 100644 --- a/engines/wage/entities.h +++ b/engines/wage/entities.h @@ -229,6 +229,8 @@ class Chr : public Designed { void wearObjs(); void resetState(); + + bool isWearing(Obj *obj); }; class Obj : public Designed { diff --git a/engines/wage/script.cpp b/engines/wage/script.cpp index 71f2cec21b01..7ede7eafa49c 100644 --- a/engines/wage/script.cpp +++ b/engines/wage/script.cpp @@ -1026,7 +1026,20 @@ void Script::appendObjNames(Common::String &str, ObjArray &objs) { } void Script::handleInventoryCommand() { - warning("STUB: handleInventoryCommand"); + Chr *player = _world->_player; + ObjArray objs; + + for (ObjArray::const_iterator it = player->_inventory.begin(); it != player->_inventory.end(); ++it) + if (!player->isWearing(*it)) + objs.push_back(*it); + + if (!objs.size()) { + appendText("Your pack is empty."); + } else { + Common::String res("Your pack contains "); + appendObjNames(res, objs); + appendText(res); + } } static const char *armorMessages[] = {