14 Commits

Author SHA1 Message Date
Vick Scarlet
e420fdf8fd update data & special thanks 2021-09-08 13:14:50 +08:00
Vick Scarlet
418734cfce change package.json 2021-09-08 12:58:11 +08:00
Vick Scarlet
d08efd4d3c update data 2021-09-08 12:54:25 +08:00
Vick Scarlet
0e919dcb8a update build 2021-09-08 12:35:13 +08:00
Vick Scarlet
31034b064d fix issue #214 #195 2021-09-08 11:59:47 +08:00
神戸小鳥
a36ef5953b Merge pull request #211 from Icingworld/patch-1
Update app.js
2021-09-08 10:55:21 +08:00
Vick Scarlet
73405837c9 update build 2021-09-08 10:49:45 +08:00
神戸小鳥
aa887b5b08 Merge pull request #213 from raven3005672/feature/enter-press
MOD: 调整回车键逻辑
2021-09-08 10:48:08 +08:00
神戸小鳥
59b8d32232 Merge branch 'master' into feature/enter-press 2021-09-08 10:47:05 +08:00
Vick Scarlet
4c0fc07ff8 update style add TMS property 2021-09-08 10:43:01 +08:00
Vick Scarlet
e18c730d1e update data 2021-09-08 08:29:49 +08:00
Vick Scarlet
37196e1924 update specialthanks 2021-09-08 08:22:27 +08:00
yanglinbj01
96178012d4 MOD: 调整回车键逻辑 2021-09-08 00:56:45 +08:00
Icingworld
40ad57dd93 Update app.js 2021-09-07 20:32:25 +08:00
15 changed files with 7534 additions and 376 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1948,7 +1948,7 @@
"SPR": 1
},
"include": "EVT?[10228]",
"exclude": "EVT?[10229,11171,11093,10610,10611,10612]"
"exclude": "EVT?[10229,11171,11232,11093,10610,10611,10612]"
},
"10230": {
"id": 10230,
@@ -1957,7 +1957,7 @@
"SPR": -2
},
"include": "EVT?[10198,10155,10156,10226]",
"exclude": "(EVT?[10230,10016,10017])|(TLT?[1015])",
"exclude": "(EVT?[10230,10016,11232,10017])|(TLT?[1015])",
"branch": [
"TLT?[1027]:10232",
"SPR<2:10062"
@@ -2011,7 +2011,7 @@
"id": 10236,
"event": "你年龄大了,随便找了一个将就着结婚了。",
"include": "EVT?[10009]",
"exclude": "(EVT?[10235,10236,10234,10250,10233,10231,10230,10229,10610,10611,10612,10088])|(TLT?[1027])"
"exclude": "(EVT?[10235,10236,10234,10250,10233,10231,10230,10229,11232,10610,10611,10612,10088])|(TLT?[1027])"
},
"10237": {
"id": 10237,
@@ -3658,7 +3658,7 @@
"id": 10424,
"event": "日本发生8.0级地震。",
"include": "EVT?[10009,10010]",
"exclude": "EVT?[10424,10425]",
"exclude": "EVT?[10424,11476,10425]",
"branch": [
"SPR>9:20425"
]
@@ -3667,7 +3667,7 @@
"id": 10425,
"event": "日本发生9.0级地震。",
"include": "EVT?[10009]",
"exclude": "EVT?[10425,10424]",
"exclude": "EVT?[10425,11476,10424]",
"branch": [
"SPR>7:20425"
]
@@ -3772,7 +3772,7 @@
"id": 10439,
"event": "日本武力攻占珍珠港。",
"include": "EVT?[10009]",
"exclude": "EVT?[10439]"
"exclude": "EVT?[10439,11476]"
},
"10440": {
"id": 10440,
@@ -3833,7 +3833,7 @@
"id": 10448,
"event": "国家公布中产阶级标准家庭年收入100万。",
"include": "EVT?[10009,10010]",
"exclude": "EVT?[10448]",
"exclude": "EVT?[10448,11297]",
"branch": [
"MNY<4:20448"
]
@@ -3921,7 +3921,7 @@
},
"10460": {
"id": 10460,
"event": "美国宣布进入社会主义社会。",
"event": "美国爆发了第二次南北战争,南方社会主义党和北方民主党之间发生了战争,最终南方获得了胜利,美国成为了新的社会主义国家。",
"include": "EVT?[10009]",
"exclude": "EVT?[10460]",
"branch": [
@@ -4992,7 +4992,7 @@
"SPR": 1
},
"include": "EVT?[10606]",
"exclude": "(EVT?[10611,10610,10612,20596])|(TLT?[1027])"
"exclude": "(EVT?[10611,10610,11232,10612,20596])|(TLT?[1027])"
},
"10612": {
"id": 10612,
@@ -5001,7 +5001,7 @@
"SPR": 1
},
"include": "EVT?[10579,10580,10581,10582,10583,10584]",
"exclude": "(EVT?[10612,10610,10611])|(TLT?[1027])"
"exclude": "(EVT?[10612,11232,10610,10611])|(TLT?[1027])"
},
"10613": {
"id": 10613,
@@ -5558,13 +5558,13 @@
"id": 10698,
"event": "日本动漫产业彻底灭亡。",
"include": "EVT?[10011,10010]",
"exclude": "EVT?[10698]"
"exclude": "EVT?[10698,11476]"
},
"10699": {
"id": 10699,
"event": "日本制造出最新作战兵器:高达。",
"include": "EVT?[10011]",
"exclude": "EVT?[10699]"
"exclude": "EVT?[10699,11476]"
},
"10700": {
"id": 10700,
@@ -6327,7 +6327,7 @@
"id": 10812,
"event": "全球变暖严重专家称100年内日本就会彻底沉没。",
"include": "EVT?[10011]",
"exclude": "EVT?[10812]"
"exclude": "EVT?[10812,11476]"
},
"10813": {
"id": 10813,
@@ -6623,7 +6623,7 @@
"id": 10854,
"event": "爸妈带你去日本旅游。",
"include": "EVT?[10822,10823]",
"exclude": "EVT?[10854,10868,10869]"
"exclude": "EVT?[10854,10868,10869,11476]"
},
"10855": {
"id": 10855,
@@ -8217,7 +8217,7 @@
"id": 11093,
"event": "你结婚了。",
"include": "EVT?[10956,10957]",
"exclude": "(EVT?[11093,10612,11171,10229,10610,10611])|(TLT?[1027])"
"exclude": "(EVT?[11093,10612,11171,11232,10229,10610,10611])|(TLT?[1027])"
},
"11094": {
"id": 11094,
@@ -8707,7 +8707,7 @@
"id": 11171,
"event": "你结婚了。",
"include": "EVT?[10010]",
"exclude": "(EVT?[11171,10612,11093,10229,10610,10611])|(TLT?[1027])"
"exclude": "(EVT?[11171,11232,10612,11093,10229,10610,10611])|(TLT?[1027])"
},
"11172": {
"id": 11172,
@@ -9560,7 +9560,7 @@
"id": 11297,
"event": "我国进入共产主义社会。",
"include": "EVT?[11263]",
"exclude": "EVT?[11297,11287]"
"exclude": "EVT?[11297,11287,10448]"
},
"11298": {
"id": 11298,
@@ -10690,7 +10690,7 @@
"id": 11463,
"event": "你消灭了日本所有的男性。",
"include": "EVT?[21457]",
"exclude": "EVT?[11463]"
"exclude": "EVT?[11463,11476]"
},
"11464": {
"id": 11464,
@@ -10748,6 +10748,89 @@
"include": "TLT?[1132]",
"exclude": "EVT?[11469]"
},
"11470": {
"id": 11470,
"event": "为维护网络文明环境,日本将被和谐为月本。",
"exclude": "EVT?[11470,11476]"
},
"11471": {
"id": 11471,
"event": "超级管理员Admin已被击败。",
"include": "EVT?[10010]",
"exclude": "EVT?[11471]"
},
"11472": {
"id": 11472,
"event": "4月10号一些兄弟们失去了家园只留下了那段话暗号不变江湖再见滴滴。天王盖地虎……",
"include": "EVT?[10010]",
"exclude": "EVT?[11472]"
},
"11473": {
"id": 11473,
"event": "据一位资深游戏制作者透露:某游戏的第六代作品正在紧密制作当中,他们已经建好了文件夹,确定消息可靠。",
"include": "EVT?[10010]",
"exclude": "EVT?[11473]"
},
"11474": {
"id": 11474,
"event": "湾区程序员建国,禁止变更需求被列入宪法。",
"exclude": "EVT?[11474]"
},
"11475": {
"id": 11475,
"event": "你去听了一场电子管风琴音乐会,感觉自己的洪荒之力正在觉醒",
"effect": {
"STR": 1
},
"include": "(MNY>7)&(EVT?[10010])",
"exclude": "EVT?[11475]"
},
"11476": {
"id": 11476,
"event": "小日子过得不错的国家认祖归宗,归化为恒桑省。",
"exclude": "EVT?[11476]"
},
"11477": {
"id": 11477,
"event": "某孙姓漫画家沉迷摸鱼,最终放弃漫画。意外中奖一亿后,醒来发现是做梦。",
"include": "EVT?[10009]",
"exclude": "EVT?[11477]"
},
"11478": {
"id": 11478,
"event": "某网红天天忙于相亲,导致粉丝不满,最终不得不公开宣布自己转投独身主义。",
"include": "EVT?[10009]",
"exclude": "EVT?[11478]"
},
"11479": {
"id": 11479,
"event": "可以自主发明的发明机被发明,奇怪的发明充斥世界,引发了灾难。",
"include": "EVT?[10010]",
"exclude": "EVT?[11479]"
},
"11480": {
"id": 11480,
"event": "国足夺得世界杯。",
"exclude": "EVT?[11480]"
},
"11481": {
"id": 11481,
"event": "虚拟偶像王加然在一次直播中宣布与同事杜向碗成为恋人。",
"include": "EVT?[10010]",
"exclude": "EVT?[11481]"
},
"11482": {
"id": 11482,
"event": "民间一款名为“人生重开模拟器”的游戏正在兴起,引起热议。",
"include": "EVT?[10009]",
"exclude": "EVT?[11482]"
},
"11483": {
"id": 11483,
"event": "一位打气球摊老板被发现竟是地下军火大亨。",
"include": "EVT?[10011]",
"exclude": "EVT?[11483]"
},
"20007": {
"id": 20007,
"event": "你喜欢看画面人设好看的动漫。",
@@ -11141,6 +11224,11 @@
"include": "(EVT?[10365])&(INT>100)&(TLT?[1048])",
"exclude": "EVT?[20384]"
},
"20408": {
"id": 20408,
"event": "你觉醒前世记忆,重新踏上修行路。",
"include": "(TLT?[1134])&(EVT?[10391])"
},
"20409": {
"id": 20409,
"event": "你没有扛过这一劫。灵魂碎片侥幸逃出,你转世重生了。",
@@ -11328,7 +11416,10 @@
"20534": {
"id": 20534,
"event": "你跳出来管他们,被其中一个学生掏枪打死了。",
"NoRandom": 1
"NoRandom": 1,
"branch": [
"TLT?[1108]:10000"
]
},
"20557": {
"id": 20557,

Binary file not shown.

View File

@@ -39,5 +39,804 @@
"id": 8,
"group": 2,
"name": "加藤骑士"
},
"9": {
"id": 9,
"group": 2,
"name": "amy"
},
"10": {
"id": 10,
"group": 2,
"name": "zhaow"
},
"11": {
"id": 11,
"group": 2,
"name": "shiki"
},
"12": {
"id": 12,
"group": 2,
"name": "小羊"
},
"13": {
"id": 13,
"group": 2,
"name": "狂啸"
},
"14": {
"id": 14,
"group": 2,
"name": "穆尔"
},
"15": {
"id": 15,
"group": 2,
"name": "北村·失恋大明神·佑作"
},
"16": {
"id": 16,
"group": 2,
"name": "好奶茶"
},
"17": {
"id": 17,
"group": 2,
"name": "鬼!"
},
"18": {
"id": 18,
"group": 1,
"name": "阿园",
"comment": "我是嘉然小姐的狗"
},
"19": {
"id": 19,
"group": 2,
"name": "灬"
},
"20": {
"id": 20,
"group": 2,
"name": "枪之恶魔"
},
"21": {
"id": 21,
"group": 2,
"name": "黄胖子"
},
"22": {
"id": 22,
"group": 2,
"name": "丁丁炒面196"
},
"23": {
"id": 23,
"group": 2,
"name": "打个肉山盹"
},
"24": {
"id": 24,
"group": 2,
"name": "吱歪"
},
"25": {
"id": 25,
"group": 2,
"name": "changduangeng"
},
"26": {
"id": 26,
"group": 2,
"name": "八云碎"
},
"27": {
"id": 27,
"group": 2,
"name": " Lain音酱"
},
"28": {
"id": 28,
"group": 1,
"name": "A",
"comment": "脑洞,记录每个人的灵感。"
},
"29": {
"id": 29,
"group": 2,
"name": " 热心网友影绰"
},
"30": {
"id": 30,
"group": 2,
"name": "然然"
},
"31": {
"id": 31,
"group": 2,
"name": "蛤迩斯特斯"
},
"32": {
"id": 32,
"group": 2,
"name": "石龙"
},
"33": {
"id": 33,
"group": 2,
"name": "Rouben"
},
"34": {
"id": 34,
"group": 2,
"name": "火星落日"
},
"35": {
"id": 35,
"group": 2,
"name": "我是个路人"
},
"36": {
"id": 36,
"group": 2,
"name": "大宝向前冲冲冲"
},
"37": {
"id": 37,
"group": 2,
"name": "失去的以前"
},
"38": {
"id": 38,
"group": 2,
"name": "小迷途哦"
},
"39": {
"id": 39,
"group": 2,
"name": "Rouben"
},
"40": {
"id": 40,
"group": 2,
"name": "七"
},
"41": {
"id": 41,
"group": 2,
"name": "爷只想要修仙"
},
"42": {
"id": 42,
"group": 2,
"name": "胖罐子胖摔"
},
"43": {
"id": 43,
"group": 2,
"name": "御坂零"
},
"44": {
"id": 44,
"group": 2,
"name": "会飞的煤球"
},
"45": {
"id": 45,
"group": 2,
"name": "hapemxg"
},
"46": {
"id": 46,
"group": 2,
"name": "贺开文"
},
"47": {
"id": 47,
"group": 2,
"name": "Paradox"
},
"48": {
"id": 48,
"group": 2,
"name": "王野"
},
"49": {
"id": 49,
"group": 2,
"name": "煋人"
},
"50": {
"id": 50,
"group": 2,
"name": "陌生人"
},
"51": {
"id": 51,
"group": 2,
"name": "玘宁"
},
"52": {
"id": 52,
"group": 2,
"name": "俊夫爱贺宁"
},
"53": {
"id": 53,
"group": 2,
"name": "一只大肥羊"
},
"54": {
"id": 54,
"group": 2,
"name": "骰一"
},
"55": {
"id": 55,
"group": 2,
"name": "优纪"
},
"56": {
"id": 56,
"group": 2,
"name": "金牛座小南"
},
"57": {
"id": 57,
"group": 2,
"name": "水墨苍穹"
},
"58": {
"id": 58,
"group": 2,
"name": "konoMozartda"
},
"59": {
"id": 59,
"group": 2,
"name": "10thD"
},
"60": {
"id": 60,
"group": 2,
"name": "Allen Slettes"
},
"61": {
"id": 61,
"group": 2,
"name": "槐明清雪"
},
"62": {
"id": 62,
"group": 2,
"name": "古米廖夫Offical"
},
"63": {
"id": 63,
"group": 2,
"name": "Aruupaka"
},
"64": {
"id": 64,
"group": 2,
"name": "KNK"
},
"65": {
"id": 65,
"group": 2,
"name": " 空白永不败北"
},
"66": {
"id": 66,
"group": 2,
"name": "过多久"
},
"67": {
"id": 67,
"group": 2,
"name": "春夏"
},
"68": {
"id": 68,
"group": 2,
"name": "与扇皆落"
},
"69": {
"id": 69,
"group": 2,
"name": "乌兰洛娃"
},
"70": {
"id": 70,
"group": 2,
"name": "贝多布芬"
},
"71": {
"id": 71,
"group": 2,
"name": "心态棒棒"
},
"72": {
"id": 72,
"group": 2,
"name": "木头"
},
"73": {
"id": 73,
"group": 2,
"name": "松之道"
},
"74": {
"id": 74,
"group": 2,
"name": "和林七友"
},
"75": {
"id": 75,
"group": 1,
"name": "indigle",
"comment": "Bronies,bronies everywhere."
},
"76": {
"id": 76,
"group": 2,
"name": "Simple森破"
},
"77": {
"id": 77,
"group": 2,
"name": "阿凡达搞葫芦娃"
},
"78": {
"id": 78,
"group": 2,
"name": "林海"
},
"79": {
"id": 79,
"group": 2,
"name": "米-Maons"
},
"80": {
"id": 80,
"group": 2,
"name": "Lenny"
},
"81": {
"id": 81,
"group": 1,
"name": "人生苦短",
"comment": "生活可以失去很多,但沙雕不能丢失。愿快乐长存"
},
"82": {
"id": 82,
"group": 2,
"name": "kkr"
},
"83": {
"id": 83,
"group": 2,
"name": "kamuXiY"
},
"84": {
"id": 84,
"group": 2,
"name": "DKLucy"
},
"85": {
"id": 85,
"group": 2,
"name": "金闪闪yyds"
},
"86": {
"id": 86,
"group": 2,
"name": "Devil"
},
"87": {
"id": 87,
"group": 2,
"name": "君漪"
},
"88": {
"id": 88,
"group": 2,
"name": "小明皮痒求锤"
},
"89": {
"id": 89,
"group": 2,
"name": "夏戀雪"
},
"90": {
"id": 90,
"group": 2,
"name": "ap0000"
},
"91": {
"id": 91,
"group": 2,
"name": "晴蓝茶陌"
},
"92": {
"id": 92,
"group": 2,
"name": "黎黎要早睡"
},
"93": {
"id": 93,
"group": 2,
"name": "L3Yi"
},
"94": {
"id": 94,
"group": 2,
"name": "冬瓜汤圆"
},
"95": {
"id": 95,
"group": 2,
"name": "漩涡派大星"
},
"96": {
"id": 96,
"group": 2,
"name": "神丶暴龙战士灬张杨"
},
"97": {
"id": 97,
"group": 2,
"name": "NovaDNG"
},
"98": {
"id": 98,
"group": 2,
"name": "千梦天宇"
},
"99": {
"id": 99,
"group": 2,
"name": "霸,霸宋"
},
"100": {
"id": 100,
"group": 2,
"name": "棠椿庭"
},
"101": {
"id": 101,
"group": 2,
"name": "卷心菜"
},
"102": {
"id": 102,
"group": 2,
"name": "鸡神"
},
"103": {
"id": 103,
"group": 2,
"name": "leavatain"
},
"104": {
"id": 104,
"group": 2,
"name": "南溪潇湘"
},
"105": {
"id": 105,
"group": 2,
"name": "弥夏"
},
"106": {
"id": 106,
"group": 2,
"name": "午安僵尸"
},
"107": {
"id": 107,
"group": 2,
"name": "抹茶菠萝包"
},
"108": {
"id": 108,
"group": 2,
"name": "血溅未央"
},
"109": {
"id": 109,
"group": 1,
"name": "千层蛋糕",
"comment": "如果可以,请拾起年少时的幻想与疯狂,那是生活不曾亏待于我们的证明"
},
"110": {
"id": 110,
"group": 1,
"name": "零下热情",
"comment": "作者真给力,游戏真稀奇"
},
"111": {
"id": 111,
"group": 2,
"name": "淼"
},
"112": {
"id": 112,
"group": 2,
"name": "呆了个呆"
},
"113": {
"id": 113,
"group": 2,
"name": "天一方"
},
"114": {
"id": 114,
"group": 2,
"name": "冰棍雪糕"
},
"115": {
"id": 115,
"group": 2,
"name": "番茄一碗"
},
"116": {
"id": 116,
"group": 2,
"name": "我也不知道"
},
"117": {
"id": 117,
"group": 2,
"name": "江子川"
},
"118": {
"id": 118,
"group": 2,
"name": "嘿嘿567"
},
"119": {
"id": 119,
"group": 2,
"name": "Undead恩赐"
},
"120": {
"id": 120,
"group": 2,
"name": "安德拉"
},
"121": {
"id": 121,
"group": 2,
"name": "rua宝rua宝rua"
},
"122": {
"id": 122,
"group": 2,
"name": "变成光出轨奶琳小姐"
},
"123": {
"id": 123,
"group": 2,
"name": "二哥没牛子"
},
"124": {
"id": 124,
"group": 2,
"name": "活在梦里"
},
"125": {
"id": 125,
"group": 2,
"name": "胖贼"
},
"126": {
"id": 126,
"group": 2,
"name": "wairy"
},
"127": {
"id": 127,
"group": 2,
"name": "尨图"
},
"128": {
"id": 128,
"group": 2,
"name": "哆啦xzx梦"
},
"129": {
"id": 129,
"group": 2,
"name": "符狸"
},
"130": {
"id": 130,
"group": 2,
"name": "吾名洛尉迟"
},
"131": {
"id": 131,
"group": 2,
"name": "Nybama"
},
"132": {
"id": 132,
"group": 2,
"name": "全体目光向我看齐"
},
"133": {
"id": 133,
"group": 2,
"name": "墨水"
},
"134": {
"id": 134,
"group": 2,
"name": "lkaiser"
},
"135": {
"id": 135,
"group": 2,
"name": " 鱿鱼有了忧郁症很犹豫"
},
"136": {
"id": 136,
"group": 2,
"name": "sky_sam"
},
"137": {
"id": 137,
"group": 2,
"name": "没人要的瓜娃子"
},
"138": {
"id": 138,
"group": 2,
"name": "六道神"
},
"139": {
"id": 139,
"group": 2,
"name": "Incubator"
},
"140": {
"id": 140,
"group": 2,
"name": "雨溟"
},
"141": {
"id": 141,
"group": 1,
"name": "印记",
"comment": "特别感谢媳妇对我事业的支持。"
},
"142": {
"id": 142,
"group": 2,
"name": "草帽"
},
"143": {
"id": 143,
"group": 2,
"name": "好大只36"
},
"144": {
"id": 144,
"group": 2,
"name": "MissVIP_ms"
},
"145": {
"id": 145,
"group": 2,
"name": "拂晓"
},
"146": {
"id": 146,
"group": 2,
"name": "…"
},
"147": {
"id": 147,
"group": 2,
"name": "清岗"
},
"148": {
"id": 148,
"group": 2,
"name": "红尘多情客"
},
"149": {
"id": 149,
"group": 2,
"name": "Akily"
},
"150": {
"id": 150,
"group": 2,
"name": "工具人老衲"
},
"151": {
"id": 151,
"group": 2,
"name": "小爱"
},
"152": {
"id": 152,
"group": 2,
"name": "羊296"
},
"153": {
"id": 153,
"group": 2,
"name": "轻幻幻啊"
},
"154": {
"id": 154,
"group": 2,
"name": "Brinter"
},
"155": {
"id": 155,
"group": 2,
"name": "俗人"
},
"156": {
"id": 156,
"group": 2,
"name": "我大哥瀚青青"
},
"157": {
"id": 157,
"group": 2,
"name": "233号咸鱼"
},
"158": {
"id": 158,
"group": 2,
"name": "Leeeooo"
},
"159": {
"id": 159,
"group": 2,
"name": "阿泰格"
},
"160": {
"id": 160,
"group": 2,
"name": " "
},
"161": {
"id": 161,
"group": 2,
"name": "老茶树菇"
},
"162": {
"id": 162,
"group": 1,
"name": "爱发电用户_fUH5",
"comment": "若真的可以重来,那这次人生的意义不就变了吗?"
},
"163": {
"id": 163,
"group": 2,
"name": "Autumn_Loveworld"
},
"164": {
"id": 164,
"group": 2,
"name": "PPCC"
},
"165": {
"id": 165,
"group": 2,
"name": "白微瑕"
},
"166": {
"id": 166,
"group": 1,
"name": "瓜皮",
"comment": "祝国内各位有梦想的独立游戏制作人一切顺利"
}
}

Binary file not shown.

View File

@@ -1,7 +1,7 @@
{
"name": "xlsx_transform",
"name": "life_restart",
"type": "module",
"bin": "test/index.js",
"bin": "repl/index.js",
"scripts": {
"test": "node test",
"xlsxTransform": "node utils/xlsxTransform.js data",

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@ class App{
#life;
#pages;
#currentPage;
#talentSelected = new Set();
#totalMax=20;
#isEnd = false;
@@ -29,6 +30,14 @@ class App{
window.onerror = (event, source, lineno, colno, error) => {
this.hint(`[ERROR] at (${source}:${lineno}:${colno})\n\n${error?.stack||error||'unknow Error'}`, 'error');
}
const keyDownCallback = (keyboardEvent) => {
if (keyboardEvent.which === 13 || keyboardEvent.keyCode === 13) {
const pressEnterFunc = this.#pages[this.#currentPage]?.pressEnter;
pressEnterFunc && typeof pressEnterFunc === 'function' && pressEnterFunc();
}
}
window.removeEventListener('keydown', keyDownCallback);
window.addEventListener('keydown', keyDownCallback);
}
initPages() {
@@ -55,6 +64,7 @@ class App{
<div style="font-size:1.5rem; font-weight:normal;">这垃圾人生一秒也不想呆了</div>
</div>
<button id="restart" class="mainbtn"><span class="iconfont">&#xe6a7;</span>立即重开</button>
<a href="https://discord.gg/U3qrf49NMQ" style="z-index: 9999;" aria-label="Chat on Discord"><button class="discord-btn"><svg width="50%" height="55" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0)"><path d="M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z" fill="#ffffff"/></g><defs><clipPath id="clip0"><rect width="71" height="55" fill="white"/></clipPath></defs></svg>CHAT</button><style>.discord-btn {position: fixed;bottom: 0.5rem;left: 0.5rem;background-color: #5865F2;padding: 0.7rem;height: auto;color: white;text-align: right;vertical-align: middle;border: none;width: 6.5rem;font-size: 1rem;border-radius: 4px;}.discord-btn svg {height: 1.5rem;position: absolute;top: 50%;left: 0;transform: translateY(-50%);}.discord-btn:hover svg{animation:discord-wave 560ms ease-in-out;}@keyframes discord-wave{0%,100%{transform:translateY(-50%) rotate(0)}20%,60%{transform:translateY(-50%) rotate(-25deg)}40%,80%{transform:translateY(-50%) rotate(10deg)}}@media (max-width:500px){.discord-btn:hover svg{animation:none}.discord-btn svg{animation:discord-wave 560ms ease-in-out}}</style></a>
</div>
`);
@@ -69,13 +79,21 @@ class App{
.find('#rank')
.click(()=>this.hint('别卷了!没有排行榜'));
if(localStorage.getItem('theme') == 'light') {
indexPage.find('#themeToggleBtn').text('黑')
} else{
indexPage.find('#themeToggleBtn').text('白')
}
indexPage
.find("#themeToggleBtn")
.click(() => {
if(localStorage.getItem('theme') == 'light') {
localStorage.setItem('theme', 'dark');
indexPage.find('#themeToggleBtn').text('白')
} else {
localStorage.setItem('theme', 'light');
indexPage.find('#themeToggleBtn').text('黑')
}
this.setTheme(localStorage.getItem('theme'))
@@ -299,11 +317,11 @@ class App{
});
this.switch('trajectory');
this.#pages.trajectory.born();
$(document).keydown(function(event){
if(event.which == 32 || event.which == 13){
$('#lifeTrajectory').click();
}
})
// $(document).keydown(function(event){
// if(event.which == 32 || event.which == 13){
// $('#lifeTrajectory').click();
// }
// })
});
// Trajectory
@@ -311,8 +329,8 @@ class App{
<div id="main">
<ul id="lifeProperty" class="lifeProperty"></ul>
<ul id="lifeTrajectory" class="lifeTrajectory"></ul>
<button id="summary" class="mainbtn" style="top:auto; bottom:0.1rem; left: 25%;">人生总结</button>
<button id="domToImage" class="mainbtn" style="top:auto; bottom:0.1rem; left: 75%; display: none">人生回放</button>
<button id="summary" class="mainbtn" style="top:auto; bottom:0.1rem; left:auto; right:50%; transform: translate(-2rem,-50%);">人生总结</button>
<button id="domToImage" class="mainbtn" style="top:auto; bottom:0.1rem; left:50%; right:auto; transform: translate(2rem,-50%); display: none;">人生回放</button>
<div class="domToImage2wx">
<img src="" id="endImage" />
</div>
@@ -417,7 +435,9 @@ class App{
this.#pages = {
loading: {
page: loadingPage,
clear: ()=>{},
clear: ()=>{
this.#currentPage = 'loading';
},
},
index: {
page: indexPage,
@@ -425,7 +445,11 @@ class App{
btnRestart: indexPage.find('#restart'),
hint: indexPage.find('.hint'),
cnt: indexPage.find('#cnt'),
pressEnter: ()=>{
this.#pages.index.btnRestart.click();
},
clear: ()=>{
this.#currentPage = 'index';
indexPage.find('.hint').hide();
const times = this.times;
@@ -463,7 +487,21 @@ class App{
},
talent: {
page: talentPage,
talentList: talentPage.find('#talents'),
btnRandom: talentPage.find('#random'),
btnNext: talentPage.find('#next'),
pressEnter: ()=>{
const talentList = this.#pages.talent.talentList;
const btnRandom = this.#pages.talent.btnRandom;
const btnNext = this.#pages.talent.btnNext;
if (talentList.children().length) {
btnNext.click();
} else {
btnRandom.click();
}
},
clear: ()=>{
this.#currentPage = 'talent';
talentPage.find('ul.selectlist').empty();
talentPage.find('#random').show();
this.#totalMax = 20;
@@ -471,7 +509,12 @@ class App{
},
property: {
page: propertyPage,
btnStart: propertyPage.find('#start'),
pressEnter: ()=>{
this.#pages.property.btnStart.click();
},
clear: ()=>{
this.#currentPage = 'property';
freshTotal();
propertyPage
.find('#talentSelectedView')
@@ -480,7 +523,12 @@ class App{
},
trajectory: {
page: trajectoryPage,
lifeTrajectory: trajectoryPage.find('#lifeTrajectory'),
pressEnter: ()=>{
this.#pages.trajectory.lifeTrajectory.click();
},
clear: ()=>{
this.#currentPage = 'trajectory';
trajectoryPage.find('#lifeTrajectory').empty();
trajectoryPage.find('#summary').hide();
this.#isEnd = false;
@@ -492,6 +540,7 @@ class App{
summary: {
page: summaryPage,
clear: ()=>{
this.#currentPage = 'summary';
const judge = summaryPage.find('#judge');
const talents = summaryPage.find('#talents');
judge.empty();
@@ -596,8 +645,8 @@ class App{
}
}
get times() {return JSON.parse(localStorage.times||'0') || 0;}
set times(v) {localStorage.times = JSON.stringify(parseInt(v) || 0)};
get times() {return this.#life?.times || 0;}
set times(v) { if(this.#life) this.#life.times = v };
}

View File

@@ -122,6 +122,9 @@ class Life {
exclusive(talents, exclusive) {
return this.#talent.exclusive(talents, exclusive);
}
get times() { return this.#property?.get(this.#property.TYPES.TMS) || 0; }
set times(v) { return this.#property?.set(this.#property.TYPES.TMS, v) || 0; }
}
export default Life;

View File

@@ -4,15 +4,16 @@ class Property {
constructor() {}
TYPES = {
AGE: "AGE",
CHR: "CHR",
INT: "INT",
STR: "STR",
MNY: "MNY",
SPR: "SPR",
LIF: "LIF",
TLT: "TLT",
EVT: "EVT",
AGE: "AGE", // 年龄 age AGE
CHR: "CHR", // 颜值 charm CHR
INT: "INT", // 智力 intelligence INT
STR: "STR", // 体质 strength STR
MNY: "MNY", // 家境 money MNY
SPR: "SPR", // 快乐 spirit SPR
LIF: "LIF", // 生命 life LIFE
TLT: "TLT", // 天赋 talent TLT
EVT: "EVT", // 事件 event EVT
TMS: "TMS", // 次数 times TMS
};
#ageData;
@@ -71,6 +72,8 @@ class Property {
case this.TYPES.TLT:
case this.TYPES.EVT:
return clone(this.#data[prop]);
case this.TYPES.TMS:
return JSON.parse(localStorage.times||'0') || 0;
default: return 0;
}
}
@@ -87,8 +90,11 @@ class Property {
case this.TYPES.TLT:
case this.TYPES.EVT:
this.#data[prop] = clone(value);
break;
default: return 0;
return;
case this.TYPES.TMS:
localStorage.times = JSON.stringify(parseInt(value) || 0);
return;
default: return;
}
}
@@ -126,7 +132,7 @@ class Property {
case this.TYPES.SPR:
case this.TYPES.LIF:
this.#data[prop] += Number(value);
break;
return;
case this.TYPES.TLT:
case this.TYPES.EVT:
const v = this.#data[prop];
@@ -135,7 +141,13 @@ class Property {
if(index!=-1) v.splice(index,1);
}
if(!v.includes(value)) v.push(value);
break;
return;
case this.TYPES.TMS:
this.set(
prop,
this.get(prop) + parseInt(value)
);
return;
default: return;
}
}

View File

@@ -9,12 +9,13 @@ async function debug() {
await life.initial();
life.restart({
CHR: 5, // 颜值 charm CHR
INT: 5, // 智力 intelligence INT
STR: 5, // 体质 strength STR
MNY: 5, // 家境 money MNY
SPR: 5, // 快乐 spirit SPR
TLT: [1004, 1005, 1009], // 天赋 talent TLT
CHR: 2000, // 颜值 charm CHR
INT: 2000, // 智力 intelligence INT
STR: 2000, // 体质 strength STR
MNY: 2000, // 家境 money MNY
SPR: 2000, // 快乐 spirit SPR
AGE: 100,
TLT: [1134, 1048, 1009], // 天赋 talent TLT
});
const lifeTrajectory = [];
let trajectory;
@@ -42,6 +43,7 @@ async function debug() {
}
).join('\n ')
);
if(age == 99) debugger
} while(!trajectory.isEnd)
// debugger;
}

View File

@@ -19,7 +19,8 @@ async function transform(filePath) {
const newData = {};
data[sheetName] = newData;
rawData.shift();
for(const row of rawData) {
for(const index in rawData) {
const row = rawData[index];
const rowData = {};
let mainKey;
for(let key in row) {
@@ -51,7 +52,11 @@ async function transform(filePath) {
rowData[key] = cell;
}
}
if(mainKey===undefined) return console.error('No Main Key', rowData);
if(mainKey===undefined) {
console.warn('[WARN][No Main Key]', filePath, sheetName, parseInt(index), rowData);
continue;
}
if(newData[mainKey]) console.warn('[WARN][Duplicate Key]', mainKey, filePath, sheetName, parseInt(index), '\n\t', JSON.stringify(newData[mainKey]), '\n\t', JSON.stringify(rowData));
newData[mainKey] = rowData;
}
}

View File

@@ -34,7 +34,6 @@
</div>
</div>
<a href="https://github.com/VickScarlet/lifeRestart" class="github-corner" style="z-index: 9999;" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; left: 0; transform: scale(-1, 1);" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style></a>
<a href="https://discord.gg/U3qrf49NMQ" style="z-index: 9999;" aria-label="Chat on Discord"><button class="discord-btn"><svg width="50%" height="55" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0)"><path d="M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z" fill="#ffffff"/></g><defs><clipPath id="clip0"><rect width="71" height="55" fill="white"/></clipPath></defs></svg>CHAT</button><style>.discord-btn {position: fixed;bottom: 0.5rem;left: 0.5rem;background-color: #5865F2;padding: 0.7rem;height: auto;color: white;text-align: right;vertical-align: middle;border: none;width: 6.5rem;font-size: 1rem;border-radius: 4px;}.discord-btn svg {height: 1.5rem;position: absolute;top: 50%;left: 0;transform: translateY(-50%);}.discord-btn:hover svg{animation:discord-wave 560ms ease-in-out;}@keyframes discord-wave{0%,100%{transform:translateY(-50%) rotate(0)}20%,60%{transform:translateY(-50%) rotate(-25deg)}40%,80%{transform:translateY(-50%) rotate(10deg)}}@media (max-width:500px){.discord-btn:hover svg{animation:none}.discord-btn svg{animation:discord-wave 560ms ease-in-out}}</style></a>
</body>
<script>
if ('serviceWorker' in navigator) {

View File

@@ -34,6 +34,5 @@
</div>
</div>
<a href="https://github.com/VickScarlet/lifeRestart" class="github-corner" style="z-index: 9999;" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; left: 0; transform: scale(-1, 1);" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style></a>
<a href="https://discord.gg/U3qrf49NMQ" style="z-index: 9999;" aria-label="Chat on Discord"><button class="discord-btn"><svg width="50%" height="55" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0)"><path d="M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z" fill="#ffffff"/></g><defs><clipPath id="clip0"><rect width="71" height="55" fill="white"/></clipPath></defs></svg>CHAT</button><style>.discord-btn {position: fixed;bottom: 0.5rem;left: 0.5rem;background-color: #5865F2;padding: 0.7rem;height: auto;color: white;text-align: right;vertical-align: middle;border: none;width: 6.5rem;font-size: 1rem;border-radius: 4px;}.discord-btn svg {height: 1.5rem;position: absolute;top: 50%;left: 0;transform: translateY(-50%);}.discord-btn:hover svg{animation:discord-wave 560ms ease-in-out;}@keyframes discord-wave{0%,100%{transform:translateY(-50%) rotate(0)}20%,60%{transform:translateY(-50%) rotate(-25deg)}40%,80%{transform:translateY(-50%) rotate(10deg)}}@media (max-width:500px){.discord-btn:hover svg{animation:none}.discord-btn svg{animation:discord-wave 560ms ease-in-out}}</style></a>
</body>
</html>