item item::in_its_container(std::vector<itype*> *itypes) { if (is_software()) { item ret( (*itypes)[itm_usb_drive], 0); ret.contents.push_back(*this); ret.invlet = invlet; return ret; } if (!is_food() || (dynamic_cast<it_comest*>(type))->container == itm_null) return *this; it_comest *food = dynamic_cast<it_comest*>(type); item ret((*itypes)[food->container], bday); if (dynamic_cast<it_comest*>(type)->container == itm_can_food) food->spoils = 0; if (made_of(LIQUID)) { it_container* container = dynamic_cast<it_container*>(ret.type); charges = container->contains * food->charges; } ret.contents.push_back(*this); ret.invlet = invlet; return ret; }
item item::in_its_container(std::vector<itype*> *itypes) { if (is_software()) { item ret( (*itypes)[itm_usb_drive], 0); ret.contents.push_back(*this); ret.invlet = invlet; return ret; } if (!is_food() || (dynamic_cast<it_comest*>(type))->container == itm_null) return *this; it_comest *food = dynamic_cast<it_comest*>(type); item ret((*itypes)[food->container], bday); ret.contents.push_back(*this); ret.invlet = invlet; return ret; }