Compare commits
17 Commits
pre0.17.2-
...
pre0.17.3-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
373c8a8a5f | ||
|
|
2207f7e414 | ||
|
|
984bb7d6a6 | ||
|
|
664afb0bb3 | ||
|
|
716a08b31d | ||
|
|
a6c63c41b6 | ||
|
|
286e330077 | ||
|
|
5e8af423f2 | ||
|
|
5f539a2d4f | ||
|
|
73f63cfd0a | ||
|
|
11422bee5a | ||
|
|
baf36ac86b | ||
|
|
d8c058b0e1 | ||
|
|
6c69c38b32 | ||
|
|
d17e62e36b | ||
|
|
3a2ec3a5dd | ||
|
|
ce25f17676 |
@@ -10,8 +10,6 @@ Powered by LÖVE, © 2006–2022 LÖVE Development Team.
|
||||
|
||||
Lua is free software distributed under the terms of the MIT license. Copyright © 1994–2022 by Lua.org, PUC-Rio.
|
||||
|
||||
SIMPLE LOVE LIGHTS is under a MIT License. Created by Dylan Hunn.
|
||||
|
||||
json.lua is copyrighted by rxi. © 2022 rxi.
|
||||
|
||||
IBM Plex is copyrighted by the International Business Machines Corporation. IBM and IBM Plex are trademarks of IBM Corp, registered in many jurisdictions worldwide. IBM Plex is licensed under the SIL Open Font License, Version 1.1.
|
||||
|
||||
14
main.lua
@@ -180,7 +180,7 @@ Z.setOnFnKeys({
|
||||
end
|
||||
end
|
||||
end,
|
||||
function()print(WIDGET.getSelected()or"no widget selected")end,
|
||||
function()print(BG.locked)end,
|
||||
function()for k,v in next,_G do print(k,v)end end,
|
||||
function()if love['_openConsole']then love['_openConsole']()end end,
|
||||
})
|
||||
@@ -190,9 +190,6 @@ Z.setDebugInfo{
|
||||
{"Voices",VOC.getQueueCount},
|
||||
{"Audios",love.audio.getSourceCount},
|
||||
}
|
||||
Z.setOnResize(function(w,_)
|
||||
SHADER.warning:send('w',w*SCR.dpi)
|
||||
end)
|
||||
do--Z.setOnFocus
|
||||
local function task_autoSoundOff()
|
||||
while true do
|
||||
@@ -288,6 +285,15 @@ IMG.init{
|
||||
xiaoyaCH='media/image/characters/xiaoya.png',
|
||||
xiaoyaOmino='media/image/characters/xiaoya_Omino.png',
|
||||
mikuCH='media/image/characters/miku.png',
|
||||
z={
|
||||
character='media/image/characters/z_character.png',
|
||||
screen1='media/image/characters/z_screen1.png',
|
||||
screen2='media/image/characters/z_screen2.png',
|
||||
particle1='media/image/characters/z_particle1.png',
|
||||
particle2='media/image/characters/z_particle2.png',
|
||||
particle3='media/image/characters/z_particle3.png',
|
||||
particle4='media/image/characters/z_particle4.png',
|
||||
},
|
||||
electric='media/image/characters/electric.png',
|
||||
hbm='media/image/characters/hbm.png',
|
||||
|
||||
|
||||
BIN
media/image/characters/z_character.png
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
media/image/characters/z_particle1.png
Normal file
|
After Width: | Height: | Size: 418 B |
BIN
media/image/characters/z_particle2.png
Normal file
|
After Width: | Height: | Size: 693 B |
BIN
media/image/characters/z_particle3.png
Normal file
|
After Width: | Height: | Size: 458 B |
BIN
media/image/characters/z_particle4.png
Normal file
|
After Width: | Height: | Size: 491 B |
BIN
media/image/characters/z_screen1.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
media/image/characters/z_screen2.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
@@ -5,19 +5,15 @@ local shader=SHADER.aura
|
||||
local t
|
||||
|
||||
function back.init()
|
||||
t=math.random()*2600
|
||||
t=math.random()*260
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
shader:send('w',SCR.W)
|
||||
shader:send('h',h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
t=(t+dt)%2600
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.08,.08,.084)
|
||||
shader:send('t',t)
|
||||
shader:send('phase',t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle('fill',0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
|
||||
@@ -5,18 +5,14 @@ local shader=SHADER.grad1
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=math.random()*2600
|
||||
back.resize()
|
||||
end
|
||||
function back.resize()
|
||||
shader:send('w',SCR.W)
|
||||
t=math.random()*260
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
t=(t+dt)%2600
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.08,.08,.084)
|
||||
shader:send('t',t)
|
||||
shader:send('phase',t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle('fill',0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
|
||||
@@ -5,18 +5,15 @@ local shader=SHADER.grad2
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=math.random()*2600
|
||||
t=math.random()*260
|
||||
BG.resize(nil,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
shader:send('h',h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
t=(t+dt)%2600
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.08,.08,.084)
|
||||
shader:send('t',t)
|
||||
shader:send('phase',t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle('fill',0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
|
||||
@@ -5,19 +5,15 @@ local shader=SHADER.rgb1
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=math.random()*2600
|
||||
t=math.random()*260
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
shader:send('w',SCR.W)
|
||||
shader:send('h',h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
t=(t+dt)%2600
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.08,.08,.084)
|
||||
shader:send('t',t)
|
||||
shader:send('phase',t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle('fill',0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
|
||||
@@ -5,19 +5,15 @@ local shader=SHADER.rgb2
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=math.random()*2600
|
||||
t=math.random()*260
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
shader:send('w',SCR.W)
|
||||
shader:send('h',h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
t=(t+dt)%2600
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.08,.08,.084)
|
||||
shader:send('t',t)
|
||||
shader:send('phase',t)
|
||||
gc.setShader(shader)
|
||||
gc.rectangle('fill',0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
|
||||
@@ -19,8 +19,8 @@ function back.draw()
|
||||
gc.clear(.08,.08,.084)
|
||||
end
|
||||
gc.push('transform')
|
||||
gc.translate(SCR.cx,SCR.cy+20*sin(t*.02))
|
||||
gc.scale(SCR.k)
|
||||
gc.replaceTransform(SCR.xOy_m)
|
||||
gc.translate(0,20*sin(t*.02))
|
||||
gc.scale(1.26,1.36)
|
||||
if -t%6.26<.1355 then
|
||||
gc.translate(60*sin(t*.26),100*sin(t*.626))
|
||||
|
||||
@@ -165,17 +165,15 @@ do--function applySettings()
|
||||
BG.set()
|
||||
elseif SETTING.bg=='off'then
|
||||
BG.unlock()
|
||||
BG.set('fixColor')
|
||||
BG.send(SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
|
||||
BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
|
||||
BG.lock()
|
||||
elseif SETTING.bg=='custom'then
|
||||
if love.filesystem.getInfo('conf/customBG')then
|
||||
local res,image=pcall(gc.newImage,love.filesystem.newFile('conf/customBG'))
|
||||
if res then
|
||||
BG.unlock()
|
||||
BG.set('custom')
|
||||
gc.setDefaultFilter('linear','linear')
|
||||
BG.send(SETTING.bgAlpha,image)
|
||||
BG.set('custom',SETTING.bgAlpha,image)
|
||||
gc.setDefaultFilter('nearest','nearest')
|
||||
BG.lock()
|
||||
else
|
||||
@@ -184,8 +182,7 @@ do--function applySettings()
|
||||
else--Switch off when custom BG not found
|
||||
SETTING.bg='off'
|
||||
BG.unlock()
|
||||
BG.set('fixColor')
|
||||
BG.send(SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
|
||||
BG.set('fixColor',SETTING.bgAlpha,SETTING.bgAlpha,SETTING.bgAlpha)
|
||||
BG.lock()
|
||||
end
|
||||
end
|
||||
@@ -714,7 +711,7 @@ do--function resetGameData(args)
|
||||
local gameSetting={
|
||||
--Tuning
|
||||
'das','arr','dascut','dropcut','sddas','sdarr',
|
||||
'ihs','irs','ims','RS','FTLock',
|
||||
'ihs','irs','ims','RS',
|
||||
|
||||
--System
|
||||
'skin','face',
|
||||
@@ -943,7 +940,7 @@ do--CUS/SETXXX(k)
|
||||
local warnList={
|
||||
'das','arr','dascut','dropcut','sddas','sdarr',
|
||||
'ihs','irs','ims','RS',
|
||||
'FTLock','frameMul','highCam',
|
||||
'frameMul','highCam',
|
||||
'VKSwitch','VKIcon','VKTrack','VKDodge',
|
||||
'simpMode',
|
||||
}
|
||||
|
||||
@@ -536,7 +536,6 @@ do--Game data tables
|
||||
ROOMENV={
|
||||
--Room config
|
||||
capacity=10,
|
||||
FTLock=true,
|
||||
|
||||
--Basic
|
||||
drop=30,lock=60,
|
||||
@@ -591,7 +590,6 @@ do--Userdata tables
|
||||
ihs=true,irs=true,ims=true,
|
||||
holdMode='hold',
|
||||
RS='TRS',
|
||||
FTLock=true,
|
||||
|
||||
--System
|
||||
reTime=2,
|
||||
|
||||
@@ -758,8 +758,7 @@ return{
|
||||
{"DAS (simple)",
|
||||
"das arr delayedautoshift autorepeatrate",
|
||||
"term",
|
||||
"Imagine typing on a keyboard, where you press and hold the “O” key. \nYou get a long string of o’s.\nOn the timeline, it kinds of looks like o--------------o-o-o-o-o-o-o-o-o\nThe “--------------” is DAS, the “-” is ARR.
|
||||
",
|
||||
"Imagine typing on a keyboard, where you press and hold the “O” key. \nYou get a long string of o’s.\nOn the timeline, it kinds of looks like o--------------o-o-o-o-o-o-o-o-o\nThe “--------------” is DAS, the “-” is ARR.",
|
||||
},
|
||||
{"DAS & ARR",
|
||||
"das arr delayedautoshift autorepeatrate",
|
||||
@@ -786,6 +785,11 @@ return{
|
||||
"term",
|
||||
"Soft Drop Factor\n\nA way to define soft drop speed as a multiple of natural falling speed. In guideline games, the soft drop is usually 20x the speed of natural falling, i.e., it has an SDF of 20. Techmino does not use SDF to define soft drop speed.",
|
||||
},
|
||||
{"Shape & Names",
|
||||
"mino",
|
||||
"term",
|
||||
"Z"..CHAR.mino.Z.." S"..CHAR.mino.S.." J"..CHAR.mino.J.." L"..CHAR.mino.L.." T"..CHAR.mino.T.." O"..CHAR.mino.O.." I"..CHAR.mino.I.." Z5"..CHAR.mino.Z5.." S5"..CHAR.mino.S5.." P"..CHAR.mino.P.." Q"..CHAR.mino.Q.." F"..CHAR.mino.F.." E"..CHAR.mino.E.." T5"..CHAR.mino.T5.." U"..CHAR.mino.U.." V"..CHAR.mino.V.." W"..CHAR.mino.W.." X"..CHAR.mino.X.." J5"..CHAR.mino.J5.." L5"..CHAR.mino.L5.." R"..CHAR.mino.R.." Y"..CHAR.mino.Y.." N"..CHAR.mino.N.." H"..CHAR.mino.H.." I5"..CHAR.mino.I5.." I3"..CHAR.mino.I3.." C"..CHAR.mino.C.." I2"..CHAR.mino.I2.." O1"..CHAR.mino.O1,
|
||||
},
|
||||
{"Bag7 generator",
|
||||
"bag7bag randomgenerator",
|
||||
"term",
|
||||
@@ -1100,11 +1104,11 @@ return{
|
||||
"Go to console, type “rm -s replay“ and then press enter/return.\nTake effect immediately.",
|
||||
},
|
||||
{"Delete cache",
|
||||
"delete cache",
|
||||
"delete cache",
|
||||
"command",
|
||||
"Go to console, type “rm -s cache” and then press enter/return.\nTake effect immediately.",
|
||||
},
|
||||
|
||||
|
||||
--English
|
||||
{"SFX",
|
||||
"soundeffects",
|
||||
|
||||
@@ -785,6 +785,11 @@ return{
|
||||
"term",
|
||||
"Soft Drop Factor\n\nA way to define soft drop speed as a multiple of natural falling speed. In guideline games, the soft drop is usually 20x the speed of natural falling, i.e. it has an SDF of 20. Techmino does not use SDF to define soft drop speed.",
|
||||
},
|
||||
{"Shape & Names",
|
||||
"mino",
|
||||
"term",
|
||||
"Z"..CHAR.mino.Z.." S"..CHAR.mino.S.." J"..CHAR.mino.J.." L"..CHAR.mino.L.." T"..CHAR.mino.T.." O"..CHAR.mino.O.." I"..CHAR.mino.I.." Z5"..CHAR.mino.Z5.." S5"..CHAR.mino.S5.." P"..CHAR.mino.P.." Q"..CHAR.mino.Q.." F"..CHAR.mino.F.." E"..CHAR.mino.E.." T5"..CHAR.mino.T5.." U"..CHAR.mino.U.." V"..CHAR.mino.V.." W"..CHAR.mino.W.." X"..CHAR.mino.X.." J5"..CHAR.mino.J5.." L5"..CHAR.mino.L5.." R"..CHAR.mino.R.." Y"..CHAR.mino.Y.." N"..CHAR.mino.N.." H"..CHAR.mino.H.." I5"..CHAR.mino.I5.." I3"..CHAR.mino.I3.." C"..CHAR.mino.C.." I2"..CHAR.mino.I2.." O1"..CHAR.mino.O1,
|
||||
},
|
||||
{"Bag7 generator",
|
||||
"bag7bag randomgenerator",
|
||||
"term",
|
||||
|
||||
@@ -804,6 +804,11 @@ return{
|
||||
"term",
|
||||
"Soft Drop Factor,软降速度因子(倍率)\n部分游戏中的软降机制就是在按住软降键时方块受到的重力变为原来的若干倍,SDF就是这个变大的倍数。\n基本所有官块和TETR.IO使用这个机制,但本游戏不使用。",
|
||||
},
|
||||
{"方块名称",
|
||||
"mino",
|
||||
"term",
|
||||
"Z"..CHAR.mino.Z.." S"..CHAR.mino.S.." J"..CHAR.mino.J.." L"..CHAR.mino.L.." T"..CHAR.mino.T.." O"..CHAR.mino.O.." I"..CHAR.mino.I.." Z5"..CHAR.mino.Z5.." S5"..CHAR.mino.S5.." P"..CHAR.mino.P.." Q"..CHAR.mino.Q.." F"..CHAR.mino.F.." E"..CHAR.mino.E.." T5"..CHAR.mino.T5.." U"..CHAR.mino.U.." V"..CHAR.mino.V.." W"..CHAR.mino.W.." X"..CHAR.mino.X.." J5"..CHAR.mino.J5.." L5"..CHAR.mino.L5.." R"..CHAR.mino.R.." Y"..CHAR.mino.Y.." N"..CHAR.mino.N.." H"..CHAR.mino.H.." I5"..CHAR.mino.I5.." I3"..CHAR.mino.I3.." C"..CHAR.mino.C.." I2"..CHAR.mino.I2.." O1"..CHAR.mino.O1,
|
||||
},
|
||||
{"Bag7出块",
|
||||
"bag出块 bag7bag",
|
||||
"term",
|
||||
@@ -965,7 +970,8 @@ return{
|
||||
{"QT炮",
|
||||
"qt cannon",
|
||||
"setup",
|
||||
"QT炮,细节未知。",
|
||||
"一种能以更高的概率搭出开局DT Attack的类似DT炮的定式。"..HDwiki,
|
||||
HDsearch.."dt",
|
||||
},
|
||||
{"MT",
|
||||
"mt",
|
||||
@@ -1003,9 +1009,10 @@ return{
|
||||
HDsearch.."godspin",
|
||||
},
|
||||
{"信天翁",
|
||||
"xintianweng",
|
||||
"xintianweng albatross",
|
||||
"setup",
|
||||
"一种高观赏性几乎不浪费T的快节奏强力T2-T3-T2-PC开局。",
|
||||
"一种高观赏性几乎不浪费T的快节奏强力T2-T3-T2-PC开局。"..HDwiki,
|
||||
HDsearch.."Albatross_Special",
|
||||
},
|
||||
{"鹈鹕",
|
||||
"tihu",
|
||||
@@ -1013,9 +1020,22 @@ return{
|
||||
"一种类似信天翁的定式,在块序不能信天翁的时候可以用。",
|
||||
},
|
||||
{"七巧板",
|
||||
"qiqiaoban",
|
||||
"qiqiaoban tangram",
|
||||
"setup",
|
||||
"一种极大概率能摆出来并且很大概率能做到PC的定式,本游戏中的pc练习中空出不规则区域的那个就是七巧板。",
|
||||
"一种极大概率能摆出来并且很大概率能做到PC的定式,本游戏中的pc练习中空出不规则区域的那个就是七巧板。"..HDwiki,
|
||||
HDsearch.."Perfect_Clear_Opener",
|
||||
},
|
||||
{"DPC",
|
||||
"DPC",
|
||||
"setup",
|
||||
"在场地空白,1bag还剩一块的情况下,能够100%搭成的TSD+PC的定式。常见于开局三包PC的后续。"..HDwiki,
|
||||
HDsearch.."DPC_Setups",
|
||||
},
|
||||
{"Gamushiro堆叠",
|
||||
"gamushiro",
|
||||
"setup",
|
||||
"ガムシロ積み(Gamushiro堆叠),一种开局TD-Attack的定式。"..HDwiki,
|
||||
HDsearch.."Gamushiro_Stacking",
|
||||
},
|
||||
|
||||
--形状
|
||||
@@ -1042,6 +1062,12 @@ return{
|
||||
"STMB cave\n在高空3宽坑架SZ捐一个T2的形状。"..HDwiki,
|
||||
HDsearch.."stmb_cave",
|
||||
},
|
||||
{"双刃剑",
|
||||
"shuangrenjian fractal spider",
|
||||
"pattern",
|
||||
"两个T2形状叠在一起。"..HDwiki,
|
||||
HDsearch.."Fractal",
|
||||
},
|
||||
{"LST堆叠",
|
||||
"lst",
|
||||
"pattern",
|
||||
@@ -1061,14 +1087,15 @@ return{
|
||||
HDsearch.."imperial_cross",
|
||||
},
|
||||
{"雨宫炮",
|
||||
"yugong",
|
||||
"yugong amemiya",
|
||||
"pattern",
|
||||
"一种捐T2后可消四的形状,常见于DT的一个分支。",
|
||||
},
|
||||
{"千鸟格子",
|
||||
"qianniaoge",
|
||||
"pattern",
|
||||
"一种在小洞上捐一个T2后还能做一个T2的形状。",
|
||||
"一种在小洞上捐一个T2后还能做一个T2的形状。"..HDwiki,
|
||||
HDsearch.."Cut_copy",
|
||||
},
|
||||
{"六巧板",
|
||||
"liuqiaoban",
|
||||
@@ -1076,9 +1103,10 @@ return{
|
||||
"一种常用于增加中局PC概率的形状,本游戏中的PC练习中空出4×4方形区域就是六巧板。",
|
||||
},
|
||||
{"绯红之王",
|
||||
"feihongzhiwang",
|
||||
"feihongzhiwang king crimson",
|
||||
"pattern",
|
||||
"在STSD上叠若干个T3的形状。",
|
||||
"在STSD上叠若干个T3的形状。"..HDwiki,
|
||||
HDsearch.."King_Crimson",
|
||||
},
|
||||
|
||||
--存档管理
|
||||
|
||||
@@ -315,7 +315,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="Support the author",
|
||||
WidgetText={
|
||||
@@ -459,7 +458,6 @@ return{
|
||||
atkFX="Atk FX",
|
||||
|
||||
frame="Render Frame Rate (%)",
|
||||
FTlock="Frame skip",
|
||||
|
||||
text="Line Clear Pop-Ups",
|
||||
score="Score Pop-Ups",
|
||||
@@ -688,6 +686,7 @@ return{
|
||||
register="Sign Up",
|
||||
email="Email Address",
|
||||
password="Password",
|
||||
showEmail="Show Email",
|
||||
keepPW="Remember me",
|
||||
login="Log In",
|
||||
},
|
||||
|
||||
@@ -186,7 +186,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="Apoyen al Autor",
|
||||
WidgetText={
|
||||
@@ -330,7 +329,6 @@ return{
|
||||
atkFX="FX Vis. de Ataque",
|
||||
|
||||
frame="Ratio de FPSs(%)",
|
||||
FTlock="Bloqueo por frames",
|
||||
|
||||
text="Texto de Acciones",
|
||||
score="Puntaje en Pantalla",
|
||||
@@ -551,6 +549,7 @@ return{
|
||||
register="Registrarse",
|
||||
email="Correo Elec.",
|
||||
password="Contraseña",
|
||||
-- showEmail="Show Email",
|
||||
keepPW="Recordar credenciales",
|
||||
login="Entrar",
|
||||
},
|
||||
|
||||
@@ -282,7 +282,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="Aider le créateur",
|
||||
WidgetText={
|
||||
@@ -423,7 +422,6 @@ return{
|
||||
atkFX="Effets d'attaque",
|
||||
|
||||
frame="Montrer les FPS(%)",
|
||||
-- FTlock="Frame-Time Lock",
|
||||
|
||||
text="Texte d'action",
|
||||
score="Pop-up de score",
|
||||
@@ -642,6 +640,7 @@ return{
|
||||
register="Enregistrement",
|
||||
email="E-mail",
|
||||
password="Mot de passe",
|
||||
-- showEmail="Show Email",
|
||||
-- keepPW="Remember me",
|
||||
login="Connexion",
|
||||
},
|
||||
|
||||
@@ -317,7 +317,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="Dukung pencipta",
|
||||
WidgetText={
|
||||
@@ -461,7 +460,6 @@ return{
|
||||
atkFX="Efek Serang",
|
||||
|
||||
frame="Kecepatan Bingkai (%)",
|
||||
FTlock="Lewat Bingkai",
|
||||
|
||||
text="Teks Baris",
|
||||
score="Teks Nilai",
|
||||
@@ -690,6 +688,7 @@ return{
|
||||
register="Daftar",
|
||||
email="Alamat Email",
|
||||
password="Password",
|
||||
-- showEmail="Show Email",
|
||||
keepPW="Ingat Saya",
|
||||
login="Masuk",
|
||||
},
|
||||
|
||||
@@ -317,7 +317,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="Support the Author",
|
||||
WidgetText={
|
||||
@@ -461,7 +460,6 @@ return{
|
||||
atkFX="攻撃演出",
|
||||
|
||||
frame="レンダリングフレームレート(%)",
|
||||
FTlock="フレームスキップ",
|
||||
|
||||
text="ライン消去ポップ",
|
||||
score="スコアポップ",
|
||||
@@ -690,6 +688,7 @@ return{
|
||||
register="サインアップ",
|
||||
email="Eメールアドレス",
|
||||
password="パスワード",
|
||||
-- showEmail="Show Email",
|
||||
keepPW="常にログイン",
|
||||
login="ログイン",
|
||||
},
|
||||
|
||||
@@ -304,7 +304,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="Support author",
|
||||
WidgetText={
|
||||
@@ -448,7 +447,6 @@ return{
|
||||
atkFX="Nível FX Atk.",
|
||||
|
||||
frame="Render Frame Rate(%)",
|
||||
-- FTlock="Frame-Time Lock",
|
||||
|
||||
text="Texto de ação",
|
||||
score="Pop-up de pontos",
|
||||
@@ -678,6 +676,7 @@ return{
|
||||
register="Registrar",
|
||||
email="Endereço De Email",
|
||||
password="Senha",
|
||||
-- showEmail="Show Email",
|
||||
-- keepPW="Remember me",
|
||||
login="Log in",
|
||||
},
|
||||
|
||||
@@ -269,7 +269,6 @@ return{
|
||||
atkFX="→→~",
|
||||
|
||||
frame="|=|%",
|
||||
FTlock="||=|→→|=||",
|
||||
|
||||
text="ABC",
|
||||
score="+123",
|
||||
@@ -489,7 +488,8 @@ return{
|
||||
register="Sign up",
|
||||
email="@",
|
||||
password="*",
|
||||
-- keepPW="I",
|
||||
showEmail="?",
|
||||
keepPW="!",
|
||||
login="Log in",
|
||||
},
|
||||
register={
|
||||
|
||||
@@ -316,7 +316,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="支持作者",
|
||||
WidgetText={
|
||||
@@ -460,7 +459,6 @@ return{
|
||||
atkFX="攻击特效:",
|
||||
|
||||
frame="绘制帧率(%):",
|
||||
FTlock="逻辑追帧",
|
||||
|
||||
text="消行文本",
|
||||
score="分数动画",
|
||||
@@ -688,6 +686,7 @@ return{
|
||||
register="注册",
|
||||
email="邮箱",
|
||||
password="密码",
|
||||
showEmail="显示邮箱",
|
||||
keepPW="保存密码",
|
||||
login="登录",
|
||||
},
|
||||
|
||||
@@ -314,7 +314,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="供养作者!",
|
||||
WidgetText={
|
||||
@@ -458,7 +457,6 @@ return{
|
||||
atkFX="攻击外汇",
|
||||
|
||||
frame="渲染帧率(%)",
|
||||
FTlock="逻辑追帧",
|
||||
|
||||
text="行清除弹出窗口",
|
||||
score="分数弹出",
|
||||
@@ -686,6 +684,7 @@ return{
|
||||
register="登记",
|
||||
email="电子邮件地址",
|
||||
password="密码",
|
||||
showEmail="显示电子邮件",
|
||||
keepPW="记得我吗",
|
||||
login="登录",
|
||||
},
|
||||
|
||||
@@ -316,7 +316,6 @@ return{
|
||||
Cold_Clear [MinusKelvin]
|
||||
json.lua [rxi]
|
||||
profile.lua [itraykov]
|
||||
simple-love-lights [dylhunn]
|
||||
]],
|
||||
support="支持作者",
|
||||
WidgetText={
|
||||
@@ -460,7 +459,6 @@ return{
|
||||
atkFX="攻擊特效",
|
||||
|
||||
frame="渲染幀率(%)",
|
||||
FTlock="跳幀",
|
||||
|
||||
text="清除文本",
|
||||
score="分數動畫",
|
||||
@@ -688,6 +686,7 @@ return{
|
||||
register="註冊",
|
||||
email="電郵",
|
||||
password="密碼",
|
||||
showEmail="顯示郵箱",
|
||||
keepPW="保存密碼",
|
||||
login="登錄",
|
||||
},
|
||||
|
||||
@@ -39,7 +39,7 @@ Attack system:
|
||||
Combos (REN):
|
||||
The numbers of the combos are equal to (the numbers you clear lines consecutively –1). All damage above (except attack from PC/HPC) will be given a (combo ×25%) bonus, or (combo ×15%) for Single clear (capped at 12 combos), +1 more attack for 3 Combo or more.
|
||||
|
||||
Hemi Perfect Clear (a P.C. “with blocks left below.” If it’s an I clearing 1 line, the remaining blocks must not be player-placed):
|
||||
Hemi Perfect Clear (a P.C. “with blocks left below.” If just one line cleared, the remaining blocks must not be player-placed):
|
||||
- Attack +4, Extra Blocking +2
|
||||
|
||||
Perfect Clear (All Clear):
|
||||
|
||||
@@ -37,7 +37,7 @@ Spin判定:
|
||||
(注:连击数为连续消除次数-1)
|
||||
把上述高级消除/低级消除的攻击直接乘以"连击倍率", 公式为 "连击倍率"=[连击数(上限12)]*[消一行以上25%,只消一行15%]
|
||||
如果消除>=3次时再额外加1攻击
|
||||
半全消("下方有剩余方块"的全消,如果是I消1行则必须不剩余玩家放置的方块):
|
||||
半全消("下方有剩余方块"的全消,如果只消了1行则必须不剩余玩家放置的方块):
|
||||
伤害+4,额外抵挡+2
|
||||
全消:
|
||||
伤害为8~16(本局内递增2),和上述其他伤害取大,+2额外抵挡
|
||||
|
||||
@@ -20,15 +20,15 @@ return{
|
||||
getRank=function(P)
|
||||
local G=P.modeData.gradePts
|
||||
return
|
||||
G>=39 and 5 or -- TM+
|
||||
G>=31 and 4 or -- MM- - TM
|
||||
G>=25 and 3 or -- m8 - MO
|
||||
G>=18 and 2 or -- m1 - m7
|
||||
G>=9 and 1 or -- S1 - S9
|
||||
G>=40 and 5 or -- TM+
|
||||
G>=32 and 4 or -- MM- - TM
|
||||
G>=26 and 3 or -- m8 - MO
|
||||
G>=19 and 2 or -- m1 - m7
|
||||
G>=10 and 1 or -- S1 - S9
|
||||
0
|
||||
|
||||
-- Table of grades vs values
|
||||
-- 9 8 7 6 5 4 3 2 1 S1 S2 S3 S4 S5 S6 S7 S8 S9 m1 m2 m3 m4 m5 m6 m7 m8 m9 M MK MV MO MM- MM MM+ GM- GM GM+ TM- TM TM+
|
||||
-- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
||||
-- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -70,5 +70,4 @@ return{
|
||||
|
||||
bg='none',bgm='race',
|
||||
allowMod=true,
|
||||
FTLock=true,
|
||||
}
|
||||
|
||||
@@ -377,7 +377,6 @@ local DemoEnv={
|
||||
life=1e99,
|
||||
allowMod=false,
|
||||
fine=false,
|
||||
FTLock=false,
|
||||
}
|
||||
function PLY.newDemoPlayer(id)
|
||||
local P=_newEmptyPlayer(id)
|
||||
|
||||
@@ -2671,7 +2671,7 @@ function Player:_die()
|
||||
end
|
||||
end
|
||||
function Player:update(dt)
|
||||
self.trigFrame=self.trigFrame+(self.gameEnv.FTLock and dt*60 or 1)
|
||||
self.trigFrame=self.trigFrame+dt*60
|
||||
if self.alive then
|
||||
local S=self.stat
|
||||
if self.type=='computer'then self.bot:update(dt)end
|
||||
|
||||
@@ -199,8 +199,7 @@ local scene={}
|
||||
|
||||
function scene.sceneInit()
|
||||
reset()
|
||||
BG.set('fixColor')
|
||||
BG.send(.26,.26,.26)
|
||||
BG.set('fixColor',.26,.26,.26)
|
||||
BGM.play(bgm)
|
||||
end
|
||||
|
||||
|
||||
@@ -106,8 +106,7 @@ end
|
||||
local scene={}
|
||||
|
||||
function scene.sceneInit()
|
||||
BG.set('fixColor')
|
||||
BG.send(.26,.62,.26)
|
||||
BG.set('fixColor',.26,.62,.26)
|
||||
_newGame()
|
||||
selected=false
|
||||
end
|
||||
|
||||
@@ -35,6 +35,14 @@ end
|
||||
function scene.mouseUp()
|
||||
release()
|
||||
end
|
||||
function scene.touchDown()
|
||||
press()
|
||||
end
|
||||
function scene.touchUp()
|
||||
if #love.touch.getTouches()==0 then
|
||||
release()
|
||||
end
|
||||
end
|
||||
function scene.keyDown(key,isRep)
|
||||
if isRep then return end
|
||||
if key=='escape'then
|
||||
|
||||
@@ -12,8 +12,7 @@ function scene.sceneInit()
|
||||
lastKey=nil
|
||||
speed=0
|
||||
keyTime={}for i=1,40 do keyTime[i]=-1e99 end
|
||||
BG.set('fixColor')
|
||||
BG.send(.26,.26,.26)
|
||||
BG.set('fixColor',.26,.26,.26)
|
||||
BGM.play('push')
|
||||
end
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ local emailBox=WIDGET.newInputBox{name='email',x=380,y=200,w=500,h=60,limit=128}
|
||||
local passwordBox=WIDGET.newInputBox{name='password',x=380,y=300,w=620,h=60,secret=true,regex="[ -~]",limit=64}
|
||||
|
||||
local savePW=false
|
||||
local showEmail=true
|
||||
|
||||
local function _login()
|
||||
local email,password=emailBox:getText(),passwordBox:getText()
|
||||
@@ -25,19 +26,22 @@ function scene.sceneInit()
|
||||
local data=loadFile('conf/account','-canSkip')
|
||||
if data then
|
||||
savePW=true
|
||||
showEmail=false
|
||||
emailBox.secret=true
|
||||
emailBox:setText(data[1])
|
||||
passwordBox:setText(data[2])
|
||||
end
|
||||
end
|
||||
|
||||
scene.widgetList={
|
||||
WIDGET.newText{name='title', x=80, y=50,font=70,align='L'},
|
||||
WIDGET.newButton{name='register',x=1140,y=100,w=170,h=80,color='lY',code=function()SCN.swapTo('register','swipeR')end},
|
||||
WIDGET.newText{name='title', x=80, y=50,font=70,align='L'},
|
||||
WIDGET.newButton{name='register', x=1140,y=100,w=170,h=80,color='lY',code=function()SCN.swapTo('register','swipeR')end},
|
||||
emailBox,
|
||||
passwordBox,
|
||||
WIDGET.newSwitch{name='keepPW', x=900, y=420,disp=function()return savePW end,code=function()savePW=not savePW end},
|
||||
WIDGET.newKey{name='login', x=1140,y=540,w=170,h=80,font=40,code=_login},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
WIDGET.newSwitch{name='showEmail',x=550, y=420,disp=function()return showEmail end,code=function()showEmail=not showEmail emailBox.secret=not showEmail end},
|
||||
WIDGET.newSwitch{name='keepPW', x=900, y=420,disp=function()return savePW end,code=function()savePW=not savePW end},
|
||||
WIDGET.newKey{name='login', x=1140,y=540,w=170,h=80,font=40,code=_login},
|
||||
WIDGET.newButton{name='back', x=1140,y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
|
||||
}
|
||||
|
||||
return scene
|
||||
|
||||
@@ -75,6 +75,21 @@ function scene.keyDown(key,isRep)
|
||||
end
|
||||
|
||||
function scene.draw()
|
||||
--Character
|
||||
gc.push('transform')
|
||||
local t=love.timer.getTime()
|
||||
gc.setColor(1,1,1)
|
||||
gc.translate(906,456)
|
||||
gc.scale(.6)
|
||||
GC.draw(IMG.z.character)
|
||||
GC.draw(IMG.z.screen1, -91, -157+16*math.sin(t))
|
||||
GC.draw(IMG.z.screen2, 120, -166+16*math.sin(t+1))
|
||||
gc.setColor(1,1,1,.7+.3*math.sin(.6*t)) GC.draw(IMG.z.particle1, -50, 42+6*math.sin(t*0.36))
|
||||
gc.setColor(1,1,1,.7+.3*math.sin(.7*t)) GC.draw(IMG.z.particle2, 110+6*math.sin(t*0.92), 55)
|
||||
gc.setColor(1,1,1,.7+.3*math.sin(.8*t)) GC.draw(IMG.z.particle3, -54+6*math.sin(t*0.48), -248)
|
||||
gc.setColor(1,1,1,.7+.3*math.sin(.9*t)) GC.draw(IMG.z.particle4, 133, -305+6*math.sin(t*0.40))
|
||||
gc.pop()
|
||||
|
||||
gc_setColor(COLOR.Z)
|
||||
|
||||
--Scroller
|
||||
@@ -89,23 +104,25 @@ function scene.draw()
|
||||
if selected>2 then gc_print(bgmList[selected-2],322,350-50)end
|
||||
if selected<#bgmList-1 then gc_print(bgmList[selected+2],322,350+110)end
|
||||
|
||||
--Title
|
||||
if BGM.nowPlay then
|
||||
GC.draw(TEXTURE.title,562,180,nil,.42)
|
||||
local a=-t%2.3/2.3
|
||||
gc_setColor(1,1,1,math.min(a,1))
|
||||
GC.draw(TEXTURE.title_color,562,180,nil,.42+.062-.062*a)
|
||||
end
|
||||
|
||||
--Music player
|
||||
gc.draw(TEXTURE.title,840,220,nil,.5,nil,580,118)
|
||||
if BGM.nowPlay then
|
||||
local t=TIME()
|
||||
setFont(45)
|
||||
GC.shadedPrint(BGM.nowPlay,710,508,'left',2)
|
||||
gc_setColor(sin(t*.5)*.2+.8,sin(t*.7)*.2+.8,sin(t)*.2+.8)
|
||||
gc_print(BGM.nowPlay,710,508)
|
||||
setFont(35)
|
||||
gc_setColor(1,sin(t*2.6)*.5+.5,sin(t*2.6)*.5+.5)
|
||||
gc_print(author[BGM.nowPlay]or"MrZ",670,465)
|
||||
|
||||
local a=-t%2.3/2
|
||||
if a<1 then
|
||||
gc_setColor(1,1,1,a)
|
||||
gc.draw(TEXTURE.title_color,840,220,nil,.5+.062-.062*a,.5+.126-.126*a,580,118)
|
||||
end
|
||||
|
||||
setFont(20)
|
||||
gc_setColor(COLOR.Z)
|
||||
local cur=BGM.playing:tell()
|
||||
|
||||
@@ -69,7 +69,6 @@ scene.widgetList={
|
||||
WIDGET.newSlider{name='atkFX', x=330,y=820,lim=280,w=540,axis={0,5,1},disp=SETval('atkFX'), code=SETsto('atkFX')},
|
||||
|
||||
WIDGET.newSelector{name='frame', x=400,y=890,lim=280,w=460,list={8,10,13,17,22,29,37,47,62,80,100},disp=SETval('frameMul'),code=function(v)SETTING.frameMul=v;Z.setFrameMul(SETTING.frameMul)end},
|
||||
WIDGET.newSwitch{name='FTlock', x=950,y=890,lim=290,disp=SETval('FTLock'), code=SETrev('FTLock')},
|
||||
|
||||
WIDGET.newSwitch{name='text', x=450,y=980,lim=360,disp=SETval('text'), code=SETrev('text')},
|
||||
WIDGET.newSwitch{name='score', x=450,y=1030,lim=360,disp=SETval('score'), code=SETrev('score')},
|
||||
@@ -98,7 +97,14 @@ scene.widgetList={
|
||||
},
|
||||
WIDGET.newSlider{name='bgAlpha', x=1020,y=1430,w=200,
|
||||
axis={0,.8},disp=SETval('bgAlpha'),
|
||||
code=function(v)SETTING.bgAlpha=v BG.send(v,v,v)end,
|
||||
code=function(v)
|
||||
SETTING.bgAlpha=v
|
||||
if BG.cur=='fixColor' then
|
||||
BG.send(v,v,v)
|
||||
else
|
||||
BG.send(v)
|
||||
end
|
||||
end,
|
||||
hideF=function()return SETTING.bg=='on'end
|
||||
},
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
extern float a;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
return vec4(1.,1.,1.,sign(Texel(tex,tex_coords).a)*a);
|
||||
uniform float a;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
return vec4(1.,1.,1.,sign(texture2D(tex,texCoord).a)*a);
|
||||
}
|
||||
|
||||
@@ -1,42 +1,14 @@
|
||||
#define PI 3.1415926535897932384626
|
||||
extern float w,h;
|
||||
extern float t;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
float x=scr_coords.x/w;
|
||||
float y=scr_coords.y/h;
|
||||
float dx,dy;
|
||||
uniform float phase;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
float x=scrCoord.x/love_ScreenSize.x;
|
||||
float y=scrCoord.y/love_ScreenSize.y;
|
||||
vec3 V=vec3(0.);
|
||||
V.r=V.r+smoothstep(1.26,0.,length(vec2(0.5+cos(phase*3.*0.26)*0.4-x,0.5-sin(phase*3.*0.62)*0.4-y)));
|
||||
V.g=V.g+smoothstep(1.26,0.,length(vec2((0.5+cos(phase*3.*0.32)*0.4)-x,(0.5-sin(phase*3.*0.80)*0.4)-y)));
|
||||
V.b=V.b+smoothstep(1.26,0.,length(vec2((0.5-cos(phase*3.*0.49)*0.4)-x,(0.5+sin(phase*3.*0.18)*0.4)-y)));
|
||||
V.rg+=vec2(smoothstep(0.626,0.,length(vec2((0.5+cos(phase*0.53)*0.4)-x,(0.5-sin(phase*0.46)*0.4)-y))));
|
||||
V.rb+=vec2(smoothstep(0.626,0.,length(vec2((0.5+cos(phase*0.98)*0.4)-x,(0.5+sin(phase*0.57)*0.4)-y))));
|
||||
V.gb+=vec2(smoothstep(0.626,0.,length(vec2((0.5-cos(phase*0.86)*0.4)-x,(0.5-sin(phase*0.32)*0.4)-y))));
|
||||
|
||||
dx=0.5+cos(t*3.*0.26)*0.4-x;
|
||||
dy=0.5-sin(t*3.*0.62)*0.4-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.r=V.r+smoothstep(1.26,0.,dx);
|
||||
|
||||
dx=(0.5+cos(t*3.*0.32)*0.4)-x;
|
||||
dy=(0.5-sin(t*3.*0.80)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.g=V.g+smoothstep(1.26,0.,dx);
|
||||
|
||||
dx=(0.5-cos(t*3.*0.49)*0.4)-x;
|
||||
dy=(0.5+sin(t*3.*0.18)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.b=V.b+smoothstep(1.26,0.,dx);
|
||||
|
||||
dx=(0.5+cos(t*0.53)*0.4)-x;
|
||||
dy=(0.5-sin(t*0.46)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.rg+=vec2(smoothstep(0.626,0.,dx));
|
||||
|
||||
dx=(0.5+cos(t*0.98)*0.4)-x;
|
||||
dy=(0.5+sin(t*0.57)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.rb+=vec2(smoothstep(0.626,0.,dx));
|
||||
|
||||
dx=(0.5-cos(t*0.86)*0.4)-x;
|
||||
dy=(0.5-sin(t*0.32)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.gb+=vec2(smoothstep(0.626,0.,dx));
|
||||
|
||||
dx=1.626*max(max(V.r,V.g),V.b);
|
||||
return vec4(V/dx,0.4);
|
||||
return vec4(V/max(max(V.r,V.g),V.b)/1.626,0.4);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
extern float k,b;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
vec4 texcolor=Texel(tex,tex_coords);
|
||||
uniform float k,b;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
vec4 texcolor=texture2D(tex,texCoord);
|
||||
return vec4(
|
||||
(b+texcolor.r*k)*color.r,
|
||||
(b+texcolor.g*k)*color.g,
|
||||
(b+texcolor.b*k)*color.b,
|
||||
(texcolor.r*k+b)*color.r,
|
||||
(texcolor.g*k+b)*color.g,
|
||||
(texcolor.b*k+b)*color.b,
|
||||
texcolor.a*color.a
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
extern float k,b;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
vec4 texcolor=Texel(tex,tex_coords);
|
||||
uniform float k,b;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
vec4 texcolor=texture2D(tex,texCoord);
|
||||
return vec4(
|
||||
(b+texcolor.r*k)*color.r,
|
||||
(b+texcolor.g*k)*color.g,
|
||||
(b+texcolor.b*k)*color.b,
|
||||
(texcolor.r*k+b)*color.r,
|
||||
(texcolor.g*k+b)*color.g,
|
||||
(texcolor.b*k+b)*color.b,
|
||||
texcolor.a*color.a
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
extern float t,w;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
float x=scr_coords.x/w;
|
||||
uniform float phase;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
float x=scrCoord.x/love_ScreenSize.x;
|
||||
return vec4(
|
||||
.8-x*.6,
|
||||
.3+.2*sin(t),
|
||||
.3+.2*sin(phase),
|
||||
.15+x*.7,
|
||||
.4
|
||||
);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
extern float t,h;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
float y=scr_coords.y/h;
|
||||
uniform float phase;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
float y=scrCoord.y/love_ScreenSize.y;
|
||||
return vec4(
|
||||
.8-y*.6,
|
||||
.2+y*.4,
|
||||
.3+.1*sin(t),
|
||||
.3+.1*sin(phase),
|
||||
.4
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
vec4 texcolor=Texel(tex,tex_coords);
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
vec4 texcolor=texture2D(tex,texCoord);
|
||||
return vec4(
|
||||
pow(texcolor.r+.26,.7023),
|
||||
pow(texcolor.g+.26,.7023),
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
extern float t,w,h;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
float x=scr_coords.x/w;
|
||||
float y=scr_coords.y/h;
|
||||
uniform float phase;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
float x=scrCoord.x/love_ScreenSize.x;
|
||||
float y=scrCoord.y/love_ScreenSize.y;
|
||||
return vec4(
|
||||
.8-y*.7+.2*sin(t/6.26),
|
||||
.2+y*.5+.15*sin(t/4.),
|
||||
.2+x*.6-.1*sin(t/2.83),
|
||||
.8-y*.7+.2*sin(phase/6.26),
|
||||
.2+y*.5+.15*sin(phase/4.),
|
||||
.2+x*.6-.1*sin(phase/2.83),
|
||||
.4
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
extern float t,w,h;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
float x=scr_coords.x/w;
|
||||
float y=scr_coords.y/h;
|
||||
uniform float phase;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
float x=scrCoord.x/love_ScreenSize.x;
|
||||
float y=scrCoord.y/love_ScreenSize.y;
|
||||
return vec4(
|
||||
.8-y*.8-.1*sin(t/6.26),
|
||||
.4+.1*sin(t/4.)*(y+2.)/(y+5.),
|
||||
abs(.7-x*1.4+y*.5*sin(t/16.)),
|
||||
.8-y*.8-.1*sin(phase/6.26),
|
||||
.4+.1*sin(phase/4.)*(y+2.)/(y+5.),
|
||||
abs(.7-x*1.4+y*.5*sin(phase/16.)),
|
||||
.4
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
extern float w,level;
|
||||
vec4 effect(vec4 color,Image tex,vec2 tex_coords,vec2 scr_coords){
|
||||
float dx=abs(scr_coords.x/w-0.5);
|
||||
uniform float level;
|
||||
vec4 effect(vec4 color,sampler2D tex,vec2 texCoord,vec2 scrCoord){
|
||||
float dx=abs(scrCoord.x/love_ScreenSize.x-0.5);
|
||||
float a=(dx*2.6-.626)*level;
|
||||
return vec4(1.,0.,0.,a);
|
||||
}
|
||||
|
||||
@@ -2,11 +2,23 @@ return[=[
|
||||
未来计划:
|
||||
R E M A K E
|
||||
|
||||
0.17.3: 矿井 Mine
|
||||
改动:
|
||||
一点魔法
|
||||
代码:
|
||||
升级着色器相关(aura背景表现应该好多了)
|
||||
移除一个没用到的库(虽然也没一点点大)
|
||||
修复:
|
||||
修复Master-G一些问题
|
||||
一些背景相关的问题 #672
|
||||
|
||||
0.17.2: 服务区 Service Area
|
||||
新增:
|
||||
把一些模式加入到大地图上(by NOT_A_ROBOT) #640
|
||||
登录界面会隐藏自动填充的邮箱防止信息泄露 #639
|
||||
改动:
|
||||
大幅下调高级机器人速度
|
||||
移除FTLock设置,全局开启
|
||||
大幅度调低高级机器人速度
|
||||
词典新增一条比较详细的新人指引
|
||||
master_g模式不再限定旋转系统
|
||||
改进几个经典模式(by NOT_A_ROBOT) #661
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
return{
|
||||
["apkCode"]=435,
|
||||
["code"]=1702,
|
||||
["string"]="V0.17.2",
|
||||
["apkCode"]=438,
|
||||
["code"]=1703,
|
||||
["string"]="V0.17.3",
|
||||
["room"]="ver A-7",
|
||||
["name"]="0.17.2",
|
||||
["name"]="矿井 Mine",
|
||||
}
|
||||
|
||||