public virtual string MoveTo(ChessSquare square, BasePiece[][] pieces, bool isBuffed) { var opposingPiece = pieces[square.Row - 1][square.Column - 65]; if (isBuffed) { if (Element == 2) // Fire { var burnoutPieces = StraightLineWalk(square, pieces); foreach (var piece in burnoutPieces) { var burnoutRigidBody = piece.GetComponent <Rigidbody>(); burnoutRigidBody.isKinematic = false; burnoutRigidBody.detectCollisions = true; piece.Dead = true; KillPiece(burnoutRigidBody); Destroy(piece, 5); } } } Rigidbody rb; Rigidbody currentrb; var capturing = false; var check = IsCheck(pieces); var checkmate = false; if (opposingPiece != null) { capturing = true; rb = opposingPiece.GetComponent <Rigidbody>(); currentrb = GetComponent <Rigidbody>(); rb.isKinematic = false; rb.detectCollisions = true; currentrb.isKinematic = false; currentrb.detectCollisions = true; KillPiece(rb); //if (isBuffed) //{ // if (Element == 2) // KillPiece(currentrb); // else if (Element == 4) // KillPiece(currentrb); // else // KillPiece(rb); // KillPiece(currentrb); //} opposingPiece.Dead = true; Destroy(opposingPiece, 5); } if (check) { check = true; checkmate = IsCheckmate(pieces); } pieces[square.Row - 1][square.Column - 65] = this; if (currentSquare != null) { pieces[currentSquare.Row - 1][currentSquare.Column - 65] = null; } currentSquare = square; return($"{(capturing ? "x" : "")}{currentSquare.ToString()}{(check ? "+" : "")}{(checkmate ? "+": "")}"); }