Fixed IRS triggering transform in TransRS

This commit is contained in:
Ishaan Bhardwaj 2021-11-27 16:08:54 -05:00
parent 5ece2994e9
commit d837b14c53

View File

@ -21,26 +21,32 @@ function Trans:attemptRotate(new_inputs, piece, grid, initial)
end
local new_piece = piece:withRelativeRotation(rot_dir)
if initial then
if (grid:canPlacePiece(new_piece)) then
self:onPieceRotate(piece, grid)
piece:setRelativeRotation(rot_dir)
end
else
self:attemptWallkicks(piece, new_piece, rot_dir, grid)
end
end
function Trans:attemptWallkicks(piece, new_piece, rot_dir, grid)
local pieces = {"I", "J", "L", "O", "S", "T", "Z"}
repeat
new_piece.shape = pieces[math.random(7)]
until piece.shape ~= new_piece.shape
if (grid:canPlacePiece(new_piece)) then
local offsets = {{x=0, y=0}, {x=1, y=0}, {x=-1, y=0}}
for _, o in pairs(offsets) do
local kicked_piece = new_piece:withOffset(o)
if (grid:canPlacePiece(kicked_piece)) then
self:onPieceRotate(piece, grid)
piece:setRelativeRotation(rot_dir)
piece:setOffset(o)
piece.shape = new_piece.shape
else
if not(initial and self.enable_IRS_wallkicks == false) then
if (grid:canPlacePiece(new_piece:withOffset({x=1, y=0}))) then
self:onPieceRotate(piece, grid)
piece:setRelativeRotation(rot_dir):setOffset({x=1, y=0})
piece.shape = new_piece.shape
elseif (grid:canPlacePiece(new_piece:withOffset({x=-1, y=0}))) then
self:onPieceRotate(piece, grid)
piece:setRelativeRotation(rot_dir):setOffset({x=-1, y=0})
piece.shape = new_piece.shape
end
return
end
end
end