Super PRS. It's PRS with up-kicks

This commit is contained in:
Rin 2021-08-21 21:33:03 +01:00
parent 00f2d1c4a8
commit 36c38bf574

56
tetris/rulesets/sprs.lua Normal file
View File

@ -0,0 +1,56 @@
local PRS = require 'tetris.rulesets.prs'
local SPRS = PRS:extend()
SPRS.name = "Super P.R.S"
SPRS.hash = "SuperPRS"
SPRS.world = true
function SPRS:attemptWallkicks(piece, newpiece, rot_dir, grid)
for y=0,5 do
for x=0,5 do
local offset = {x=x, y=y}
kicked_piece = newpiece:withOffset(offset)
if grid:canPlacePiece(kicked_piece) then
piece:setRelativeRotation(rot_dir)
piece:setOffset(offset)
self:onPieceRotate(piece, grid)
return
end
end
for x=0,5 do
local offset = {x=-x, y=y}
kicked_piece = newpiece:withOffset(offset)
if grid:canPlacePiece(kicked_piece) then
piece:setRelativeRotation(rot_dir)
piece:setOffset(offset)
self:onPieceRotate(piece, grid)
return
end
end
end
for y=0,-5,-1 do
for x=0,5 do
local offset = {x=x, y=y}
kicked_piece = newpiece:withOffset(offset)
if grid:canPlacePiece(kicked_piece) then
piece:setRelativeRotation(rot_dir)
piece:setOffset(offset)
self:onPieceRotate(piece, grid)
return
end
end
for x=0,5 do
local offset = {x=-x, y=y}
kicked_piece = newpiece:withOffset(offset)
if grid:canPlacePiece(kicked_piece) then
piece:setRelativeRotation(rot_dir)
piece:setOffset(offset)
self:onPieceRotate(piece, grid)
return
end
end
end
end
return SPRS