This commit is contained in:
Vick Scarlet
2021-08-17 12:12:25 +08:00
parent df85e62138
commit 0865df55ee
9 changed files with 227 additions and 118 deletions

View File

@@ -25,7 +25,7 @@
}, },
"6": { "6": {
"age": "6", "age": "6",
"event": "10007,10012,10014,10022,10023,10036,10037,10038,10043,10044,10045,1004710048,10049,10050,10052,10054,10057,10058,10061,10065,10067,10069,10072,10073,10075,10076,10077,10078,10089,10091,10093,10094,10095,10096,10098,10099,10100,10101*100,10123,10124,10125,10126,10127*4,10128*4,10130,10140,10141,10142,10143,10144,10045,10046,10047,10048,10150,10153,10166,10168,10169,10172,10178,10179,10183,10224" "event": "10007,10012,10014,10022,10023,10036,10037,10038,10043,10044,10045,10047,10048,10049,10050,10052,10054,10057,10058,10061,10065,10067,10069,10072,10073,10075,10076,10077,10078,10089,10091,10093,10094,10095,10096,10098,10099,10100,10101*100,10123,10124,10125,10126,10127*4,10128*4,10130,10140,10141,10142,10143,10144,10045,10046,10047,10048,10150,10153,10166,10168,10169,10172,10178,10179,10183,10224"
}, },
"7": { "7": {
"age": "7", "age": "7",
@@ -193,7 +193,7 @@
}, },
"48": { "48": {
"age": "48", "age": "48",
"event": "10069,10070,10071,10087,10253,10254,10255,10256,10257,10273,10274,10275,10276,10277,10278,10279*0.01,10281,10282*0.001,10286,10287,10288,10289*0.1,10290*0.01,10292,10293,10291*0.01,10295,10296,10297,10298,10299,10300,10301,10302,10303,10304,10305,10306,10308,10317,10318,10319,10320.10322" "event": "10069,10070,10071,10087,10253,10254,10255,10256,10257,10273,10274,10275,10276,10277,10278,10279*0.01,10281,10282*0.001,10286,10287,10288,10289*0.1,10290*0.01,10292,10293,10291*0.01,10295,10296,10297,10298,10299,10300,10301,10302,10303,10304,10305,10306,10308,10317,10318,10319,10320,10322"
}, },
"49": { "49": {
"age": "49", "age": "49",
@@ -213,7 +213,7 @@
}, },
"53": { "53": {
"age": "53", "age": "53",
"event": "10069,10070,10071,10253,10254,10255,10256,10257,10273,10274,10275,10276,10277,10278,10279*0.01,10281,10282*0.001,10286,1028+B577,10288,10290*0.01,10291*0.01,10295,10296,10297,10298,10299,10300,10301,10302,10303,10304,10305,10306,10307,10317,10318,10319,10320,10321" "event": "10069,10070,10071,10253,10254,10255,10256,10257,10273,10274,10275,10276,10277,10278,10279*0.01,10281,10282*0.001,10286,10287,10288,10290*0.01,10291*0.01,10295,10296,10297,10298,10299,10300,10301,10302,10303,10304,10305,10306,10307,10317,10318,10319,10320,10321"
}, },
"54": { "54": {
"age": "54", "age": "54",

View File

@@ -2,6 +2,9 @@
"10000": { "10000": {
"id": 10000, "id": 10000,
"event": "你死了。", "event": "你死了。",
"effect": {
"LIF": -1
},
"NoRandom": 1 "NoRandom": 1
}, },
"10001": { "10001": {
@@ -17,7 +20,7 @@
"10003": { "10003": {
"id": 10003, "id": 10003,
"event": "你生了场重病。", "event": "你生了场重病。",
"PostEvent": "家里花了不少钱。", "postEvent": "家里花了不少钱。",
"effect": { "effect": {
"MNY": -1 "MNY": -1
}, },
@@ -36,7 +39,7 @@
"10005": { "10005": {
"id": 10005, "id": 10005,
"event": "刚学会走路,你意外从桌子上跌落。", "event": "刚学会走路,你意外从桌子上跌落。",
"PostEvent": "受了轻伤。", "postEvent": "受了轻伤。",
"exclude": "INT>7", "exclude": "INT>7",
"branch": [ "branch": [
"TLT?[1002]:10006", "TLT?[1002]:10006",
@@ -125,7 +128,7 @@
"10016": { "10016": {
"id": 10016, "id": 10016,
"event": "你的母亲因病去世。", "event": "你的母亲因病去世。",
"PostEvent": "家庭更加困难了。", "postEvent": "家庭更加困难了。",
"effect": { "effect": {
"MNY": -1 "MNY": -1
}, },
@@ -139,7 +142,7 @@
"10017": { "10017": {
"id": 10017, "id": 10017,
"event": "你的父亲因病去世。", "event": "你的父亲因病去世。",
"PostEvent": "家庭更加困难了。", "postEvent": "家庭更加困难了。",
"effect": { "effect": {
"MNY": -2 "MNY": -2
}, },
@@ -153,7 +156,7 @@
"10018": { "10018": {
"id": 10018, "id": 10018,
"event": "你的父亲在种地时意外发现一箱金条。", "event": "你的父亲在种地时意外发现一箱金条。",
"PostEvent": "家境有所好转。", "postEvent": "家境有所好转。",
"effect": { "effect": {
"MNY": 2 "MNY": 2
}, },
@@ -191,7 +194,7 @@
"10022": { "10022": {
"id": 10022, "id": 10022,
"event": "你什么事都要让着妹妹。", "event": "你什么事都要让着妹妹。",
"PostEvent": "不开心。", "postEvent": "不开心。",
"effect": { "effect": {
"SPR": -1 "SPR": -1
}, },
@@ -201,7 +204,7 @@
"10023": { "10023": {
"id": 10023, "id": 10023,
"event": "你什么事都要让着弟弟。", "event": "你什么事都要让着弟弟。",
"PostEvent": "不开心。", "postEvent": "不开心。",
"effect": { "effect": {
"SPR": -1 "SPR": -1
}, },
@@ -211,7 +214,7 @@
"10024": { "10024": {
"id": 10024, "id": 10024,
"event": "父母到城里务工。", "event": "父母到城里务工。",
"PostEvent": "你在农村留守。", "postEvent": "你在农村留守。",
"effect": { "effect": {
"SPR": -1 "SPR": -1
}, },
@@ -238,7 +241,7 @@
"10027": { "10027": {
"id": 10027, "id": 10027,
"event": "你的母亲救了个人,得到了很多感谢金。", "event": "你的母亲救了个人,得到了很多感谢金。",
"PostEvent": "家境有所好转。", "postEvent": "家境有所好转。",
"effect": { "effect": {
"MNY": 2 "MNY": 2
}, },
@@ -265,7 +268,7 @@
"10030": { "10030": {
"id": 10030, "id": 10030,
"event": "你的脸意外被开水烫伤。", "event": "你的脸意外被开水烫伤。",
"PostEvent": "毁容了。", "postEvent": "毁容了。",
"effect": { "effect": {
"CHR": -3 "CHR": -3
}, },
@@ -279,7 +282,7 @@
"10031": { "10031": {
"id": 10031, "id": 10031,
"event": "你被邻居叔叔绑架了。", "event": "你被邻居叔叔绑架了。",
"PostEvent": "没勒索到钱,你被放了。", "postEvent": "没勒索到钱,你被放了。",
"effect": { "effect": {
"SPR": -1 "SPR": -1
}, },
@@ -293,7 +296,7 @@
"10032": { "10032": {
"id": 10032, "id": 10032,
"event": "叔叔向你父母勒索了很多现金。", "event": "叔叔向你父母勒索了很多现金。",
"PostEvent": "你被放了回家。", "postEvent": "你被放了回家。",
"effect": { "effect": {
"MNY": -2 "MNY": -2
}, },
@@ -302,7 +305,7 @@
"10033": { "10033": {
"id": 10033, "id": 10033,
"event": "叔叔侵犯了你。", "event": "叔叔侵犯了你。",
"PostEvent": "你被放了回家。", "postEvent": "你被放了回家。",
"effect": { "effect": {
"SPR": -2 "SPR": -2
}, },
@@ -347,7 +350,7 @@
"10038": { "10038": {
"id": 10038, "id": 10038,
"event": "你玩父母手机时被诈骗。", "event": "你玩父母手机时被诈骗。",
"PostEvent": "损失了父母一年的心血。", "postEvent": "损失了父母一年的心血。",
"effect": { "effect": {
"MNY": -1 "MNY": -1
}, },
@@ -368,7 +371,7 @@
"10040": { "10040": {
"id": 10040, "id": 10040,
"event": "你告诉父母后,打电话举报。", "event": "你告诉父母后,打电话举报。",
"PostEvent": "损失被追回。", "postEvent": "损失被追回。",
"effect": { "effect": {
"MNY": 1 "MNY": 1
}, },
@@ -377,7 +380,7 @@
"10041": { "10041": {
"id": 10041, "id": 10041,
"event": "你和村里小孩打架。", "event": "你和村里小孩打架。",
"PostEvent": "战斗力提高了。", "postEvent": "战斗力提高了。",
"effect": { "effect": {
"STR": 1 "STR": 1
}, },
@@ -391,7 +394,7 @@
"10042": { "10042": {
"id": 10042, "id": 10042,
"event": "你失手把一个小孩打死了。", "event": "你失手把一个小孩打死了。",
"PostEvent": "父母赔了很多钱。", "postEvent": "父母赔了很多钱。",
"effect": { "effect": {
"MNY": -2 "MNY": -2
}, },
@@ -416,7 +419,7 @@
"10045": { "10045": {
"id": 10045, "id": 10045,
"event": "你有次去池塘边玩时掉进了水里。", "event": "你有次去池塘边玩时掉进了水里。",
"PostEvent": "差点淹死。", "postEvent": "差点淹死。",
"include": "EVT?[10044,10047,10180]", "include": "EVT?[10044,10047,10180]",
"exclude": "EVT?[10045]", "exclude": "EVT?[10045]",
"branch": [ "branch": [
@@ -509,7 +512,7 @@
"10058": { "10058": {
"id": 10058, "id": 10058,
"event": "下暴雨,发洪水。", "event": "下暴雨,发洪水。",
"PostEvent": "田都被淹了。", "postEvent": "田都被淹了。",
"effect": { "effect": {
"MNY": -1 "MNY": -1
}, },
@@ -559,7 +562,7 @@
"10062": { "10062": {
"id": 10062, "id": 10062,
"event": "你的情绪越来越低落,尝试自杀。", "event": "你的情绪越来越低落,尝试自杀。",
"PostEvent": "没有成功。", "postEvent": "没有成功。",
"NoRandom": 1, "NoRandom": 1,
"branch": [ "branch": [
"SPR<1:10000" "SPR<1:10000"
@@ -604,7 +607,7 @@
"10067": { "10067": {
"id": 10067, "id": 10067,
"event": "有一只鸟撞在了你家窗户上。", "event": "有一只鸟撞在了你家窗户上。",
"PostEvent": "你把它养好后放了。", "postEvent": "你把它养好后放了。",
"include": "EVT?[10009]", "include": "EVT?[10009]",
"exclude": "EVT?[10067]", "exclude": "EVT?[10067]",
"branch": [ "branch": [
@@ -646,7 +649,7 @@
"10073": { "10073": {
"id": 10073, "id": 10073,
"event": "你意外挖到一个上了锁的盒子。", "event": "你意外挖到一个上了锁的盒子。",
"PostEvent": "你打不开,只好扔了。", "postEvent": "你打不开,只好扔了。",
"include": "EVT?[10009]", "include": "EVT?[10009]",
"exclude": "EVT?[10073,10025]", "exclude": "EVT?[10073,10025]",
"branch": [ "branch": [
@@ -656,7 +659,7 @@
"10074": { "10074": {
"id": 10074, "id": 10074,
"event": "你想方设法打开了锁。", "event": "你想方设法打开了锁。",
"PostEvent": "里面有大量珠宝。", "postEvent": "里面有大量珠宝。",
"effect": { "effect": {
"MNY": 2 "MNY": 2
}, },
@@ -696,14 +699,14 @@
"10080": { "10080": {
"id": 10080, "id": 10080,
"event": "有人将你发在了网上,你小有名气。", "event": "有人将你发在了网上,你小有名气。",
"PostEvent": "很多人来你家拍短视频。", "postEvent": "很多人来你家拍短视频。",
"include": "(CHR>8)&(EVT?[10079])", "include": "(CHR>8)&(EVT?[10079])",
"exclude": "EVT?[10080]" "exclude": "EVT?[10080]"
}, },
"10081": { "10081": {
"id": 10081, "id": 10081,
"event": "有星探和公司想带你去大城市发展。", "event": "有星探和公司想带你去大城市发展。",
"PostEvent": "你没有同意。", "postEvent": "你没有同意。",
"include": "EVT?[10080]", "include": "EVT?[10080]",
"exclude": "EVT?[10081]", "exclude": "EVT?[10081]",
"branch": [ "branch": [
@@ -713,7 +716,7 @@
"10082": { "10082": {
"id": 10082, "id": 10082,
"event": "你来到了一线城市,住进了一家网络公司。", "event": "你来到了一线城市,住进了一家网络公司。",
"PostEvent": "你开始直播生活。", "postEvent": "你开始直播生活。",
"effect": { "effect": {
"MNY": 2 "MNY": 2
}, },
@@ -723,7 +726,7 @@
"10083": { "10083": {
"id": 10083, "id": 10083,
"event": "你过气了,被公司解除了协议。", "event": "你过气了,被公司解除了协议。",
"PostEvent": "你回到了乡下。", "postEvent": "你回到了乡下。",
"include": "EVT?[10082]", "include": "EVT?[10082]",
"exclude": "EVT?[10083]", "exclude": "EVT?[10083]",
"branch": [ "branch": [
@@ -733,7 +736,7 @@
"10084": { "10084": {
"id": 10084, "id": 10084,
"event": "你过惯了奢靡的生活,无法再回乡下了。", "event": "你过惯了奢靡的生活,无法再回乡下了。",
"PostEvent": "你开始出卖身体维持生活质量。", "postEvent": "你开始出卖身体维持生活质量。",
"effect": { "effect": {
"STR": -1 "STR": -1
}, },
@@ -795,7 +798,7 @@
"10090": { "10090": {
"id": 10090, "id": 10090,
"event": "你的智力过高,被外星人抓走做实验。", "event": "你的智力过高,被外星人抓走做实验。",
"PostEvent": "又放了回来。", "postEvent": "又放了回来。",
"effect": { "effect": {
"INT": -1 "INT": -1
}, },
@@ -819,7 +822,7 @@
"10092": { "10092": {
"id": 10092, "id": 10092,
"event": "你被一只蛇咬了。", "event": "你被一只蛇咬了。",
"PostEvent": "还好没有毒。", "postEvent": "还好没有毒。",
"include": "EVT?[10009]", "include": "EVT?[10009]",
"exclude": "EVT?[10092]", "exclude": "EVT?[10092]",
"branch": [ "branch": [
@@ -855,21 +858,21 @@
"10096": { "10096": {
"id": 10096, "id": 10096,
"event": "你听说国外发生了很多大事。", "event": "你听说国外发生了很多大事。",
"PostEvent": "但感觉离你很遥远。", "postEvent": "但感觉离你很遥远。",
"include": "EVT?[10009]", "include": "EVT?[10009]",
"exclude": "EVT?[10096]" "exclude": "EVT?[10096]"
}, },
"10097": { "10097": {
"id": 10097, "id": 10097,
"event": "隔壁村的一个孩子淹死了。", "event": "隔壁村的一个孩子淹死了。",
"PostEvent": "你的父母一年都没让你去池塘玩。", "postEvent": "你的父母一年都没让你去池塘玩。",
"include": "EVT?[10009]", "include": "EVT?[10009]",
"exclude": "EVT?[10097,10015,10016,10017,10024]" "exclude": "EVT?[10097,10015,10016,10017,10024]"
}, },
"10098": { "10098": {
"id": 10098, "id": 10098,
"event": "你听了轮回转世的神话故事。", "event": "你听了轮回转世的神话故事。",
"PostEvent": "感觉好像似曾相识。", "postEvent": "感觉好像似曾相识。",
"include": "INT>4", "include": "INT>4",
"exclude": "EVT?[10098]" "exclude": "EVT?[10098]"
}, },
@@ -933,7 +936,7 @@
"10107": { "10107": {
"id": 10107, "id": 10107,
"event": "你期末考试全都不及格。", "event": "你期末考试全都不及格。",
"PostEvent": "老师来家访。", "postEvent": "老师来家访。",
"effect": { "effect": {
"SPR": -1 "SPR": -1
}, },
@@ -968,7 +971,7 @@
"10112": { "10112": {
"id": 10112, "id": 10112,
"event": "同学总是欺负你。", "event": "同学总是欺负你。",
"PostEvent": "还嘲笑你的长相。", "postEvent": "还嘲笑你的长相。",
"effect": { "effect": {
"SPR": -2 "SPR": -2
}, },
@@ -978,7 +981,7 @@
"10113": { "10113": {
"id": 10113, "id": 10113,
"event": "同学总是欺负你。", "event": "同学总是欺负你。",
"PostEvent": "还嘲笑你的成绩。", "postEvent": "还嘲笑你的成绩。",
"effect": { "effect": {
"SPR": -2 "SPR": -2
}, },
@@ -988,7 +991,7 @@
"10114": { "10114": {
"id": 10114, "id": 10114,
"event": "同学总是欺负你。", "event": "同学总是欺负你。",
"PostEvent": "嘲笑你不男不女。", "postEvent": "嘲笑你不男不女。",
"effect": { "effect": {
"SPR": -2 "SPR": -2
}, },
@@ -1055,14 +1058,14 @@
"10123": { "10123": {
"id": 10123, "id": 10123,
"event": "村中阿婆家新盖了小洋房。", "event": "村中阿婆家新盖了小洋房。",
"PostEvent": "听说是孩子在外面赚了大钱。", "postEvent": "听说是孩子在外面赚了大钱。",
"include": "EVT?[10009]", "include": "EVT?[10009]",
"exclude": "EVT?[10123,10025]" "exclude": "EVT?[10123,10025]"
}, },
"10124": { "10124": {
"id": 10124, "id": 10124,
"event": "夏日的一天村里鞭炮齐鸣。", "event": "夏日的一天村里鞭炮齐鸣。",
"PostEvent": "听说是人家的孩子考上了重点大学。", "postEvent": "听说是人家的孩子考上了重点大学。",
"include": "EVT?[10009]", "include": "EVT?[10009]",
"exclude": "EVT?[10124,10025]" "exclude": "EVT?[10124,10025]"
}, },
@@ -1163,14 +1166,14 @@
"10136": { "10136": {
"id": 10136, "id": 10136,
"event": "老师在班上进行了IQ测试。", "event": "老师在班上进行了IQ测试。",
"PostEvent": "你获得了145分", "postEvent": "你获得了145分",
"include": "(INT>7)&(EVT?[10101])", "include": "(INT>7)&(EVT?[10101])",
"exclude": "EVT?[10136]" "exclude": "EVT?[10136]"
}, },
"10137": { "10137": {
"id": 10137, "id": 10137,
"event": "老师在班上进行了IQ测试。", "event": "老师在班上进行了IQ测试。",
"PostEvent": "你获得了135分", "postEvent": "你获得了135分",
"include": "(INT>6)&(EVT?[10101])", "include": "(INT>6)&(EVT?[10101])",
"exclude": "EVT?[10137]" "exclude": "EVT?[10137]"
}, },
@@ -1258,7 +1261,7 @@
"10149": { "10149": {
"id": 10149, "id": 10149,
"event": "教室里唯一较好的窗户也破了。", "event": "教室里唯一较好的窗户也破了。",
"PostEvent": "下雨天靠窗完全不能坐人了。", "postEvent": "下雨天靠窗完全不能坐人了。",
"include": "EVT?[10101]", "include": "EVT?[10101]",
"exclude": "EVT?[10149,10025]" "exclude": "EVT?[10149,10025]"
}, },
@@ -1330,7 +1333,7 @@
"10158": { "10158": {
"id": 10158, "id": 10158,
"event": "你买彩票中了个小奖。", "event": "你买彩票中了个小奖。",
"PostEvent": "虽然钱不多但很快乐。", "postEvent": "虽然钱不多但很快乐。",
"effect": { "effect": {
"SPR": 1 "SPR": 1
}, },
@@ -1396,7 +1399,7 @@
"10167": { "10167": {
"id": 10167, "id": 10167,
"event": "用牙齿咬欺凌自己的人,反而被告老师。", "event": "用牙齿咬欺凌自己的人,反而被告老师。",
"PostEvent": "很委屈。", "postEvent": "很委屈。",
"effect": { "effect": {
"SPR": -1 "SPR": -1
}, },
@@ -1439,21 +1442,21 @@
"10173": { "10173": {
"id": 10173, "id": 10173,
"event": "学自行车摔得膝盖流血。", "event": "学自行车摔得膝盖流血。",
"PostEvent": "没学会。", "postEvent": "没学会。",
"include": "(STR<4)&(EVT?[10009])", "include": "(STR<4)&(EVT?[10009])",
"exclude": "TLT?[1038]" "exclude": "TLT?[1038]"
}, },
"10174": { "10174": {
"id": 10174, "id": 10174,
"event": "尝试自学自行车。", "event": "尝试自学自行车。",
"PostEvent": "没学会。", "postEvent": "没学会。",
"include": "(INT<5)&(STR<5)&(EVT?[10009])", "include": "(INT<5)&(STR<5)&(EVT?[10009])",
"exclude": "TLT?[1038]" "exclude": "TLT?[1038]"
}, },
"10175": { "10175": {
"id": 10175, "id": 10175,
"event": "尝试自学自行车。", "event": "尝试自学自行车。",
"PostEvent": "学会了。", "postEvent": "学会了。",
"include": "(INT>1)&(STR>1)&(EVT?[10009])", "include": "(INT>1)&(STR>1)&(EVT?[10009])",
"exclude": "EVT?[10175]" "exclude": "EVT?[10175]"
}, },
@@ -1556,7 +1559,7 @@
"10190": { "10190": {
"id": 10190, "id": 10190,
"event": "游戏水平很高,远近网吧闻名。", "event": "游戏水平很高,远近网吧闻名。",
"PostEvent": "网吧老板允许你免费上网。", "postEvent": "网吧老板允许你免费上网。",
"effect": { "effect": {
"SPR": 1 "SPR": 1
}, },
@@ -1566,14 +1569,14 @@
"10191": { "10191": {
"id": 10191, "id": 10191,
"event": "被公司发掘,进入电竞培训队。", "event": "被公司发掘,进入电竞培训队。",
"PostEvent": "前往大城市。", "postEvent": "前往大城市。",
"include": "EVT?[10190]", "include": "EVT?[10190]",
"exclude": "EVT?[10191]" "exclude": "EVT?[10191]"
}, },
"10192": { "10192": {
"id": 10192, "id": 10192,
"event": "开始为战队打比赛。", "event": "开始为战队打比赛。",
"PostEvent": "但并没有打出什么成绩。", "postEvent": "但并没有打出什么成绩。",
"effect": { "effect": {
"STR": -1 "STR": -1
}, },
@@ -1604,7 +1607,7 @@
"10195": { "10195": {
"id": 10195, "id": 10195,
"event": "巅峰时期退役。", "event": "巅峰时期退役。",
"PostEvent": "转行游戏主播。", "postEvent": "转行游戏主播。",
"include": "EVT?[10193]", "include": "EVT?[10193]",
"exclude": "EVT?[10195,10196,10197]" "exclude": "EVT?[10195,10196,10197]"
}, },
@@ -1620,7 +1623,7 @@
"10197": { "10197": {
"id": 10197, "id": 10197,
"event": "退役。", "event": "退役。",
"PostEvent": "转行游戏主播。", "postEvent": "转行游戏主播。",
"include": "EVT?[10192]", "include": "EVT?[10192]",
"exclude": "EVT?[10195,10196,10197]" "exclude": "EVT?[10195,10196,10197]"
}, },
@@ -1657,7 +1660,7 @@
"10203": { "10203": {
"id": 10203, "id": 10203,
"event": "进入省队。", "event": "进入省队。",
"PostEvent": "刻苦训练。", "postEvent": "刻苦训练。",
"include": "EVT?[10202]", "include": "EVT?[10202]",
"exclude": "EVT?[10203,10204]", "exclude": "EVT?[10203,10204]",
"branch": [ "branch": [
@@ -1693,7 +1696,7 @@
"10207": { "10207": {
"id": 10207, "id": 10207,
"event": "参加奥运会。", "event": "参加奥运会。",
"PostEvent": "夺得奖牌。", "postEvent": "夺得奖牌。",
"effect": { "effect": {
"MNY": 1 "MNY": 1
}, },
@@ -1725,7 +1728,7 @@
"10210": { "10210": {
"id": 10210, "id": 10210,
"event": "退役。", "event": "退役。",
"PostEvent": "开始当教练。", "postEvent": "开始当教练。",
"include": "EVT?[10203]", "include": "EVT?[10203]",
"exclude": "EVT?[10210]" "exclude": "EVT?[10210]"
}, },
@@ -1806,7 +1809,7 @@
"10220": { "10220": {
"id": 10220, "id": 10220,
"event": "你吸毒被捕。", "event": "你吸毒被捕。",
"PostEvent": "进了戒毒所。", "postEvent": "进了戒毒所。",
"effect": { "effect": {
"STR": -1 "STR": -1
}, },
@@ -1861,7 +1864,7 @@
"10224": { "10224": {
"id": 10224, "id": 10224,
"event": "去城里看亲戚。", "event": "去城里看亲戚。",
"PostEvent": "你很羡慕他们家什么都有。", "postEvent": "你很羡慕他们家什么都有。",
"include": "(MNY<5)&(EVT?[10009])", "include": "(MNY<5)&(EVT?[10009])",
"exclude": "EVT?[10224]" "exclude": "EVT?[10224]"
}, },
@@ -2003,7 +2006,7 @@
"10243": { "10243": {
"id": 10243, "id": 10243,
"event": "你漏了一节思修课没上,打开了开关。", "event": "你漏了一节思修课没上,打开了开关。",
"PostEvent": "之后经常翘课了。", "postEvent": "之后经常翘课了。",
"include": "EVT?[10237,10238,10239]", "include": "EVT?[10237,10238,10239]",
"exclude": "EVT?[10243]" "exclude": "EVT?[10243]"
}, },
@@ -2034,7 +2037,7 @@
"10247": { "10247": {
"id": 10247, "id": 10247,
"event": "遭到了附近的恶霸殴打,报警不管,举报无门。", "event": "遭到了附近的恶霸殴打,报警不管,举报无门。",
"PostEvent": "只能忍气吞声。", "postEvent": "只能忍气吞声。",
"effect": { "effect": {
"SPR": -2 "SPR": -2
}, },
@@ -2047,7 +2050,7 @@
"10248": { "10248": {
"id": 10248, "id": 10248,
"event": "你怀恨在心,买了水果刀将恶霸捅死了。", "event": "你怀恨在心,买了水果刀将恶霸捅死了。",
"PostEvent": "你被刑事拘留。", "postEvent": "你被刑事拘留。",
"effect": { "effect": {
"SPR": 1 "SPR": 1
}, },
@@ -2091,7 +2094,7 @@
"10253": { "10253": {
"id": 10253, "id": 10253,
"event": "你的父亲因病去世。", "event": "你的父亲因病去世。",
"PostEvent": "母亲也随之去世。", "postEvent": "母亲也随之去世。",
"include": "EVT?[10009]", "include": "EVT?[10009]",
"exclude": "EVT?[10253,10016,10017,10125,10126,10254,10255,10256,10257]" "exclude": "EVT?[10253,10016,10017,10125,10126,10254,10255,10256,10257]"
}, },
@@ -2163,7 +2166,7 @@
"10264": { "10264": {
"id": 10264, "id": 10264,
"event": "你退伍了。", "event": "你退伍了。",
"PostEvent": "在县城当上了保安。", "postEvent": "在县城当上了保安。",
"effect": { "effect": {
"MNY": 1 "MNY": 1
}, },
@@ -2190,7 +2193,7 @@
"10267": { "10267": {
"id": 10267, "id": 10267,
"event": "你在一次演习中发生了意外。", "event": "你在一次演习中发生了意外。",
"PostEvent": "运气好,没有受伤。", "postEvent": "运气好,没有受伤。",
"include": "EVT?[10259]", "include": "EVT?[10259]",
"exclude": "EVT?[10267]", "exclude": "EVT?[10267]",
"branch": [ "branch": [
@@ -2224,7 +2227,7 @@
"10271": { "10271": {
"id": 10271, "id": 10271,
"event": "生不出孩子,医院检查发现你功能有问题。", "event": "生不出孩子,医院检查发现你功能有问题。",
"PostEvent": "你们离婚了。", "postEvent": "你们离婚了。",
"include": "(EVT?[10235,10236,10234,10233,10231,10230,10229,10088,10236])&(TLT?[1046])", "include": "(EVT?[10235,10236,10234,10233,10231,10230,10229,10088,10236])&(TLT?[1046])",
"exclude": "EVT?[10271,10279]" "exclude": "EVT?[10271,10279]"
}, },
@@ -2240,7 +2243,7 @@
"10273": { "10273": {
"id": 10273, "id": 10273,
"event": "普通的家庭生活。", "event": "普通的家庭生活。",
"PostEvent": "你感觉时间过得越来越快。", "postEvent": "你感觉时间过得越来越快。",
"include": "EVT?[10235,10236,10234,10233,10231,10230,10229,10088,10236]", "include": "EVT?[10235,10236,10234,10233,10231,10230,10229,10088,10236]",
"exclude": "EVT?[10279]" "exclude": "EVT?[10279]"
}, },
@@ -2270,7 +2273,7 @@
"10277": { "10277": {
"id": 10277, "id": 10277,
"event": "小时候一件小事你都能记很久。", "event": "小时候一件小事你都能记很久。",
"PostEvent": "现在你却连上个月的事都记不清了。", "postEvent": "现在你却连上个月的事都记不清了。",
"effect": { "effect": {
"STR": -1 "STR": -1
}, },
@@ -2427,7 +2430,7 @@
"10295": { "10295": {
"id": 10295, "id": 10295,
"event": "你后悔年轻时没有做更多的事。", "event": "你后悔年轻时没有做更多的事。",
"PostEvent": "大人的生活真的很无趣。", "postEvent": "大人的生活真的很无趣。",
"include": "EVT?[10235,10236,10234,10233,10231,10230,10229,10088,10236]", "include": "EVT?[10235,10236,10234,10233,10231,10230,10229,10088,10236]",
"exclude": "EVT?[10295]" "exclude": "EVT?[10295]"
}, },
@@ -2627,7 +2630,7 @@
"10322": { "10322": {
"id": 10322, "id": 10322,
"event": "你发现孩子不是亲生的。", "event": "你发现孩子不是亲生的。",
"PostEvent": "你装作不知道。", "postEvent": "你装作不知道。",
"effect": { "effect": {
"SPR": -2 "SPR": -2
}, },
@@ -2640,7 +2643,7 @@
"10323": { "10323": {
"id": 10323, "id": 10323,
"event": "你从盒子中获得了练气法门,突破到凝气一层。", "event": "你从盒子中获得了练气法门,突破到凝气一层。",
"PostEvent": "寿元提升到200年。", "postEvent": "寿元提升到200年。",
"effect": { "effect": {
"CHR": 3 "CHR": 3
}, },
@@ -2653,7 +2656,7 @@
"10324": { "10324": {
"id": 10324, "id": 10324,
"event": "练气。", "event": "练气。",
"PostEvent": "体质提升。", "postEvent": "体质提升。",
"effect": { "effect": {
"STR": 1 "STR": 1
}, },
@@ -2734,7 +2737,7 @@
"10333": { "10333": {
"id": 10333, "id": 10333,
"event": "你突破到筑基一层。", "event": "你突破到筑基一层。",
"PostEvent": "寿元提升到300年。", "postEvent": "寿元提升到300年。",
"effect": { "effect": {
"INT": 1 "INT": 1
}, },
@@ -2762,7 +2765,7 @@
"10336": { "10336": {
"id": 10336, "id": 10336,
"event": "锻体。", "event": "锻体。",
"PostEvent": "体质提升。", "postEvent": "体质提升。",
"effect": { "effect": {
"STR": 2 "STR": 2
}, },
@@ -2843,7 +2846,7 @@
"10345": { "10345": {
"id": 10345, "id": 10345,
"event": "你突破到金丹一层。", "event": "你突破到金丹一层。",
"PostEvent": "寿元提升到400年。", "postEvent": "寿元提升到400年。",
"effect": { "effect": {
"STR": 20 "STR": 20
}, },
@@ -2881,7 +2884,7 @@
"10349": { "10349": {
"id": 10349, "id": 10349,
"event": "图你美色,一个境界极高的人强行和你双修。", "event": "图你美色,一个境界极高的人强行和你双修。",
"PostEvent": "体质大幅提升。", "postEvent": "体质大幅提升。",
"effect": { "effect": {
"STR": 100 "STR": 100
}, },
@@ -2891,7 +2894,7 @@
"10350": { "10350": {
"id": 10350, "id": 10350,
"event": "你发现一种加快修行速度的方法。", "event": "你发现一种加快修行速度的方法。",
"PostEvent": "体质大幅提升。", "postEvent": "体质大幅提升。",
"effect": { "effect": {
"STR": 50 "STR": 50
}, },

Binary file not shown.

View File

@@ -2,9 +2,9 @@ import { clone } from './functions/util.js';
import { checkCondition } from './functions/condition.js'; import { checkCondition } from './functions/condition.js';
class Event { class Event {
constructor(initialData={}) { constructor() {}
this.initial(initialData);
} #events;
initial({events}) { initial({events}) {
this.#events = events; this.#events = events;
@@ -19,10 +19,10 @@ class Event {
} }
} }
check(eventId) { check(eventId, property) {
const { include, exclude } = this.get(eventId); const { include, exclude } = this.get(eventId);
if(exclude && checkCondition(exclude)) return false; if(exclude && checkCondition(property, exclude)) return false;
if(include) return checkCondition(include); if(include) return checkCondition(property, include);
return true; return true;
} }
@@ -32,17 +32,18 @@ class Event {
return clone(event); return clone(event);
} }
description(eventId) { information(eventId) {
return this.get(eventId).description; const { event: description } = this.get(eventId)
return { description };
} }
do(eventId) { do(eventId, property) {
const { effect, branch } = this.get(eventId); const { effect, branch, event: description, postEvent } = this.get(eventId);
if(branch) if(branch)
for(const [cond, next] of branch) for(const [cond, next] of branch)
if(checkCondition(cond)) if(checkCondition(property, cond))
return { effect, next }; return { effect, next, description };
return { effect }; return { effect, postEvent, description };
} }
} }

View File

@@ -53,7 +53,7 @@ function checkParsedConditions(property, conditions) {
if(conditions.length == 0) return true; if(conditions.length == 0) return true;
if(conditions.length == 1) return checkParsedConditions(property, conditions[0]); if(conditions.length == 1) return checkParsedConditions(property, conditions[0]);
let ret = checkParsedConditions(conditions[0]); let ret = checkParsedConditions(property, conditions[0]);
for(let i=1; i<conditions.length; i+=2) { for(let i=1; i<conditions.length; i+=2) {
switch(conditions[i]) { switch(conditions[i]) {
case '&': case '&':

View File

@@ -1,4 +1,3 @@
import { readFile } from 'fs/promises';
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';
@@ -10,10 +9,15 @@ class Life {
this.#talent = new Talent(); this.#talent = new Talent();
} }
#property;
#event;
#talent;
#triggerTalents;
async initial() { async initial() {
const age = JSON.parse(await readFile('data/age.json')); const age = JSON.parse(await json('data/age.json'));
const talents = JSON.parse(await readFile('data/talents.json')); const talents = JSON.parse(await json('data/talents.json'));
const events = JSON.parse(await readFile('data/events.json')); const events = JSON.parse(await json('data/events.json'));
this.#property.initial({age}); this.#property.initial({age});
this.#talent.initial({talents}); this.#talent.initial({talents});
@@ -21,17 +25,61 @@ class Life {
} }
restart(allocation) { restart(allocation) {
this.#prop.restart(allocation); this.#triggerTalents = new Set();
this.#property.restart(allocation);
this.doTalent();
} }
next() { next() {
const {age, event, talent} = this.#prop.ageNext(); const {age, event, talent} = this.#property.ageNext();
const eventId = this.random(event); const talentContent = this.doTalent(talent);
const eventContent = this.doEvent(this.random(event));
const isEnd = this.#property.isEnd();
const content = [talentContent, eventContent].flat();
return { age, content, isEnd };
}
doTalent(talents) {
if(talents) this.#property.change(this.#property.TYPES.TLT, talents);
talents = this.#property.get(this.#property.TYPES.TLT)
.filter(talentId=>!this.#triggerTalents.has(talentId));
const contents = [];
for(const talentId of talents) {
const result = this.#talent.do(talentId);
if(!result) continue;
this.#triggerTalents.add(talentId);
const { effect, name, desctiption } = result;
contents.push({
type: this.#property.TYPES.TLT,
name,
rate,
desctiption,
})
if(!result.effect) continue;
this.#property.effect(effect);
}
return contents;
}
doEvent(eventId) {
const { effect, next, description, postEvent } = this.#event.do(eventId, this.#property);
this.#property.change(this.#property.TYPES.EVT, eventId);
this.#property.effect(effect);
const content = {
type: this.#property.TYPES.EVT,
description,
postEvent,
}
if(next) return [content, this.doEvent(next)].flat();
return [content];
} }
random(events) { random(events) {
events.filter(([eventId])=>this.#event.check(eventId)); events = events.filter(([eventId])=>this.#event.check(eventId, this.#property));
let totalWeights = 0; let totalWeights = 0;
for(const [, weight] of events) for(const [, weight] of events)
@@ -41,6 +89,7 @@ class Life {
for(const [eventId, weight] of events) for(const [eventId, weight] of events)
if((random-=weight)<0) if((random-=weight)<0)
return eventId; return eventId;
return events[events.length-1];
} }
} }

View File

@@ -1,9 +1,7 @@
import { clone } from './functions/util.js'; import { clone } from './functions/util.js';
class Property { class Property {
constructor(initialData={}) { constructor() {}
this.initial(initialData);
}
TYPES = { TYPES = {
AGE: "AGE", AGE: "AGE",
@@ -17,16 +15,20 @@ class Property {
EVT: "EVT", EVT: "EVT",
}; };
#ageData;
#data;
initial({age}) { initial({age}) {
this.#ageData = age; this.#ageData = age;
for(const age in a) for(const a in age) {
a[age].event = a[age].event?.map(v=>{ age[a].event = age[a].event?.split(',').map(v=>{
const value = v.split('*').map(n=>Number(n)); const value = v.split('*').map(n=>Number(n));
if(value.length==1) value.push(1); if(value.length==1) value.push(1);
return value; return value;
}); });
} }
}
restart(data) { restart(data) {
this.#data = { this.#data = {
@@ -41,7 +43,7 @@ class Property {
[this.TYPES.EVT]: [], [this.TYPES.EVT]: [],
}; };
for(const key in data) for(const key in data)
this.change(key, value); this.change(key, data[key]);
} }
get(prop) { get(prop) {
@@ -80,7 +82,7 @@ class Property {
change(prop, value) { change(prop, value) {
if(Array.isArray(value)) { if(Array.isArray(value)) {
for(const v of value) for(const v of value)
this.change(prop, v); this.change(prop, Number(v));
return; return;
} }
switch(prop) { switch(prop) {
@@ -118,7 +120,7 @@ class Property {
ageNext() { ageNext() {
this.change(this.TYPES.AGE, 1); this.change(this.TYPES.AGE, 1);
const age = this.get(this.TYPES.AGE); const age = this.get(this.TYPES.AGE);
const {event, talent} = this.getAge(age); const {event, talent} = this.getAgeData(age);
return {age, event, talent}; return {age, event, talent};
} }

View File

@@ -1,10 +1,11 @@
import { clone } from './functions/util.js';
class Talent { class Talent {
constructor(initialData={}) { constructor() {}
this.initial(initialData);
}
initial({talent}) { #talents;
this.#talent = talent;
initial({talents}) {
this.#talents = talents;
} }
check(talentId) { check(talentId) {
@@ -13,20 +14,22 @@ class Talent {
} }
get(talentId) { get(talentId) {
const talent = this.#talent[talentId]; const talent = this.#talents[talentId];
if(!talent) throw new Error(`[ERROR] No Talent[${talentId}]`); if(!talent) throw new Error(`[ERROR] No Talent[${talentId}]`);
return clone(talent); return clone(talent);
} }
description(talentId) { information(talentId) {
return this.get(talentId).description; const { rate, name, description } = this.get(talentId)
return { rate, name, description };
} }
do(talentId) { do(talentId) {
const { effect, condition } = this.get(talentId); const { effect, condition, initiative, rate, name, description } = this.get(talentId);
if(!initiative) return null;
if(condition && !checkCondition(condition)) if(condition && !checkCondition(condition))
return null; return null;
return { effect }; return { effect, rate, name, description };
} }
} }

51
test.js
View File

@@ -203,3 +203,54 @@
// import Property from './src/property.js'; // import Property from './src/property.js';
// import Condition from './src/condition.js'; // import Condition from './src/condition.js';
// import Event from './src/event.js'; // import Event from './src/event.js';
import { readFile } from 'fs/promises';
import Life from './src/life.js'
global.json = filePath => readFile(filePath);
async function debug() {
const life = new Life();
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
});
const lifeTrajectory = [];
let trajectory;
do{
try{
trajectory = life.next();
} catch(e) {
console.error(e);
// debugger
throw e;
}
lifeTrajectory.push(lifeTrajectory);
const { age, content } = trajectory;
console.debug(`---------------------------------`);
console.debug(`-- ${age}`);
console.debug(' ',
content.map(
({type, description, rate, name, postEvent}) => {
switch(type) {
case 'TLT':
return `天赋【${name}】发动:${description}`;
case 'EVT':
return description + (postEvent?`\n ${postEvent}`:'');
}
}
).join('\n ')
);
} while(!trajectory.isEnd)
// debugger;
}
debug();