From f42f28f9f206e0d930819eb7f459c3cafab73914 Mon Sep 17 00:00:00 2001 From: Ishaan Bhardwaj Date: Sat, 9 Jan 2021 12:07:37 -0500 Subject: [PATCH] WCB shuffles colors every 50 pieces --- tetris/modes/marathon_wcb.lua | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/tetris/modes/marathon_wcb.lua b/tetris/modes/marathon_wcb.lua index 0f680da..8c10f9c 100644 --- a/tetris/modes/marathon_wcb.lua +++ b/tetris/modes/marathon_wcb.lua @@ -11,12 +11,14 @@ MarathonWCBGame.name = "Marathon WCB" MarathonWCBGame.hash = "MarathonWCB" MarathonWCBGame.tagline = "When all the pieces slip right to their destinations... can you keep up?" +local slow = false function MarathonWCBGame:new() MarathonWCBGame.super:new() self.pieces = 0 self.randomizer = History6RollsRandomizer() + self.colour_changed = true self.lock_drop = true self.lock_hard_drop = true @@ -40,7 +42,7 @@ function MarathonWCBGame:getDropSpeed() end function MarathonWCBGame:getARR() - return 0 + return slow and 1 or 0 end function MarathonWCBGame:getARE() @@ -52,7 +54,7 @@ function MarathonWCBGame:getLineARE() end function MarathonWCBGame:getDasLimit() - return 0 + return slow and 15 or 0 end function MarathonWCBGame:getLineClearDelay() @@ -67,9 +69,21 @@ function MarathonWCBGame:getGravity() return self.piece_is_active and 20 or 0 end -function MarathonWCBGame:advanceOneFrame() +function MarathonWCBGame:advanceOneFrame(inputs, ruleset) if self.ready_frames == 0 then self.frames = self.frames + 1 + slow = inputs.hold + if self.pieces % 50 == 0 and not self.colour_changed then + local colours = copy(ruleset.colourscheme) + local pieces = {} + for k, v in pairs(ruleset.colourscheme) do + table.insert(pieces, k) + end + for k, v in pairs(ruleset.colourscheme) do + ruleset.colourscheme[k] = colours[table.remove(pieces, math.random(#pieces))] + end + self.colour_changed = true + end end return true end @@ -89,6 +103,7 @@ end function MarathonWCBGame:onPieceLock() self.super:onPieceLock() self.piece_is_active = false + self.colour_changed = false self.pieces = self.pieces + 1 end