Although more of a workaround than a solution you could do something like this:
\documentclass{amsart}\usepackage{array}\usepackage{tikz}\usetikzlibrary{calc}\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}\newcommand{\DrawVLine}[3][]{% \begin{tikzpicture}[overlay,remember picture] \draw [#1] ($(#2.north)$) -- ($(#3.north)$); \end{tikzpicture}%}%\newcommand{\DrawLine}[3][]{% \begin{tikzpicture}[overlay,remember picture] \draw [#1] ($(#2)+(-0.4,0.6ex)$) -- ($(#3)+(0.6,0.6ex)$); \end{tikzpicture}%}%\begin{document}$\begin{array}{|c|c|c|c|}\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{\vspace{-.3cm}\tikzmark{StartB}}&\multicolumn{1}{c}{}\\\hline&Dig&Weed&Cut\\\hlineBoris&50&0&50\\\hlinePercival&20&0&30\\\hline\tikzmark{StartA}Spike&0&0&\tikzmark{EndA}0\\\hline\multicolumn{1}{c}{}&\multicolumn{1}{c}{}&\multicolumn{1}{c}{\raisebox{.6\normalbaselineskip}{\tikzmark{EndB}}}&\multicolumn{1}{c}{}\\\end{array}\\$\DrawLine[red, very thick,dotted]{StartA}{EndA}\DrawVLine[red,very thick,dotted]{StartB}{EndB}\end{document}
Yields:
The downside of course is that you have two extra "invisible" rows.