void VendorManager::destroyVendor(SceneObject* vendor) { DataObjectComponentReference* data = vendor->getDataObjectComponent(); if(data == NULL || data->get() == NULL || !data->get()->isVendorData()) { error("Vendor has no data component"); return; } VendorDataComponent* vendorData = cast<VendorDataComponent*>(data->get()); if(vendorData == NULL) { error("Vendor has wrong data component"); return; } ManagedReference<AuctionManager*> auctionManager = server->getZoneServer()->getAuctionManager(); if(auctionManager == NULL) { error("null auctionManager when deleting vendor"); return; } ManagedReference<AuctionsMap*> auctionsMap = auctionManager->getAuctionMap(); if(auctionsMap == NULL) { error("null auctionsMap"); return; } if (vendorData->isRegistered() && vendor->getZone() != NULL) { vendor->getZone()->unregisterObjectWithPlanetaryMap(vendor); } vendor->destroyObjectFromWorld(true); vendor->destroyObjectFromDatabase(true); auctionsMap->deleteTerminalItems(vendor); }