void InventoryFactory::handleObjectReady(Object* object,DispatchClient* client) { //we either have the ID of the inventory or of the player //the inventory of course is stored under its own Id InLoadingContainer* ilc = _getObject(object->getParentId()); assert(ilc && "InventoryFactory::handleObjectReady unable to find InLoadingContainer"); if (! ilc) { return; } Inventory* inventory = dynamic_cast<Inventory*>(ilc->mObject); gWorldManager->addObject(object,true); //for unequipped items only inventory->addObjectSecure(object); if(inventory->getObjectLoadCounter() == (inventory->getObjects())->size()) { gLogger->logMsgF("InventoryFactory: remove inventory %I64u from loadmap",MSG_HIGH,inventory->getId()); inventory->setLoadState(LoadState_Loaded); if(!(_removeFromObjectLoadMap(inventory->getId()))) gLogger->logMsg("InventoryFactory: Failed removing object from loadmap"); ilc->mOfCallback->handleObjectReady(inventory,ilc->mClient); mILCPool.free(ilc); } }
// TODO: Fix this void ScriptSupport::itemPopulateInventory(uint64 itemId, uint64 npcId, uint64 playerId) { // NOTE: For now we only check and validates TangibleObject. CreatureObject* creature = dynamic_cast<CreatureObject*>(gWorldManager->getObjectById(npcId)); Object* itemObject = gWorldManager->getObjectById(itemId); PlayerObject* playerObject = dynamic_cast<PlayerObject*>(gWorldManager->getObjectById(playerId)); if (creature && itemObject && playerObject) { Inventory* inventory = dynamic_cast<Inventory*>(creature->getEquipManager()->getEquippedObject(CreatureEquipSlot_Inventory)); if (inventory) { // and (tutorial:getRoom() < 7) inventory->addObjectSecure(itemObject); itemObject->setParentId(npcId+1); } } }