Index: core3/branches/unstable/MMOCoreORB/src/server/zone/managers/player/PlayerManagerImplementation.cpp =================================================================== diff -u -N -r5875 -r5880 --- core3/branches/unstable/MMOCoreORB/src/server/zone/managers/player/PlayerManagerImplementation.cpp (.../PlayerManagerImplementation.cpp) (revision 5875) +++ core3/branches/unstable/MMOCoreORB/src/server/zone/managers/player/PlayerManagerImplementation.cpp (.../PlayerManagerImplementation.cpp) (revision 5880) @@ -2663,6 +2663,26 @@ return NULL; } +void PlayerManagerImplementation::addInsurableItemsRecursive(SceneObject* obj, SortedVector >* items, bool onlyInsurable) { + for (int j = 0; j < obj->getContainerObjectsSize(); j++) { + SceneObject* object = obj->getContainerObject(j); + + if (!object->isTangibleObject()) + continue; + + TangibleObject* item = cast( object); + + if (item != NULL && !(item->getOptionsBitmask() & OptionBitmask::INSURED) && (item->isWeaponObject() || item->isArmorObject() || item->isWearableObject())) { + items->put(item); + } else if ((item->getOptionsBitmask() & OptionBitmask::INSURED) && (item->isWeaponObject() || item->isArmorObject() || item->isWearableObject()) && !onlyInsurable) { + items->put(item); + } + + if (object->isContainerObject()) + addInsurableItemsRecursive(object, items, onlyInsurable); + } +} + SortedVector > PlayerManagerImplementation::getInsurableItems(CreatureObject* player, bool onlyInsurable) { SortedVector > insurableItems; insurableItems.setNoDuplicateInsertPlan(); @@ -2690,20 +2710,7 @@ } } - for (int j = 0; j < container->getContainerObjectsSize(); j++) { - SceneObject* object = container->getContainerObject(j); - - if (!object->isTangibleObject()) - continue; - - TangibleObject* item = cast( object); - - if (item != NULL && !(item->getOptionsBitmask() & OptionBitmask::INSURED) && (item->isWeaponObject() || item->isArmorObject() || item->isWearableObject())) { - insurableItems.put(item); - } else if ((item->getOptionsBitmask() & OptionBitmask::INSURED) && (item->isWeaponObject() || item->isArmorObject() || item->isWearableObject()) && !onlyInsurable) { - insurableItems.put(item); - } - } + addInsurableItemsRecursive(container, &insurableItems, onlyInsurable); } return insurableItems;