mirror of
https://github.com/VickScarlet/lifeRestart.git
synced 2026-03-25 08:34:16 +08:00
update data
add replacemant talent add random property
This commit is contained in:
@@ -1066,7 +1066,7 @@
|
|||||||
"name": "刷刷刷",
|
"name": "刷刷刷",
|
||||||
"description": "集齐橙色天赋",
|
"description": "集齐橙色天赋",
|
||||||
"grade": 3,
|
"grade": 3,
|
||||||
"condition": "(ATLT?[1023])&(ATLT?[1048])&(ATLT?[1064])&(ATLT?[1114])&(ATLT?[1135])",
|
"condition": "(ATLT?[1023])&(ATLT?[1048])&(ATLT?[1064])&(ATLT?[1114])&(ATLT?[1135])&(ATLT?[1141])",
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"opportunity": "START"
|
"opportunity": "START"
|
||||||
},
|
},
|
||||||
@@ -1120,7 +1120,7 @@
|
|||||||
"name": "信条",
|
"name": "信条",
|
||||||
"description": "遇到时光倒流",
|
"description": "遇到时光倒流",
|
||||||
"grade": 1,
|
"grade": 1,
|
||||||
"condition": "EVT?[11468,11469]",
|
"condition": "EVT?[11468,11469,20390]",
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"opportunity": "TRAJECTORY"
|
"opportunity": "TRAJECTORY"
|
||||||
},
|
},
|
||||||
@@ -1438,5 +1438,23 @@
|
|||||||
"condition": "EVT?[40070]",
|
"condition": "EVT?[40070]",
|
||||||
"hide": 1,
|
"hide": 1,
|
||||||
"opportunity": "TRAJECTORY"
|
"opportunity": "TRAJECTORY"
|
||||||
|
},
|
||||||
|
"261": {
|
||||||
|
"id": 261,
|
||||||
|
"name": "薅羊毛专家",
|
||||||
|
"description": "有会员,所以急着投胎",
|
||||||
|
"grade": 2,
|
||||||
|
"condition": "(TLT?[1122])&(TLT?[1141])",
|
||||||
|
"hide": 0,
|
||||||
|
"opportunity": "START"
|
||||||
|
},
|
||||||
|
"262": {
|
||||||
|
"id": 262,
|
||||||
|
"name": "上当了",
|
||||||
|
"description": "太贪婪而被骗",
|
||||||
|
"grade": 0,
|
||||||
|
"condition": "TLT?[1136]",
|
||||||
|
"hide": 1,
|
||||||
|
"opportunity": "START"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
@@ -66612,6 +66612,7 @@
|
|||||||
"20383*0.01",
|
"20383*0.01",
|
||||||
"20384*0.01",
|
"20384*0.01",
|
||||||
"40060*1000000000",
|
"40060*1000000000",
|
||||||
|
"20390",
|
||||||
"40002*1000000340",
|
"40002*1000000340",
|
||||||
"40003*1000000340",
|
"40003*1000000340",
|
||||||
"40004*1000000340",
|
"40004*1000000340",
|
||||||
@@ -71292,6 +71293,7 @@
|
|||||||
"20383*0.01",
|
"20383*0.01",
|
||||||
"20384*0.01",
|
"20384*0.01",
|
||||||
"40060*1000000000",
|
"40060*1000000000",
|
||||||
|
"20390",
|
||||||
"40002*1000000385",
|
"40002*1000000385",
|
||||||
"40003*1000000385",
|
"40003*1000000385",
|
||||||
"40004*1000000385",
|
"40004*1000000385",
|
||||||
@@ -71708,6 +71710,7 @@
|
|||||||
"20383*0.01",
|
"20383*0.01",
|
||||||
"20384*0.01",
|
"20384*0.01",
|
||||||
"40060*1000000000",
|
"40060*1000000000",
|
||||||
|
"20390",
|
||||||
"40002*1000000389",
|
"40002*1000000389",
|
||||||
"40003*1000000389",
|
"40003*1000000389",
|
||||||
"40004*1000000389",
|
"40004*1000000389",
|
||||||
|
|||||||
BIN
data/age.xlsx
BIN
data/age.xlsx
Binary file not shown.
@@ -7155,7 +7155,7 @@
|
|||||||
"10926": {
|
"10926": {
|
||||||
"id": 10926,
|
"id": 10926,
|
||||||
"event": "虽然你还小,但你几乎和20岁左右的青年差不多成熟了。",
|
"event": "虽然你还小,但你几乎和20岁左右的青年差不多成熟了。",
|
||||||
"include": "EVT?[10871]",
|
"include": "(EVT?[10871])&(INT>7)",
|
||||||
"exclude": "EVT?[10926]"
|
"exclude": "EVT?[10926]"
|
||||||
},
|
},
|
||||||
"10927": {
|
"10927": {
|
||||||
|
|||||||
BIN
data/events.xlsx
BIN
data/events.xlsx
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1346,6 +1346,137 @@
|
|||||||
"group": 2,
|
"group": 2,
|
||||||
"name": "我是原P"
|
"name": "我是原P"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "天湮"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "荪"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "煮饭233"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "千里未来"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "haooo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "闵佳瑶"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "阿婆朱"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "油腻的Wink😉"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 1,
|
||||||
|
"name": "带你嫖娼的馆长",
|
||||||
|
"comment": "支持国产游戏,吾辈义不容辞!————读完本科自称硕士的沙雕的高质量网友"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "Obento"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "银子舟"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "大户爱"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "冥渊"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "Tony"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "蜜汁帅气小彩蛋"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "abc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "陌云铃"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "arT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "忆丶醉"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "宇宙空间法师"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "玛瑙星mnx"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "幻海"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "陌云铃"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "Marvin"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "神烦"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "Joke"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "有酸萝卜别吃"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "m子会梦见花之暴君吗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 1,
|
||||||
|
"name": "刘云金",
|
||||||
|
"comment": "我知道我们没有缘分,这也不是我想要的结果,事与愿违,曾经我们都想好好的,即使现在我也是想要跟你好好的,虽然你看不见,但还是想留下这么一句话(可能会有人看到会觉得挺可笑的 确实挺幼稚的)十年的恋情,不希望给你带来生活的压力, 希望你快快乐乐的 这也是我一直给你说的 也是一直希望的—GQQ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "蟹老板的老公"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "小小书童"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "雪华",
|
||||||
|
"color": "#00BFFF"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"group": 2,
|
"group": 2,
|
||||||
"name": "有梦人天涯若比邻"
|
"name": "有梦人天涯若比邻"
|
||||||
@@ -1710,5 +1841,225 @@
|
|||||||
{
|
{
|
||||||
"group": 2,
|
"group": 2,
|
||||||
"name": "宇宙房地产大亨弗利萨"
|
"name": "宇宙房地产大亨弗利萨"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "你的薛爸爸"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "妖怪蜀黍"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "刘沈钧"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "饭饭"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "加利斯"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "滑稽拌饭"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "敖鹏柽"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "张逸尘"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "红茶坊"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "小灰"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "七海Nana7mi",
|
||||||
|
"color": "#ff70cb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "松松小笨蛋"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 1,
|
||||||
|
"name": "NeroCloud",
|
||||||
|
"comment": "挺好玩的小游戏"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "策划大大的大跌"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "tiny cherry petal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "啊哈哈"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "多多"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "般若鬼面 ",
|
||||||
|
"color": "#921AFF"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "璟年"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "FAY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "干死黄旭东"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "五胖是真的"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "狗贼给箱子"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "尹东洋"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "红阳"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "barusamikosu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "小保安"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "Tony"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "戒( )"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "下半鸭"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "Xiaosaye"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "NAKAS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "icefrog"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "南怪"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "梁一斤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "熊公子nice哥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "徙南"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "粟粟"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "王哲"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "HPENG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "残梦空恨"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "测试名字的长度"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "夏吉野"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "你的名字"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "幻想丶当时"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "琦琦"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "执笔诉情"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "陈声"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "恶魔在右丷"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "苏苏",
|
||||||
|
"color": "pink"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "哈哈和大叔"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "攀大大"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "电饭锅"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": 2,
|
||||||
|
"name": "梦鼠"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -19,8 +19,7 @@
|
|||||||
"exclusive": [
|
"exclusive": [
|
||||||
"1004",
|
"1004",
|
||||||
"1025",
|
"1025",
|
||||||
"1024",
|
"1024"
|
||||||
1113
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"1004": {
|
"1004": {
|
||||||
@@ -974,14 +973,14 @@
|
|||||||
"id": "1104",
|
"id": "1104",
|
||||||
"name": "紫色胶囊",
|
"name": "紫色胶囊",
|
||||||
"description": "跳过你的40~50岁",
|
"description": "跳过你的40~50岁",
|
||||||
"condition": "AGE?[40,41,42,43,44,45,46,47,48,49,50]",
|
"condition": "AGE?[40]",
|
||||||
"grade": 2
|
"grade": 2
|
||||||
},
|
},
|
||||||
"1105": {
|
"1105": {
|
||||||
"id": "1105",
|
"id": "1105",
|
||||||
"name": "蓝色胶囊",
|
"name": "蓝色胶囊",
|
||||||
"description": "你20、30岁时无事发生",
|
"description": "你20、30岁时无事发生",
|
||||||
"condition": "AGE?[20,30]",
|
"condition": "AGE?[20]",
|
||||||
"grade": 1
|
"grade": 1
|
||||||
},
|
},
|
||||||
"1106": {
|
"1106": {
|
||||||
@@ -1044,7 +1043,7 @@
|
|||||||
"id": "1114",
|
"id": "1114",
|
||||||
"name": "橙色胶囊",
|
"name": "橙色胶囊",
|
||||||
"description": "跳过你的60~90岁",
|
"description": "跳过你的60~90岁",
|
||||||
"condition": "AGE?[60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90]",
|
"condition": "AGE?[60]",
|
||||||
"grade": 3
|
"grade": 3
|
||||||
},
|
},
|
||||||
"1115": {
|
"1115": {
|
||||||
@@ -1178,5 +1177,139 @@
|
|||||||
"name": "轮回之外",
|
"name": "轮回之外",
|
||||||
"description": "死后可能灵魂离体",
|
"description": "死后可能灵魂离体",
|
||||||
"grade": 3
|
"grade": 3
|
||||||
|
},
|
||||||
|
"1136": {
|
||||||
|
"id": 1136,
|
||||||
|
"name": "贪婪",
|
||||||
|
"description": "家境+10",
|
||||||
|
"grade": 0,
|
||||||
|
"effect": {
|
||||||
|
"INT": -5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1137": {
|
||||||
|
"id": 1137,
|
||||||
|
"name": "百岁百世丸",
|
||||||
|
"description": "某条件下所有属性+2",
|
||||||
|
"condition": "(AGE?[100])&(TMS>99)",
|
||||||
|
"grade": 1,
|
||||||
|
"effect": {
|
||||||
|
"SPR": 2,
|
||||||
|
"MNY": 2,
|
||||||
|
"CHR": 2,
|
||||||
|
"STR": 2,
|
||||||
|
"INT": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1138": {
|
||||||
|
"id": 1138,
|
||||||
|
"name": "意外之喜",
|
||||||
|
"description": "随机属性+1",
|
||||||
|
"grade": 0,
|
||||||
|
"effect": {
|
||||||
|
"RDM": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1139": {
|
||||||
|
"id": 1139,
|
||||||
|
"name": "培养爱好",
|
||||||
|
"description": "随机属性+2",
|
||||||
|
"grade": 1,
|
||||||
|
"effect": {
|
||||||
|
"RDM": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1140": {
|
||||||
|
"id": 1140,
|
||||||
|
"name": "觉醒",
|
||||||
|
"description": "随机属性+4",
|
||||||
|
"grade": 2,
|
||||||
|
"effect": {
|
||||||
|
"RDM": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1141": {
|
||||||
|
"id": 1141,
|
||||||
|
"name": "阴间大会员",
|
||||||
|
"description": "随机属性+8",
|
||||||
|
"grade": 3,
|
||||||
|
"effect": {
|
||||||
|
"RDM": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1142": {
|
||||||
|
"id": 1142,
|
||||||
|
"name": "蓝色转盘",
|
||||||
|
"description": "变成随机蓝色天赋",
|
||||||
|
"grade": 0,
|
||||||
|
"replacement": {
|
||||||
|
"grade": [
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"exclusive": [
|
||||||
|
"1012",
|
||||||
|
"1013",
|
||||||
|
"1014",
|
||||||
|
1110,
|
||||||
|
1103,
|
||||||
|
1104,
|
||||||
|
1124,
|
||||||
|
1125
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"1143": {
|
||||||
|
"id": 1143,
|
||||||
|
"name": "紫色转盘",
|
||||||
|
"description": "变成随机紫色天赋",
|
||||||
|
"grade": 1,
|
||||||
|
"replacement": {
|
||||||
|
"grade": [
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"exclusive": [
|
||||||
|
"1012",
|
||||||
|
"1013",
|
||||||
|
"1014",
|
||||||
|
1110,
|
||||||
|
1103,
|
||||||
|
1104,
|
||||||
|
1124,
|
||||||
|
1125
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"1144": {
|
||||||
|
"id": 1144,
|
||||||
|
"name": "橙色转盘",
|
||||||
|
"description": "变成随机橙色天赋",
|
||||||
|
"grade": 2,
|
||||||
|
"replacement": {
|
||||||
|
"grade": [
|
||||||
|
3
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1145": {
|
||||||
|
"id": 1145,
|
||||||
|
"name": "阴间福袋",
|
||||||
|
"description": "可能开出好天赋",
|
||||||
|
"grade": 1,
|
||||||
|
"replacement": {
|
||||||
|
"talent": [
|
||||||
|
"1138,1133,1125,1128,1129,1131,1111,1108,1071,1072,1044,1039,1040,1033,1031,1002"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1146": {
|
||||||
|
"id": 1146,
|
||||||
|
"name": "轮盘赌",
|
||||||
|
"description": "1/6几率变橙色天赋",
|
||||||
|
"grade": 1,
|
||||||
|
"replacement": {
|
||||||
|
"talent": [
|
||||||
|
"1141*0.2,1135*0.2,1114*0.2,1023*0.2,1048*0.2,1033*5"
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
14
src/app.js
14
src/app.js
@@ -328,7 +328,7 @@ class App{
|
|||||||
this.hint(`你多使用了${total() - this.#totalMax}属性点`);
|
this.hint(`你多使用了${total() - this.#totalMax}属性点`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.#life.restart({
|
const contents = this.#life.restart({
|
||||||
CHR: groups.CHR.get(),
|
CHR: groups.CHR.get(),
|
||||||
INT: groups.INT.get(),
|
INT: groups.INT.get(),
|
||||||
STR: groups.STR.get(),
|
STR: groups.STR.get(),
|
||||||
@@ -337,7 +337,7 @@ class App{
|
|||||||
TLT: Array.from(this.#talentSelected).map(({id})=>id),
|
TLT: Array.from(this.#talentSelected).map(({id})=>id),
|
||||||
});
|
});
|
||||||
this.switch('trajectory');
|
this.switch('trajectory');
|
||||||
this.#pages.trajectory.born();
|
this.#pages.trajectory.born(contents);
|
||||||
// $(document).keydown(function(event){
|
// $(document).keydown(function(event){
|
||||||
// if(event.which == 32 || event.which == 13){
|
// if(event.which == 32 || event.which == 13){
|
||||||
// $('#lifeTrajectory').click();
|
// $('#lifeTrajectory').click();
|
||||||
@@ -646,7 +646,15 @@ class App{
|
|||||||
trajectoryPage.find('#auto2x').show();
|
trajectoryPage.find('#auto2x').show();
|
||||||
this.#isEnd = false;
|
this.#isEnd = false;
|
||||||
},
|
},
|
||||||
born: ()=>{
|
born: contents => {
|
||||||
|
if(contents.length > 0)
|
||||||
|
$('#lifeTrajectory')
|
||||||
|
.append(`<li><span>初始:</span><span>${
|
||||||
|
contents.map(
|
||||||
|
({source, target}) => `天赋【${source.name}】发动:替换为天赋【${target.name}】`
|
||||||
|
).join('<br>')
|
||||||
|
}</span></li>`);
|
||||||
|
|
||||||
trajectoryPage.find('#lifeTrajectory').trigger("click");
|
trajectoryPage.find('#lifeTrajectory').trigger("click");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -28,4 +28,20 @@ function average(...arr) {
|
|||||||
return s / arr.flat().length;
|
return s / arr.flat().length;
|
||||||
}
|
}
|
||||||
|
|
||||||
export { clone, max, min, sum, average };
|
function weightRandom(list) {
|
||||||
|
let totalWeights = 0;
|
||||||
|
for(const [, weight] of list)
|
||||||
|
totalWeights += weight;
|
||||||
|
|
||||||
|
let random = Math.random() * totalWeights;
|
||||||
|
for(const [id, weight] of list)
|
||||||
|
if((random-=weight)<0)
|
||||||
|
return id;
|
||||||
|
return list[list.length-1];
|
||||||
|
}
|
||||||
|
|
||||||
|
function listRandom(list) {
|
||||||
|
return list[Math.floor(Math.random() * list.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
export { clone, max, min, sum, average, weightRandom, listRandom };
|
||||||
36
src/life.js
36
src/life.js
@@ -1,3 +1,4 @@
|
|||||||
|
import { weightRandom } from './functions/util.js'
|
||||||
import Property from './property.js';
|
import Property from './property.js';
|
||||||
import Event from './event.js';
|
import Event from './event.js';
|
||||||
import Talent from './talent.js';
|
import Talent from './talent.js';
|
||||||
@@ -32,13 +33,15 @@ class Life {
|
|||||||
|
|
||||||
restart(allocation) {
|
restart(allocation) {
|
||||||
this.#triggerTalents = {};
|
this.#triggerTalents = {};
|
||||||
|
const contents = this.talentReplace(allocation.TLT);
|
||||||
this.#property.restart(allocation);
|
this.#property.restart(allocation);
|
||||||
this.doTalent();
|
this.doTalent()
|
||||||
this.#property.restartLastStep();
|
this.#property.restartLastStep();
|
||||||
this.#achievement.achieve(
|
this.#achievement.achieve(
|
||||||
this.#achievement.Opportunity.START,
|
this.#achievement.Opportunity.START,
|
||||||
this.#property
|
this.#property
|
||||||
)
|
)
|
||||||
|
return contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
getTalentAllocationAddition(talents) {
|
getTalentAllocationAddition(talents) {
|
||||||
@@ -65,6 +68,21 @@ class Life {
|
|||||||
return { age, content, isEnd };
|
return { age, content, isEnd };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
talentReplace(talents) {
|
||||||
|
const result = this.#talent.replace(talents);
|
||||||
|
const contents = [];
|
||||||
|
for(const id in result) {
|
||||||
|
talents.push(result[id]);
|
||||||
|
const source = this.#talent.get(id);
|
||||||
|
const target = this.#talent.get(result[id]);
|
||||||
|
contents.push({
|
||||||
|
type: 'talentReplace',
|
||||||
|
source, target
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return contents;
|
||||||
|
}
|
||||||
|
|
||||||
doTalent(talents) {
|
doTalent(talents) {
|
||||||
if(talents) this.#property.change(this.#property.TYPES.TLT, talents);
|
if(talents) this.#property.change(this.#property.TYPES.TLT, talents);
|
||||||
talents = this.#property.get(this.#property.TYPES.TLT)
|
talents = this.#property.get(this.#property.TYPES.TLT)
|
||||||
@@ -102,17 +120,11 @@ class Life {
|
|||||||
}
|
}
|
||||||
|
|
||||||
random(events) {
|
random(events) {
|
||||||
events = events.filter(([eventId])=>this.#event.check(eventId, this.#property));
|
return weightRandom(
|
||||||
|
events.filter(
|
||||||
let totalWeights = 0;
|
([eventId])=>this.#event.check(eventId, this.#property)
|
||||||
for(const [, weight] of events)
|
)
|
||||||
totalWeights += weight;
|
);
|
||||||
|
|
||||||
let random = Math.random() * totalWeights;
|
|
||||||
for(const [eventId, weight] of events)
|
|
||||||
if((random-=weight)<0)
|
|
||||||
return eventId;
|
|
||||||
return events[events.length-1];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
talentRandom() {
|
talentRandom() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { max, min, sum, clone } from './functions/util.js';
|
import { max, min, sum, clone, listRandom } from './functions/util.js';
|
||||||
|
|
||||||
class Property {
|
class Property {
|
||||||
constructor() {}
|
constructor() {}
|
||||||
@@ -44,8 +44,22 @@ class Property {
|
|||||||
CEVT: "REVT", // 事件收集数 Count Event
|
CEVT: "REVT", // 事件收集数 Count Event
|
||||||
CACHV: "CACHV", // 成就达成数 Count Achievement
|
CACHV: "CACHV", // 成就达成数 Count Achievement
|
||||||
|
|
||||||
|
// SPECIAL
|
||||||
|
RDM: 'RDM', // 随机属性 random RDM
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 特殊类型
|
||||||
|
SPECIAL = {
|
||||||
|
RDM: [ // 随机属性 random RDM
|
||||||
|
this.TYPES.CHR,
|
||||||
|
this.TYPES.INT,
|
||||||
|
this.TYPES.STR,
|
||||||
|
this.TYPES.MNY,
|
||||||
|
this.TYPES.SPR,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
#ageData;
|
#ageData;
|
||||||
#data = {};
|
#data = {};
|
||||||
|
|
||||||
@@ -270,9 +284,19 @@ class Property {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hookSpecial(prop) {
|
||||||
|
switch(prop) {
|
||||||
|
case this.TYPES.RDM: return listRandom(this.SPECIAL.RDM);
|
||||||
|
default: return prop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
effect(effects) {
|
effect(effects) {
|
||||||
for(const prop in effects)
|
for(let prop in effects)
|
||||||
this.change(prop, Number(effects[prop]));
|
this.change(
|
||||||
|
this.hookSpecial(prop),
|
||||||
|
Number(effects[prop])
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
isEnd() {
|
isEnd() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { clone } from './functions/util.js';
|
import { clone, weightRandom } from './functions/util.js';
|
||||||
import { checkCondition, extractMaxTriggers } from './functions/condition.js';
|
import { checkCondition, extractMaxTriggers } from './functions/condition.js';
|
||||||
import { getRate } from './functions/addition.js';
|
import { getRate } from './functions/addition.js';
|
||||||
|
|
||||||
@@ -14,6 +14,16 @@ class Talent {
|
|||||||
talent.id= Number(id);
|
talent.id= Number(id);
|
||||||
talent.grade = Number(talent.grade);
|
talent.grade = Number(talent.grade);
|
||||||
talent.max_triggers = extractMaxTriggers(talent.condition);
|
talent.max_triggers = extractMaxTriggers(talent.condition);
|
||||||
|
if(talent.replacement) {
|
||||||
|
for(let key in talent.replacement) {
|
||||||
|
const obj = {};
|
||||||
|
for(let value of talent.replacement[key]) {
|
||||||
|
value = `${value}`.split('*');
|
||||||
|
obj[value[0]||0] = Number(value[1]) || 1;
|
||||||
|
}
|
||||||
|
talent.replacement[key] = obj;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,6 +121,56 @@ class Talent {
|
|||||||
return null;
|
return null;
|
||||||
return { effect, grade, name, description };
|
return { effect, grade, name, description };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
replace(talents) {
|
||||||
|
const getReplaceList = (talent, talents) => {
|
||||||
|
const { replacement } = this.get(talent);
|
||||||
|
if(!replacement) return null;
|
||||||
|
const list = [];
|
||||||
|
if(replacement.grade) {
|
||||||
|
this.forEach(({id, grade})=>{
|
||||||
|
if(!replacement.grade[grade]) return;
|
||||||
|
if(this.exclusive(talents, id)) return;
|
||||||
|
list.push([id, replacement.grade[grade]]);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if(replacement.talent) {
|
||||||
|
for(let id in replacement.talent) {
|
||||||
|
id = Number(id);
|
||||||
|
if(this.exclusive(talents, id)) continue;
|
||||||
|
list.push([id, replacement.talent[id]]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
const replace = (talent, talents) => {
|
||||||
|
const replaceList = getReplaceList(talent, talents);
|
||||||
|
if(!replaceList) return talent;
|
||||||
|
const rand = weightRandom(replaceList);
|
||||||
|
return replace(
|
||||||
|
rand, talents.concat(rand)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const newTalents = clone(talents);
|
||||||
|
const result = {};
|
||||||
|
for(const talent of talents) {
|
||||||
|
const replaceId = replace(talent, newTalents);
|
||||||
|
if(replaceId != talent) {
|
||||||
|
result[talent] = replaceId;
|
||||||
|
newTalents.push(replaceId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
forEach(callback) {
|
||||||
|
if(typeof callback != 'function') return;
|
||||||
|
for(const id in this.#talents)
|
||||||
|
callback(clone(this.#talents[id]), id);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Talent;
|
export default Talent;
|
||||||
Reference in New Issue
Block a user