handleAct (Pickup l) =
    access (floorItem l) >>= \case
        Nothing -> return ()
        Just item -> do
            pLoc <- access (loc <# aref player)
            (Telekinesis distance) <- modified player
            if manhattan l pLoc > distance
                then message "Item is too far" >> return ()
                else floorItem l != Nothing >> actor player %= addItem item
handleAct (Pickup l) =
    access (floorItem l) >>= \case
        Nothing -> return ()
        Just item -> do
            pLoc <- access (loc <# aref player)
            (Telekinesis distance) <- modified player
            if manhattan l pLoc > distance
                then message "Item is too far" >> return ()
                else floorItem l != Nothing >> actor player %= addItem item
handleAct (Pickup l) =
    access (floorItem l) >>= \case
        Nothing -> return ()
        Just item -> do
            pLoc <- access (loc <# aref player)
            (Telekinesis distance) <- modified player
            if manhattan l pLoc > distance
                then message "Item is too far" >> return ()
                else floorItem l != Nothing >> actor player %= addItem item