diff --git a/res/bgm/non-loop.ogg b/res/bgm/non-loop.ogg new file mode 100644 index 0000000..3477bdf Binary files /dev/null and b/res/bgm/non-loop.ogg differ diff --git a/res/bgm/non-start.ogg b/res/bgm/non-start.ogg new file mode 100644 index 0000000..e9a0abf Binary files /dev/null and b/res/bgm/non-start.ogg differ diff --git a/tetris/modes/joker.lua b/tetris/modes/joker.lua index 9f03531..aa2d102 100644 --- a/tetris/modes/joker.lua +++ b/tetris/modes/joker.lua @@ -26,11 +26,25 @@ function JokerGame:new() self.next_queue_length = 6 end -function JokerGame:getARE() return 16 end +function JokerGame:getARE() + if self.level < 200 then return math.ceil(20 - (self.level - 50) / 10) + else return math.max(math.ceil(20 - (self.level - 200) / 7), 5) end +end + function JokerGame:getLineARE() return self:getARE() end -function JokerGame:getDasLimit() return 8 end -function JokerGame:getLineClearDelay() return 6 end -function JokerGame:getLockDelay() return 30 end +function JokerGame:getDasLimit() return 6 end +function JokerGame:getARR() return math.min(1, config.arr) end + +function JokerGame:getLineClearDelay() + if self.level < 200 then return math.ceil(6 - (self.level - 50) / 50) + else return math.max(math.ceil(6 - (self.level - 200) / 33), 3) end +end + +function JokerGame:getLockDelay() + if self.level < 200 then return math.ceil(30 - (self.level - 50) / 10) + else return math.max(math.ceil(30 - (self.level - 200) / 7), 15) end +end + function JokerGame:getGravity() return 20 end function JokerGame:advanceOneFrame() diff --git a/tetris/modes/non.lua b/tetris/modes/non.lua index 78ed7f8..017452c 100644 --- a/tetris/modes/non.lua +++ b/tetris/modes/non.lua @@ -25,8 +25,8 @@ function NightOfNights:new() self.lock_drop = true self.lock_hard_drop = true - self.instant_soft_drop = false - self.instant_hard_drop = false + self.lock_on_soft_drop = false + self.lock_on_hard_drop = false self.enable_hold = true self.next_queue_length = 6 end @@ -47,6 +47,8 @@ function NightOfNights:advanceOneFrame() end self.frames = self.frames + 1 else + self.lock_on_soft_drop = false + self.lock_on_hard_drop = false switchBGM(nil) end end diff --git a/tetris/modes/scoreattack_o.lua b/tetris/modes/scoreattack_o.lua index 106e6ae..0945dc6 100644 --- a/tetris/modes/scoreattack_o.lua +++ b/tetris/modes/scoreattack_o.lua @@ -25,7 +25,8 @@ function ArcadeScoreAttack:new() self.randomizer = History4RollsRandomizer() - self.lock_drop = false + self.lock_drop = true + self.lock_hard_drop = true self.enable_hard_drop = true self.enable_hold = true self.next_queue_length = 5 @@ -121,15 +122,12 @@ end function ArcadeScoreAttack:onPieceEnter() end -function ArcadeScoreAttack:onLineClear(cleared_row_count) - self.lines = self.lines + cleared_row_count +function ArcadeScoreAttack:updateScore(level, drop_bonus, cleared_lines) + self.lines = self.lines + cleared_lines if self.lines >= levelchanges[self.level] then self.level = self.level + 1 self.timeleft = self.timeleft + 1800 end -end - -function ArcadeScoreAttack:updateScore(level, drop_bonus, cleared_lines) local pts = 0 if cleared_lines == 0 then if not self.b2b then self.chain = 0 end diff --git a/tetris/randomizers/fixed_sequence.lua b/tetris/randomizers/fixed_sequence.lua deleted file mode 100644 index cbd8606..0000000 --- a/tetris/randomizers/fixed_sequence.lua +++ /dev/null @@ -1,16 +0,0 @@ -local Randomizer = require 'tetris.randomizers.randomizer' - -local Sequence = Randomizer:extend() - -function Sequence:initialize() - self.sequence = "IJLOT" - self.counter = 0 -end - -function Sequence:generatePiece() - local piece = string.sub(self.sequence, self.counter + 1, self.counter + 1) - self.counter = (self.counter + 1) % string.len(self.sequence) - return piece -end - -return Sequence \ No newline at end of file