VX Ace ou VX? Vou considerar como sendo o VX Ace.
Ocorre o primeiro erro pois tu não definiu qual coordenada verificar. Aí quando o script pensa
"Vou lá verificar se a coordenada X é passável. Ah não, pera, ele não definiu X. Toma esse erro!"
No caso, tu teria que colocar:
$game_map.events[4].passable?($game_variables[1], $game_variables[2], 2)
Porém acho que esse método vai verificar se a coordenada de destino do movimento será passável.
Por exemplo, se tu especificar X = 1 e Y = 1 e D = 2 (direção para baixo), vai verificar se a coordenada
X1 Y2 é passável, pois esta seria a coordenada de destino do movimento. Seria mais fácil e preciso tu
marcar os tiles possíveis com regiões, e usar elas para verificar se o baú pode ou não permanecer ali.