now returning the appropriate error code when a promotion is missing; fixed a bug that caused promotion to be ignored by the attacker and checkmate check; no longer making unnecessary checks for a pawn performing en passant