void DieAction::dropItemsFromBody() { WearerPtr wearer = _performer->getFeature<Wearer>(); if ( wearer ) { for ( auto slot : ItemSlotType() ) { ActorPtr item = wearer->unequip(slot); if ( item ) { dropOnGround( item ); } } } }
bool Wearer::isEqual(ActorFeaturePtr rhs) const { bool equal = false; WearerPtr crhs = std::dynamic_pointer_cast<Wearer>(rhs); if ( crhs != nullptr ) { equal = true; //compare item slots and equipped items for (auto slot : ItemSlotType()) { equal &= (hasSlot(slot) == crhs->hasSlot(slot)); equal &= (isEquipped(slot) == crhs->isEquipped(slot)); if ( equipped(slot) && crhs->equipped(slot) ) equal &= ( *(equipped(slot)) == *(crhs->equipped(slot)) ); } } return equal; }