From 48aee183403b385c1636a8004f2d0bb41c0eacb3 Mon Sep 17 00:00:00 2001 From: Ishaan Bhardwaj Date: Sat, 21 Nov 2020 23:29:06 -0500 Subject: [PATCH] Fix I wallkicks in ARS rules --- tetris/rulesets/arika_ace.lua | 3 ++- tetris/rulesets/arika_ace2.lua | 3 ++- tetris/rulesets/arika_ti.lua | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tetris/rulesets/arika_ace.lua b/tetris/rulesets/arika_ace.lua index d564221..f34781f 100755 --- a/tetris/rulesets/arika_ace.lua +++ b/tetris/rulesets/arika_ace.lua @@ -113,7 +113,8 @@ function ARS:attemptWallkicks(piece, new_piece, rot_dir, grid) if piece.shape == "I" then -- special kick rules for I - if new_piece.rotation == 0 or new_piece.rotation == 2 then + if new_piece.rotation == 0 or new_piece.rotation == 2 and + (piece:isMoveBlocked(grid, {x=-1, y=0}) or piece:isMoveBlocked(grid, {x=1, y=0})) then -- kick right, right2, left if grid:canPlacePiece(new_piece:withOffset({x=1, y=0})) then piece:setRelativeRotation(rot_dir):setOffset({x=1, y=0}) diff --git a/tetris/rulesets/arika_ace2.lua b/tetris/rulesets/arika_ace2.lua index 6339a8a..703245e 100644 --- a/tetris/rulesets/arika_ace2.lua +++ b/tetris/rulesets/arika_ace2.lua @@ -100,7 +100,8 @@ function ARS:attemptWallkicks(piece, new_piece, rot_dir, grid) if piece.shape == "I" then -- special kick rules for I - if new_piece.rotation == 0 or new_piece.rotation == 2 then + if new_piece.rotation == 0 or new_piece.rotation == 2 and + (piece:isMoveBlocked(grid, {x=-1, y=0}) or piece:isMoveBlocked(grid, {x=1, y=0})) then -- kick right, right2, left if grid:canPlacePiece(new_piece:withOffset({x=1, y=0})) then piece:setRelativeRotation(rot_dir):setOffset({x=1, y=0}) diff --git a/tetris/rulesets/arika_ti.lua b/tetris/rulesets/arika_ti.lua index 6244ebf..10cf620 100644 --- a/tetris/rulesets/arika_ti.lua +++ b/tetris/rulesets/arika_ti.lua @@ -100,7 +100,8 @@ function ARS:attemptWallkicks(piece, new_piece, rot_dir, grid) if piece.shape == "I" then -- special kick rules for I - if new_piece.rotation == 0 or new_piece.rotation == 2 then + if (new_piece.rotation == 0 or new_piece.rotation == 2) and + (piece:isMoveBlocked(grid, {x=-1, y=0}) or piece:isMoveBlocked(grid, {x=1, y=0})) then -- kick right, right2, left if grid:canPlacePiece(new_piece:withOffset({x=1, y=0})) then piece:setRelativeRotation(rot_dir):setOffset({x=1, y=0})