bool InventoryItem::Merge(InventoryItemRef to_merge, int32 qty, bool notify) { if(typeID() != to_merge->typeID()) { _log(ITEM__ERROR, "%s (%u): Asked to merge with %s (%u).", itemName().c_str(), itemID(), to_merge->itemName().c_str(), to_merge->itemID()); return false; } if(locationID() != to_merge->locationID() || flag() != to_merge->flag()) { _log(ITEM__ERROR, "%s (%u) in location %u, flag %u: Asked to merge with item %u in location %u, flag %u.", itemName().c_str(), itemID(), locationID(), flag(), to_merge->itemID(), to_merge->locationID(), to_merge->flag()); return false; } if(qty == 0) qty = to_merge->quantity(); if(qty <= 0) { _log(ITEM__ERROR, "%s (%u): Asked to merge with %d units of item %u.", itemName().c_str(), itemID(), qty, to_merge->itemID()); return false; } if(!AlterQuantity(qty, notify)) { _log(ITEM__ERROR, "%s (%u): Failed to add quantity %d.", itemName().c_str(), itemID(), qty); return false; } if(qty == to_merge->quantity()) { to_merge->Delete(); } else if(!to_merge->AlterQuantity(-qty, notify)) { _log(ITEM__ERROR, "%s (%u): Failed to remove quantity %d.", to_merge->itemName().c_str(), to_merge->itemID(), qty); return false; } return true; }
void Ship::RemoveRig( InventoryItemRef item, uint32 inventoryID ) { m_ModuleManager->UnfitModule(item->itemID()); //delete the item item->Delete(); }
void Ship::RemoveRig( InventoryItemRef item, uint32 inventoryID ) { m_ModuleManager->UninstallRig(item->itemID()); //move the item to the void or w/e m_pOperator->MoveItem(item->itemID(), inventoryID, flagAutoFit); //delete the item item->Delete(); }
void Inventory::DeleteContents(ItemFactory &factory) { LoadContents( factory ); std::map<uint32, InventoryItemRef>::iterator cur, end; cur = mContents.begin(); end = mContents.end(); for(; cur != end; ) { // Our "cur" iterator becomes invalid once RemoveItem // for its item is called, so we need to increment it // before calling Delete(). InventoryItemRef i = cur->second; cur++; i->Delete(); } mContents.clear(); }
PyResult Command_unspawn( Client* who, CommandDB* db, PyServiceMgr* services, const Seperator& args ) { uint32 entityID = 0; uint32 itemID = 0; if( (args.argCount() < 3) || (args.argCount() > 3) ) throw PyException( MakeCustomError("Correct Usage: /unspawn (entityID) (itemID), and for now (entityID) is unused, so just type 0, and use the itemID from the entity table for (itemID)") ); if( !(args.isNumber( 1 )) ) throw PyException( MakeCustomError( "Argument 1 should be an item entity ID" ) ); if( !(args.isNumber( 2 )) ) throw PyException( MakeCustomError( "Argument 2 should be an item item ID" ) ); entityID = atoi( args.arg( 1 ).c_str() ); itemID = atoi( args.arg( 2 ).c_str() ); if( !who->IsInSpace() ) throw PyException( MakeCustomError( "You must be in space to unspawn things." ) ); // Search for the itemRef for itemID: InventoryItemRef itemRef = who->services().item_factory.GetItem( itemID ); SystemEntity * entityRef = who->System()->get( itemID ); // Actually do the unspawn using SystemManager's RemoveEntity: if( entityRef == NULL ) { return new PyString( "Un-Spawn Failed: itemID not found." ); } else { who->System()->RemoveEntity( entityRef ); itemRef->Delete(); } sLog.Log( "Command", "%s: Un-Spawned %u.", who->GetName(), itemID ); return new PyString( "Un-Spawn successful." ); }
void Character::UnplugImplant( uint32 itemID ) { InventoryItemRef item = m_factory.GetItem( itemID ); item->Delete(); m_factory.db().LoadImplantsAndBoosters( itemID, m_implants, m_boosters ); }