public boolean move(Matrix matrix, Square destination) {
    	if (destination.getCharacter() != null) {
    		if (destination.getCharacter().isAlive()) {
        		return false;
    		}
    	}
    	if (destination instanceof Door) {
    		if (!((Door)destination).isOpen()) {
    			return false;
    		}
    	}
    	
    	((Square)matrix.getNode(x, y)).removeCharacter();
		destination.addCharacter(this);
    	x = destination.getX();
    	y = destination.getY();
    	HashMap<String, Item> takenItems = destination.getItems();
    	if (destination.getItems() != null) {
    		for (Item item : takenItems.values()) {
    			addItem(item);
    		}
    		destination.removeItems();
    	}
    	return true;

    }