Compare commits

...

11 Commits

Author SHA1 Message Date
MrZ_26
7687fb2c12 版本推进 2022-01-26 00:10:45 +08:00
MrZ_26
1fb741d7c2 大幅降低高难ai速度 2022-01-25 23:00:24 +08:00
MrZ_26
157f8cc7d5 算数小程序进制更明显 close #624 2022-01-25 03:27:40 +08:00
MrZ_26
846d477e9d 不再限定master_g模式的旋转系统 close #626 2022-01-25 00:54:39 +08:00
Chumo2791
452cdf6ab0 add AUR badge (#627) 2022-01-24 16:51:50 +08:00
NOT_A_ROBOT
e9396c43c9 Improved master_g (#622)
Fixed mroll ending not giving you points in the record, fixed crash when you got a negative grade, added colors that indicate cool/regret
2022-01-24 08:46:01 +08:00
MrZ_26
dd726e75e8 麻将小程序使用自制字符(有些小问题,等之后字体修改) 2022-01-22 17:38:13 +08:00
MrZ_26
a66bb9013a gray背景改名fixColor,允许自定义颜色 2022-01-22 17:16:48 +08:00
MrZ_26
ea0448af5a 修改字体文件名大小写(step 2) 2022-01-21 16:02:54 +08:00
MrZ_26
44735cd6cd 修改字体文件名大小写(step 1) 2022-01-21 16:02:41 +08:00
NOT_A_ROBOT
3956d1d7bc Add Classic Lunatic mode (#619) 2022-01-21 03:09:50 +08:00
17 changed files with 149 additions and 60 deletions

View File

@@ -1,11 +1,11 @@
--Customizable grey background
local gc=love.graphics
local back={}
local brightness=.26
local r,g,b=.26,.26,.26
function back.draw()
gc.clear(brightness,brightness,brightness)
gc.clear(r,g,b)
end
function back.event(b)
brightness=b
function back.event(_r,_g,_b)
r,g,b=_r,_g,_b
end
return back

View File

@@ -49,7 +49,7 @@ local botMeta={__index=_undefMethod}
local BOT={}
local AISpeed={60,50,40,30,20,14,10,6,4,3}
local AISpeed={60,50,42,34,27,21,16,12,9,6}
--[[
arg={
next: number of nexts

View File

@@ -1,3 +1,4 @@
local gc_setColor=love.graphics.setColor
return{
das=16,arr=6,
sddas=2,sdarr=2,
@@ -15,16 +16,28 @@ return{
keyCancel={5,6},
mesDisp=function(P)
setFont(75)
local r=P.modeData.target*.1
mStr(r<11 and 19 or r<22 and r+8 or("%02x"):format(r*10-220),63,210)
mText(drawableText.speedLV,63,290)
local r=P.modeData.target/10
mStr(r<11 and 19 or r<22 and r+9 or("%02x"):format(r*10-220),63,210)
mText(TEXTOBJ.speedLV,63,290)
PLY.draw.drawProgress(P.stat.row,P.modeData.target)
if P.modeData.drought>7 then
if P.modeData.drought<=14 then
gc_setColor(1,1,1,P.modeData.drought/7-1)
else
local gb=P.modeData.drought<=21 and 2-P.modeData.drought/14 or .5
gc_setColor(1,gb,gb)
end
setFont(50)
mStr(P.modeData.drought,63,130)
mDraw(MODES.drought_l.icon,63,200,nil,.5)
end
end,
task=function(P)
P.modeData.target=10
end,
dropPiece=function(P)
hook_drop=function(P)
local D=P.modeData
D.drought=P.lastPiece.id==7 and 0 or D.drought+1
if P.stat.row>=D.target then
D.target=D.target+10
if D.target==200 then

View File

@@ -3,6 +3,8 @@ local regretDelay=-1
local int_grade=0
local grade_points=0
local int_grade_boosts={0,1,2,3,4,5,5,6,6,7,7,7,8,8,8,9,9,9,10,11,12,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26}
local coolList={false,false,false,false,false,false,false,false,false}
local regretList={false,false,false,false,false,false,false,false,false,false}
local gradeList={
"9","8","7","6","5","4","3","2","1",
"S1","S2","S3","S4","S5","S6","S7","S8","S9",
@@ -74,7 +76,7 @@ end
local function getGrade()
if int_grade==nil then int_grade=0 end
if rollGrades==nil then rollGrades=0 end
return gradeList[math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList)]
return gradeList[math.max(math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList),1)]
end
local function addGrade(row, cmb, lvl) -- IGS = internal grade system
if row<1 then return end
@@ -112,7 +114,6 @@ return{
das=16,arr=1,
minsdarr=1,
ihs=true,irs=true,ims=false,
RS='SRS_plus',
mesDisp=function(P)
gc.setColor(1,1,1,1)
setFont(45)
@@ -139,6 +140,16 @@ return{
setFont(20)
mStr(grade_points,63,208)
setFont(45)
if coolList[math.ceil(P.modeData.pt/100+0.01)] then
gc.setColor(0,1,0,1)
elseif P.stat.frame-prevSectTime > cool_time[math.ceil(P.modeData.pt/100+0.01)] then
gc.setColor(0.7,0.7,0.7,1)
end
if coolList[math.ceil(P.modeData.pt/100+0.01)] and regretList[math.ceil(P.modeData.pt/100+0.01)] then
gc.setColor(1,1,0,1)
elseif regretList[math.ceil(P.modeData.pt/100+0.01)] then
gc.setColor(1,0,0,1)
end
PLY.draw.drawProgress(P.modeData.pt,P.modeData.target)
end
end,
@@ -175,6 +186,7 @@ return{
if D.pt%100>70 and not prevDrop70 then
if P.stat.frame-prevSectTime < cool_time[math.ceil(D.pt/100)] then
cools=cools+1
coolList[math.ceil(D.pt/100)]=true
P:_showText("COOL!",0,-120,80,'fly',.8)
nextSpeedUp=true
end
@@ -247,12 +259,17 @@ return{
isInRollTrans=false
prevDrop70=false
nextSpeedUp=false
coolList={false,false,false,false,false,false,false,false,false}
regretList={false,false,false,false,false,false,false,false,false,false}
local decayRate={125,80,80,50,45,45,45,40,40,40,40,40,30,30,30,20,20,20,20,20,15,15,15,15,15,15,15,15,15,15,10,10,10,9,9,9,8,8,8,7,7,7,6}
local decayTimer=0
while true do
YIELD()
P.modeData.grade=getGrade()
P.modeData.gradePts=math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList)
P.modeData.gradePts=math.max(math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList),1)
if P.stat.frame-prevSectTime > reg_time[math.ceil(P.modeData.pt/100+0.01)] then
regretList[math.ceil(P.modeData.pt/100)]=true
end
if regretDelay>-1 then
regretDelay=regretDelay-1
if regretDelay==-1 then P:_showText("REGRET!!",0,-120,80,'beat',.8) end
@@ -287,8 +304,11 @@ return{
decayTimer=0
grade_points=grade_points-1
end
elseif isInRoll and P.stat.frame>=prevSectTime+3600 then
elseif isInRoll and P.stat.frame>=prevSectTime+3599 then
rollGrades=rollGrades+(cools>8 and 1.6 or 0.5)
P.modeData.grade=getGrade()
P.modeData.gradePts=math.min(math.floor(int_grade_boosts[math.min(int_grade+1,#int_grade_boosts)]+rollGrades+cools+1-regrets),#gradeList)
YIELD()
P:win('finish')
end
end

View File

@@ -165,8 +165,8 @@ do--function applySettings()
BG.set()
elseif SETTING.bg=='off'then
BG.unlock()
BG.set('gray')
BG.send(SETTING.bgAlpha)
BG.set('fixColor')
BG.send(SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
BG.lock()
elseif SETTING.bg=='custom'then
if love.filesystem.getInfo('conf/customBG')then
@@ -184,8 +184,8 @@ do--function applySettings()
else--Switch off when custom BG not found
SETTING.bg='off'
BG.unlock()
BG.set('gray')
BG.send(SETTING.bgAlpha)
BG.set('fixColor')
BG.send(SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
BG.lock()
end
end

View File

@@ -327,7 +327,7 @@ EVENTSETS={
'backfire_120','backfire_60','backfire_30','backfire_0',
'checkAttack_100',
'checkLine_10','checkLine_20','checkLine_40','checkLine_100','checkLine_200','checkLine_400','checkLine_1000',
'classic_e','classic_h','classic_u',
'classic_e','classic_h','classic_l','classic_u',
'defender_n','defender_l',
'dig_10l','dig_40l','dig_100l','dig_400l',
'dig_h','dig_u',

23
parts/modes/classic_l.lua Normal file
View File

@@ -0,0 +1,23 @@
return{
env={
center=0,ghost=0,
smooth=false,
face={0,0,2,2,2,0,0},
eventSet='classic_l',
bg='rgb',bgm='1980s',
},
slowMark=true,
score=function(P)return{P.stat.score,P.stat.row}end,
scoreDisp=function(D)return D[1].." "..D[2].." Lines"end,
comp=function(a,b)return a[1]>b[1]or a[1]==b[1]and a[2]<b[2]end,
getRank=function(P)
local L=P.stat.row
return
L>=200 and 5 or
L>=140 and 4 or
L>=100 and 3 or
L>=60 and 2 or
L>=30 and 1 or
L>=1 and 0
end,
}

View File

@@ -12,7 +12,7 @@ local function b2(i)
s=(i%2)..s
i=int(i/2)
end
return s
return '0b'..s
end
local function b8(i)
if i==0 then return 0 end
@@ -21,7 +21,7 @@ local function b8(i)
s=(i%8)..s
i=int(i/8)
end
return s
return '0o'..s
end
local function b16(i)
if i==0 then return 0 end
@@ -30,7 +30,7 @@ local function b16(i)
s=char((i%16<10 and 48 or 55)+i%16)..s
i=int(i/16)
end
return s
return '0x'..s
end
local levels={
@@ -208,7 +208,7 @@ function scene.draw()
FONT.set(35)
GC.mStr("["..level.."]",640,30)
FONT.set(100)
FONT.set(80)
if type(question)=='table'then gc.setColor(1,1,1)end
GC.mStr(question,640,60)

View File

@@ -199,7 +199,8 @@ local scene={}
function scene.sceneInit()
reset()
BG.set('gray')
BG.set('fixColor')
BG.send(.26,.26,.26)
BGM.play(bgm)
end

View File

@@ -7,13 +7,7 @@ local gc_print=gc.print
local max,min=math.max,math.min
local ins,rem=table.insert,table.remove
local colorName={
m={'','','','','','','','',''},
p={'','','','','','','','',''},
s={'1','2','3','4','5','6','7','8','9'},
}
local deck0={}
local cardText={}
for i=1,9 do
for _=1,4 do
ins(deck0,'m'..i)
@@ -21,9 +15,6 @@ for i=1,9 do
ins(deck0,'s'..i)
if i<=7 then ins(deck0,'z'..i)end
end
cardText['m'..i]={COLOR.lF,colorName.m[i]}
cardText['p'..i]={COLOR.lB,colorName.p[i]}
cardText['s'..i]={COLOR.lG,colorName.s[i]}
end
-- deck0[TABLE.find(deck0,'m5')]='m0'
-- deck0[TABLE.find(deck0,'p5')]='p0'
@@ -32,13 +23,42 @@ end
-- cardText['5p+']={COLOR.R,'⑤'}
-- cardText['5s+']={COLOR.R,'5'}
cardText['z1']={COLOR.Z,''}
cardText['z2']={COLOR.Z,''}
cardText['z3']={COLOR.Z,'西'}
cardText['z4']={COLOR.Z,''}
cardText['z5']={COLOR.Z,' '}
cardText['z6']={COLOR.G,''}
cardText['z7']={COLOR.R,''}
local cardText={
m1={COLOR.D,CHAR.mahjong.m1Base,COLOR.R,CHAR.mahjong.mComb},
m2={COLOR.D,CHAR.mahjong.m2Base,COLOR.R,CHAR.mahjong.mComb},
m3={COLOR.D,CHAR.mahjong.m3Base,COLOR.R,CHAR.mahjong.mComb},
m4={COLOR.D,CHAR.mahjong.m4Base,COLOR.R,CHAR.mahjong.mComb},
m5={COLOR.D,CHAR.mahjong.m5Base,COLOR.R,CHAR.mahjong.mComb},
m6={COLOR.D,CHAR.mahjong.m6Base,COLOR.R,CHAR.mahjong.mComb},
m7={COLOR.D,CHAR.mahjong.m7Base,COLOR.R,CHAR.mahjong.mComb},
m8={COLOR.D,CHAR.mahjong.m8Base,COLOR.R,CHAR.mahjong.mComb},
m9={COLOR.D,CHAR.mahjong.m9Base,COLOR.R,CHAR.mahjong.mComb},
p1={COLOR.D,CHAR.mahjong.p1},
p2={COLOR.D,CHAR.mahjong.p2Base,COLOR.D,CHAR.mahjong.p2Comb},
p3={COLOR.D,CHAR.mahjong.p3Base,COLOR.R,CHAR.mahjong.p3Comb1,COLOR.D,CHAR.mahjong.p3Comb2},
p4={COLOR.D,CHAR.mahjong.p4Base,COLOR.D,CHAR.mahjong.p4Comb},
p5={COLOR.D,CHAR.mahjong.p5Base,COLOR.D,CHAR.mahjong.p5Comb1,COLOR.R,CHAR.mahjong.p5Comb2},
p6={COLOR.D,CHAR.mahjong.p6Base,COLOR.R,CHAR.mahjong.p6Comb},
p7={COLOR.D,CHAR.mahjong.p7Base,COLOR.R,CHAR.mahjong.p7Comb},
p8={COLOR.D,CHAR.mahjong.p8},
p9={COLOR.D,CHAR.mahjong.p9Base,COLOR.R,CHAR.mahjong.p9Comb1,COLOR.D,CHAR.mahjong.p9Comb2},
s1={COLOR.G,CHAR.mahjong.s1Base,COLOR.R,CHAR.mahjong.s1Comb},
s2={COLOR.G,CHAR.mahjong.s2},
s3={COLOR.G,CHAR.mahjong.s3},
s4={COLOR.G,CHAR.mahjong.s4},
s5={COLOR.G,CHAR.mahjong.s5Base,COLOR.R,CHAR.mahjong.s5Comb},
s6={COLOR.G,CHAR.mahjong.s6},
s7={COLOR.G,CHAR.mahjong.s7Base,COLOR.R,CHAR.mahjong.s7Comb},
s8={COLOR.G,CHAR.mahjong.s8},
s9={COLOR.G,CHAR.mahjong.s9Base,COLOR.R,CHAR.mahjong.s9Comb},
z1={COLOR.D,CHAR.mahjong.ton},
z2={COLOR.D,CHAR.mahjong.nan},
z3={COLOR.D,CHAR.mahjong.sha},
z4={COLOR.D,CHAR.mahjong.pe},
z5={COLOR.D,CHAR.mahjong.haku},
z6={COLOR.G,CHAR.mahjong.hatsu},
z7={COLOR.R,CHAR.mahjong.chun},
}for _,v in next,cardText do ins(v,COLOR.D)ins(v,CHAR.mahjong.frameComb) end
local deck,hand,pool
local selected
@@ -48,13 +68,13 @@ local function _getPoolCardArea(i)
local col=i-row*10
return
240+70*col,45+95*row,
65,90
60,84
end
local function _getHandCardArea(i)
return
20+70*i+(i==14 and 30 or 0),480,
65,90
60,84
end
local function _newGame()
@@ -67,7 +87,7 @@ end
local function _checkWin()
if #hand==14 then
--???
MES.new('info',"Coming soon!")
end
end
@@ -86,6 +106,8 @@ end
local scene={}
function scene.sceneInit()
BG.set('fixColor')
BG.send(.26,.62,.26)
_newGame()
selected=false
end
@@ -132,42 +154,44 @@ end
function scene.draw()
setFont(35)
gc_setColor(COLOR.Z)
gc_print(': '..#deck,1060,30)
gc_setColor(COLOR.D)
gc_print(''..#deck,1060,30)
gc_setLineWidth(4)
setFont(50)
setFont(85)
for i=1,#hand do
local c=hand[i]
local x,y,w,h=_getHandCardArea(i)
if i==selected then
gc_translate(0,-10)
gc_setColor(1,1,1,.4)
gc_rectangle('fill',x,y,w,h,5)
end
gc_setColor(COLOR.Z)
gc_rectangle('line',x,y,w,h,5)
gc_rectangle('fill',x,y,w,h,12)
if i==selected then
gc_setColor(1,1,1,.4)
gc_rectangle('fill',x,y,w,h,12)
end
gc_setColor(1,1,1)
mStr(cardText[c],x+w/2,y+10)
mStr(cardText[c],x+w/2,y-17)
if i==selected then gc_translate(0,10)end
end
for i=1,#pool do
local c=pool[i]
local x,y,w,h=_getPoolCardArea(i)
if selected and hand[selected]==c then
gc_setColor(1,1,1,.4)
gc_rectangle('fill',x,y,w,h,5)
end
gc_setColor(COLOR.Z)
gc_rectangle('line',x,y,w,h,5)
gc_rectangle('fill',x,y,w,h,12)
if selected and hand[selected]==c then
gc_setColor(1,.2,.2,.3)
gc_rectangle('fill',x,y,w,h,12)
end
gc_setColor(1,1,1)
mStr(cardText[c],x+w/2,y+10)
mStr(cardText[c],x+w/2,y-17)
end
end
scene.widgetList={
WIDGET.newButton{name='reset',x=160, y=100,w=180,h=100,color='lG',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
WIDGET.newKey{name="hu", x=1150,y=370,w=140,h=80,font=50,sound=false,fText='自摸',code=pressKey'return'},
WIDGET.newButton{name='reset',x=160, y=100,w=180,h=100,color='lR',font=50,fText=CHAR.icon.retry_spin,code=pressKey'r'},
WIDGET.newKey{name="hu", x=1150,y=370,w=140,h=80,font=45,sound=false,fText='自摸',code=pressKey'return'},
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene

View File

@@ -12,7 +12,8 @@ function scene.sceneInit()
lastKey=nil
speed=0
keyTime={}for i=1,40 do keyTime[i]=-1e99 end
BG.set('gray')
BG.set('fixColor')
BG.send(.26,.26,.26)
BGM.play('push')
end

View File

@@ -2,11 +2,16 @@ return[=[
未来计划:
R E M A K E
g0.17.2: 0.17.2
0.17.2: 0.17.2
新增:
改动:
大幅下调高难机器人速度
master_g模式不再限定旋转系统
完善当前的攻击系统,进入稳定状态
更新说明书的攻击系统章节
麻将小程序更像麻将
算数小程序微调
加回classic_l模式
代码:
完善字体并换用OTF
修复:

View File

@@ -1,6 +1,8 @@
# Techmino
![platform](https://img.shields.io/badge/platform-windows%20%7C%20linux%20%7C%20android%20%7C%20macos%20%7C%20ios-brightgreen.svg)
[![AUR version](https://img.shields.io/aur/version/techmino-client?label=AUR&logo=archlinux)](https://aur.archlinux.org/packages/techmino-client)
[![Techmino Develop CI](https://github.com/26F-Studio/Techmino/actions/workflows/dev.yml/badge.svg)](https://github.com/26F-Studio/Techmino/actions/workflows/dev.yml) [![Techmino Test CI](https://github.com/26F-Studio/Techmino/actions/workflows/test.yml/badge.svg)](https://github.com/26F-Studio/Techmino/actions/workflows/test.yml) [![Techmino Release CI](https://github.com/26F-Studio/Techmino/actions/workflows/release.yml/badge.svg)](https://github.com/26F-Studio/Techmino/actions/workflows/release.yml)

View File

@@ -1,5 +1,5 @@
return{
["apkCode"]=431,
["apkCode"]=432,
["code"]=1702,
["string"]="V0.17.2",
["room"]="ver A-6",