public boolean pick(Pickable i) {
		if (this.canPick(i)) {
			
			if(i instanceof Equipable) {
				if(!this.itemsList.add((Equipable)i)) {
					return false;
				}
			}
			if (i.getModifier() != null) {
				removeTerrainChanges(getBox());
				setAttibutes(i.getModifier().adjustAttrs(getAttributes()));
				applyTerrainChanges(getBox());
			}
			
			// Now, remove the entity from the chart
			if (i instanceof Entity) {
				Entity ent = (Entity)i;
				ent.getBox().getChart().remove(ent);
			}
			
			i.onPick(this);
			
			// Stream the event
			PickEvent evt = new PickEvent(this, i);
			
			Object[] listeners = getListeners().getListenerList();
	        
	        for (int j = 0; j < listeners.length; j += 2) {
	            if (listeners[j] == EntityListener.class) {
	            	((EntityListener)listeners[j+1]).EntityEventOccurred(evt);
	            }
	        }
		}
		
		return false;
	}