cambridge-modpack/tetris/rulesets/ears.lua
2023-04-04 13:53:02 +07:00

42 lines
985 B
Lua

local SRS = require 'tetris.rulesets.standard_ace'
local EARS = SRS:extend()
EARS.name = "E.A.R.S."
EARS.hash = "EARS"
EARS.colourscheme = {
I = "W",
J = "G",
L = "R",
O = "C",
S = "B",
T = "Y",
Z = "O",
}
function EARS:attemptWallkicks(piece, new_piece, rot_dir, grid)
for kd = 1, grid.height do
for x = -kd, kd do
tx = rot_dir == 3 and -x or x
for y = kd, -kd, -1 do
if math.abs(tx) + math.abs(y) == kd then
offset = {x=tx, y=y}
kicked_piece = new_piece:withOffset(offset)
if grid:canPlacePiece(kicked_piece) then
piece:setRelativeRotation(rot_dir)
piece:setOffset(offset)
self:onPieceRotate(piece, grid, offset.y < 0)
return
end
end
end
end
end
end
function EARS:get180RotationValue()
return 2
end
return EARS