diff --git a/bin/json/LocalizeConfig_CN.json b/bin/json/LocalizeConfig_CN.json
index e7b12a2ee..a3ef2fdc3 100644
--- a/bin/json/LocalizeConfig_CN.json
+++ b/bin/json/LocalizeConfig_CN.json
@@ -2958,5 +2958,9 @@
{
"key": "mainline_name_10070",
"text_cn": "Chapter 70"
+ },
+ {
+ "key": "mainline_name_10071",
+ "text_cn": "故事发生在很久以前的古代中国,而且要从一只喜欢滚来滚去、滚来滚去的大熊猫身上说起。"
}
]
\ No newline at end of file
diff --git a/bin/json/LocalizeConfig_EN.json b/bin/json/LocalizeConfig_EN.json
index e4376f0ac..9d0b5eca7 100644
--- a/bin/json/LocalizeConfig_EN.json
+++ b/bin/json/LocalizeConfig_EN.json
@@ -2958,5 +2958,9 @@
{
"key": "mainline_name_10070",
"text_en": ""
+ },
+ {
+ "key": "mainline_name_10071",
+ "text_en": ""
}
]
\ No newline at end of file
diff --git a/bin/json/LocalizeConfig_TW.json b/bin/json/LocalizeConfig_TW.json
index 7fa12d5aa..b987bd34a 100644
--- a/bin/json/LocalizeConfig_TW.json
+++ b/bin/json/LocalizeConfig_TW.json
@@ -2958,5 +2958,9 @@
{
"key": "mainline_name_10070",
"text_tw": ""
+ },
+ {
+ "key": "mainline_name_10071",
+ "text_tw": ""
}
]
\ No newline at end of file
diff --git a/bin/json/game_equip.json b/bin/json/game_equip.json
index d045b508f..e1bfb958a 100644
--- a/bin/json/game_equip.json
+++ b/bin/json/game_equip.json
@@ -3,10 +3,10 @@
"id": "10001",
"name": {
"key": "equip_13001",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 1,
"leadlibrary": 10001,
@@ -27,10 +27,10 @@
"id": "10002",
"name": {
"key": "equip_13002",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 1,
"leadlibrary": 10002,
@@ -51,10 +51,10 @@
"id": "10003",
"name": {
"key": "equip_13003",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 1,
"leadlibrary": 10003,
@@ -77,10 +77,10 @@
"id": "10004",
"name": {
"key": "equip_13004",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 1,
"leadlibrary": 10004,
@@ -101,10 +101,10 @@
"id": "10005",
"name": {
"key": "equip_13005",
- "text": "罗梦菲的刀"
+ "text": "刀"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 1,
"leadlibrary": 10005,
@@ -127,10 +127,10 @@
"id": "10006",
"name": {
"key": "equip_13006",
- "text": "罗梦菲的围巾"
+ "text": "围巾"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 1,
"leadlibrary": 10006,
@@ -151,10 +151,10 @@
"id": "10011",
"name": {
"key": "equip_13007",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 2,
"leadlibrary": 10011,
@@ -175,10 +175,10 @@
"id": "10012",
"name": {
"key": "equip_13008",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 2,
"leadlibrary": 10012,
@@ -199,10 +199,10 @@
"id": "10013",
"name": {
"key": "equip_13009",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 2,
"leadlibrary": 10013,
@@ -225,10 +225,10 @@
"id": "10014",
"name": {
"key": "equip_13010",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 2,
"leadlibrary": 10014,
@@ -249,10 +249,10 @@
"id": "10015",
"name": {
"key": "equip_13011",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 2,
"leadlibrary": 10015,
@@ -275,10 +275,10 @@
"id": "10016",
"name": {
"key": "equip_13012",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 2,
"leadlibrary": 10016,
@@ -299,10 +299,10 @@
"id": "10021",
"name": {
"key": "equip_13013",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 3,
"leadlibrary": 10021,
@@ -323,10 +323,10 @@
"id": "10022",
"name": {
"key": "equip_13014",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 3,
"leadlibrary": 10022,
@@ -347,10 +347,10 @@
"id": "10023",
"name": {
"key": "equip_13015",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 3,
"leadlibrary": 10023,
@@ -373,10 +373,10 @@
"id": "10024",
"name": {
"key": "equip_13016",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 3,
"leadlibrary": 10024,
@@ -397,10 +397,10 @@
"id": "10025",
"name": {
"key": "equip_13017",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 3,
"leadlibrary": 10025,
@@ -423,10 +423,10 @@
"id": "10026",
"name": {
"key": "equip_13018",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 3,
"leadlibrary": 10026,
@@ -447,10 +447,10 @@
"id": "10031",
"name": {
"key": "equip_13019",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 4,
"leadlibrary": 10031,
@@ -471,10 +471,10 @@
"id": "10032",
"name": {
"key": "equip_13020",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 4,
"leadlibrary": 10032,
@@ -495,10 +495,10 @@
"id": "10033",
"name": {
"key": "equip_13021",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 4,
"leadlibrary": 10033,
@@ -521,10 +521,10 @@
"id": "10034",
"name": {
"key": "equip_13022",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 4,
"leadlibrary": 10034,
@@ -545,10 +545,10 @@
"id": "10035",
"name": {
"key": "equip_13023",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 4,
"leadlibrary": 10035,
@@ -571,10 +571,10 @@
"id": "10036",
"name": {
"key": "equip_13024",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 4,
"leadlibrary": 10036,
@@ -595,10 +595,10 @@
"id": "10041",
"name": {
"key": "equip_13025",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 5,
"leadlibrary": 10041,
@@ -619,10 +619,10 @@
"id": "10042",
"name": {
"key": "equip_13026",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 5,
"leadlibrary": 10042,
@@ -643,10 +643,10 @@
"id": "10043",
"name": {
"key": "equip_13027",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 5,
"leadlibrary": 10043,
@@ -669,10 +669,10 @@
"id": "10044",
"name": {
"key": "equip_13028",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 5,
"leadlibrary": 10044,
@@ -693,10 +693,10 @@
"id": "10045",
"name": {
"key": "equip_13029",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 5,
"leadlibrary": 10045,
@@ -719,10 +719,10 @@
"id": "10046",
"name": {
"key": "equip_13030",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 5,
"leadlibrary": 10046,
@@ -743,10 +743,10 @@
"id": "10051",
"name": {
"key": "equip_13031",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 6,
"leadlibrary": 10051,
@@ -767,10 +767,10 @@
"id": "10052",
"name": {
"key": "equip_13032",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 6,
"leadlibrary": 10052,
@@ -791,10 +791,10 @@
"id": "10053",
"name": {
"key": "equip_13033",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 6,
"leadlibrary": 10053,
@@ -817,10 +817,10 @@
"id": "10054",
"name": {
"key": "equip_13034",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 0,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 6,
"leadlibrary": 10054,
@@ -841,10 +841,10 @@
"id": "10055",
"name": {
"key": "equip_13035",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 6,
"leadlibrary": 10055,
@@ -867,10 +867,10 @@
"id": "10056",
"name": {
"key": "equip_13036",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 100,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 6,
"leadlibrary": 10056,
@@ -891,10 +891,10 @@
"id": "11001",
"name": {
"key": "equip_13037",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 1,
"leadlibrary": 11001,
@@ -915,10 +915,10 @@
"id": "11002",
"name": {
"key": "equip_13038",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 1,
"leadlibrary": 11002,
@@ -939,10 +939,10 @@
"id": "11003",
"name": {
"key": "equip_13039",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 1,
"leadlibrary": 11003,
@@ -965,10 +965,10 @@
"id": "11004",
"name": {
"key": "equip_13040",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 1,
"leadlibrary": 11004,
@@ -989,10 +989,10 @@
"id": "11005",
"name": {
"key": "equip_13041",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 1,
"leadlibrary": 11005,
@@ -1015,10 +1015,10 @@
"id": "11006",
"name": {
"key": "equip_13042",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 1,
"leadlibrary": 11006,
@@ -1039,10 +1039,10 @@
"id": "11011",
"name": {
"key": "equip_13043",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 2,
"leadlibrary": 11011,
@@ -1063,10 +1063,10 @@
"id": "11012",
"name": {
"key": "equip_13044",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 2,
"leadlibrary": 11012,
@@ -1087,10 +1087,10 @@
"id": "11013",
"name": {
"key": "equip_13045",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 2,
"leadlibrary": 11013,
@@ -1113,10 +1113,10 @@
"id": "11014",
"name": {
"key": "equip_13046",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 2,
"leadlibrary": 11014,
@@ -1137,10 +1137,10 @@
"id": "11015",
"name": {
"key": "equip_13047",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 2,
"leadlibrary": 11015,
@@ -1163,10 +1163,10 @@
"id": "11016",
"name": {
"key": "equip_13048",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 2,
"leadlibrary": 11016,
@@ -1187,10 +1187,10 @@
"id": "11021",
"name": {
"key": "equip_13049",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 3,
"leadlibrary": 11021,
@@ -1211,10 +1211,10 @@
"id": "11022",
"name": {
"key": "equip_13050",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 3,
"leadlibrary": 11022,
@@ -1235,10 +1235,10 @@
"id": "11023",
"name": {
"key": "equip_13051",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 3,
"leadlibrary": 11023,
@@ -1261,10 +1261,10 @@
"id": "11024",
"name": {
"key": "equip_13052",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 3,
"leadlibrary": 11024,
@@ -1285,10 +1285,10 @@
"id": "11025",
"name": {
"key": "equip_13053",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 3,
"leadlibrary": 11025,
@@ -1311,10 +1311,10 @@
"id": "11026",
"name": {
"key": "equip_13054",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 3,
"leadlibrary": 11026,
@@ -1335,10 +1335,10 @@
"id": "11031",
"name": {
"key": "equip_13055",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 4,
"leadlibrary": 11031,
@@ -1359,10 +1359,10 @@
"id": "11032",
"name": {
"key": "equip_13056",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 4,
"leadlibrary": 11032,
@@ -1383,10 +1383,10 @@
"id": "11033",
"name": {
"key": "equip_13057",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 4,
"leadlibrary": 11033,
@@ -1409,10 +1409,10 @@
"id": "11034",
"name": {
"key": "equip_13058",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 4,
"leadlibrary": 11034,
@@ -1433,10 +1433,10 @@
"id": "11035",
"name": {
"key": "equip_13059",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 4,
"leadlibrary": 11035,
@@ -1459,10 +1459,10 @@
"id": "11036",
"name": {
"key": "equip_13060",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 4,
"leadlibrary": 11036,
@@ -1483,10 +1483,10 @@
"id": "11041",
"name": {
"key": "equip_13061",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 5,
"leadlibrary": 11041,
@@ -1507,10 +1507,10 @@
"id": "11042",
"name": {
"key": "equip_13062",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 5,
"leadlibrary": 11042,
@@ -1531,10 +1531,10 @@
"id": "11043",
"name": {
"key": "equip_13063",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 5,
"leadlibrary": 11043,
@@ -1557,10 +1557,10 @@
"id": "11044",
"name": {
"key": "equip_13064",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 5,
"leadlibrary": 11044,
@@ -1581,10 +1581,10 @@
"id": "11045",
"name": {
"key": "equip_13065",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 5,
"leadlibrary": 11045,
@@ -1607,10 +1607,10 @@
"id": "11046",
"name": {
"key": "equip_13066",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 5,
"leadlibrary": 11046,
@@ -1631,10 +1631,10 @@
"id": "11051",
"name": {
"key": "equip_13067",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 1,
"star": 6,
"leadlibrary": 11051,
@@ -1655,10 +1655,10 @@
"id": "11052",
"name": {
"key": "equip_13068",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 2,
"star": 6,
"leadlibrary": 11052,
@@ -1679,10 +1679,10 @@
"id": "11053",
"name": {
"key": "equip_13069",
- "text": "罗梦菲的披风"
+ "text": "披风"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 3,
"star": 6,
"leadlibrary": 11053,
@@ -1705,10 +1705,10 @@
"id": "11054",
"name": {
"key": "equip_13070",
- "text": "罗梦菲的帽子"
+ "text": "帽子"
},
"suittype": 1,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 4,
"star": 6,
"leadlibrary": 11054,
@@ -1729,10 +1729,10 @@
"id": "11055",
"name": {
"key": "equip_13071",
- "text": "罗梦菲的鞋"
+ "text": "鞋"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 5,
"star": 6,
"leadlibrary": 11055,
@@ -1755,10 +1755,10 @@
"id": "11056",
"name": {
"key": "equip_13072",
- "text": "罗梦菲的裙子"
+ "text": "裙子"
},
"suittype": 101,
- "suitintr": "梦扣扣套装",
+ "suitintr": "初心者套装",
"pos": 6,
"star": 6,
"leadlibrary": 11056,
diff --git a/bin/json/game_equipsuit.json b/bin/json/game_equipsuit.json
index 73535569a..4d1b032f9 100644
--- a/bin/json/game_equipsuit.json
+++ b/bin/json/game_equipsuit.json
@@ -3,119 +3,119 @@
"suittype": 0,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣拳",
- "skillintr": "一拳干碎"
+ "skillname": "魔力之拳",
+ "skillintr": "暴击率\u002B20%"
},
{
"suittype": 1,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣脚",
- "skillintr": "一脚干碎"
+ "skillname": "魔力之脚",
+ "skillintr": "暴击率\u002B20%"
},
{
"suittype": 2,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣拳",
+ "skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 3,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣脚",
+ "skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 4,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣拳",
+ "skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 5,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣脚",
+ "skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 6,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣拳",
+ "skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 7,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣脚",
+ "skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 8,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣拳",
+ "skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 9,
"suitnum": 4,
"skill": 100012000,
- "skillname": "梦扣扣脚",
+ "skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 100,
"suitnum": 2,
"skill": 100012000,
- "skillname": "梦扣扣拳",
+ "skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 101,
"suitnum": 2,
"skill": 100012000,
- "skillname": "梦扣扣脚",
+ "skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 102,
"suitnum": 2,
"skill": 100012000,
- "skillname": "梦扣扣拳",
+ "skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 103,
"suitnum": 2,
"skill": 100012000,
- "skillname": "梦扣扣脚",
+ "skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 104,
"suitnum": 2,
"skill": 100012000,
- "skillname": "梦扣扣拳",
+ "skillname": "魔力之拳",
"skillintr": "一拳干碎"
},
{
"suittype": 105,
"suitnum": 2,
"skill": 100012000,
- "skillname": "梦扣扣脚",
+ "skillname": "魔力之脚",
"skillintr": "一脚干碎"
},
{
"suittype": 106,
"suitnum": 2,
"skill": 100012000,
- "skillname": "梦扣扣拳",
+ "skillname": "魔力之拳",
"skillintr": "一拳干碎"
}
]
\ No newline at end of file
diff --git a/bin/json/game_facemod.json b/bin/json/game_facemod.json
new file mode 100644
index 000000000..152e7eef8
--- /dev/null
+++ b/bin/json/game_facemod.json
@@ -0,0 +1,332 @@
+[
+ {
+ "id": 1001,
+ "suitintr": "预设1",
+ "figure": [
+ {
+ "id": 1,
+ "key": "hair",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 2,
+ "key": "eye",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 3,
+ "key": "mouth",
+ "color": "",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 4,
+ "key": "height",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 5,
+ "key": "size",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 6,
+ "key": "color",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ }
+ ]
+ },
+ {
+ "id": 1002,
+ "suitintr": "预设2",
+ "figure": [
+ {
+ "id": 1,
+ "key": "hair",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 2,
+ "key": "eye",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 3,
+ "key": "mouth",
+ "color": "",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 4,
+ "key": "height",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 5,
+ "key": "size",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 6,
+ "key": "color",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ }
+ ]
+ },
+ {
+ "id": 1003,
+ "suitintr": "预设3",
+ "figure": [
+ {
+ "id": 1,
+ "key": "hair",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 2,
+ "key": "eye",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 3,
+ "key": "mouth",
+ "color": "",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 4,
+ "key": "height",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 5,
+ "key": "size",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 6,
+ "key": "color",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ }
+ ]
+ },
+ {
+ "id": 1004,
+ "suitintr": "预设4",
+ "figure": [
+ {
+ "id": 1,
+ "key": "hair",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 2,
+ "key": "eye",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 3,
+ "key": "mouth",
+ "color": "",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 4,
+ "key": "height",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 5,
+ "key": "size",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 6,
+ "key": "color",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ }
+ ]
+ },
+ {
+ "id": 1005,
+ "suitintr": "预设5",
+ "figure": [
+ {
+ "id": 1,
+ "key": "hair",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 2,
+ "key": "eye",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 3,
+ "key": "mouth",
+ "color": "",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": "face_icon_01"
+ },
+ {
+ "id": 4,
+ "key": "height",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 5,
+ "key": "size",
+ "color": "",
+ "val": 5,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ },
+ {
+ "id": 6,
+ "key": "color",
+ "color": "#fffff",
+ "val": 0,
+ "positon_x": 0,
+ "positon_y": 0,
+ "positon_z": 0,
+ "icon": ""
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_mainlineeasy.json b/bin/json/game_mainlineeasy.json
index a9ebd6881..4068786d7 100644
--- a/bin/json/game_mainlineeasy.json
+++ b/bin/json/game_mainlineeasy.json
@@ -579,7 +579,7 @@
"id": 111,
"previoustage": 110,
"order": 11,
- "linearnum": 1,
+ "linearnum": 11,
"chapter": 1,
"route": 1,
"Episodetype": 1,
@@ -640,7 +640,7 @@
"id": 112,
"previoustage": 111,
"order": 12,
- "linearnum": 2,
+ "linearnum": 12,
"chapter": 1,
"route": 1,
"Episodetype": 1,
@@ -701,7 +701,7 @@
"id": 201,
"previoustage": 112,
"order": 13,
- "linearnum": 3,
+ "linearnum": 1,
"chapter": 2,
"route": 1,
"Episodetype": 1,
@@ -762,7 +762,7 @@
"id": 202,
"previoustage": 201,
"order": 14,
- "linearnum": 4,
+ "linearnum": 2,
"chapter": 2,
"route": 1,
"Episodetype": 1,
@@ -823,7 +823,7 @@
"id": 203,
"previoustage": 202,
"order": 15,
- "linearnum": 5,
+ "linearnum": 3,
"chapter": 2,
"route": 1,
"Episodetype": 1,
@@ -884,7 +884,7 @@
"id": 204,
"previoustage": 203,
"order": 16,
- "linearnum": 6,
+ "linearnum": 4,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@@ -945,7 +945,7 @@
"id": 205,
"previoustage": 204,
"order": 17,
- "linearnum": 7,
+ "linearnum": 5,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@@ -1006,7 +1006,7 @@
"id": 206,
"previoustage": 205,
"order": 18,
- "linearnum": 8,
+ "linearnum": 6,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@@ -1067,7 +1067,7 @@
"id": 207,
"previoustage": 206,
"order": 19,
- "linearnum": 9,
+ "linearnum": 7,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@@ -1128,7 +1128,7 @@
"id": 208,
"previoustage": 207,
"order": 20,
- "linearnum": 10,
+ "linearnum": 8,
"chapter": 2,
"route": 2,
"Episodetype": 1,
@@ -1189,7 +1189,7 @@
"id": 209,
"previoustage": 208,
"order": 21,
- "linearnum": 11,
+ "linearnum": 9,
"chapter": 2,
"route": 3,
"Episodetype": 1,
@@ -1250,7 +1250,7 @@
"id": 210,
"previoustage": 209,
"order": 22,
- "linearnum": 12,
+ "linearnum": 10,
"chapter": 2,
"route": 3,
"Episodetype": 1,
@@ -1311,7 +1311,7 @@
"id": 211,
"previoustage": 210,
"order": 23,
- "linearnum": 13,
+ "linearnum": 11,
"chapter": 2,
"route": 3,
"Episodetype": 1,
@@ -1372,7 +1372,7 @@
"id": 212,
"previoustage": 211,
"order": 24,
- "linearnum": 14,
+ "linearnum": 12,
"chapter": 2,
"route": 3,
"Episodetype": 1,
@@ -1433,7 +1433,7 @@
"id": 301,
"previoustage": 212,
"order": 25,
- "linearnum": 15,
+ "linearnum": 1,
"chapter": 3,
"route": 3,
"Episodetype": 1,
@@ -1494,7 +1494,7 @@
"id": 302,
"previoustage": 301,
"order": 26,
- "linearnum": 16,
+ "linearnum": 2,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@@ -1555,7 +1555,7 @@
"id": 303,
"previoustage": 302,
"order": 27,
- "linearnum": 17,
+ "linearnum": 3,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@@ -1616,7 +1616,7 @@
"id": 304,
"previoustage": 303,
"order": 28,
- "linearnum": 18,
+ "linearnum": 4,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@@ -1677,7 +1677,7 @@
"id": 305,
"previoustage": 304,
"order": 29,
- "linearnum": 19,
+ "linearnum": 5,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@@ -1738,7 +1738,7 @@
"id": 306,
"previoustage": 305,
"order": 30,
- "linearnum": 20,
+ "linearnum": 6,
"chapter": 3,
"route": 4,
"Episodetype": 1,
@@ -1799,7 +1799,7 @@
"id": 307,
"previoustage": 306,
"order": 31,
- "linearnum": 1,
+ "linearnum": 7,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@@ -1860,7 +1860,7 @@
"id": 308,
"previoustage": 307,
"order": 32,
- "linearnum": 2,
+ "linearnum": 8,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@@ -1921,7 +1921,7 @@
"id": 309,
"previoustage": 308,
"order": 33,
- "linearnum": 3,
+ "linearnum": 9,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@@ -1982,7 +1982,7 @@
"id": 310,
"previoustage": 309,
"order": 34,
- "linearnum": 4,
+ "linearnum": 10,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@@ -2043,7 +2043,7 @@
"id": 311,
"previoustage": 310,
"order": 35,
- "linearnum": 5,
+ "linearnum": 11,
"chapter": 3,
"route": 1,
"Episodetype": 1,
@@ -2104,7 +2104,7 @@
"id": 312,
"previoustage": 311,
"order": 36,
- "linearnum": 6,
+ "linearnum": 12,
"chapter": 3,
"route": 2,
"Episodetype": 1,
@@ -2165,7 +2165,7 @@
"id": 401,
"previoustage": 312,
"order": 37,
- "linearnum": 7,
+ "linearnum": 1,
"chapter": 4,
"route": 2,
"Episodetype": 1,
@@ -2226,7 +2226,7 @@
"id": 402,
"previoustage": 401,
"order": 38,
- "linearnum": 8,
+ "linearnum": 2,
"chapter": 4,
"route": 2,
"Episodetype": 1,
@@ -2287,7 +2287,7 @@
"id": 403,
"previoustage": 402,
"order": 39,
- "linearnum": 9,
+ "linearnum": 3,
"chapter": 4,
"route": 2,
"Episodetype": 1,
@@ -2348,7 +2348,7 @@
"id": 404,
"previoustage": 403,
"order": 40,
- "linearnum": 10,
+ "linearnum": 4,
"chapter": 4,
"route": 2,
"Episodetype": 1,
@@ -2409,7 +2409,7 @@
"id": 405,
"previoustage": 404,
"order": 41,
- "linearnum": 11,
+ "linearnum": 5,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@@ -2470,7 +2470,7 @@
"id": 406,
"previoustage": 405,
"order": 42,
- "linearnum": 12,
+ "linearnum": 6,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@@ -2531,7 +2531,7 @@
"id": 407,
"previoustage": 406,
"order": 43,
- "linearnum": 13,
+ "linearnum": 7,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@@ -2592,7 +2592,7 @@
"id": 408,
"previoustage": 407,
"order": 44,
- "linearnum": 14,
+ "linearnum": 8,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@@ -2653,7 +2653,7 @@
"id": 409,
"previoustage": 408,
"order": 45,
- "linearnum": 15,
+ "linearnum": 9,
"chapter": 4,
"route": 3,
"Episodetype": 1,
@@ -2714,7 +2714,7 @@
"id": 410,
"previoustage": 409,
"order": 46,
- "linearnum": 16,
+ "linearnum": 10,
"chapter": 4,
"route": 4,
"Episodetype": 1,
@@ -2772,7 +2772,7 @@
"id": 411,
"previoustage": 410,
"order": 47,
- "linearnum": 17,
+ "linearnum": 11,
"chapter": 4,
"route": 4,
"Episodetype": 1,
@@ -2830,7 +2830,7 @@
"id": 412,
"previoustage": 411,
"order": 48,
- "linearnum": 18,
+ "linearnum": 12,
"chapter": 4,
"route": 4,
"Episodetype": 1,
@@ -2888,7 +2888,7 @@
"id": 501,
"previoustage": 412,
"order": 49,
- "linearnum": 19,
+ "linearnum": 1,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@@ -2946,7 +2946,7 @@
"id": 502,
"previoustage": 501,
"order": 50,
- "linearnum": 20,
+ "linearnum": 2,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@@ -3007,7 +3007,7 @@
"id": 503,
"previoustage": 502,
"order": 51,
- "linearnum": 21,
+ "linearnum": 3,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@@ -3065,7 +3065,7 @@
"id": 504,
"previoustage": 503,
"order": 52,
- "linearnum": 22,
+ "linearnum": 4,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@@ -3123,7 +3123,7 @@
"id": 505,
"previoustage": 504,
"order": 53,
- "linearnum": 23,
+ "linearnum": 5,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@@ -3181,7 +3181,7 @@
"id": 506,
"previoustage": 505,
"order": 54,
- "linearnum": 24,
+ "linearnum": 6,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@@ -3239,7 +3239,7 @@
"id": 507,
"previoustage": 506,
"order": 55,
- "linearnum": 25,
+ "linearnum": 7,
"chapter": 5,
"route": 4,
"Episodetype": 1,
@@ -3300,7 +3300,7 @@
"id": 508,
"previoustage": 507,
"order": 56,
- "linearnum": 1,
+ "linearnum": 8,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@@ -3361,7 +3361,7 @@
"id": 509,
"previoustage": 508,
"order": 57,
- "linearnum": 2,
+ "linearnum": 9,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@@ -3419,7 +3419,7 @@
"id": 510,
"previoustage": 509,
"order": 58,
- "linearnum": 3,
+ "linearnum": 10,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@@ -3477,7 +3477,7 @@
"id": 511,
"previoustage": 510,
"order": 59,
- "linearnum": 4,
+ "linearnum": 11,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@@ -3535,7 +3535,7 @@
"id": 512,
"previoustage": 511,
"order": 60,
- "linearnum": 5,
+ "linearnum": 12,
"chapter": 5,
"route": 1,
"Episodetype": 1,
@@ -3596,7 +3596,7 @@
"id": 601,
"previoustage": 512,
"order": 61,
- "linearnum": 6,
+ "linearnum": 1,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@@ -3654,7 +3654,7 @@
"id": 602,
"previoustage": 601,
"order": 62,
- "linearnum": 7,
+ "linearnum": 2,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@@ -3712,7 +3712,7 @@
"id": 603,
"previoustage": 602,
"order": 63,
- "linearnum": 8,
+ "linearnum": 3,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@@ -3770,7 +3770,7 @@
"id": 604,
"previoustage": 603,
"order": 64,
- "linearnum": 9,
+ "linearnum": 4,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@@ -3828,7 +3828,7 @@
"id": 605,
"previoustage": 604,
"order": 65,
- "linearnum": 10,
+ "linearnum": 5,
"chapter": 6,
"route": 2,
"Episodetype": 1,
@@ -3889,7 +3889,7 @@
"id": 606,
"previoustage": 605,
"order": 66,
- "linearnum": 11,
+ "linearnum": 6,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@@ -3947,7 +3947,7 @@
"id": 607,
"previoustage": 606,
"order": 67,
- "linearnum": 12,
+ "linearnum": 7,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@@ -4005,7 +4005,7 @@
"id": 608,
"previoustage": 607,
"order": 68,
- "linearnum": 13,
+ "linearnum": 8,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@@ -4063,7 +4063,7 @@
"id": 609,
"previoustage": 608,
"order": 69,
- "linearnum": 14,
+ "linearnum": 9,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@@ -4121,7 +4121,7 @@
"id": 610,
"previoustage": 609,
"order": 70,
- "linearnum": 15,
+ "linearnum": 10,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@@ -4182,7 +4182,7 @@
"id": 611,
"previoustage": 610,
"order": 71,
- "linearnum": 16,
+ "linearnum": 11,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@@ -4240,7 +4240,7 @@
"id": 612,
"previoustage": 611,
"order": 72,
- "linearnum": 17,
+ "linearnum": 12,
"chapter": 6,
"route": 3,
"Episodetype": 1,
@@ -4298,7 +4298,7 @@
"id": 701,
"previoustage": 612,
"order": 73,
- "linearnum": 18,
+ "linearnum": 1,
"chapter": 7,
"route": 3,
"Episodetype": 1,
@@ -4356,7 +4356,7 @@
"id": 702,
"previoustage": 701,
"order": 74,
- "linearnum": 19,
+ "linearnum": 2,
"chapter": 7,
"route": 3,
"Episodetype": 1,
@@ -4414,7 +4414,7 @@
"id": 703,
"previoustage": 702,
"order": 75,
- "linearnum": 20,
+ "linearnum": 3,
"chapter": 7,
"route": 3,
"Episodetype": 1,
@@ -4475,7 +4475,7 @@
"id": 704,
"previoustage": 703,
"order": 76,
- "linearnum": 21,
+ "linearnum": 4,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -4533,7 +4533,7 @@
"id": 705,
"previoustage": 704,
"order": 77,
- "linearnum": 22,
+ "linearnum": 5,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -4591,7 +4591,7 @@
"id": 706,
"previoustage": 705,
"order": 78,
- "linearnum": 23,
+ "linearnum": 6,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -4649,7 +4649,7 @@
"id": 707,
"previoustage": 706,
"order": 79,
- "linearnum": 24,
+ "linearnum": 7,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -4707,7 +4707,7 @@
"id": 708,
"previoustage": 707,
"order": 80,
- "linearnum": 25,
+ "linearnum": 8,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -4768,7 +4768,7 @@
"id": 709,
"previoustage": 708,
"order": 81,
- "linearnum": 26,
+ "linearnum": 9,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -4826,7 +4826,7 @@
"id": 710,
"previoustage": 709,
"order": 82,
- "linearnum": 27,
+ "linearnum": 10,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -4884,7 +4884,7 @@
"id": 711,
"previoustage": 710,
"order": 83,
- "linearnum": 28,
+ "linearnum": 11,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -4942,7 +4942,7 @@
"id": 712,
"previoustage": 711,
"order": 84,
- "linearnum": 29,
+ "linearnum": 12,
"chapter": 7,
"route": 4,
"Episodetype": 1,
@@ -5000,7 +5000,7 @@
"id": 801,
"previoustage": 712,
"order": 85,
- "linearnum": 30,
+ "linearnum": 1,
"chapter": 8,
"route": 4,
"Episodetype": 1,
@@ -5061,7 +5061,7 @@
"id": 802,
"previoustage": 801,
"order": 86,
- "linearnum": 1,
+ "linearnum": 2,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@@ -5122,7 +5122,7 @@
"id": 803,
"previoustage": 802,
"order": 87,
- "linearnum": 2,
+ "linearnum": 3,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@@ -5180,7 +5180,7 @@
"id": 804,
"previoustage": 803,
"order": 88,
- "linearnum": 3,
+ "linearnum": 4,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@@ -5238,7 +5238,7 @@
"id": 805,
"previoustage": 804,
"order": 89,
- "linearnum": 4,
+ "linearnum": 5,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@@ -5296,7 +5296,7 @@
"id": 806,
"previoustage": 805,
"order": 90,
- "linearnum": 5,
+ "linearnum": 6,
"chapter": 8,
"route": 1,
"Episodetype": 1,
@@ -5357,7 +5357,7 @@
"id": 807,
"previoustage": 806,
"order": 91,
- "linearnum": 6,
+ "linearnum": 7,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@@ -5415,7 +5415,7 @@
"id": 808,
"previoustage": 807,
"order": 92,
- "linearnum": 7,
+ "linearnum": 8,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@@ -5473,7 +5473,7 @@
"id": 809,
"previoustage": 808,
"order": 93,
- "linearnum": 8,
+ "linearnum": 9,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@@ -5531,7 +5531,7 @@
"id": 810,
"previoustage": 809,
"order": 94,
- "linearnum": 9,
+ "linearnum": 10,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@@ -5589,7 +5589,7 @@
"id": 811,
"previoustage": 810,
"order": 95,
- "linearnum": 10,
+ "linearnum": 11,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@@ -5650,7 +5650,7 @@
"id": 812,
"previoustage": 811,
"order": 96,
- "linearnum": 11,
+ "linearnum": 12,
"chapter": 8,
"route": 2,
"Episodetype": 1,
@@ -5708,7 +5708,7 @@
"id": 901,
"previoustage": 812,
"order": 97,
- "linearnum": 12,
+ "linearnum": 1,
"chapter": 9,
"route": 2,
"Episodetype": 1,
@@ -5766,7 +5766,7 @@
"id": 902,
"previoustage": 901,
"order": 98,
- "linearnum": 13,
+ "linearnum": 2,
"chapter": 9,
"route": 2,
"Episodetype": 1,
@@ -5824,7 +5824,7 @@
"id": 903,
"previoustage": 902,
"order": 99,
- "linearnum": 14,
+ "linearnum": 3,
"chapter": 9,
"route": 2,
"Episodetype": 1,
@@ -5882,7 +5882,7 @@
"id": 904,
"previoustage": 903,
"order": 100,
- "linearnum": 15,
+ "linearnum": 4,
"chapter": 9,
"route": 2,
"Episodetype": 1,
@@ -5943,7 +5943,7 @@
"id": 905,
"previoustage": 904,
"order": 101,
- "linearnum": 16,
+ "linearnum": 5,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@@ -6001,7 +6001,7 @@
"id": 906,
"previoustage": 905,
"order": 102,
- "linearnum": 17,
+ "linearnum": 6,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@@ -6059,7 +6059,7 @@
"id": 907,
"previoustage": 906,
"order": 103,
- "linearnum": 18,
+ "linearnum": 7,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@@ -6117,7 +6117,7 @@
"id": 908,
"previoustage": 907,
"order": 104,
- "linearnum": 19,
+ "linearnum": 8,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@@ -6175,7 +6175,7 @@
"id": 909,
"previoustage": 908,
"order": 105,
- "linearnum": 20,
+ "linearnum": 9,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@@ -6236,7 +6236,7 @@
"id": 910,
"previoustage": 909,
"order": 106,
- "linearnum": 21,
+ "linearnum": 10,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@@ -6294,7 +6294,7 @@
"id": 911,
"previoustage": 910,
"order": 107,
- "linearnum": 22,
+ "linearnum": 11,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@@ -6352,7 +6352,7 @@
"id": 912,
"previoustage": 911,
"order": 108,
- "linearnum": 23,
+ "linearnum": 12,
"chapter": 9,
"route": 3,
"Episodetype": 1,
@@ -6410,7 +6410,7 @@
"id": 1001,
"previoustage": 912,
"order": 109,
- "linearnum": 24,
+ "linearnum": 1,
"chapter": 10,
"route": 3,
"Episodetype": 1,
@@ -6468,7 +6468,7 @@
"id": 1002,
"previoustage": 1001,
"order": 110,
- "linearnum": 25,
+ "linearnum": 2,
"chapter": 10,
"route": 3,
"Episodetype": 1,
@@ -6529,7 +6529,7 @@
"id": 1003,
"previoustage": 1002,
"order": 111,
- "linearnum": 26,
+ "linearnum": 3,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -6587,7 +6587,7 @@
"id": 1004,
"previoustage": 1003,
"order": 112,
- "linearnum": 27,
+ "linearnum": 4,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -6645,7 +6645,7 @@
"id": 1005,
"previoustage": 1004,
"order": 113,
- "linearnum": 28,
+ "linearnum": 5,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -6703,7 +6703,7 @@
"id": 1006,
"previoustage": 1005,
"order": 114,
- "linearnum": 29,
+ "linearnum": 6,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -6761,7 +6761,7 @@
"id": 1007,
"previoustage": 1006,
"order": 115,
- "linearnum": 30,
+ "linearnum": 7,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -6822,7 +6822,7 @@
"id": 1008,
"previoustage": 1007,
"order": 116,
- "linearnum": 31,
+ "linearnum": 8,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -6880,7 +6880,7 @@
"id": 1009,
"previoustage": 1008,
"order": 117,
- "linearnum": 32,
+ "linearnum": 9,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -6938,7 +6938,7 @@
"id": 1010,
"previoustage": 1009,
"order": 118,
- "linearnum": 33,
+ "linearnum": 10,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -6996,7 +6996,7 @@
"id": 1011,
"previoustage": 1010,
"order": 119,
- "linearnum": 34,
+ "linearnum": 11,
"chapter": 10,
"route": 4,
"Episodetype": 1,
@@ -7054,7 +7054,7 @@
"id": 1012,
"previoustage": 1011,
"order": 120,
- "linearnum": 35,
+ "linearnum": 12,
"chapter": 10,
"route": 4,
"Episodetype": 1,
diff --git a/bin/json/game_mainlinehard.json b/bin/json/game_mainlinehard.json
index d998067fc..738dd9400 100644
--- a/bin/json/game_mainlinehard.json
+++ b/bin/json/game_mainlinehard.json
@@ -561,7 +561,7 @@
"id": 111,
"previoustage": 110,
"order": 11,
- "linearnum": 1,
+ "linearnum": 11,
"chapter": 1,
"route": 1,
"episodetype": 1,
@@ -622,7 +622,7 @@
"id": 112,
"previoustage": 111,
"order": 12,
- "linearnum": 2,
+ "linearnum": 12,
"chapter": 1,
"route": 1,
"episodetype": 1,
@@ -680,7 +680,7 @@
"id": 201,
"previoustage": 112,
"order": 13,
- "linearnum": 3,
+ "linearnum": 1,
"chapter": 2,
"route": 1,
"episodetype": 1,
@@ -738,7 +738,7 @@
"id": 202,
"previoustage": 201,
"order": 14,
- "linearnum": 4,
+ "linearnum": 2,
"chapter": 2,
"route": 1,
"episodetype": 1,
@@ -796,7 +796,7 @@
"id": 203,
"previoustage": 202,
"order": 15,
- "linearnum": 5,
+ "linearnum": 3,
"chapter": 2,
"route": 1,
"episodetype": 1,
@@ -857,7 +857,7 @@
"id": 204,
"previoustage": 203,
"order": 16,
- "linearnum": 6,
+ "linearnum": 4,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -915,7 +915,7 @@
"id": 205,
"previoustage": 204,
"order": 17,
- "linearnum": 7,
+ "linearnum": 5,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -973,7 +973,7 @@
"id": 206,
"previoustage": 205,
"order": 18,
- "linearnum": 8,
+ "linearnum": 6,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -1031,7 +1031,7 @@
"id": 207,
"previoustage": 206,
"order": 19,
- "linearnum": 9,
+ "linearnum": 7,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -1089,7 +1089,7 @@
"id": 208,
"previoustage": 207,
"order": 20,
- "linearnum": 10,
+ "linearnum": 8,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -1150,7 +1150,7 @@
"id": 209,
"previoustage": 208,
"order": 21,
- "linearnum": 11,
+ "linearnum": 9,
"chapter": 2,
"route": 3,
"episodetype": 1,
@@ -1208,7 +1208,7 @@
"id": 210,
"previoustage": 209,
"order": 22,
- "linearnum": 12,
+ "linearnum": 10,
"chapter": 2,
"route": 3,
"episodetype": 1,
@@ -1266,7 +1266,7 @@
"id": 211,
"previoustage": 210,
"order": 23,
- "linearnum": 13,
+ "linearnum": 11,
"chapter": 2,
"route": 3,
"episodetype": 1,
@@ -1324,7 +1324,7 @@
"id": 212,
"previoustage": 211,
"order": 24,
- "linearnum": 14,
+ "linearnum": 12,
"chapter": 2,
"route": 3,
"episodetype": 1,
@@ -1382,7 +1382,7 @@
"id": 301,
"previoustage": 212,
"order": 25,
- "linearnum": 15,
+ "linearnum": 1,
"chapter": 3,
"route": 3,
"episodetype": 1,
@@ -1443,7 +1443,7 @@
"id": 302,
"previoustage": 301,
"order": 26,
- "linearnum": 16,
+ "linearnum": 2,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1501,7 +1501,7 @@
"id": 303,
"previoustage": 302,
"order": 27,
- "linearnum": 17,
+ "linearnum": 3,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1559,7 +1559,7 @@
"id": 304,
"previoustage": 303,
"order": 28,
- "linearnum": 18,
+ "linearnum": 4,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1617,7 +1617,7 @@
"id": 305,
"previoustage": 304,
"order": 29,
- "linearnum": 19,
+ "linearnum": 5,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1675,7 +1675,7 @@
"id": 306,
"previoustage": 305,
"order": 30,
- "linearnum": 20,
+ "linearnum": 6,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1736,7 +1736,7 @@
"id": 307,
"previoustage": 306,
"order": 31,
- "linearnum": 1,
+ "linearnum": 7,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -1797,7 +1797,7 @@
"id": 308,
"previoustage": 307,
"order": 32,
- "linearnum": 2,
+ "linearnum": 8,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -1855,7 +1855,7 @@
"id": 309,
"previoustage": 308,
"order": 33,
- "linearnum": 3,
+ "linearnum": 9,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -1913,7 +1913,7 @@
"id": 310,
"previoustage": 309,
"order": 34,
- "linearnum": 4,
+ "linearnum": 10,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -1971,7 +1971,7 @@
"id": 311,
"previoustage": 310,
"order": 35,
- "linearnum": 5,
+ "linearnum": 11,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -2032,7 +2032,7 @@
"id": 312,
"previoustage": 311,
"order": 36,
- "linearnum": 6,
+ "linearnum": 12,
"chapter": 3,
"route": 2,
"episodetype": 1,
@@ -2090,7 +2090,7 @@
"id": 401,
"previoustage": 312,
"order": 37,
- "linearnum": 7,
+ "linearnum": 1,
"chapter": 4,
"route": 2,
"episodetype": 1,
@@ -2148,7 +2148,7 @@
"id": 402,
"previoustage": 401,
"order": 38,
- "linearnum": 8,
+ "linearnum": 2,
"chapter": 4,
"route": 2,
"episodetype": 1,
@@ -2206,7 +2206,7 @@
"id": 403,
"previoustage": 402,
"order": 39,
- "linearnum": 9,
+ "linearnum": 3,
"chapter": 4,
"route": 2,
"episodetype": 1,
@@ -2264,7 +2264,7 @@
"id": 404,
"previoustage": 403,
"order": 40,
- "linearnum": 10,
+ "linearnum": 4,
"chapter": 4,
"route": 2,
"episodetype": 1,
@@ -2325,7 +2325,7 @@
"id": 405,
"previoustage": 404,
"order": 41,
- "linearnum": 11,
+ "linearnum": 5,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2383,7 +2383,7 @@
"id": 406,
"previoustage": 405,
"order": 42,
- "linearnum": 12,
+ "linearnum": 6,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2441,7 +2441,7 @@
"id": 407,
"previoustage": 406,
"order": 43,
- "linearnum": 13,
+ "linearnum": 7,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2499,7 +2499,7 @@
"id": 408,
"previoustage": 407,
"order": 44,
- "linearnum": 14,
+ "linearnum": 8,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2557,7 +2557,7 @@
"id": 409,
"previoustage": 408,
"order": 45,
- "linearnum": 15,
+ "linearnum": 9,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2618,7 +2618,7 @@
"id": 410,
"previoustage": 409,
"order": 46,
- "linearnum": 16,
+ "linearnum": 10,
"chapter": 4,
"route": 4,
"episodetype": 1,
@@ -2676,7 +2676,7 @@
"id": 411,
"previoustage": 410,
"order": 47,
- "linearnum": 17,
+ "linearnum": 11,
"chapter": 4,
"route": 4,
"episodetype": 1,
@@ -2734,7 +2734,7 @@
"id": 412,
"previoustage": 411,
"order": 48,
- "linearnum": 18,
+ "linearnum": 12,
"chapter": 4,
"route": 4,
"episodetype": 1,
@@ -2792,7 +2792,7 @@
"id": 501,
"previoustage": 412,
"order": 49,
- "linearnum": 19,
+ "linearnum": 1,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -2850,7 +2850,7 @@
"id": 502,
"previoustage": 501,
"order": 50,
- "linearnum": 20,
+ "linearnum": 2,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -2911,7 +2911,7 @@
"id": 503,
"previoustage": 502,
"order": 51,
- "linearnum": 21,
+ "linearnum": 3,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -2969,7 +2969,7 @@
"id": 504,
"previoustage": 503,
"order": 52,
- "linearnum": 22,
+ "linearnum": 4,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -3027,7 +3027,7 @@
"id": 505,
"previoustage": 504,
"order": 53,
- "linearnum": 23,
+ "linearnum": 5,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -3085,7 +3085,7 @@
"id": 506,
"previoustage": 505,
"order": 54,
- "linearnum": 24,
+ "linearnum": 6,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -3143,7 +3143,7 @@
"id": 507,
"previoustage": 506,
"order": 55,
- "linearnum": 25,
+ "linearnum": 7,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -3204,7 +3204,7 @@
"id": 508,
"previoustage": 507,
"order": 56,
- "linearnum": 1,
+ "linearnum": 8,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3265,7 +3265,7 @@
"id": 509,
"previoustage": 508,
"order": 57,
- "linearnum": 2,
+ "linearnum": 9,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3323,7 +3323,7 @@
"id": 510,
"previoustage": 509,
"order": 58,
- "linearnum": 3,
+ "linearnum": 10,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3381,7 +3381,7 @@
"id": 511,
"previoustage": 510,
"order": 59,
- "linearnum": 4,
+ "linearnum": 11,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3439,7 +3439,7 @@
"id": 512,
"previoustage": 511,
"order": 60,
- "linearnum": 5,
+ "linearnum": 12,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3500,7 +3500,7 @@
"id": 601,
"previoustage": 512,
"order": 61,
- "linearnum": 6,
+ "linearnum": 1,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3558,7 +3558,7 @@
"id": 602,
"previoustage": 601,
"order": 62,
- "linearnum": 7,
+ "linearnum": 2,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3616,7 +3616,7 @@
"id": 603,
"previoustage": 602,
"order": 63,
- "linearnum": 8,
+ "linearnum": 3,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3674,7 +3674,7 @@
"id": 604,
"previoustage": 603,
"order": 64,
- "linearnum": 9,
+ "linearnum": 4,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3732,7 +3732,7 @@
"id": 605,
"previoustage": 604,
"order": 65,
- "linearnum": 10,
+ "linearnum": 5,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3793,7 +3793,7 @@
"id": 606,
"previoustage": 605,
"order": 66,
- "linearnum": 11,
+ "linearnum": 6,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -3851,7 +3851,7 @@
"id": 607,
"previoustage": 606,
"order": 67,
- "linearnum": 12,
+ "linearnum": 7,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -3909,7 +3909,7 @@
"id": 608,
"previoustage": 607,
"order": 68,
- "linearnum": 13,
+ "linearnum": 8,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -3967,7 +3967,7 @@
"id": 609,
"previoustage": 608,
"order": 69,
- "linearnum": 14,
+ "linearnum": 9,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -4025,7 +4025,7 @@
"id": 610,
"previoustage": 609,
"order": 70,
- "linearnum": 15,
+ "linearnum": 10,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -4086,7 +4086,7 @@
"id": 611,
"previoustage": 610,
"order": 71,
- "linearnum": 16,
+ "linearnum": 11,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -4144,7 +4144,7 @@
"id": 612,
"previoustage": 611,
"order": 72,
- "linearnum": 17,
+ "linearnum": 12,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -4202,7 +4202,7 @@
"id": 701,
"previoustage": 612,
"order": 73,
- "linearnum": 18,
+ "linearnum": 1,
"chapter": 7,
"route": 3,
"episodetype": 1,
@@ -4260,7 +4260,7 @@
"id": 702,
"previoustage": 701,
"order": 74,
- "linearnum": 19,
+ "linearnum": 2,
"chapter": 7,
"route": 3,
"episodetype": 1,
@@ -4318,7 +4318,7 @@
"id": 703,
"previoustage": 702,
"order": 75,
- "linearnum": 20,
+ "linearnum": 3,
"chapter": 7,
"route": 3,
"episodetype": 1,
@@ -4379,7 +4379,7 @@
"id": 704,
"previoustage": 703,
"order": 76,
- "linearnum": 21,
+ "linearnum": 4,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4437,7 +4437,7 @@
"id": 705,
"previoustage": 704,
"order": 77,
- "linearnum": 22,
+ "linearnum": 5,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4495,7 +4495,7 @@
"id": 706,
"previoustage": 705,
"order": 78,
- "linearnum": 23,
+ "linearnum": 6,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4553,7 +4553,7 @@
"id": 707,
"previoustage": 706,
"order": 79,
- "linearnum": 24,
+ "linearnum": 7,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4611,7 +4611,7 @@
"id": 708,
"previoustage": 707,
"order": 80,
- "linearnum": 25,
+ "linearnum": 8,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4672,7 +4672,7 @@
"id": 709,
"previoustage": 708,
"order": 81,
- "linearnum": 26,
+ "linearnum": 9,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4730,7 +4730,7 @@
"id": 710,
"previoustage": 709,
"order": 82,
- "linearnum": 27,
+ "linearnum": 10,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4788,7 +4788,7 @@
"id": 711,
"previoustage": 710,
"order": 83,
- "linearnum": 28,
+ "linearnum": 11,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4846,7 +4846,7 @@
"id": 712,
"previoustage": 711,
"order": 84,
- "linearnum": 29,
+ "linearnum": 12,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4904,7 +4904,7 @@
"id": 801,
"previoustage": 712,
"order": 85,
- "linearnum": 30,
+ "linearnum": 1,
"chapter": 8,
"route": 4,
"episodetype": 1,
@@ -4965,7 +4965,7 @@
"id": 802,
"previoustage": 801,
"order": 86,
- "linearnum": 1,
+ "linearnum": 2,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5026,7 +5026,7 @@
"id": 803,
"previoustage": 802,
"order": 87,
- "linearnum": 2,
+ "linearnum": 3,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5084,7 +5084,7 @@
"id": 804,
"previoustage": 803,
"order": 88,
- "linearnum": 3,
+ "linearnum": 4,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5142,7 +5142,7 @@
"id": 805,
"previoustage": 804,
"order": 89,
- "linearnum": 4,
+ "linearnum": 5,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5200,7 +5200,7 @@
"id": 806,
"previoustage": 805,
"order": 90,
- "linearnum": 5,
+ "linearnum": 6,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5261,7 +5261,7 @@
"id": 807,
"previoustage": 806,
"order": 91,
- "linearnum": 6,
+ "linearnum": 7,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5319,7 +5319,7 @@
"id": 808,
"previoustage": 807,
"order": 92,
- "linearnum": 7,
+ "linearnum": 8,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5377,7 +5377,7 @@
"id": 809,
"previoustage": 808,
"order": 93,
- "linearnum": 8,
+ "linearnum": 9,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5435,7 +5435,7 @@
"id": 810,
"previoustage": 809,
"order": 94,
- "linearnum": 9,
+ "linearnum": 10,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5493,7 +5493,7 @@
"id": 811,
"previoustage": 810,
"order": 95,
- "linearnum": 10,
+ "linearnum": 11,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5554,7 +5554,7 @@
"id": 812,
"previoustage": 811,
"order": 96,
- "linearnum": 11,
+ "linearnum": 12,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5612,7 +5612,7 @@
"id": 901,
"previoustage": 812,
"order": 97,
- "linearnum": 12,
+ "linearnum": 1,
"chapter": 9,
"route": 2,
"episodetype": 1,
@@ -5670,7 +5670,7 @@
"id": 902,
"previoustage": 901,
"order": 98,
- "linearnum": 13,
+ "linearnum": 2,
"chapter": 9,
"route": 2,
"episodetype": 1,
@@ -5728,7 +5728,7 @@
"id": 903,
"previoustage": 902,
"order": 99,
- "linearnum": 14,
+ "linearnum": 3,
"chapter": 9,
"route": 2,
"episodetype": 1,
@@ -5786,7 +5786,7 @@
"id": 904,
"previoustage": 903,
"order": 100,
- "linearnum": 15,
+ "linearnum": 4,
"chapter": 9,
"route": 2,
"episodetype": 1,
@@ -5847,7 +5847,7 @@
"id": 905,
"previoustage": 904,
"order": 101,
- "linearnum": 16,
+ "linearnum": 5,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -5905,7 +5905,7 @@
"id": 906,
"previoustage": 905,
"order": 102,
- "linearnum": 17,
+ "linearnum": 6,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -5963,7 +5963,7 @@
"id": 907,
"previoustage": 906,
"order": 103,
- "linearnum": 18,
+ "linearnum": 7,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6021,7 +6021,7 @@
"id": 908,
"previoustage": 907,
"order": 104,
- "linearnum": 19,
+ "linearnum": 8,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6079,7 +6079,7 @@
"id": 909,
"previoustage": 908,
"order": 105,
- "linearnum": 20,
+ "linearnum": 9,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6140,7 +6140,7 @@
"id": 910,
"previoustage": 909,
"order": 106,
- "linearnum": 21,
+ "linearnum": 10,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6198,7 +6198,7 @@
"id": 911,
"previoustage": 910,
"order": 107,
- "linearnum": 22,
+ "linearnum": 11,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6256,7 +6256,7 @@
"id": 912,
"previoustage": 911,
"order": 108,
- "linearnum": 23,
+ "linearnum": 12,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6314,7 +6314,7 @@
"id": 1001,
"previoustage": 912,
"order": 109,
- "linearnum": 24,
+ "linearnum": 1,
"chapter": 10,
"route": 3,
"episodetype": 1,
@@ -6372,7 +6372,7 @@
"id": 1002,
"previoustage": 1001,
"order": 110,
- "linearnum": 25,
+ "linearnum": 2,
"chapter": 10,
"route": 3,
"episodetype": 1,
@@ -6433,7 +6433,7 @@
"id": 1003,
"previoustage": 1002,
"order": 111,
- "linearnum": 26,
+ "linearnum": 3,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6491,7 +6491,7 @@
"id": 1004,
"previoustage": 1003,
"order": 112,
- "linearnum": 27,
+ "linearnum": 4,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6549,7 +6549,7 @@
"id": 1005,
"previoustage": 1004,
"order": 113,
- "linearnum": 28,
+ "linearnum": 5,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6607,7 +6607,7 @@
"id": 1006,
"previoustage": 1005,
"order": 114,
- "linearnum": 29,
+ "linearnum": 6,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6665,7 +6665,7 @@
"id": 1007,
"previoustage": 1006,
"order": 115,
- "linearnum": 30,
+ "linearnum": 7,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6726,7 +6726,7 @@
"id": 1008,
"previoustage": 1007,
"order": 116,
- "linearnum": 31,
+ "linearnum": 8,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6784,7 +6784,7 @@
"id": 1009,
"previoustage": 1008,
"order": 117,
- "linearnum": 32,
+ "linearnum": 9,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6842,7 +6842,7 @@
"id": 1010,
"previoustage": 1009,
"order": 118,
- "linearnum": 33,
+ "linearnum": 10,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6900,7 +6900,7 @@
"id": 1011,
"previoustage": 1010,
"order": 119,
- "linearnum": 34,
+ "linearnum": 11,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6958,7 +6958,7 @@
"id": 1012,
"previoustage": 1011,
"order": 120,
- "linearnum": 35,
+ "linearnum": 12,
"chapter": 10,
"route": 4,
"episodetype": 1,
diff --git a/bin/json/game_mainlinepurgatory.json b/bin/json/game_mainlinepurgatory.json
index d998067fc..738dd9400 100644
--- a/bin/json/game_mainlinepurgatory.json
+++ b/bin/json/game_mainlinepurgatory.json
@@ -561,7 +561,7 @@
"id": 111,
"previoustage": 110,
"order": 11,
- "linearnum": 1,
+ "linearnum": 11,
"chapter": 1,
"route": 1,
"episodetype": 1,
@@ -622,7 +622,7 @@
"id": 112,
"previoustage": 111,
"order": 12,
- "linearnum": 2,
+ "linearnum": 12,
"chapter": 1,
"route": 1,
"episodetype": 1,
@@ -680,7 +680,7 @@
"id": 201,
"previoustage": 112,
"order": 13,
- "linearnum": 3,
+ "linearnum": 1,
"chapter": 2,
"route": 1,
"episodetype": 1,
@@ -738,7 +738,7 @@
"id": 202,
"previoustage": 201,
"order": 14,
- "linearnum": 4,
+ "linearnum": 2,
"chapter": 2,
"route": 1,
"episodetype": 1,
@@ -796,7 +796,7 @@
"id": 203,
"previoustage": 202,
"order": 15,
- "linearnum": 5,
+ "linearnum": 3,
"chapter": 2,
"route": 1,
"episodetype": 1,
@@ -857,7 +857,7 @@
"id": 204,
"previoustage": 203,
"order": 16,
- "linearnum": 6,
+ "linearnum": 4,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -915,7 +915,7 @@
"id": 205,
"previoustage": 204,
"order": 17,
- "linearnum": 7,
+ "linearnum": 5,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -973,7 +973,7 @@
"id": 206,
"previoustage": 205,
"order": 18,
- "linearnum": 8,
+ "linearnum": 6,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -1031,7 +1031,7 @@
"id": 207,
"previoustage": 206,
"order": 19,
- "linearnum": 9,
+ "linearnum": 7,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -1089,7 +1089,7 @@
"id": 208,
"previoustage": 207,
"order": 20,
- "linearnum": 10,
+ "linearnum": 8,
"chapter": 2,
"route": 2,
"episodetype": 1,
@@ -1150,7 +1150,7 @@
"id": 209,
"previoustage": 208,
"order": 21,
- "linearnum": 11,
+ "linearnum": 9,
"chapter": 2,
"route": 3,
"episodetype": 1,
@@ -1208,7 +1208,7 @@
"id": 210,
"previoustage": 209,
"order": 22,
- "linearnum": 12,
+ "linearnum": 10,
"chapter": 2,
"route": 3,
"episodetype": 1,
@@ -1266,7 +1266,7 @@
"id": 211,
"previoustage": 210,
"order": 23,
- "linearnum": 13,
+ "linearnum": 11,
"chapter": 2,
"route": 3,
"episodetype": 1,
@@ -1324,7 +1324,7 @@
"id": 212,
"previoustage": 211,
"order": 24,
- "linearnum": 14,
+ "linearnum": 12,
"chapter": 2,
"route": 3,
"episodetype": 1,
@@ -1382,7 +1382,7 @@
"id": 301,
"previoustage": 212,
"order": 25,
- "linearnum": 15,
+ "linearnum": 1,
"chapter": 3,
"route": 3,
"episodetype": 1,
@@ -1443,7 +1443,7 @@
"id": 302,
"previoustage": 301,
"order": 26,
- "linearnum": 16,
+ "linearnum": 2,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1501,7 +1501,7 @@
"id": 303,
"previoustage": 302,
"order": 27,
- "linearnum": 17,
+ "linearnum": 3,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1559,7 +1559,7 @@
"id": 304,
"previoustage": 303,
"order": 28,
- "linearnum": 18,
+ "linearnum": 4,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1617,7 +1617,7 @@
"id": 305,
"previoustage": 304,
"order": 29,
- "linearnum": 19,
+ "linearnum": 5,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1675,7 +1675,7 @@
"id": 306,
"previoustage": 305,
"order": 30,
- "linearnum": 20,
+ "linearnum": 6,
"chapter": 3,
"route": 4,
"episodetype": 1,
@@ -1736,7 +1736,7 @@
"id": 307,
"previoustage": 306,
"order": 31,
- "linearnum": 1,
+ "linearnum": 7,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -1797,7 +1797,7 @@
"id": 308,
"previoustage": 307,
"order": 32,
- "linearnum": 2,
+ "linearnum": 8,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -1855,7 +1855,7 @@
"id": 309,
"previoustage": 308,
"order": 33,
- "linearnum": 3,
+ "linearnum": 9,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -1913,7 +1913,7 @@
"id": 310,
"previoustage": 309,
"order": 34,
- "linearnum": 4,
+ "linearnum": 10,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -1971,7 +1971,7 @@
"id": 311,
"previoustage": 310,
"order": 35,
- "linearnum": 5,
+ "linearnum": 11,
"chapter": 3,
"route": 1,
"episodetype": 1,
@@ -2032,7 +2032,7 @@
"id": 312,
"previoustage": 311,
"order": 36,
- "linearnum": 6,
+ "linearnum": 12,
"chapter": 3,
"route": 2,
"episodetype": 1,
@@ -2090,7 +2090,7 @@
"id": 401,
"previoustage": 312,
"order": 37,
- "linearnum": 7,
+ "linearnum": 1,
"chapter": 4,
"route": 2,
"episodetype": 1,
@@ -2148,7 +2148,7 @@
"id": 402,
"previoustage": 401,
"order": 38,
- "linearnum": 8,
+ "linearnum": 2,
"chapter": 4,
"route": 2,
"episodetype": 1,
@@ -2206,7 +2206,7 @@
"id": 403,
"previoustage": 402,
"order": 39,
- "linearnum": 9,
+ "linearnum": 3,
"chapter": 4,
"route": 2,
"episodetype": 1,
@@ -2264,7 +2264,7 @@
"id": 404,
"previoustage": 403,
"order": 40,
- "linearnum": 10,
+ "linearnum": 4,
"chapter": 4,
"route": 2,
"episodetype": 1,
@@ -2325,7 +2325,7 @@
"id": 405,
"previoustage": 404,
"order": 41,
- "linearnum": 11,
+ "linearnum": 5,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2383,7 +2383,7 @@
"id": 406,
"previoustage": 405,
"order": 42,
- "linearnum": 12,
+ "linearnum": 6,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2441,7 +2441,7 @@
"id": 407,
"previoustage": 406,
"order": 43,
- "linearnum": 13,
+ "linearnum": 7,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2499,7 +2499,7 @@
"id": 408,
"previoustage": 407,
"order": 44,
- "linearnum": 14,
+ "linearnum": 8,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2557,7 +2557,7 @@
"id": 409,
"previoustage": 408,
"order": 45,
- "linearnum": 15,
+ "linearnum": 9,
"chapter": 4,
"route": 3,
"episodetype": 1,
@@ -2618,7 +2618,7 @@
"id": 410,
"previoustage": 409,
"order": 46,
- "linearnum": 16,
+ "linearnum": 10,
"chapter": 4,
"route": 4,
"episodetype": 1,
@@ -2676,7 +2676,7 @@
"id": 411,
"previoustage": 410,
"order": 47,
- "linearnum": 17,
+ "linearnum": 11,
"chapter": 4,
"route": 4,
"episodetype": 1,
@@ -2734,7 +2734,7 @@
"id": 412,
"previoustage": 411,
"order": 48,
- "linearnum": 18,
+ "linearnum": 12,
"chapter": 4,
"route": 4,
"episodetype": 1,
@@ -2792,7 +2792,7 @@
"id": 501,
"previoustage": 412,
"order": 49,
- "linearnum": 19,
+ "linearnum": 1,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -2850,7 +2850,7 @@
"id": 502,
"previoustage": 501,
"order": 50,
- "linearnum": 20,
+ "linearnum": 2,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -2911,7 +2911,7 @@
"id": 503,
"previoustage": 502,
"order": 51,
- "linearnum": 21,
+ "linearnum": 3,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -2969,7 +2969,7 @@
"id": 504,
"previoustage": 503,
"order": 52,
- "linearnum": 22,
+ "linearnum": 4,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -3027,7 +3027,7 @@
"id": 505,
"previoustage": 504,
"order": 53,
- "linearnum": 23,
+ "linearnum": 5,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -3085,7 +3085,7 @@
"id": 506,
"previoustage": 505,
"order": 54,
- "linearnum": 24,
+ "linearnum": 6,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -3143,7 +3143,7 @@
"id": 507,
"previoustage": 506,
"order": 55,
- "linearnum": 25,
+ "linearnum": 7,
"chapter": 5,
"route": 4,
"episodetype": 1,
@@ -3204,7 +3204,7 @@
"id": 508,
"previoustage": 507,
"order": 56,
- "linearnum": 1,
+ "linearnum": 8,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3265,7 +3265,7 @@
"id": 509,
"previoustage": 508,
"order": 57,
- "linearnum": 2,
+ "linearnum": 9,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3323,7 +3323,7 @@
"id": 510,
"previoustage": 509,
"order": 58,
- "linearnum": 3,
+ "linearnum": 10,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3381,7 +3381,7 @@
"id": 511,
"previoustage": 510,
"order": 59,
- "linearnum": 4,
+ "linearnum": 11,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3439,7 +3439,7 @@
"id": 512,
"previoustage": 511,
"order": 60,
- "linearnum": 5,
+ "linearnum": 12,
"chapter": 5,
"route": 1,
"episodetype": 1,
@@ -3500,7 +3500,7 @@
"id": 601,
"previoustage": 512,
"order": 61,
- "linearnum": 6,
+ "linearnum": 1,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3558,7 +3558,7 @@
"id": 602,
"previoustage": 601,
"order": 62,
- "linearnum": 7,
+ "linearnum": 2,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3616,7 +3616,7 @@
"id": 603,
"previoustage": 602,
"order": 63,
- "linearnum": 8,
+ "linearnum": 3,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3674,7 +3674,7 @@
"id": 604,
"previoustage": 603,
"order": 64,
- "linearnum": 9,
+ "linearnum": 4,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3732,7 +3732,7 @@
"id": 605,
"previoustage": 604,
"order": 65,
- "linearnum": 10,
+ "linearnum": 5,
"chapter": 6,
"route": 2,
"episodetype": 1,
@@ -3793,7 +3793,7 @@
"id": 606,
"previoustage": 605,
"order": 66,
- "linearnum": 11,
+ "linearnum": 6,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -3851,7 +3851,7 @@
"id": 607,
"previoustage": 606,
"order": 67,
- "linearnum": 12,
+ "linearnum": 7,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -3909,7 +3909,7 @@
"id": 608,
"previoustage": 607,
"order": 68,
- "linearnum": 13,
+ "linearnum": 8,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -3967,7 +3967,7 @@
"id": 609,
"previoustage": 608,
"order": 69,
- "linearnum": 14,
+ "linearnum": 9,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -4025,7 +4025,7 @@
"id": 610,
"previoustage": 609,
"order": 70,
- "linearnum": 15,
+ "linearnum": 10,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -4086,7 +4086,7 @@
"id": 611,
"previoustage": 610,
"order": 71,
- "linearnum": 16,
+ "linearnum": 11,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -4144,7 +4144,7 @@
"id": 612,
"previoustage": 611,
"order": 72,
- "linearnum": 17,
+ "linearnum": 12,
"chapter": 6,
"route": 3,
"episodetype": 1,
@@ -4202,7 +4202,7 @@
"id": 701,
"previoustage": 612,
"order": 73,
- "linearnum": 18,
+ "linearnum": 1,
"chapter": 7,
"route": 3,
"episodetype": 1,
@@ -4260,7 +4260,7 @@
"id": 702,
"previoustage": 701,
"order": 74,
- "linearnum": 19,
+ "linearnum": 2,
"chapter": 7,
"route": 3,
"episodetype": 1,
@@ -4318,7 +4318,7 @@
"id": 703,
"previoustage": 702,
"order": 75,
- "linearnum": 20,
+ "linearnum": 3,
"chapter": 7,
"route": 3,
"episodetype": 1,
@@ -4379,7 +4379,7 @@
"id": 704,
"previoustage": 703,
"order": 76,
- "linearnum": 21,
+ "linearnum": 4,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4437,7 +4437,7 @@
"id": 705,
"previoustage": 704,
"order": 77,
- "linearnum": 22,
+ "linearnum": 5,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4495,7 +4495,7 @@
"id": 706,
"previoustage": 705,
"order": 78,
- "linearnum": 23,
+ "linearnum": 6,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4553,7 +4553,7 @@
"id": 707,
"previoustage": 706,
"order": 79,
- "linearnum": 24,
+ "linearnum": 7,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4611,7 +4611,7 @@
"id": 708,
"previoustage": 707,
"order": 80,
- "linearnum": 25,
+ "linearnum": 8,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4672,7 +4672,7 @@
"id": 709,
"previoustage": 708,
"order": 81,
- "linearnum": 26,
+ "linearnum": 9,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4730,7 +4730,7 @@
"id": 710,
"previoustage": 709,
"order": 82,
- "linearnum": 27,
+ "linearnum": 10,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4788,7 +4788,7 @@
"id": 711,
"previoustage": 710,
"order": 83,
- "linearnum": 28,
+ "linearnum": 11,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4846,7 +4846,7 @@
"id": 712,
"previoustage": 711,
"order": 84,
- "linearnum": 29,
+ "linearnum": 12,
"chapter": 7,
"route": 4,
"episodetype": 1,
@@ -4904,7 +4904,7 @@
"id": 801,
"previoustage": 712,
"order": 85,
- "linearnum": 30,
+ "linearnum": 1,
"chapter": 8,
"route": 4,
"episodetype": 1,
@@ -4965,7 +4965,7 @@
"id": 802,
"previoustage": 801,
"order": 86,
- "linearnum": 1,
+ "linearnum": 2,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5026,7 +5026,7 @@
"id": 803,
"previoustage": 802,
"order": 87,
- "linearnum": 2,
+ "linearnum": 3,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5084,7 +5084,7 @@
"id": 804,
"previoustage": 803,
"order": 88,
- "linearnum": 3,
+ "linearnum": 4,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5142,7 +5142,7 @@
"id": 805,
"previoustage": 804,
"order": 89,
- "linearnum": 4,
+ "linearnum": 5,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5200,7 +5200,7 @@
"id": 806,
"previoustage": 805,
"order": 90,
- "linearnum": 5,
+ "linearnum": 6,
"chapter": 8,
"route": 1,
"episodetype": 1,
@@ -5261,7 +5261,7 @@
"id": 807,
"previoustage": 806,
"order": 91,
- "linearnum": 6,
+ "linearnum": 7,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5319,7 +5319,7 @@
"id": 808,
"previoustage": 807,
"order": 92,
- "linearnum": 7,
+ "linearnum": 8,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5377,7 +5377,7 @@
"id": 809,
"previoustage": 808,
"order": 93,
- "linearnum": 8,
+ "linearnum": 9,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5435,7 +5435,7 @@
"id": 810,
"previoustage": 809,
"order": 94,
- "linearnum": 9,
+ "linearnum": 10,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5493,7 +5493,7 @@
"id": 811,
"previoustage": 810,
"order": 95,
- "linearnum": 10,
+ "linearnum": 11,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5554,7 +5554,7 @@
"id": 812,
"previoustage": 811,
"order": 96,
- "linearnum": 11,
+ "linearnum": 12,
"chapter": 8,
"route": 2,
"episodetype": 1,
@@ -5612,7 +5612,7 @@
"id": 901,
"previoustage": 812,
"order": 97,
- "linearnum": 12,
+ "linearnum": 1,
"chapter": 9,
"route": 2,
"episodetype": 1,
@@ -5670,7 +5670,7 @@
"id": 902,
"previoustage": 901,
"order": 98,
- "linearnum": 13,
+ "linearnum": 2,
"chapter": 9,
"route": 2,
"episodetype": 1,
@@ -5728,7 +5728,7 @@
"id": 903,
"previoustage": 902,
"order": 99,
- "linearnum": 14,
+ "linearnum": 3,
"chapter": 9,
"route": 2,
"episodetype": 1,
@@ -5786,7 +5786,7 @@
"id": 904,
"previoustage": 903,
"order": 100,
- "linearnum": 15,
+ "linearnum": 4,
"chapter": 9,
"route": 2,
"episodetype": 1,
@@ -5847,7 +5847,7 @@
"id": 905,
"previoustage": 904,
"order": 101,
- "linearnum": 16,
+ "linearnum": 5,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -5905,7 +5905,7 @@
"id": 906,
"previoustage": 905,
"order": 102,
- "linearnum": 17,
+ "linearnum": 6,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -5963,7 +5963,7 @@
"id": 907,
"previoustage": 906,
"order": 103,
- "linearnum": 18,
+ "linearnum": 7,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6021,7 +6021,7 @@
"id": 908,
"previoustage": 907,
"order": 104,
- "linearnum": 19,
+ "linearnum": 8,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6079,7 +6079,7 @@
"id": 909,
"previoustage": 908,
"order": 105,
- "linearnum": 20,
+ "linearnum": 9,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6140,7 +6140,7 @@
"id": 910,
"previoustage": 909,
"order": 106,
- "linearnum": 21,
+ "linearnum": 10,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6198,7 +6198,7 @@
"id": 911,
"previoustage": 910,
"order": 107,
- "linearnum": 22,
+ "linearnum": 11,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6256,7 +6256,7 @@
"id": 912,
"previoustage": 911,
"order": 108,
- "linearnum": 23,
+ "linearnum": 12,
"chapter": 9,
"route": 3,
"episodetype": 1,
@@ -6314,7 +6314,7 @@
"id": 1001,
"previoustage": 912,
"order": 109,
- "linearnum": 24,
+ "linearnum": 1,
"chapter": 10,
"route": 3,
"episodetype": 1,
@@ -6372,7 +6372,7 @@
"id": 1002,
"previoustage": 1001,
"order": 110,
- "linearnum": 25,
+ "linearnum": 2,
"chapter": 10,
"route": 3,
"episodetype": 1,
@@ -6433,7 +6433,7 @@
"id": 1003,
"previoustage": 1002,
"order": 111,
- "linearnum": 26,
+ "linearnum": 3,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6491,7 +6491,7 @@
"id": 1004,
"previoustage": 1003,
"order": 112,
- "linearnum": 27,
+ "linearnum": 4,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6549,7 +6549,7 @@
"id": 1005,
"previoustage": 1004,
"order": 113,
- "linearnum": 28,
+ "linearnum": 5,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6607,7 +6607,7 @@
"id": 1006,
"previoustage": 1005,
"order": 114,
- "linearnum": 29,
+ "linearnum": 6,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6665,7 +6665,7 @@
"id": 1007,
"previoustage": 1006,
"order": 115,
- "linearnum": 30,
+ "linearnum": 7,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6726,7 +6726,7 @@
"id": 1008,
"previoustage": 1007,
"order": 116,
- "linearnum": 31,
+ "linearnum": 8,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6784,7 +6784,7 @@
"id": 1009,
"previoustage": 1008,
"order": 117,
- "linearnum": 32,
+ "linearnum": 9,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6842,7 +6842,7 @@
"id": 1010,
"previoustage": 1009,
"order": 118,
- "linearnum": 33,
+ "linearnum": 10,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6900,7 +6900,7 @@
"id": 1011,
"previoustage": 1010,
"order": 119,
- "linearnum": 34,
+ "linearnum": 11,
"chapter": 10,
"route": 4,
"episodetype": 1,
@@ -6958,7 +6958,7 @@
"id": 1012,
"previoustage": 1011,
"order": 120,
- "linearnum": 35,
+ "linearnum": 12,
"chapter": 10,
"route": 4,
"episodetype": 1,
diff --git a/bin/json/game_model.json b/bin/json/game_model.json
index f1ee04781..0f680139e 100644
--- a/bin/json/game_model.json
+++ b/bin/json/game_model.json
@@ -241,7 +241,7 @@
},
{
"id": 25001,
- "preson": "25001",
+ "preson": "90002",
"ico": "tx_js_25001",
"img": "sbkp_js_25001",
"heroimg": "hbkp_js_25001",
@@ -265,7 +265,7 @@
},
{
"id": 25004,
- "preson": "25004",
+ "preson": "90003",
"ico": "tx_js_25004",
"img": "sbkp_js_25004",
"heroimg": "hbkp_js_25004",
@@ -386,9 +386,9 @@
{
"id": 35001,
"preson": "35001",
- "ico": "tx_hhjs_35002",
- "img": "sbkp_js_35002",
- "heroimg": "hbkp_js_35002",
+ "ico": "tx_hhjs_35001",
+ "img": "sbkp_js_35001",
+ "heroimg": "hbkp_js_35001",
"portrait": "portrait_35001"
},
{
@@ -522,9 +522,9 @@
{
"id": 44005,
"preson": "44005",
- "ico": "tx_hhjs_35002",
- "img": "sbkp_js_35002",
- "heroimg": "hbkp_js_35002",
+ "ico": "tx_hhjs_44005",
+ "img": "sbkp_js_44005",
+ "heroimg": "hbkp_js_44005",
"portrait": "portrait_44005"
},
{
@@ -554,9 +554,9 @@
{
"id": 45003,
"preson": "45003",
- "ico": "tx_hhjs_35002",
- "img": "sbkp_js_35002",
- "heroimg": "hbkp_js_35002",
+ "ico": "tx_hhjs_45003",
+ "img": "sbkp_js_45003",
+ "heroimg": "hbkp_js_45003",
"portrait": "portrait_45003"
},
{
diff --git a/bin/json/game_newhero.json b/bin/json/game_newhero.json
index d7162b311..a41930aad 100644
--- a/bin/json/game_newhero.json
+++ b/bin/json/game_newhero.json
@@ -10,6 +10,7 @@
"race": 1,
"job": 2,
"type": 1,
+ "handbook": -1,
"prefab": 13001,
"icon": 13001,
"sound": {
@@ -38,7 +39,9 @@
"txt": {
"key": "hero_55009",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "13002",
@@ -51,6 +54,7 @@
"race": 1,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 13002,
"icon": 13002,
"sound": {
@@ -79,7 +83,9 @@
"txt": {
"key": "hero_55010",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "13003",
@@ -92,6 +98,7 @@
"race": 1,
"job": 2,
"type": 1,
+ "handbook": -1,
"prefab": 13003,
"icon": 13003,
"sound": {
@@ -120,7 +127,9 @@
"txt": {
"key": "hero_55011",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "13004",
@@ -133,6 +142,7 @@
"race": 1,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 13004,
"icon": 13004,
"sound": {
@@ -161,7 +171,9 @@
"txt": {
"key": "hero_55012",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "13005",
@@ -174,6 +186,7 @@
"race": 1,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 13005,
"icon": 13005,
"sound": {
@@ -202,7 +215,9 @@
"txt": {
"key": "hero_55013",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "14001",
@@ -215,6 +230,7 @@
"race": 1,
"job": 2,
"type": 1,
+ "handbook": -1,
"prefab": 14001,
"icon": 14001,
"sound": {
@@ -243,7 +259,9 @@
"txt": {
"key": "hero_55014",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "14002",
@@ -256,6 +274,7 @@
"race": 1,
"job": 2,
"type": 1,
+ "handbook": -1,
"prefab": 14002,
"icon": 14002,
"sound": {
@@ -284,7 +303,9 @@
"txt": {
"key": "hero_55015",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "14003",
@@ -297,6 +318,7 @@
"race": 1,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 14003,
"icon": 14003,
"sound": {
@@ -325,7 +347,9 @@
"txt": {
"key": "hero_55016",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "14004",
@@ -338,6 +362,7 @@
"race": 1,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 14004,
"icon": 14004,
"sound": {
@@ -366,7 +391,9 @@
"txt": {
"key": "hero_55017",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "14005",
@@ -379,6 +406,7 @@
"race": 1,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 14005,
"icon": 14005,
"sound": {
@@ -407,7 +435,9 @@
"txt": {
"key": "hero_55018",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "14006",
@@ -420,6 +450,7 @@
"race": 1,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 14006,
"icon": 14006,
"sound": {
@@ -448,7 +479,9 @@
"txt": {
"key": "hero_55019",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "14007",
@@ -461,6 +494,7 @@
"race": 1,
"job": 2,
"type": 1,
+ "handbook": -1,
"prefab": 14007,
"icon": 14007,
"sound": {
@@ -489,7 +523,9 @@
"txt": {
"key": "hero_55020",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "15001",
@@ -502,6 +538,7 @@
"race": 1,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 15001,
"icon": 15001,
"sound": {
@@ -530,7 +567,9 @@
"txt": {
"key": "hero_55021",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "15002",
@@ -543,6 +582,7 @@
"race": 1,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 15002,
"icon": 15002,
"sound": {
@@ -571,7 +611,9 @@
"txt": {
"key": "hero_55022",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "15003",
@@ -584,6 +626,7 @@
"race": 1,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 15003,
"icon": 15003,
"sound": {
@@ -612,7 +655,9 @@
"txt": {
"key": "hero_55023",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "15004",
@@ -625,6 +670,7 @@
"race": 1,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 15004,
"icon": 15004,
"sound": {
@@ -653,48 +699,9 @@
"txt": {
"key": "hero_55024",
"text": ""
- }
- },
- {
- "hid": "15005",
- "name": {
- "key": "hero_15005",
- "text": "亚力克斯"
},
- "star": 5,
- "color": 4,
- "race": 1,
- "job": 3,
- "type": 1,
- "prefab": 15005,
- "icon": 15005,
- "sound": {
- "key": "15005",
- "text": ""
- },
- "tujing": [
- 1
- ],
- "intr": {
- "key": "",
- "text": ""
- },
- "events": "hero_15005",
- "cite": "",
- "effectstay": [],
- "hpspace": {
- "x": 0,
- "y": 0,
- "z": 0
- },
- "skill": 190011000,
- "skill1": 190012000,
- "skill2": 190013000,
- "skill3": 190014000,
- "txt": {
- "key": "hero_55025",
- "text": ""
- }
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "23001",
@@ -707,6 +714,7 @@
"race": 2,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 23001,
"icon": 23001,
"sound": {
@@ -735,7 +743,9 @@
"txt": {
"key": "hero_55026",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "23002",
@@ -748,6 +758,7 @@
"race": 2,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 23002,
"icon": 23002,
"sound": {
@@ -776,7 +787,9 @@
"txt": {
"key": "hero_55027",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "23003",
@@ -789,6 +802,7 @@
"race": 2,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 23003,
"icon": 23003,
"sound": {
@@ -817,7 +831,9 @@
"txt": {
"key": "hero_55028",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "23004",
@@ -830,6 +846,7 @@
"race": 2,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 23004,
"icon": 23004,
"sound": {
@@ -858,7 +875,9 @@
"txt": {
"key": "hero_55029",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24001",
@@ -871,6 +890,7 @@
"race": 2,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 24001,
"icon": 24001,
"sound": {
@@ -899,7 +919,9 @@
"txt": {
"key": "hero_55030",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24002",
@@ -912,6 +934,7 @@
"race": 2,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 24002,
"icon": 24002,
"sound": {
@@ -940,7 +963,9 @@
"txt": {
"key": "hero_55031",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24003",
@@ -953,6 +978,7 @@
"race": 2,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 24003,
"icon": 24003,
"sound": {
@@ -981,7 +1007,9 @@
"txt": {
"key": "hero_55032",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24004",
@@ -994,6 +1022,7 @@
"race": 2,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 24004,
"icon": 24004,
"sound": {
@@ -1022,7 +1051,9 @@
"txt": {
"key": "hero_55033",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24005",
@@ -1035,6 +1066,7 @@
"race": 2,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 24005,
"icon": 24005,
"sound": {
@@ -1063,7 +1095,9 @@
"txt": {
"key": "hero_55034",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24006",
@@ -1076,6 +1110,7 @@
"race": 2,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 24006,
"icon": 24006,
"sound": {
@@ -1104,7 +1139,9 @@
"txt": {
"key": "hero_55035",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24007",
@@ -1117,6 +1154,7 @@
"race": 2,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 24007,
"icon": 24007,
"sound": {
@@ -1145,7 +1183,9 @@
"txt": {
"key": "hero_55036",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24008",
@@ -1158,6 +1198,7 @@
"race": 2,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 24008,
"icon": 24008,
"sound": {
@@ -1186,7 +1227,9 @@
"txt": {
"key": "hero_55037",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "24009",
@@ -1199,6 +1242,7 @@
"race": 2,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 24009,
"icon": 24009,
"sound": {
@@ -1227,7 +1271,9 @@
"txt": {
"key": "hero_55038",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "25001",
@@ -1240,7 +1286,8 @@
"race": 2,
"job": 2,
"type": 1,
- "prefab": 25001,
+ "handbook": 1,
+ "prefab": 90002,
"icon": 25001,
"sound": {
"key": "25001",
@@ -1268,7 +1315,9 @@
"txt": {
"key": "hero_55039",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "25002",
@@ -1281,6 +1330,7 @@
"race": 2,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 25002,
"icon": 25002,
"sound": {
@@ -1309,7 +1359,9 @@
"txt": {
"key": "hero_55040",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "25003",
@@ -1322,6 +1374,7 @@
"race": 2,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 25003,
"icon": 25003,
"sound": {
@@ -1350,7 +1403,9 @@
"txt": {
"key": "hero_55041",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "25004",
@@ -1363,7 +1418,8 @@
"race": 2,
"job": 3,
"type": 1,
- "prefab": 25004,
+ "handbook": 1,
+ "prefab": 90003,
"icon": 25004,
"sound": {
"key": "25004",
@@ -1391,7 +1447,9 @@
"txt": {
"key": "hero_55042",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "33001",
@@ -1404,6 +1462,7 @@
"race": 3,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 33001,
"icon": 33001,
"sound": {
@@ -1432,7 +1491,9 @@
"txt": {
"key": "hero_55043",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "33002",
@@ -1445,6 +1506,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 33002,
"icon": 33002,
"sound": {
@@ -1473,7 +1535,9 @@
"txt": {
"key": "hero_55044",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "33003",
@@ -1486,6 +1550,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 33003,
"icon": 33003,
"sound": {
@@ -1514,7 +1579,9 @@
"txt": {
"key": "hero_55045",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "33004",
@@ -1527,6 +1594,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 33004,
"icon": 33004,
"sound": {
@@ -1555,7 +1623,9 @@
"txt": {
"key": "hero_55046",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "33005",
@@ -1568,6 +1638,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 33005,
"icon": 33005,
"sound": {
@@ -1596,7 +1667,9 @@
"txt": {
"key": "hero_55047",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "33006",
@@ -1609,6 +1682,7 @@
"race": 3,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 33006,
"icon": 33006,
"sound": {
@@ -1637,7 +1711,9 @@
"txt": {
"key": "hero_55048",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "34001",
@@ -1650,6 +1726,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 34001,
"icon": 34001,
"sound": {
@@ -1678,7 +1755,9 @@
"txt": {
"key": "hero_55049",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "34002",
@@ -1691,6 +1770,7 @@
"race": 3,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 34002,
"icon": 34002,
"sound": {
@@ -1719,7 +1799,9 @@
"txt": {
"key": "hero_55050",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "34003",
@@ -1732,6 +1814,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 34003,
"icon": 34003,
"sound": {
@@ -1760,7 +1843,9 @@
"txt": {
"key": "hero_55051",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "34004",
@@ -1773,6 +1858,7 @@
"race": 3,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 34004,
"icon": 34004,
"sound": {
@@ -1801,7 +1887,9 @@
"txt": {
"key": "hero_55052",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "34005",
@@ -1814,6 +1902,7 @@
"race": 3,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 34005,
"icon": 34005,
"sound": {
@@ -1842,7 +1931,9 @@
"txt": {
"key": "hero_55053",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "34006",
@@ -1855,6 +1946,7 @@
"race": 3,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 34006,
"icon": 34006,
"sound": {
@@ -1883,7 +1975,9 @@
"txt": {
"key": "hero_55054",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "34007",
@@ -1896,6 +1990,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 34007,
"icon": 34007,
"sound": {
@@ -1924,7 +2019,9 @@
"txt": {
"key": "hero_55055",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "34008",
@@ -1937,6 +2034,7 @@
"race": 3,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 34008,
"icon": 34008,
"sound": {
@@ -1965,48 +2063,9 @@
"txt": {
"key": "hero_55056",
"text": ""
- }
- },
- {
- "hid": "35001",
- "name": {
- "key": "hero_35001",
- "text": "师父"
},
- "star": 5,
- "color": 4,
- "race": 3,
- "job": 1,
- "type": 1,
- "prefab": 35001,
- "icon": 35001,
- "sound": {
- "key": "35001",
- "text": ""
- },
- "tujing": [
- 1
- ],
- "intr": {
- "key": "",
- "text": ""
- },
- "events": "hero_35001",
- "cite": "",
- "effectstay": [],
- "hpspace": {
- "x": 0,
- "y": 0,
- "z": 0
- },
- "skill": 190011000,
- "skill1": 190012000,
- "skill2": 190013000,
- "skill3": 190014000,
- "txt": {
- "key": "hero_55057",
- "text": ""
- }
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "35002",
@@ -2019,6 +2078,7 @@
"race": 3,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 35002,
"icon": 35002,
"sound": {
@@ -2047,7 +2107,9 @@
"txt": {
"key": "hero_55058",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "35003",
@@ -2060,6 +2122,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 35003,
"icon": 35003,
"sound": {
@@ -2088,7 +2151,9 @@
"txt": {
"key": "hero_55059",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "35004",
@@ -2101,6 +2166,7 @@
"race": 3,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 35004,
"icon": 35004,
"sound": {
@@ -2129,7 +2195,9 @@
"txt": {
"key": "hero_55060",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "35005",
@@ -2142,6 +2210,7 @@
"race": 3,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 35005,
"icon": 35005,
"sound": {
@@ -2170,7 +2239,9 @@
"txt": {
"key": "hero_55061",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "35006",
@@ -2183,6 +2254,7 @@
"race": 3,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 35006,
"icon": 35006,
"sound": {
@@ -2211,7 +2283,9 @@
"txt": {
"key": "hero_55062",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43001",
@@ -2224,6 +2298,7 @@
"race": 4,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 43001,
"icon": 43001,
"sound": {
@@ -2252,7 +2327,9 @@
"txt": {
"key": "hero_55063",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43002",
@@ -2265,6 +2342,7 @@
"race": 4,
"job": 4,
"type": 1,
+ "handbook": -1,
"prefab": 43002,
"icon": 43002,
"sound": {
@@ -2293,7 +2371,9 @@
"txt": {
"key": "hero_55064",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43003",
@@ -2306,6 +2386,7 @@
"race": 4,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 43003,
"icon": 43003,
"sound": {
@@ -2334,7 +2415,9 @@
"txt": {
"key": "hero_55065",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43004",
@@ -2347,6 +2430,7 @@
"race": 4,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 43004,
"icon": 43004,
"sound": {
@@ -2375,7 +2459,9 @@
"txt": {
"key": "hero_55066",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43005",
@@ -2388,6 +2474,7 @@
"race": 4,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 43005,
"icon": 43005,
"sound": {
@@ -2416,7 +2503,9 @@
"txt": {
"key": "hero_55067",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43006",
@@ -2429,6 +2518,7 @@
"race": 4,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 43006,
"icon": 43006,
"sound": {
@@ -2457,7 +2547,9 @@
"txt": {
"key": "hero_55068",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43007",
@@ -2470,6 +2562,7 @@
"race": 4,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 43007,
"icon": 43007,
"sound": {
@@ -2498,7 +2591,9 @@
"txt": {
"key": "hero_55069",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "44001",
@@ -2511,6 +2606,7 @@
"race": 4,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 44001,
"icon": 44001,
"sound": {
@@ -2539,7 +2635,9 @@
"txt": {
"key": "hero_55070",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "44002",
@@ -2552,6 +2650,7 @@
"race": 4,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 44002,
"icon": 44002,
"sound": {
@@ -2580,7 +2679,9 @@
"txt": {
"key": "hero_55071",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "44003",
@@ -2593,6 +2694,7 @@
"race": 4,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 44003,
"icon": 44003,
"sound": {
@@ -2621,7 +2723,9 @@
"txt": {
"key": "hero_55072",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "44004",
@@ -2634,6 +2738,7 @@
"race": 4,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 44004,
"icon": 44004,
"sound": {
@@ -2662,48 +2767,9 @@
"txt": {
"key": "hero_55073",
"text": ""
- }
- },
- {
- "hid": "44005",
- "name": {
- "key": "hero_44005",
- "text": "小伊"
},
- "star": 4,
- "color": 3,
- "race": 4,
- "job": 3,
- "type": 1,
- "prefab": 44005,
- "icon": 44005,
- "sound": {
- "key": "44005",
- "text": ""
- },
- "tujing": [
- 1
- ],
- "intr": {
- "key": "",
- "text": ""
- },
- "events": "hero_44005",
- "cite": "",
- "effectstay": [],
- "hpspace": {
- "x": 0,
- "y": 0,
- "z": 0
- },
- "skill": 190011000,
- "skill1": 190012000,
- "skill2": 190013000,
- "skill3": 190014000,
- "txt": {
- "key": "hero_55074",
- "text": ""
- }
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "44006",
@@ -2716,6 +2782,7 @@
"race": 4,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 44006,
"icon": 44006,
"sound": {
@@ -2744,7 +2811,9 @@
"txt": {
"key": "hero_55075",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "45001",
@@ -2757,6 +2826,7 @@
"race": 4,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 45001,
"icon": 45001,
"sound": {
@@ -2785,7 +2855,9 @@
"txt": {
"key": "hero_55076",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "45002",
@@ -2798,6 +2870,7 @@
"race": 4,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 45002,
"icon": 45002,
"sound": {
@@ -2826,7 +2899,9 @@
"txt": {
"key": "hero_55077",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "45003",
@@ -2839,6 +2914,7 @@
"race": 4,
"job": 3,
"type": 1,
+ "handbook": -1,
"prefab": 45003,
"icon": 45003,
"sound": {
@@ -2867,7 +2943,9 @@
"txt": {
"key": "hero_55078",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "45004",
@@ -2880,6 +2958,7 @@
"race": 4,
"job": 1,
"type": 1,
+ "handbook": -1,
"prefab": 45004,
"icon": 45004,
"sound": {
@@ -2908,7 +2987,9 @@
"txt": {
"key": "hero_55079",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43901",
@@ -2921,6 +3002,7 @@
"race": 4,
"job": 5,
"type": 2,
+ "handbook": -1,
"prefab": 43901,
"icon": 43901,
"sound": {
@@ -2949,7 +3031,9 @@
"txt": {
"key": "hero_55080",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "42911",
@@ -2962,6 +3046,7 @@
"race": 4,
"job": 5,
"type": 3,
+ "handbook": -1,
"prefab": 42911,
"icon": 42911,
"sound": {
@@ -2990,7 +3075,9 @@
"txt": {
"key": "hero_55081",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43911",
@@ -3003,6 +3090,7 @@
"race": 4,
"job": 5,
"type": 3,
+ "handbook": -1,
"prefab": 43911,
"icon": 43911,
"sound": {
@@ -3031,7 +3119,9 @@
"txt": {
"key": "hero_55082",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "44911",
@@ -3044,6 +3134,7 @@
"race": 4,
"job": 5,
"type": 3,
+ "handbook": -1,
"prefab": 44911,
"icon": 44911,
"sound": {
@@ -3072,7 +3163,9 @@
"txt": {
"key": "hero_55083",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "43921",
@@ -3085,6 +3178,7 @@
"race": 4,
"job": 5,
"type": 4,
+ "handbook": -1,
"prefab": 43921,
"icon": 43921,
"sound": {
@@ -3113,7 +3207,9 @@
"txt": {
"key": "hero_55084",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "44921",
@@ -3126,6 +3222,7 @@
"race": 4,
"job": 5,
"type": 4,
+ "handbook": -1,
"prefab": 44921,
"icon": 44921,
"sound": {
@@ -3154,7 +3251,9 @@
"txt": {
"key": "hero_55085",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "45921",
@@ -3167,6 +3266,7 @@
"race": 4,
"job": 5,
"type": 4,
+ "handbook": -1,
"prefab": 45921,
"icon": 45921,
"sound": {
@@ -3195,7 +3295,9 @@
"txt": {
"key": "hero_55086",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51001",
@@ -3208,6 +3310,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 51001,
"icon": 51001,
"sound": {
@@ -3236,7 +3339,9 @@
"txt": {
"key": "hero_55087",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51002",
@@ -3249,6 +3354,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 51002,
"icon": 51002,
"sound": {
@@ -3277,7 +3383,9 @@
"txt": {
"key": "hero_55088",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51003",
@@ -3290,6 +3398,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 51003,
"icon": 51003,
"sound": {
@@ -3318,7 +3427,9 @@
"txt": {
"key": "hero_55089",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51004",
@@ -3331,6 +3442,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 51004,
"icon": 51004,
"sound": {
@@ -3359,7 +3471,9 @@
"txt": {
"key": "hero_55090",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51005",
@@ -3372,6 +3486,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 51005,
"icon": 51005,
"sound": {
@@ -3400,7 +3515,9 @@
"txt": {
"key": "hero_55091",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51006",
@@ -3413,6 +3530,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 51006,
"icon": 51006,
"sound": {
@@ -3441,7 +3559,9 @@
"txt": {
"key": "hero_55092",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51007",
@@ -3454,6 +3574,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 51007,
"icon": 51007,
"sound": {
@@ -3482,7 +3603,9 @@
"txt": {
"key": "hero_55093",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51008",
@@ -3495,6 +3618,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 51008,
"icon": 51008,
"sound": {
@@ -3523,7 +3647,9 @@
"txt": {
"key": "hero_55094",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51009",
@@ -3536,6 +3662,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 51009,
"icon": 51009,
"sound": {
@@ -3564,7 +3691,9 @@
"txt": {
"key": "hero_55095",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51010",
@@ -3577,6 +3706,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 51010,
"icon": 51010,
"sound": {
@@ -3605,7 +3735,9 @@
"txt": {
"key": "hero_55096",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51011",
@@ -3618,6 +3750,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 51011,
"icon": 51011,
"sound": {
@@ -3646,7 +3779,9 @@
"txt": {
"key": "hero_55097",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51012",
@@ -3659,6 +3794,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 51012,
"icon": 51012,
"sound": {
@@ -3687,7 +3823,9 @@
"txt": {
"key": "hero_55098",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51013",
@@ -3700,6 +3838,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 51013,
"icon": 51013,
"sound": {
@@ -3728,7 +3867,9 @@
"txt": {
"key": "hero_55099",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "51014",
@@ -3741,6 +3882,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 51014,
"icon": 51014,
"sound": {
@@ -3769,7 +3911,9 @@
"txt": {
"key": "hero_55100",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "53001",
@@ -3782,6 +3926,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 53001,
"icon": 53001,
"sound": {
@@ -3810,7 +3955,9 @@
"txt": {
"key": "hero_55101",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "53002",
@@ -3823,6 +3970,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 53002,
"icon": 53002,
"sound": {
@@ -3851,7 +3999,9 @@
"txt": {
"key": "hero_55102",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "53003",
@@ -3864,6 +4014,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 53003,
"icon": 53003,
"sound": {
@@ -3892,7 +4043,9 @@
"txt": {
"key": "hero_55103",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "53004",
@@ -3905,6 +4058,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 53004,
"icon": 53004,
"sound": {
@@ -3933,7 +4087,9 @@
"txt": {
"key": "hero_55104",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "53005",
@@ -3946,6 +4102,7 @@
"race": 4,
"job": 1,
"type": 5,
+ "handbook": -1,
"prefab": 53005,
"icon": 53005,
"sound": {
@@ -3974,7 +4131,9 @@
"txt": {
"key": "hero_55105",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "53006",
@@ -3987,6 +4146,7 @@
"race": 4,
"job": 3,
"type": 5,
+ "handbook": -1,
"prefab": 53006,
"icon": 53006,
"sound": {
@@ -4015,7 +4175,9 @@
"txt": {
"key": "hero_55106",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "55001",
@@ -4028,6 +4190,7 @@
"race": 4,
"job": 2,
"type": 5,
+ "handbook": -1,
"prefab": 55001,
"icon": 55001,
"sound": {
@@ -4056,7 +4219,9 @@
"txt": {
"key": "hero_55107",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "55002",
@@ -4069,6 +4234,7 @@
"race": 4,
"job": 2,
"type": 5,
+ "handbook": -1,
"prefab": 55002,
"icon": 55002,
"sound": {
@@ -4097,7 +4263,9 @@
"txt": {
"key": "hero_55108",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "55003",
@@ -4110,6 +4278,7 @@
"race": 4,
"job": 2,
"type": 5,
+ "handbook": -1,
"prefab": 55003,
"icon": 55003,
"sound": {
@@ -4138,7 +4307,9 @@
"txt": {
"key": "hero_55109",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "55004",
@@ -4151,6 +4322,7 @@
"race": 4,
"job": 2,
"type": 5,
+ "handbook": -1,
"prefab": 55004,
"icon": 55004,
"sound": {
@@ -4179,7 +4351,9 @@
"txt": {
"key": "hero_55110",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "55005",
@@ -4192,6 +4366,7 @@
"race": 4,
"job": 2,
"type": 5,
+ "handbook": -1,
"prefab": 55005,
"icon": 55005,
"sound": {
@@ -4220,7 +4395,9 @@
"txt": {
"key": "hero_55111",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "55006",
@@ -4233,6 +4410,7 @@
"race": 4,
"job": 2,
"type": 5,
+ "handbook": -1,
"prefab": 55006,
"icon": 55006,
"sound": {
@@ -4261,7 +4439,9 @@
"txt": {
"key": "hero_55112",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "55007",
@@ -4274,6 +4454,7 @@
"race": 4,
"job": 2,
"type": 5,
+ "handbook": -1,
"prefab": 55007,
"icon": 55007,
"sound": {
@@ -4302,7 +4483,9 @@
"txt": {
"key": "hero_55113",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
},
{
"hid": "55008",
@@ -4315,6 +4498,7 @@
"race": 4,
"job": 2,
"type": 5,
+ "handbook": -1,
"prefab": 55008,
"icon": 55008,
"sound": {
@@ -4343,6 +4527,1119 @@
"txt": {
"key": "hero_55114",
"text": ""
- }
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0
+ },
+ {
+ "hid": "11001",
+ "name": {
+ "key": "11001",
+ "text": "阿宝"
+ },
+ "star": 4,
+ "color": 3,
+ "race": 1,
+ "job": 1,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11001,
+ "icon": 11001,
+ "sound": {
+ "key": "121323",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11001.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110011,
+ "skill2": 110012,
+ "skill3": 110013,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 100,
+ "camerainterval": 0.5
+ },
+ {
+ "hid": "11002",
+ "name": {
+ "key": "11002",
+ "text": "原始人"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 1,
+ "job": 1,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11002,
+ "icon": 11002,
+ "sound": {
+ "key": "11002",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11002.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110021,
+ "skill2": 110022,
+ "skill3": 110023,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11003",
+ "name": {
+ "key": "11003",
+ "text": "波比"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 1,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11003,
+ "icon": 11003,
+ "sound": {
+ "key": "11003",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11003.asset",
+ "cite": "",
+ "effectstay": [
+ "this,Skill/Role/11003/effect_11003_wuqitexiao"
+ ],
+ "hpspace": {
+ "x": 0,
+ "y": -0.69,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110031,
+ "skill2": 110032,
+ "skill3": 110033,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11004",
+ "name": {
+ "key": "11004",
+ "text": "布兰"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 1,
+ "job": 1,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11004,
+ "icon": 11004,
+ "sound": {
+ "key": "11004",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "hero_2011",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110041,
+ "skill2": 110042,
+ "skill3": 110043,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11005",
+ "name": {
+ "key": "11005",
+ "text": "无牙仔"
+ },
+ "star": 4,
+ "color": 3,
+ "race": 1,
+ "job": 1,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11005,
+ "icon": 11005,
+ "sound": {
+ "key": "121323",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11001.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110051,
+ "skill2": 110052,
+ "skill3": 110053,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11006",
+ "name": {
+ "key": "11006",
+ "text": "亚丝翠"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 1,
+ "job": 1,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11006,
+ "icon": 11006,
+ "sound": {
+ "key": "11006",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "hero_2011",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110061,
+ "skill2": 110062,
+ "skill3": 110063,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11009",
+ "name": {
+ "key": "11009",
+ "text": "希卡普"
+ },
+ "star": 4,
+ "color": 3,
+ "race": 3,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11009,
+ "icon": 11009,
+ "sound": {
+ "key": "11009",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11009.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": -0.1,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110091,
+ "skill2": 110092,
+ "skill3": 110093,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "22002",
+ "name": {
+ "key": "22002",
+ "text": "沈王爷青春版"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 22002,
+ "icon": 22002,
+ "sound": {
+ "key": "22002",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "hero_2011",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 220021,
+ "skill2": 220022,
+ "skill3": 220023,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "90001",
+ "name": {
+ "key": "90001",
+ "text": "邪恶阿宝"
+ },
+ "star": 4,
+ "color": 3,
+ "race": 1,
+ "job": 1,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 90001,
+ "icon": 90001,
+ "sound": {
+ "key": "90001",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "hero_90001",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 900011,
+ "skill2": 900012,
+ "skill3": 900013,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11011",
+ "name": {
+ "key": "11011",
+ "text": "浣熊"
+ },
+ "star": 4,
+ "color": 3,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11011,
+ "icon": 11011,
+ "sound": {
+ "key": "11011",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11011.asset",
+ "cite": "11011",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110111,
+ "skill2": 110112,
+ "skill3": 110113,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11008",
+ "name": {
+ "key": "11008",
+ "text": "悍娇虎"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11008,
+ "icon": 11008,
+ "sound": {
+ "key": "11008",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11008.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110081,
+ "skill2": 110082,
+ "skill3": 110083,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11017",
+ "name": {
+ "key": "11017",
+ "text": "冰霜杰克"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 4,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11017,
+ "icon": 11017,
+ "sound": {
+ "key": "11017",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11017.asset",
+ "cite": "",
+ "effectstay": [
+ "Bone001/Dummy001,Skill/Role/11017/effect_11017_weapon1"
+ ],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110171,
+ "skill2": 110172,
+ "skill3": 110173,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11018",
+ "name": {
+ "key": "11018",
+ "text": "睡神"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 4,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11018,
+ "icon": 11018,
+ "sound": {
+ "key": "11018",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11018.asset",
+ "cite": "",
+ "effectstay": [
+ "Bip001,Skill/Role/11018/effect_11018_sleep",
+ "Bip001,Skill/Role/11018/effect_11018_fengsha"
+ ],
+ "hpspace": {
+ "x": 0,
+ "y": -0.31,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110181,
+ "skill2": 110182,
+ "skill3": 110183,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11019",
+ "name": {
+ "key": "11019",
+ "text": "莫甘娜"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11019,
+ "icon": 11019,
+ "sound": {
+ "key": "11019",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11019.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110191,
+ "skill2": 110192,
+ "skill3": 110193,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11020",
+ "name": {
+ "key": "11020",
+ "text": "莫甘娜二阶段"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11020,
+ "icon": 11020,
+ "sound": {
+ "key": "11020",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11020.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110201,
+ "skill2": 110202,
+ "skill3": 110203,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11021",
+ "name": {
+ "key": "11021",
+ "text": "莫甘娜巨怪"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11021,
+ "icon": 11021,
+ "sound": {
+ "key": "11021",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11021.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110211,
+ "skill2": 110212,
+ "skill3": 110213,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "11099",
+ "name": {
+ "key": "11099",
+ "text": "触手"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 11099,
+ "icon": 11099,
+ "sound": {
+ "key": "11099",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11099.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 110991,
+ "skill2": 110992,
+ "skill3": 110993,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "12001",
+ "name": {
+ "key": "12001",
+ "text": "黑化阿宝"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 12001,
+ "icon": 12001,
+ "sound": {
+ "key": "121323",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_12001.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 120011,
+ "skill2": 120012,
+ "skill3": 120013,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "12003",
+ "name": {
+ "key": "12003",
+ "text": "黑化包比"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 12003,
+ "icon": 12003,
+ "sound": {
+ "key": "12003",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11003.asset",
+ "cite": "",
+ "effectstay": [
+ "this,Skill/Role/12003/effect_12003_wuqitexiao"
+ ],
+ "hpspace": {
+ "x": 0,
+ "y": 0.154,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 120031,
+ "skill2": 120032,
+ "skill3": 120033,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "12009",
+ "name": {
+ "key": "12009",
+ "text": "黑化希卡普"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 12009,
+ "icon": 11009,
+ "sound": {
+ "key": "11009",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11009.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 120091,
+ "skill2": 120092,
+ "skill3": 120093,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "12017",
+ "name": {
+ "key": "12017",
+ "text": "黑化杰克"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 12017,
+ "icon": 12017,
+ "sound": {
+ "key": "12017",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11017.asset",
+ "cite": "",
+ "effectstay": [
+ "Bone001/Dummy001,Skill/Role/12017/effect_12017_weapon1_bad"
+ ],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 120171,
+ "skill2": 120172,
+ "skill3": 120173,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "12018",
+ "name": {
+ "key": "12018",
+ "text": "黑化睡神"
+ },
+ "star": 5,
+ "color": 4,
+ "race": 2,
+ "job": 2,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 12018,
+ "icon": 12018,
+ "sound": {
+ "key": "12018",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_11018.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0.26,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 120181,
+ "skill2": 120182,
+ "skill3": 120183,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "44005",
+ "name": {
+ "key": "44005",
+ "text": "小伊"
+ },
+ "star": 4,
+ "color": 4,
+ "race": 4,
+ "job": 3,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 44005,
+ "icon": 44005,
+ "sound": {
+ "key": "44005",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_44005.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 440051,
+ "skill2": 440052,
+ "skill3": 440053,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "15005",
+ "name": {
+ "key": "15005",
+ "text": "亚力克斯"
+ },
+ "star": 5,
+ "color": 5,
+ "race": 1,
+ "job": 3,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 15005,
+ "icon": 15005,
+ "sound": {
+ "key": "15005",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_15005.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 150051,
+ "skill2": 150052,
+ "skill3": 150053,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
+ },
+ {
+ "hid": "35001",
+ "name": {
+ "key": "35001",
+ "text": "浣熊"
+ },
+ "star": 4,
+ "color": 4,
+ "race": 4,
+ "job": 3,
+ "type": 1,
+ "handbook": 0,
+ "prefab": 35001,
+ "icon": 35001,
+ "sound": {
+ "key": "35001",
+ "text": ""
+ },
+ "tujing": [
+ 1
+ ],
+ "intr": {
+ "key": "",
+ "text": ""
+ },
+ "events": "EventDataSet/Hero_35001.asset",
+ "cite": "",
+ "effectstay": [],
+ "hpspace": {
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "skill": -1,
+ "skill1": 350011,
+ "skill2": 350012,
+ "skill3": 350013,
+ "txt": {
+ "key": "",
+ "text": ""
+ },
+ "enteranivalue": 0,
+ "camerainterval": 0.6
}
]
\ No newline at end of file
diff --git a/bin/json/game_taskround.json b/bin/json/game_taskround.json
index 2decd4d88..00ab0fc4f 100644
--- a/bin/json/game_taskround.json
+++ b/bin/json/game_taskround.json
@@ -410,7 +410,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
- "icon": "wp_icon_0001",
+ "icon": "rw_cj_icon01",
"reword": [
{
"a": "attr",
@@ -430,7 +430,7 @@
"active": 0,
"id_after": 30102,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon04",
+ "icon": "rw_cj_icon02",
"reword": [
{
"a": "attr",
@@ -450,7 +450,7 @@
"active": 0,
"id_after": 30103,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon05",
+ "icon": "rw_cj_icon09",
"reword": [
{
"a": "attr",
@@ -470,7 +470,7 @@
"active": 0,
"id_after": 30104,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon06",
+ "icon": "rw_cj_icon10",
"reword": [
{
"a": "attr",
@@ -490,7 +490,7 @@
"active": 0,
"id_after": 30105,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon07",
+ "icon": "rw_cj_icon11",
"reword": [
{
"a": "attr",
@@ -510,7 +510,7 @@
"active": 0,
"id_after": 30106,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon08",
+ "icon": "rw_cj_icon12",
"reword": [
{
"a": "attr",
@@ -530,7 +530,7 @@
"active": 0,
"id_after": 30107,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon09",
+ "icon": "rw_cj_icon13",
"reword": [
{
"a": "attr",
@@ -550,7 +550,7 @@
"active": 0,
"id_after": 30108,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon10",
+ "icon": "rw_cj_icon14",
"reword": [
{
"a": "attr",
@@ -570,7 +570,7 @@
"active": 0,
"id_after": 30109,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon11",
+ "icon": "rw_cj_icon15",
"reword": [
{
"a": "attr",
@@ -590,7 +590,7 @@
"active": 0,
"id_after": 30110,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon12",
+ "icon": "rw_cj_icon16",
"reword": [
{
"a": "attr",
@@ -610,7 +610,7 @@
"active": 0,
"id_after": 30111,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon13",
+ "icon": "rw_cj_icon17",
"reword": [
{
"a": "attr",
@@ -630,7 +630,7 @@
"active": 0,
"id_after": 30112,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon14",
+ "icon": "rw_cj_icon18",
"reword": [
{
"a": "attr",
@@ -650,7 +650,7 @@
"active": 0,
"id_after": 30113,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon15",
+ "icon": "rw_cj_icon01",
"reword": [
{
"a": "attr",
@@ -670,7 +670,7 @@
"active": 0,
"id_after": 30114,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon16",
+ "icon": "rw_cj_icon02",
"reword": [
{
"a": "attr",
@@ -690,7 +690,7 @@
"active": 0,
"id_after": 30115,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon17",
+ "icon": "rw_cj_icon09",
"reword": [
{
"a": "attr",
@@ -710,7 +710,7 @@
"active": 0,
"id_after": 30116,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon18",
+ "icon": "rw_cj_icon10",
"reword": [
{
"a": "attr",
@@ -730,7 +730,7 @@
"active": 0,
"id_after": 30117,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon01",
+ "icon": "rw_cj_icon11",
"reword": [
{
"a": "attr",
@@ -750,7 +750,7 @@
"active": 0,
"id_after": 30118,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon02",
+ "icon": "rw_cj_icon12",
"reword": [
{
"a": "attr",
@@ -770,7 +770,7 @@
"active": 0,
"id_after": 30119,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon03",
+ "icon": "rw_cj_icon13",
"reword": [
{
"a": "attr",
@@ -790,7 +790,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon04",
+ "icon": "rw_cj_icon14",
"reword": [
{
"a": "attr",
@@ -810,7 +810,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon05",
+ "icon": "rw_cj_icon15",
"reword": [
{
"a": "attr",
@@ -830,7 +830,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon06",
+ "icon": "rw_cj_icon16",
"reword": [
{
"a": "attr",
@@ -850,7 +850,7 @@
"active": 0,
"id_after": 0,
"jump_interface": "mainworld",
- "icon": "rw_cj_icon07",
+ "icon": "rw_cj_icon17",
"reword": [
{
"a": "attr",
diff --git a/cmd/robot/hero.go b/cmd/robot/hero.go
index 243dea09a..433bd7e89 100644
--- a/cmd/robot/hero.go
+++ b/cmd/robot/hero.go
@@ -24,7 +24,7 @@ var (
fmt.Printf("%d- %v\n", (i + 1), v)
}
},
- enabled: true,
+ // enabled: true,
next: func(robot *Robot, rsp proto.Message) {
tcs := []*TestCase{}
if _, ok := rsp.(*pb.HeroListResp); ok {
@@ -33,13 +33,16 @@ var (
mainType: string(comm.ModuleHero),
subType: hero.StrengthenUplv,
req: &pb.HeroStrengthenUplvReq{
- HeroObjID: "62dabaacd8c5789e2cc8b95e",
- ExpCards: map[string]int32{
- "62dabac1d8c5789e2cc8b9d3": 1,
+ HeroObjID: "62de35b92f462b70c1105aa8",
+ ExpCards: []*pb.MapStringInt32{
+ {
+ Key: "62de35b92f462b70c1105ab8",
+ Value: 1,
+ },
},
},
rsp: &pb.HeroStrengthenUplvResp{},
- enabled: true,
+ // enabled: true,
}
tcs = append(tcs, tc)
}
@@ -50,7 +53,7 @@ var (
mainType: string(comm.ModuleHero),
subType: hero.HeroSubTypeChouka,
req: &pb.HeroChoukaReq{
- HeroIds: []int32{14001, 14002, 14003, 14004, 14005, 14006, 14007},
+ HeroIds: []string{"14001"},
},
rsp: &pb.HeroChoukaResp{},
// enabled: true,
@@ -97,8 +100,11 @@ var (
subType: hero.StrengthenUplv,
req: &pb.HeroStrengthenUplvReq{
HeroObjID: heroId,
- ExpCards: map[string]int32{
- "62da19017944b60fd473df61": 1,
+ ExpCards: []*pb.MapStringInt32{
+ {
+ Key: "62da19017944b60fd473df61",
+ Value: 1,
+ },
},
},
rsp: &pb.HeroStrengthenUplvResp{},
diff --git a/cmd/robot/task.go b/cmd/robot/task.go
index 27ff3f051..71242b3a5 100644
--- a/cmd/robot/task.go
+++ b/cmd/robot/task.go
@@ -40,7 +40,7 @@ var (
subType: task.TaskSubTypeReceive,
req: &pb.TaskReceiveReq{
TaskTag: int32(comm.TASK_DAILY),
- Id: "62dab21d9efd6536b1cc1bb9",
+ Id: "62de35b92f462b70c1105ac5",
},
rsp: &pb.TaskReceiveResp{},
// enabled: true,
diff --git a/cmd/robot/user.go b/cmd/robot/user.go
index 3aae5e74b..4e64c59ae 100644
--- a/cmd/robot/user.go
+++ b/cmd/robot/user.go
@@ -11,14 +11,13 @@ import (
//申明测试接口及请求和响应参数
var user_builders = []*TestCase{
{
- //create
- desc: "创角",
+ desc: "修改名称",
mainType: string(comm.ModuleUser),
- subType: user.UserSubTypeCreate,
- req: &pb.UserCreateReq{ //设置请求参数
- NickName: "乐谷70616",
+ subType: user.UserSubTypeModifyName,
+ req: &pb.UserModifynameReq{ //设置请求参数
+ Name: "uuuuuu",
},
- rsp: &pb.UserCreateResp{},
+ rsp: &pb.UserModifynameResp{},
// enabled: true,
}, {
desc: "添加资源",
@@ -45,7 +44,7 @@ var user_builders = []*TestCase{
N: 1,
},
},
- rsp: &pb.UserAddResResp{},
+ rsp: &pb.UserAddResResp{},
// enabled: true,
}, {
desc: "获取配置",
diff --git a/comm/const.go b/comm/const.go
index c03a585a5..d8e5b3dee 100644
--- a/comm/const.go
+++ b/comm/const.go
@@ -67,6 +67,8 @@ const (
EventUserLogin core.Event_Key = "Event_UserLogin" //登录事件
EventCreateUser core.Event_Key = "Event_CreateUser" //创建角色事件
EventUserOffline core.Event_Key = "Event_UserOffline" //用户离线事件
+
+ EventUserChanged core.Event_Key = "event_user_changed" //用户数据变化
)
const (
diff --git a/comm/imodule.go b/comm/imodule.go
index 438cf95ce..4062fdf8b 100644
--- a/comm/imodule.go
+++ b/comm/imodule.go
@@ -60,6 +60,8 @@ type (
QueryAttributeValue(uid string, attr string) (value int32)
//添加/减少属性值 第四个参数控制是否推送给前端
AddAttributeValue(session IUserSession, attr string, add int32, bPush bool) (code pb.ErrorCode)
+ //用户改变事件
+ EventUserChanged(session IUserSession)
}
//武器模块
IEquipment interface {
diff --git a/lego/sys/event/v2/app.go b/lego/sys/event/v2/app.go
new file mode 100644
index 000000000..88827cc7c
--- /dev/null
+++ b/lego/sys/event/v2/app.go
@@ -0,0 +1,65 @@
+package event_v2
+
+import (
+ "go_dreamfactory/lego/core"
+ "sync"
+)
+
+// 服务容器
+type App struct {
+ //inject.Graph
+ sync.RWMutex
+ events map[core.Event_Key][]Listener // 事件
+}
+
+// 容器的目的是为了创建事件之后,为事件注入观察者,所以为了方便,直接全部解耦
+// 创建
+
+// 新建一个App,可以在其中注册事件
+func NewApp() *App {
+ app := &App{}
+ app.events = make(map[core.Event_Key][]Listener)
+ return app
+}
+
+// 给容器绑定事件,传入 类型-> 观察者的绑定
+// 可以使用反射,传入类型的字符串
+// 否则bind时也可以放置包括通配符的
+func (app *App) Bind(t core.Event_Key, listeners []Listener) {
+ for k := range listeners {
+ app.Listen(t, listeners[k])
+ }
+}
+
+// 监听[事件][监听器],单独绑定一个监听器
+func (app *App) Listen(str core.Event_Key, listener Listener) {
+ app.Lock()
+ app.events[str] = append(app.events[str], listener)
+ app.Unlock()
+}
+
+// 分发事件,传入各种事件,如果是
+func (app *App) Dispatch(key core.Event_Key, events ...interface{}) {
+ // 容器分发数据
+ for k := range events {
+ // 如果实现了 事件接口 IEvent,则调用事件的观察者模式,得到所有的
+ var observers []Listener
+ if _, ok := events[k].(IEvent); ok {
+ obs := events[k].(IEvent).Observers()
+ observers = append(observers, obs...) // 将事件中自行添加的观察者,放在所有观察者之后
+ }
+
+ if obs, exist := app.events[key]; exist {
+ observers = append(observers, obs...)
+ }
+
+ if len(observers) > 0 {
+ // 得到了所有的观察者,这里通过pipeline来执行,通过next来控制什么时候调用这个观察者
+ new(Pipeline).Send(events[k]).Through(observers).Then(func(context interface{}) {
+
+ })
+ }
+
+ }
+
+}
diff --git a/lego/sys/event/v2/event.go b/lego/sys/event/v2/event.go
new file mode 100644
index 000000000..4ca1266c0
--- /dev/null
+++ b/lego/sys/event/v2/event.go
@@ -0,0 +1,36 @@
+package event_v2
+
+// 事件接口
+type IEvent interface {
+ Attach(listeners ...Listener) // 事件添加观察者
+ Observers() []Listener // 获取所有的观察者
+ //Detach(listener Listener)
+ DetachIndexOf(index int)
+}
+
+type Event struct {
+ listeners []Listener
+}
+
+func (e *Event) Attach(listeners ...Listener) {
+ e.listeners = append(e.listeners, listeners...)
+}
+
+//func (e *Event) Detach(listener Listener) {
+// for k := range e.listeners {
+// if listener == e.listeners[k] {
+//
+// }
+// }
+//}
+
+// 移除某个监听器
+func (e *Event) DetachIndexOf(index int) {
+ if len(e.listeners) > index && index > 0 {
+ e.listeners = append(e.listeners[:index], e.listeners[index+1:]...)
+ }
+}
+
+func (e *Event) Observers() []Listener {
+ return e.listeners
+}
diff --git a/lego/sys/event/v2/listener.go b/lego/sys/event/v2/listener.go
new file mode 100644
index 000000000..a3ace0452
--- /dev/null
+++ b/lego/sys/event/v2/listener.go
@@ -0,0 +1,5 @@
+package event_v2
+
+// 监听器接口
+
+type Listener func(event interface{},next func(event interface{}))
diff --git a/lego/sys/event/v2/pipeline.go b/lego/sys/event/v2/pipeline.go
new file mode 100644
index 000000000..51d5c812c
--- /dev/null
+++ b/lego/sys/event/v2/pipeline.go
@@ -0,0 +1,41 @@
+package event_v2
+
+type Pipeline struct {
+ send interface{} // 穿过管道的上下文
+ through []Listener // 中间件数组
+ current int // 当前执行到第几个中间件
+}
+
+func (p *Pipeline) Send(context interface{}) *Pipeline {
+ p.send = context
+ return p
+}
+
+func (p *Pipeline) Through(middlewares []Listener) *Pipeline {
+ p.through = middlewares
+ return p
+}
+
+func (p *Pipeline) Exec() {
+ if len(p.through) > p.current {
+ m := p.through[p.current]
+ p.current += 1
+ m(p.send, func(c interface{}) {
+ p.Exec()
+ })
+ }
+
+}
+
+// 这里是路由的最后一站
+func (p *Pipeline) Then(then func(context interface{})) {
+ // 按照顺序执行
+ // 将then作为最后一站的中间件
+ var m Listener
+ m = func(c interface{}, next func(c interface{})) {
+ then(c)
+ next(c)
+ }
+ p.through = append(p.through, m)
+ p.Exec()
+}
diff --git a/modules/comp_configure.go b/modules/comp_configure.go
index e382a9b62..cd53f8c07 100644
--- a/modules/comp_configure.go
+++ b/modules/comp_configure.go
@@ -10,8 +10,10 @@ import (
)
const (
- game_global = "game_global.json"
- game_initial = "game_initial.json"
+ game_global = "game_global.json" //全局配置表
+ game_initial = "game_initial.json" //初始化表
+ game_playerlv = "game_playerlv.json" //玩家等级
+ game_facemod = "game_facemod.json" // 形象配置表
)
///配置管理基础组件
@@ -24,6 +26,8 @@ func (this *MCompConfigure) Init(service core.IService, module core.IModule, com
err = this.ModuleCompBase.Init(service, module, comp, options)
err = this.LoadConfigure(game_global, cfg.NewGame_global)
err = this.LoadConfigure(game_initial, cfg.NewGame_initial)
+ err = this.LoadConfigure(game_playerlv, cfg.NewGame_playerlv)
+ err = this.LoadConfigure(game_facemod, cfg.NewGame_facemod)
return
}
@@ -50,7 +54,6 @@ func (this *MCompConfigure) GetConfigure(name string) (v interface{}, err error)
}
//全局配置
-
func (this *MCompConfigure) GetGlobalConf(key string) string {
if v, err := this.GetConfigure(game_initial); err != nil {
log.Errorf("get global conf err:%v", err)
@@ -87,3 +90,54 @@ func (this *MCompConfigure) GetGlobalInitConf() (configure *cfg.Game_initial, er
}
return
}
+
+// 主角等级经验配置列表
+func (this *MCompConfigure) GetPlayerlvConfList() (list []*cfg.Game_playerlvData) {
+ if v, err := this.GetConfigure(game_playerlv); err != nil {
+ return
+ } else {
+ if configure, ok := v.(*cfg.Game_playerlv); !ok {
+ err = fmt.Errorf("%T no is *cfg.Game_playerlv", v)
+ return
+ } else {
+ if configure != nil {
+ list = configure.GetDataList()
+ }
+ }
+ }
+ return
+}
+
+// 玩家等级经验配置表
+func (this *MCompConfigure) GetPlayerlvConf(lv int32) (data *cfg.Game_playerlvData) {
+ if v, err := this.GetConfigure(game_playerlv); err != nil {
+ return
+ } else {
+ if configure, ok := v.(*cfg.Game_playerlv); !ok {
+ err = fmt.Errorf("%T no is *cfg.Game_playerlv", v)
+ return
+ } else {
+ if configure != nil {
+ data = configure.GetDataMap()[lv]
+ }
+ }
+ }
+ return
+}
+
+// 玩家形象预设配置
+func (this *MCompConfigure) GetPlayerFigureConf() (list []*cfg.Game_facemodData) {
+ if v, err := this.GetConfigure(game_facemod); err != nil {
+ return
+ } else {
+ if configure, ok := v.(*cfg.Game_facemod); !ok {
+ err = fmt.Errorf("%T no is *cfg.Game_playerlv", v)
+ return
+ } else {
+ if configure != nil {
+ list = configure.GetDataList()
+ }
+ }
+ }
+ return
+}
diff --git a/modules/comp_model.go b/modules/comp_model.go
index 17b5e079b..c4d6c90b3 100644
--- a/modules/comp_model.go
+++ b/modules/comp_model.go
@@ -492,7 +492,7 @@ func (this *MCompModel) DelListlds(uid string, ids ...string) (err error) {
func (this *MCompModel) GetUserExpand(uid string) (result *pb.DBUserExpand, err error) {
result = &pb.DBUserExpand{}
key := fmt.Sprintf("userexpand:%s", uid)
- if err = this.Redis.HGetAll(key, result); err != nil && err != redis.RedisNil {
+ if err = this.Redis.HGetAll(key, result); err != nil {
return
}
if err == redis.RedisNil {
diff --git a/modules/hero/api_awaken.go b/modules/hero/api_awaken.go
index fd896cac8..46f3be84a 100644
--- a/modules/hero/api_awaken.go
+++ b/modules/hero/api_awaken.go
@@ -24,7 +24,9 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
var (
awakenData *cfg.Game_heroAwakenData
_hero *pb.DBHero
+ chanegCard []*pb.DBHero // change
)
+ chanegCard = make([]*pb.DBHero, 0)
code = this.AwakenCheck(session, req) // check
if code != pb.ErrorCode_Success {
return
@@ -59,6 +61,14 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
if code != pb.ErrorCode_Success {
return
}
+ if _hero.SameCount > 1 { //有堆叠的情况
+ // 克隆一个新的
+ _hero.SameCount -= 1
+ newHero := this.module.modelHero.CloneNewHero(_hero)
+ chanegCard = append(chanegCard, newHero)
+ }
+ _hero.SameCount = 1
+
// 加属性 awakenData
_value, ok := strconv.Atoi(awakenData.Phasebonus[0])
if ok == nil { // 升级技能
@@ -72,6 +82,7 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
}
_heroMap := map[string]interface{}{
"normalSkill": _hero.NormalSkill,
+ "sameCount": 1,
"isOverlying": false,
}
// 保存数据
@@ -102,12 +113,12 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
}
}
- m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
+ err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
- this.module.Errorf("PushHeroProperty err!")
+ this.module.Errorf("ChangeHeroProperty err!")
}
- _hero.Property = m
- session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
+ chanegCard = append(chanegCard, _hero)
+ session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard})
session.SendMsg(string(this.module.GetType()), Awaken, &pb.HeroAwakenResp{Hero: _hero})
return
}
diff --git a/modules/hero/api_drawCard.go b/modules/hero/api_drawCard.go
index a05907ed8..f312d24f3 100644
--- a/modules/hero/api_drawCard.go
+++ b/modules/hero/api_drawCard.go
@@ -33,7 +33,7 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
config5Count int32 // 配置表中5星保底次数
race int32
upDraw []*cfg.Game_drawUpdrawData // 活动数据 英雄抽卡权重增加
- cardW map[string]int32 // 当前卡牌对应的权重
+ cardW map[string]int32 // 当前卡牌卡池卡牌对应的权重
)
upDraw = make([]*cfg.Game_drawUpdrawData, 0)
szCards = make([]string, 0)
@@ -46,6 +46,9 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
for _, v := range cfgData.GetDataList() {
if time.Now().Unix() > int64(v.TimeOn) && time.Now().Unix() < int64(v.TimeOff) { // 在这个时间范围之内
upDraw = append(upDraw, v) // 记录下在这活动范围之内的数据
+ for index, v1 := range v.UpHero {
+ cardW[v1] += v.UpWeight[index]
+ }
}
}
}
@@ -82,6 +85,7 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
for _, v := range _conf {
cardW[v.Id] += v.Weight
}
+
_costConf, err := this.module.configure.GetDrawCostConfigByID(req.DrawType) // 抽卡消耗
if err != nil {
code = pb.ErrorCode_ConfigNoFound
@@ -103,30 +107,15 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
}
drawTimes = _costConf.Count // 抽卡次数
- for k, v := range cardW { // k是heroid v 权重
-
- for _, v1 := range upDraw {
- for _, v2 := range v1.UpHero {
- if v2 == k {
- cardW[k] += v
- }
- }
-
- // }
- // if !updraw {
- // totalWeight += int64(v.Weight) // 统计所有权重
- // }
- }
- }
drawTimes = 1
for i := 0; i < int(drawTimes); i++ {
n, _ := rand.Int(rand.Reader, big.NewInt(totalWeight)) // [0,totalWeight)
- for _, v := range _conf {
- curWeigth += int64(v.Weight)
+ for k, v := range cardW {
+ curWeigth += int64(v)
if curWeigth < n.Int64() { // 命中
// 获取当前星级
- _getCardCfg := this.module.configure.GetHero(v.Id) //获取的英雄信息
+ _getCardCfg := this.module.configure.GetHero(k) //获取的英雄信息
if _getCardCfg != nil {
continue
}
@@ -183,7 +172,7 @@ func (this *apiComp) DrawCard(session comm.IUserSession, req *pb.HeroDrawCardReq
}
}
if !bGet {
- szCards = append(szCards, v.Id)
+ szCards = append(szCards, k)
}
}
}
diff --git a/modules/hero/api_resonance.go b/modules/hero/api_resonance.go
index 890282bba..7d149ccce 100644
--- a/modules/hero/api_resonance.go
+++ b/modules/hero/api_resonance.go
@@ -114,22 +114,17 @@ func (this *apiComp) Resonance(session comm.IUserSession, req *pb.HeroResonanceR
// 返还对应初始星级的卡
for _, v := range resonConfig.Prize {
if v.A == "hero" {
- // value, err := strconv.Atoi(v.T)
- // if err != nil {
- // code = pb.ErrorCode_ConfigurationException
- // return
- // }
for i := 0; i < int(v.N); i++ { // 有多少张加多少次
this.module.modelHero.createOneHero(session.GetUserId(), v.T)
}
}
}
- m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
+ err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
- this.module.Errorf("PushHeroProperty err!")
+ this.module.Errorf("ChangeHeroProperty err!")
}
- _hero.Property = m
+
changeHero = append(changeHero, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: changeHero})
session.SendMsg(string(this.module.GetType()), Resonance, &pb.HeroResonanceResp{Hero: _hero})
diff --git a/modules/hero/api_resonanceReset.go b/modules/hero/api_resonanceReset.go
index e833ad801..9e52a30ce 100644
--- a/modules/hero/api_resonanceReset.go
+++ b/modules/hero/api_resonanceReset.go
@@ -81,11 +81,10 @@ func (this *apiComp) ResonanceReset(session comm.IUserSession, req *pb.HeroReson
code = pb.ErrorCode_DBError
return
}
- m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
+ err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
- this.module.Errorf("PushHeroProperty err!")
+ this.module.Errorf("ChangeHeroProperty err!")
}
- _hero.Property = m
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
session.SendMsg(string(this.module.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum})
return
diff --git a/modules/hero/api_resonanceSelect.go b/modules/hero/api_resonanceSelect.go
index 66bea6f13..3825fc6b0 100644
--- a/modules/hero/api_resonanceSelect.go
+++ b/modules/hero/api_resonanceSelect.go
@@ -67,11 +67,10 @@ func (this *apiComp) ResonanceUseEnergy(session comm.IUserSession, req *pb.HeroR
}
this.module.modelHero.mergeMainProperty(session.GetUserId(), _hero, property)
- m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
+ err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
- this.module.Errorf("PushHeroProperty err!")
+ this.module.Errorf("ChangeHeroProperty err!")
}
- _hero.Property = m
session.SendMsg(string(this.module.GetType()), ResonanceUseEnergy, &pb.HeroResonanceUseEnergyResp{Hero: _hero})
return
}
diff --git a/modules/hero/api_strengthenUpSkill.go b/modules/hero/api_strengthenUpSkill.go
index 3cf7ef1a1..1453a3fee 100644
--- a/modules/hero/api_strengthenUpSkill.go
+++ b/modules/hero/api_strengthenUpSkill.go
@@ -131,11 +131,10 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
return
}
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_costHero}})
- m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
+ err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
- this.module.Errorf("PushHeroProperty err!")
+ this.module.Errorf("ChangeHeroProperty err!")
}
- _hero.Property = m
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}})
session.SendMsg(string(this.module.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero})
return
diff --git a/modules/hero/api_strengthenUpStar.go b/modules/hero/api_strengthenUpStar.go
index 02afc0886..f5ecc81b8 100644
--- a/modules/hero/api_strengthenUpStar.go
+++ b/modules/hero/api_strengthenUpStar.go
@@ -153,11 +153,19 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
this.module.Errorf("del hero err card:%s,count = %d", k, v)
return
}
- chanegCard = append(chanegCard, CostHeroObj[k])
+
+ }
+ if _hero.SameCount > 1 { //有堆叠的情况
+ // 克隆一个新的
+ _hero.SameCount -= 1
+ newHero := this.module.modelHero.CloneNewHero(_hero)
+ chanegCard = append(chanegCard, newHero)
}
_hero.Star += 1
+ _hero.SameCount = 1
_heroMap := map[string]interface{}{
"star": _hero.Star,
+ "sameCount": 1,
"isOverlying": false,
}
// 触发星级任务
@@ -168,12 +176,11 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
code = pb.ErrorCode_DBError
this.module.Errorf("update hero skill failed:%v", err1)
}
- m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
+ err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
code = pb.ErrorCode_Unknown
- this.module.Errorf("PushHeroProperty err!")
+ this.module.Errorf("ChangeHeroProperty err!")
}
- _hero.Property = m // 更新属性变化
chanegCard = append(chanegCard, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: chanegCard})
session.SendMsg(string(this.module.GetType()), StrengthenUpStar, &pb.HeroStrengthenUpStarResp{Hero: _hero})
diff --git a/modules/hero/api_strengthenUplv.go b/modules/hero/api_strengthenUplv.go
index 08b0890b9..c0eb9a498 100644
--- a/modules/hero/api_strengthenUplv.go
+++ b/modules/hero/api_strengthenUplv.go
@@ -150,7 +150,7 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
this.module.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costGold, addExp)
// 执行升级逻辑
- newhero, code := this.module.AddCardExp(session.GetUserId(), _hero, addExp) // 加经验
+ newhero, code := this.module.modelHero.AddCardExp(session.GetUserId(), _hero, addExp) // 加经验
if code != pb.ErrorCode_Success {
return
}
@@ -167,7 +167,6 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
return
}
// 删除经验卡
-
for k, v := range _mapCost {
err1 := this.module.modelHero.consumeHeroCard(session.GetUserId(), _costExpHero[k], v)
if err1 != nil {
@@ -178,12 +177,11 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
_changeHero = append(_changeHero, _costExpHero[k])
}
- m, err1 := this.module.modelHero.PushHeroProperty(session, _hero) // 推送属性变化
+ err1 := this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
if err1 != nil {
- this.module.Errorf("PushHeroProperty err!")
+ this.module.Errorf("ChangeHeroProperty err!")
}
- _hero.Property = m
_changeHero = append(_changeHero, _hero) // 升级后的英雄 hero id 不变
if newhero != nil {
_changeHero = append(_changeHero, newhero) // 原来的英雄 只是数量变化了
diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go
index 87084e5d0..2cf038397 100644
--- a/modules/hero/model_hero.go
+++ b/modules/hero/model_hero.go
@@ -55,7 +55,7 @@ func (this *ModelHero) initHero(uid string, heroCfgId string) *pb.DBHero {
Energy: make(map[int32]int32),
Property: make(map[string]int32),
}
- newHero.Property = this.PropertyCompute(uid, newHero)
+ this.PropertyCompute(uid, newHero)
this.initHeroSkill(newHero)
return newHero
}
@@ -102,6 +102,7 @@ func (this *ModelHero) CloneNewHero(hero *pb.DBHero) (newHero *pb.DBHero) {
temp := *hero
newHero = &temp
newHero.Id = primitive.NewObjectID().Hex()
+ this.AddList(newHero.Uid, newHero.Id, newHero)
return
}
@@ -217,7 +218,7 @@ func (this *ModelHero) getOneHero(uid, heroId string) *pb.DBHero {
return hero
}
-//消耗英雄卡 (只需要传heroid即可)
+//消耗英雄卡
func (this *ModelHero) consumeHeroCard(uid string, hero *pb.DBHero, count int32) (err error) {
if count == 0 {
return
@@ -308,18 +309,16 @@ func (this *ModelHero) setEquipment(hero *pb.DBHero) (newHero *pb.DBHero, err er
return
}
//创建新卡
- newHero = this.CloneNewHero(hero)
- // newHero, err = this.createOneHero(hero.Uid, hero.HeroID)
- // if err != nil {
- // this.moduleHero.Errorf("%v", err)
- // return
- // }
- update1 := make(map[string]interface{})
- update1["sameCount"] = curSameCount
- update1["isoverlying"] = true
+ newHero = this.CloneNewHero(hero)
+ newHero.EquipID = make([]string, 6)
newHero.IsOverlying = true
newHero.SameCount = curSameCount
+ update1 := make(map[string]interface{})
+ update["equipID"] = newHero.EquipID
+ update1["sameCount"] = curSameCount
+ update1["isoverlying"] = true
+
this.ChangeList(newHero.Uid, newHero.Id, update1)
} else {
update["equipID"] = hero.EquipID
@@ -349,10 +348,6 @@ func (this *ModelHero) mergeMainProperty(uid string, hero *pb.DBHero, data map[s
//合并附加属性
func (this *ModelHero) mergeAddProperty(uid string, hero *pb.DBHero, data map[string]int32) {
- //hero := this.getOneHero(uid, heroId)
- if hero == nil {
- return
- }
hero.AddProperty = data
if err := this.ChangeList(uid, hero.Id, map[string]interface{}{
@@ -364,36 +359,36 @@ func (this *ModelHero) mergeAddProperty(uid string, hero *pb.DBHero, data map[st
//属性计算 - 暂时放在modelHero里实现
//英雄基础属性 + 英雄等级基础属性 * 英雄成长系数 + 英雄星级对应等级属性 * 英雄品质系数
-func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]int32 {
+func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) {
//英雄等级基础属性levelup
heroLvCfg := this.moduleHero.configure.GetHeroLv(hero.Lv)
if heroLvCfg == nil {
- return nil
+ return
}
//英雄基础配置 newhero
heroCfg := this.moduleHero.configure.GetHero(hero.HeroID)
if heroCfg == nil {
- return nil
+ return
}
//品质系数
stargrowCfg := this.moduleHero.configure.GetHeroStar(heroCfg.Star)
if stargrowCfg == nil {
- return nil
+ return
}
//英雄星级对应等级属性
heroStarCfg := this.moduleHero.configure.GetHeroLv(stargrowCfg.Level)
if heroStarCfg == nil {
- return nil
+ return
}
//成长系数
lvGrow := this.moduleHero.configure.GetHeroLvgrow(hero.HeroID)
if lvGrow == nil {
- return nil
+ return
}
curHp := hero.Property[comm.Hp]
@@ -411,7 +406,7 @@ func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]i
(curDef + lvGrow.Def), heroLvCfg.Def, lvGrow.Defgrow, heroStarCfg.Def, stargrowCfg.StarupDef)
def, _ := mengine.ParseAndExec(exprDef)
- return map[string]int32{
+ hero.Property = map[string]int32{
comm.Hp: int32(math.Floor(hp)),
comm.Atk: int32(math.Floor(atk)),
comm.Def: int32(math.Floor(def)),
@@ -419,18 +414,18 @@ func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) map[string]i
}
//重新计算英雄属性
-func (this *ModelHero) PushHeroProperty(session comm.IUserSession, hero *pb.DBHero) (m map[string]int32, err error) {
- m = this.PropertyCompute(session.GetUserId(), hero)
+func (this *ModelHero) ChangeHeroProperty(session comm.IUserSession, hero *pb.DBHero) (err error) {
+ this.PropertyCompute(session.GetUserId(), hero) //重新计算 property 的值
update := map[string]interface{}{
- "property": m,
+ "property": hero.Property,
}
if err = this.ChangeList(session.GetUserId(), hero.Id, update); err != nil {
- this.moduleHero.Errorf("PushHeroProperty err:%v", err)
+ this.moduleHero.Errorf("ChangeHeroProperty err:%v", err)
return
}
- return //session.SendMsg("hero", "property", &pb.HeroPropertyPush{Property: m})
+ return
}
func (this *ModelHero) cleanData(uid string) {
@@ -441,3 +436,78 @@ func (this *ModelHero) cleanData(uid string) {
}
}
}
+
+func (this *ModelHero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhero *pb.DBHero, code pb.ErrorCode) {
+ var (
+ curExp int32
+ curLv int32
+ update map[string]interface{} // 属性变化
+ )
+ if hero == nil {
+ code = pb.ErrorCode_HeroNoExist
+ return
+ }
+ update = make(map[string]interface{}, 0)
+ curExp = hero.Exp
+ curLv = hero.Lv
+
+ var maxLv int32 // 校验等级达到上限
+ maxLv = hero.Star * comm.HeroStarLvRatio
+ _data := this.moduleHero.configure.GetHeroLv(curLv)
+ if _data != nil {
+ if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级
+ code = pb.ErrorCode_HeroMaxLv
+ return
+ }
+ curExp += exp // 先把经验加上
+ for { // 死循环判断一键升级
+ if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级
+ curLv = maxLv
+ curExp = _data.Heroexp[0].N
+ break
+ }
+ if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作
+ break
+ } else { // 升级操作
+ curExp -= _data.Heroexp[0].N
+ curLv += 1 // 经验够了 那么等级+1
+ _data = this.moduleHero.configure.GetHeroLv(curLv)
+ if _data == nil { // 等级加失败了 回到原来的等级
+ curLv -= 1
+ break
+ }
+ }
+ }
+
+ curCount := hero.SameCount - 1
+ if curCount != 0 { // 有叠加的情况
+ // 克隆一个英雄
+ newhero = this.CloneNewHero(hero)
+ update := map[string]interface{}{
+ "sameCount": curCount,
+ }
+ newhero.SameCount = curCount
+ if err := this.ChangeList(uid, newhero.Id, update); err != nil {
+ code = pb.ErrorCode_DBError
+ }
+ }
+
+ update["lv"] = curLv
+ update["exp"] = curExp
+ update["isOverlying"] = false
+ update["sameCount"] = 1
+
+ hero.Lv = curLv
+ hero.Exp = curExp
+ hero.IsOverlying = false
+ hero.SameCount = 1
+
+ if err := this.ChangeList(uid, hero.Id, update); err != nil {
+ code = pb.ErrorCode_DBError
+ }
+ } else {
+ code = pb.ErrorCode_HeroNoExist
+ return
+ }
+ return
+}
diff --git a/modules/hero/module.go b/modules/hero/module.go
index 2b2a1a05a..2bc6727e5 100644
--- a/modules/hero/module.go
+++ b/modules/hero/module.go
@@ -102,97 +102,6 @@ func (this *Hero) QueryHeroAmount(uId string, heroCfgId string) (amount uint32)
return amount
}
-// 给指定英雄加经验
-func (this *Hero) AddCardExp(uid string, hero *pb.DBHero, exp int32) (newhero *pb.DBHero, code pb.ErrorCode) {
- var (
- curExp int32
- curLv int32
- err1 error
- update map[string]interface{} // 属性变化
- )
- if hero == nil {
- code = pb.ErrorCode_HeroNoExist
- return
- }
- update = make(map[string]interface{}, 0)
- curExp = hero.Exp
- curLv = hero.Lv
-
- var maxLv int32 // 校验等级达到上限
- maxLv = hero.Star * comm.HeroStarLvRatio
- _data := this.configure.GetHeroLv(curLv)
- if _data != nil {
- if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 加经验之前校验是否达到最大等级
- code = pb.ErrorCode_HeroMaxLv
- return
- }
- curExp += exp // 先把经验加上
- for { // 死循环判断一键升级
-
- if maxLv <= hero.Lv && curExp >= _data.Heroexp[0].N { // 设置最大经验和等级
- curLv = maxLv
- curExp = _data.Heroexp[0].N
- break
- }
- if _data.Heroexp[0].N > curExp { // 经验不够升级则不能执行升级操作
- break
- } else { // 升级操作
- curExp -= _data.Heroexp[0].N
- curLv += 1 // 经验够了 那么等级+1
- _data = this.configure.GetHeroLv(curLv)
- if _data == nil { // 等级加失败了 回到原来的等级
- curLv -= 1
- break
- }
- }
- }
-
- // 检测等级有变化
- if curLv != hero.Lv {
- //data := make(map[string]int32, 0)
- preConfig := this.configure.GetHeroLv(hero.Lv)
- nowConfig := this.configure.GetHeroLv(curLv)
- update[comm.Hp] = int32(nowConfig.Hp - preConfig.Hp)
- update[comm.Atk] = int32(nowConfig.Atk - preConfig.Atk)
- update[comm.Def] = int32(nowConfig.Def - preConfig.Def)
- //this.modelHero.mergeMainProperty(uid, hero.Id, data)
- }
-
- curCount := hero.SameCount - 1
- if curCount != 0 { // 有叠加的情况
- newhero, err1 = this.modelHero.createOneHero(uid, hero.HeroID)
- if err1 != nil {
- code = pb.ErrorCode_DBError
- }
- update := map[string]interface{}{
- "sameCount": curCount,
- }
- newhero.SameCount = curCount
- if err := this.modelHero.ChangeList(uid, newhero.Id, update); err != nil {
- code = pb.ErrorCode_DBError
- }
- }
-
- update["lv"] = curLv
- update["exp"] = curExp
- update["isOverlying"] = false
- update["sameCount"] = 1
-
- hero.Lv = curLv
- hero.Exp = curExp
- hero.IsOverlying = false
- hero.SameCount = 1
-
- if err := this.modelHero.ChangeList(uid, hero.Id, update); err != nil {
- code = pb.ErrorCode_DBError
- }
- } else {
- code = pb.ErrorCode_HeroNoExist
- return
- }
- return
-}
-
// 删除指定卡牌
func (this *Hero) DelCard(udi string, hero *pb.DBHero, amount int32) (code pb.ErrorCode) {
var (
diff --git a/modules/task/api_activelist.go b/modules/task/api_activelist.go
index 322ef4fb2..10932bfe2 100644
--- a/modules/task/api_activelist.go
+++ b/modules/task/api_activelist.go
@@ -16,7 +16,6 @@ func (this *apiComp) ActiveListCheck(session comm.IUserSession, req *pb.TaskActi
}
func (this *apiComp) ActiveList(session comm.IUserSession, req *pb.TaskActiveListReq) (code pb.ErrorCode, data proto.Message) {
- // this.moduleTask.ModuleTask.SendToTask(session.GetUserId(), comm.TaskTypeGetHero, &pb.TaskParam{First: 5})
if code = this.ActiveListCheck(session, req); code != pb.ErrorCode_Success {
return
}
@@ -27,12 +26,11 @@ func (this *apiComp) ActiveList(session comm.IUserSession, req *pb.TaskActiveLis
if err != nil {
code = pb.ErrorCode_SystemError
}
- // utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeActiveList, req, resp)
}()
resp.Active = this.moduleTask.modelTask.countActive(session.GetUserId(), comm.TaskTag(req.TaskTag))
//遍历活跃度奖励表
- resp.List = this.moduleTask.modelTaskActive.getUserActiveList(session.GetUserId(), comm.TaskTag(req.TaskTag))
+ resp.List = this.moduleTask.modelTaskActive.getActiveListByTag(session.GetUserId(), comm.TaskTag(req.TaskTag))
return
}
diff --git a/modules/task/api_list.go b/modules/task/api_list.go
index 4d272f908..07201ac92 100644
--- a/modules/task/api_list.go
+++ b/modules/task/api_list.go
@@ -28,7 +28,7 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.TaskListReq) (code
// utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeList, req, rsp)
}()
- rsp.List = this.moduleTask.modelTask.getTaskList(session.GetUserId(), comm.TaskTag(req.TaskTag))
+ rsp.List = this.moduleTask.modelTask.getTaskListByTag(session.GetUserId(), comm.TaskTag(req.TaskTag))
return
}
diff --git a/modules/task/api_receive.go b/modules/task/api_receive.go
index ba84c0c7a..0085110f2 100644
--- a/modules/task/api_receive.go
+++ b/modules/task/api_receive.go
@@ -2,7 +2,6 @@ package task
import (
"go_dreamfactory/comm"
- "go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
"google.golang.org/protobuf/proto"
@@ -27,7 +26,6 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
if err != nil {
code = pb.ErrorCode_SystemError
}
- // utils.TraceFunc(session.GetUserId(), string(this.moduleTask.GetType()), TaskSubTypeReceive, req, resp)
}()
userTask := this.moduleTask.modelTask.getUserTask(session.GetUserId(), req.Id)
if userTask != nil {
@@ -41,10 +39,10 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
code = pb.ErrorCode_TaskReceived
return
}
-
- conf, err := this.moduleTask.configure.getTaskById(userTask.TaskId)
- if err != nil {
- log.Errorf("get task config err:%v", err)
+ // 待领取的任务配置
+ conf := this.moduleTask.configure.getTaskById(userTask.TaskId)
+ if conf == nil {
+ code = pb.ErrorCode_ConfigNoFound
return
}
@@ -63,6 +61,9 @@ func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq)
}
resp.TaskId = userTask.TaskId
+
+ // 监听玩家经验
+ this.moduleTask.ModuleUser.EventUserChanged(session)
}
return
diff --git a/modules/task/config.go b/modules/task/config.go
index 918cbe307..597e12048 100644
--- a/modules/task/config.go
+++ b/modules/task/config.go
@@ -2,6 +2,7 @@ package task
import (
"fmt"
+ "go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
@@ -62,11 +63,11 @@ func (this *configureComp) getTaskRoundCfg() (data *cfg.Game_taskRound, err erro
}
//根据taskId获取配置
-func (this *configureComp) getTaskById(taskId int32) (data *cfg.Game_taskRoundData, err error) {
+func (this *configureComp) getTaskById(taskId int32) (data *cfg.Game_taskRoundData) {
cfg, err := this.getTaskRoundCfg()
if err != nil {
log.Errorf("%v", err)
- return data, err
+ return nil
}
if cfg != nil {
data = cfg.GetDataMap()[taskId]
@@ -74,6 +75,28 @@ func (this *configureComp) getTaskById(taskId int32) (data *cfg.Game_taskRoundDa
return
}
+//是否第一个成就任务
+func (this *configureComp) isFirstTask(taskId int32) bool {
+ data := this.getTaskByTag(int32(comm.TASK_ACHIEVE))
+ for _, v := range data {
+ if v.IdAfter == taskId {
+ return false
+ }
+ }
+ return true
+}
+
+// 上一个任务
+func (this *configureComp) getPreTask(preTaskId int32) *cfg.Game_taskRoundData {
+ data := this.getTaskByTag(int32(comm.TASK_ACHIEVE))
+ for _, v := range data {
+ if v.IdAfter == preTaskId {
+ return v
+ }
+ }
+ return nil
+}
+
//获取任务配置列表
func (this *configureComp) getTaskList() (data []*cfg.Game_taskRoundData, err error) {
cfg, err := this.getTaskRoundCfg()
@@ -116,11 +139,11 @@ func (this *configureComp) getSortedTasks(taskType int32) (data []*cfg.Game_task
}
//获取任务配置 条件 tasktag
-func (this *configureComp) getTaskByTag(taskTag int32) (data []*cfg.Game_taskRoundData, err error) {
+func (this *configureComp) getTaskByTag(taskTag int32) (data []*cfg.Game_taskRoundData) {
list, err := this.getTaskList()
if err != nil {
log.Errorf("%v", err)
- return data, err
+ return data
}
for _, d := range list {
if d.IdTag == taskTag {
diff --git a/modules/task/model_active.go b/modules/task/model_active.go
index 4d4737103..d956b59d9 100644
--- a/modules/task/model_active.go
+++ b/modules/task/model_active.go
@@ -46,8 +46,16 @@ func (this *ModelTaskActive) initActiveReward(uid string) {
}
}
+func (this *ModelTaskActive) getActiveList(uid string) (list []*pb.DBTaskActive) {
+ if err := this.GetList(uid, &list); err != nil {
+ log.Errorf("getActiveList err:%v", err)
+ return list
+ }
+ return
+}
+
//获取玩家活跃度列表
-func (this *ModelTaskActive) getUserActiveList(uid string, taskTag comm.TaskTag) (list []*pb.DBTaskActive) {
+func (this *ModelTaskActive) getActiveListByTag(uid string, taskTag comm.TaskTag) (list []*pb.DBTaskActive) {
al := []*pb.DBTaskActive{}
if err := this.GetList(uid, &al); err != nil {
log.Errorf("getUserActiveList err:%v", err)
@@ -65,7 +73,7 @@ func (this *ModelTaskActive) getUserActiveList(uid string, taskTag comm.TaskTag)
//获取玩家活跃记录 id 唯一ID
func (this *ModelTaskActive) getUserActive(uid, id string, taskTag comm.TaskTag) *pb.DBTaskActive {
- record := this.getUserActiveList(uid, taskTag)
+ record := this.getActiveListByTag(uid, taskTag)
for _, v := range record {
if v.Id == id {
return v
@@ -112,14 +120,16 @@ func (this *ModelTaskActive) receiveHandle(uid, id string, conf *cfg.Game_active
}
//清空任务
-func (this *ModelTaskActive) clearTask(uid string, taskTag comm.TaskTag) error {
- data := this.getUserActiveList(uid, taskTag)
+func (this *ModelTaskActive) clearTask(uid string, taskTag ...comm.TaskTag) {
+ if len(taskTag) == 0 {
+ log.Errorf("least one param for taskTag")
+ return
+ }
+ data := this.getActiveListByTag(uid, taskTag[0])
for _, v := range data {
if err := this.moduleTask.modelTaskActive.DelListlds(uid, v.Id); err != nil {
- log.Errorf("uid: %v taskTag:%v err:%v", uid, taskTag, err)
- return err
+ log.Errorf("uid: %v err:%v", uid, err)
+ return
}
}
-
- return nil
}
diff --git a/modules/task/model_task.go b/modules/task/model_task.go
index f21dd0367..99a144c86 100644
--- a/modules/task/model_task.go
+++ b/modules/task/model_task.go
@@ -6,6 +6,7 @@ import (
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
+ "sort"
"go.mongodb.org/mongo-driver/bson/primitive"
)
@@ -26,19 +27,79 @@ func (this *ModelTask) Init(service core.IService, module core.IModule, comp cor
return
}
+// 玩家的所有任务列表
+func (this *ModelTask) getTaskList(uid string) (list []*pb.DBTask) {
+ if err := this.GetList(uid, &list); err != nil {
+ log.Errorf("getTaskList err %v", err)
+ return
+ }
+ return
+}
+
//获取玩家任务列表
-func (this *ModelTask) getTaskList(uid string, taskTag comm.TaskTag) (newlist []*pb.DBTask) {
+func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) (newlist []*pb.DBTask) {
list := []*pb.DBTask{}
if err := this.GetList(uid, &list); err != nil {
log.Errorf("getTaskList err %v", err)
return
}
+ sort.SliceStable(list, func(i, j int) bool {
+ return list[i].Sort < list[j].Sort
+ })
+
+ var taskList []*pb.DBTask
for _, v := range list {
if v.Tag == int32(taskTag) {
- newlist = append(newlist, v)
+ taskList = append(taskList, v)
}
}
+
+ // 当前玩家任务
+ getCurTask := func(taskId int32) *pb.DBTask {
+ for _, v := range list {
+ if v.TaskId == taskId {
+ return v
+ }
+ }
+ return nil
+ }
+
+ if taskTag == comm.TASK_ACHIEVE {
+ for _, v := range taskList {
+ if curTask := this.moduleTask.configure.getTaskById(v.TaskId); curTask != nil {
+ if v.Received == 0 && curTask.IdAfter == 0 && this.moduleTask.configure.isFirstTask(curTask.Key) { //未领取和没有下个连续任务的
+ newlist = append(newlist, v)
+ } else if this.moduleTask.configure.isFirstTask(curTask.Key) && curTask.IdAfter != 0 { //连续任务的第一个任务
+ next := this.moduleTask.configure.getTaskById(curTask.IdAfter)
+ if next != nil && v.Received == 0 {
+ newlist = append(newlist, v)
+ }
+ } else if !this.moduleTask.configure.isFirstTask(curTask.Key) && curTask.IdAfter == 0 { //连续任务的最后一个任务
+ // 上个任务
+ if preCnf := this.moduleTask.configure.getPreTask(curTask.Key); preCnf != nil {
+ if preTask := getCurTask(preCnf.Key); preTask != nil {
+ if preTask.Received == 1 { //判断上个任务领取了才显示最后一个任务
+ newlist = append(newlist, v)
+ }
+ }
+ }
+ } else {
+ if preCnf := this.moduleTask.configure.getPreTask(curTask.Key); preCnf != nil {
+ if preTask := getCurTask(preCnf.Key); preTask != nil {
+ if preTask.Received == 1 { //判断上个任务领取了才显示最后一个任务
+ newlist = append(newlist, v)
+ }
+ }
+ }
+ }
+
+ }
+
+ }
+ } else {
+ newlist = taskList
+ }
return
}
@@ -46,7 +107,7 @@ func (this *ModelTask) getTaskList(uid string, taskTag comm.TaskTag) (newlist []
func (this *ModelTask) getTaskById(uid string, taskId int32) (newlist []*pb.DBTask) {
list := []*pb.DBTask{}
if err := this.GetList(uid, &list); err != nil {
- log.Errorf("getTaskList err %v", err)
+ log.Errorf("getTaskById err %v", err)
return
}
@@ -71,6 +132,7 @@ func (this *ModelTask) initTask(uid string) error {
TaskId: cnf.Key,
Active: cnf.Active,
Progress: cnf.ConditionSecond,
+ Sort: cnf.IdList,
}
if err := this.AddList(uid, task.Id, task); err != nil {
log.Errorf("initTask addlists err %v", err)
@@ -104,7 +166,7 @@ func (this *ModelTask) getUnFinishTasks(uid string, taskId int32) (list []*pb.DB
//活跃度统计
func (this *ModelTask) countActive(uid string, taskTag comm.TaskTag) (total int32) {
- taskList := this.getTaskList(uid, taskTag)
+ taskList := this.getTaskListByTag(uid, taskTag)
for _, v := range taskList {
if v.Status == 1 {
total += v.Active
@@ -134,28 +196,27 @@ func (this *ModelTask) modifyUserTask(uid string, taskId string, data map[string
}
//清空任务
-func (this *ModelTask) clearTask(uid string, taskTag comm.TaskTag) error {
- taskList := this.getTaskList(uid, taskTag)
+func (this *ModelTask) clearTask(uid string, taskTag ...comm.TaskTag) {
+ if len(taskTag) == 0 {
+ log.Errorf("least one param for taskTag")
+ return
+ }
+ taskList := this.getTaskListByTag(uid, taskTag[0])
for _, v := range taskList {
if err := this.moduleTask.modelTask.DelListlds(uid, v.Id); err != nil {
- log.Errorf("uid: %v taskTag:%v err:%v", uid, taskTag, err)
- return err
+ log.Errorf("uid: %v err:%v", uid, err)
+ return
}
}
- return nil
}
//进入卡牌攻略
func (this *ModelTask) inStrategy(uid string, heroCfgId int32) (taskIds []int32, err error) {
//检查此英雄攻略是否完成
- taskList := this.getTaskList(uid, comm.TASK_STRATEGY)
+ taskList := this.getTaskListByTag(uid, comm.TASK_STRATEGY)
allFinished := true
for _, v := range taskList {
- conf, err := this.moduleTask.configure.getTaskById(v.TaskId)
- if err != nil {
- this.moduleTask.Errorf("get task[%v] config err %v", v.TaskId, err)
- return nil, err
- }
+ conf := this.moduleTask.configure.getTaskById(v.TaskId)
if conf != nil {
if conf.RestrictiveCondition == heroCfgId && v.Status != 1 {
allFinished = false
@@ -197,13 +258,13 @@ func (this *ModelTask) UpHeroStar(uid string, taskId int32, tp *pb.TaskParam) *p
func (this *ModelTask) UpHeroLevel(uid string, taskId int32, tp *pb.TaskParam) *pb.DBTask {
if task, ok := this.checkTask(uid, taskId); ok {
var progress int32
+ // 任务完成
if tp.Second >= task.Progress {
progress = 0
- //修改玩家任务状态和进度
update := map[string]interface{}{
"progress": progress,
+ "status": 1,
}
- update["status"] = 1
if err := this.modifyUserTask(task.Uid, task.Id, update); err != nil {
log.Errorf("err %v", err)
return nil
@@ -212,6 +273,7 @@ func (this *ModelTask) UpHeroLevel(uid string, taskId int32, tp *pb.TaskParam) *
task.Status = 1
return task
} else {
+ // 任务未完成
progress = task.Progress - tp.Second
if progress <= 0 {
progress = 0
diff --git a/modules/task/module.go b/modules/task/module.go
index 9097f62d5..4ac1e4a9e 100644
--- a/modules/task/module.go
+++ b/modules/task/module.go
@@ -57,17 +57,9 @@ func (this *ModuleTask) InitTaskAll(uid string) {
//重置任务
func (this *ModuleTask) ResetTask(uid string, taskTag comm.TaskTag) {
- if err := this.modelTask.clearTask(uid, taskTag); err != nil {
- log.Errorf("uid:%v tag:%v ResetTask err:%v", uid, taskTag, err)
- return
- }
+ this.modelTask.clearTask(uid, taskTag)
+ this.modelTaskActive.clearTask(uid, taskTag)
this.InitTaskAll(uid)
-
- if err := this.modelTaskActive.clearTask(uid, taskTag); err != nil {
- log.Errorf("uid:%v tag:%v ResetTaskActive err:%v", uid, taskTag, err)
- return
- }
- // this.modelTaskActive.initActiveRewardByTag(uid, taskTag)
}
//任务处理
@@ -96,13 +88,8 @@ func (this *ModuleTask) CreateTaskForStrategy(uid string, heroCfgId int32) {
// 清理任务数据
func (this *ModuleTask) CleanData(uid string) {
- this.modelTask.clearTask(uid, comm.TASK_DAILY)
- this.modelTask.clearTask(uid, comm.TASK_WEEKLY)
- this.modelTask.clearTask(uid, comm.TASK_ACHIEVE)
- this.modelTask.clearTask(uid, comm.TASK_STRATEGY)
-
- this.modelTaskActive.clearTask(uid, comm.TASK_DAILY)
- this.modelTaskActive.clearTask(uid, comm.TASK_WEEKLY)
+ this.modelTask.clearTask(uid)
+ this.modelTaskActive.clearTask(uid)
}
//任务处理器注册
@@ -125,7 +112,7 @@ func (this *ModuleTask) initTaskHandle() {
case int32(comm.TaskTypeUpHeroLevel):
this.register(comm.TaskTypeUpHeroLevel, this.modelTask.UpHeroLevel)
default:
- log.Errorf("%v task type not supported", v.TypeId)
+ log.Warnf("%v task type not supported", v.TypeId)
}
}
}
diff --git a/modules/user/api.go b/modules/user/api.go
index 507517801..c736ef178 100644
--- a/modules/user/api.go
+++ b/modules/user/api.go
@@ -18,6 +18,9 @@ const (
UserSubTypeVeriCode = "vericode" //验证码
UserSubTypeInitData = "initdata" //初始化用户
UserGetTujianResp = "gettujian" //获取图鉴信息
+ UserSubTypeLvChangedPush = "lvChangedPush" //等级变化推送
+ UserSubTypeModifyName = "modifyname" //修改名称
+ UserSubTypeFigure = "figure" //形象
)
type apiComp struct {
diff --git a/modules/user/api_figure.go b/modules/user/api_figure.go
new file mode 100644
index 000000000..6eb72fc5a
--- /dev/null
+++ b/modules/user/api_figure.go
@@ -0,0 +1,94 @@
+package user
+
+import (
+ "go_dreamfactory/comm"
+ "go_dreamfactory/pb"
+ "go_dreamfactory/utils"
+
+ "google.golang.org/protobuf/proto"
+)
+
+// 主角形象设置
+
+func (this *apiComp) FigureCheck(session comm.IUserSession, req *pb.UserFigureReq) (code pb.ErrorCode) {
+ if req.Preinstall < 1 || req.Preinstall > 5 || req.Action < 0 ||
+ req.Hair == nil || req.Eyes == nil || req.Mouth == nil || req.Body == nil || req.Complexion == nil {
+ code = pb.ErrorCode_ReqParameterError
+ }
+ return
+}
+
+func (this *apiComp) Figure(session comm.IUserSession, req *pb.UserFigureReq) (code pb.ErrorCode, data proto.Message) {
+ if code = this.FigureCheck(session, req); code != pb.ErrorCode_Success {
+ return
+ }
+
+ expand, err := this.module.modelUser.GetUserExpand(session.GetUserId())
+ if err != nil {
+ code = pb.ErrorCode_DBError
+ return
+ }
+
+ //当前形象
+ var curFigure *pb.Figure
+ if v, ok := expand.Preinstall[req.Preinstall]; ok {
+ curFigure = v
+ } else {
+ //TODO 设置默认形象
+ curFigure = &pb.Figure{}
+ return
+ }
+
+ rsp := &pb.UserFigureResp{
+ Uid: session.GetUserId(),
+ Action: req.Action,
+ }
+
+ if req.Action == 0 {
+ //直接返回预设形象
+ rsp.Figure = curFigure
+ } else {
+ update := make(map[string]interface{})
+ switch req.Action {
+ // 头发
+ case 1:
+ if req.Hair != nil {
+ curFigure.Hair = req.Hair
+ }
+ // 眼睛
+ case 2:
+ if req.Eyes != nil {
+ curFigure.Eyes = req.Eyes
+ }
+ // 嘴巴
+ case 3:
+ if req.Mouth != nil {
+ curFigure.Mouth = req.Mouth
+ }
+ // 体型
+ case 4:
+ if req.Body != nil {
+ curFigure.Body = req.Body
+ }
+ // 肤色
+ case 5:
+ if req.Complexion != nil {
+ curFigure.Complexion = req.Complexion
+ }
+ default:
+ code = pb.ErrorCode_ReqParameterError
+ return
+ }
+
+ update = utils.StructToMap(curFigure)
+
+ this.module.modelUser.ChanageUserExpand(session.GetUserId(), update)
+ }
+
+ if err := session.SendMsg(string(this.module.GetType()), UserSubTypeFigure, rsp); err != nil {
+ code = pb.ErrorCode_SystemError
+ return
+ }
+
+ return
+}
diff --git a/modules/user/api_initdata.go b/modules/user/api_initdata.go
index b59001c0a..988fa444c 100644
--- a/modules/user/api_initdata.go
+++ b/modules/user/api_initdata.go
@@ -20,7 +20,9 @@ func (this *apiComp) Initdata(session comm.IUserSession, req *pb.UserInitdataReq
return
}
- rsp := &pb.UserInitdataResp{}
+ rsp := &pb.UserInitdataResp{
+ Uid: session.GetUserId(),
+ }
defer func() {
if err := session.SendMsg(string(this.module.GetType()), UserSubTypeInitData, rsp); err != nil {
diff --git a/modules/user/api_modifyname.go b/modules/user/api_modifyname.go
index fb02d84be..da44b6a92 100644
--- a/modules/user/api_modifyname.go
+++ b/modules/user/api_modifyname.go
@@ -4,12 +4,13 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
+ "strings"
"google.golang.org/protobuf/proto"
)
func (this *apiComp) ModifynameCheck(session comm.IUserSession, req *pb.UserModifynameReq) (code pb.ErrorCode) {
- if req.Name == "" || len(req.Name) > 6 {
+ if strings.TrimSpace(req.Name) == "" || len(strings.TrimSpace(req.Name)) > 6 {
code = pb.ErrorCode_ReqParameterError
}
return
@@ -20,13 +21,14 @@ func (this *apiComp) Modifyname(session comm.IUserSession, req *pb.UserModifynam
return
}
+ name := strings.TrimSpace(req.Name)
//验证名称
- if this.module.modelUser.NickNameIsExist(req.Name) {
+ if !this.module.modelUser.NickNameIsExist(name) {
code = pb.ErrorCode_NameExist
return
}
- expand, err := this.module.modelUser.GetUserExpand(session.GetSessionId())
+ expand, err := this.module.modelUser.GetUserExpand(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
return
@@ -56,7 +58,7 @@ func (this *apiComp) Modifyname(session comm.IUserSession, req *pb.UserModifynam
}
// 修改名称
- if code = this.module.modelUser.modifyName(session.GetUserId(), req.Name); code != pb.ErrorCode_Success {
+ if code = this.module.modelUser.modifyName(session.GetUserId(), name); code != pb.ErrorCode_Success {
return
}
diff --git a/modules/user/model_user.go b/modules/user/model_user.go
index bc0d115c1..31dacf38f 100644
--- a/modules/user/model_user.go
+++ b/modules/user/model_user.go
@@ -2,7 +2,9 @@ package user
import (
"fmt"
+ "go_dreamfactory/comm"
"go_dreamfactory/lego/core"
+ event_v2 "go_dreamfactory/lego/sys/event/v2"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
@@ -21,11 +23,17 @@ const ( //Redis
type ModelUser struct {
modules.MCompModel
+ moduleUser *User
+ eventApp *event_v2.App
}
func (this *ModelUser) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
err = this.MCompModel.Init(service, module, comp, options)
this.TableName = string(TableUser)
+ this.moduleUser = module.(*User)
+ this.eventApp = event_v2.NewApp()
+ this.eventApp.Listen(comm.EventUserChanged, this.ChangeExp)
+ this.eventApp.Listen(comm.EventUserChanged, this.ChangeLevel)
return
}
@@ -125,7 +133,64 @@ func (this *ModelUser) modifyName(uid string, newName string) (code pb.ErrorCode
return
}
-//
-func(this *ModelUser) UpLevel(){
+// 初始化玩家形象
+func (this *ModelUser) InitFigure(uid string) {
+ figureMap := make(map[int32]interface{})
+ for _, v := range this.moduleUser.configure.GetPlayerFigureConf() {
+
+ figure := &pb.Figure{
+ Hair: &pb.Hair{Color: v.Figure[0].Color},
+ Eyes: &pb.Eyes{Color: v.Figure[0].Color},
+ Mouth: &pb.Mouth{},
+ Body: &pb.Body{},
+ Complexion: &pb.Complexion{},
+ }
+
+ figureMap[v.Id] = figure
+ }
+
+ update := map[string]interface{}{
+ "preinstall": figureMap,
+ }
+ this.ChanageUserExpand(uid, update)
+}
+
+// change exp
+func (this *ModelUser) ChangeExp(event interface{}, next func(event interface{})) {
+ ul := event.(*UserListen)
+ // TODO
+ next(ul)
+}
+
+//change level
+func (this *ModelUser) ChangeLevel(event interface{}, next func(event interface{})) {
+ ul := event.(*UserListen)
+ curLv := ul.lv
+ curLvConf := this.moduleUser.configure.GetPlayerlvConf(curLv)
+ nextLvConf := this.moduleUser.configure.GetPlayerlvConf(curLv + 1)
+ if curLvConf.Exp == 0 || nextLvConf == nil { //最大等级
+ next(ul)
+ return
+ }
+
+ if ul.exp > curLvConf.Exp && ul.exp <= nextLvConf.Exp {
+ ul.lv++
+ // 更新等级
+ update := map[string]interface{}{
+ "lv": ul.lv,
+ }
+ this.moduleUser.modelUser.Change(ul.session.GetUserId(), update)
+ ul.session.SendMsg(string(this.moduleUser.GetType()),
+ UserSubTypeLvChangedPush,
+ &pb.UserChangedPush{Uid: ul.session.GetUserId(), Exp: ul.exp, Lv: ul.lv})
+ }
}
+
+//玩家信息监听
+type UserListen struct {
+ event_v2.Event
+ session comm.IUserSession
+ exp int32
+ lv int32
+}
diff --git a/modules/user/module.go b/modules/user/module.go
index 663d5634c..4254cc738 100644
--- a/modules/user/module.go
+++ b/modules/user/module.go
@@ -172,3 +172,14 @@ func (this *User) GetUserRecordData(uid string, typeValue int32, parmare int32)
//pb.DBUserRecord
return
}
+
+func (this *User) EventUserChanged(session comm.IUserSession) {
+ ul := new(UserListen)
+ user := this.GetUser(session.GetUserId())
+ if user != nil {
+ ul.session = session
+ ul.exp = user.Exp
+ ul.lv = user.Lv
+ }
+ this.modelUser.eventApp.Dispatch(comm.EventUserChanged, ul)
+}
diff --git a/pb/task_db.pb.go b/pb/task_db.pb.go
index a3ac6e3e6..a56bb940b 100644
--- a/pb/task_db.pb.go
+++ b/pb/task_db.pb.go
@@ -34,6 +34,7 @@ type DBTask struct {
Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status" bson:"status"` // 任务状态 默认0未完成 1已完成
Received int32 `protobuf:"varint,8,opt,name=received,proto3" json:"received" bson:"received"` //领取状态 默认0未领取 1已领取
TypeId int32 `protobuf:"varint,9,opt,name=typeId,proto3" json:"typeId" bson:"typeId"`
+ Sort int32 `protobuf:"varint,10,opt,name=sort,proto3" json:"sort" bson:"sort"`
}
func (x *DBTask) Reset() {
@@ -131,6 +132,13 @@ func (x *DBTask) GetTypeId() int32 {
return 0
}
+func (x *DBTask) GetSort() int32 {
+ if x != nil {
+ return x.Sort
+ }
+ return 0
+}
+
type DBTaskActive struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -214,7 +222,7 @@ var File_task_task_db_proto protoreflect.FileDescriptor
var file_task_task_db_proto_rawDesc = []byte{
0x0a, 0x12, 0x74, 0x61, 0x73, 0x6b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x62, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd4, 0x01, 0x0a, 0x06, 0x44, 0x42, 0x54, 0x61, 0x73, 0x6b, 0x12,
+ 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x01, 0x0a, 0x06, 0x44, 0x42, 0x54, 0x61, 0x73, 0x6b, 0x12,
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
@@ -227,15 +235,17 @@ var file_task_task_db_proto_rawDesc = []byte{
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69,
0x76, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x0c, 0x44,
- 0x42, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a,
- 0x03, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x49, 0x64, 0x12,
- 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x61,
- 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x06, 0x5a,
- 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73,
+ 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x22,
+ 0x70, 0x0a, 0x0c, 0x44, 0x42, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
+ 0x64, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
+ 0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
+ 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
+ 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
}
var (
diff --git a/pb/user_msg.pb.go b/pb/user_msg.pb.go
index 353340fdb..5cd7dc3d5 100644
--- a/pb/user_msg.pb.go
+++ b/pb/user_msg.pb.go
@@ -774,6 +774,8 @@ type UserUpdateSettingResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
}
func (x *UserUpdateSettingResp) Reset() {
@@ -808,6 +810,13 @@ func (*UserUpdateSettingResp) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{15}
}
+func (x *UserUpdateSettingResp) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
// 初始化验证码
type UserVeriCodeReq struct {
state protoimpl.MessageState
@@ -946,6 +955,8 @@ type UserInitdataResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
}
func (x *UserInitdataResp) Reset() {
@@ -980,6 +991,13 @@ func (*UserInitdataResp) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{19}
}
+func (x *UserInitdataResp) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
//修改玩家名字
type UserModifynameReq struct {
state protoimpl.MessageState
@@ -1083,6 +1101,7 @@ func (x *UserModifynameResp) GetCount() uint32 {
return 0
}
+// 图鉴
type UserGetTujianReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1168,6 +1187,229 @@ func (x *UserGetTujianResp) GetHeroids() []string {
return nil
}
+//玩家等级经验变化推送
+type UserChangedPush struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
+ Exp int32 `protobuf:"varint,2,opt,name=exp,proto3" json:"exp"`
+ Lv int32 `protobuf:"varint,3,opt,name=lv,proto3" json:"lv"`
+}
+
+func (x *UserChangedPush) Reset() {
+ *x = UserChangedPush{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_user_user_msg_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UserChangedPush) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserChangedPush) ProtoMessage() {}
+
+func (x *UserChangedPush) ProtoReflect() protoreflect.Message {
+ mi := &file_user_user_msg_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UserChangedPush.ProtoReflect.Descriptor instead.
+func (*UserChangedPush) Descriptor() ([]byte, []int) {
+ return file_user_user_msg_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *UserChangedPush) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *UserChangedPush) GetExp() int32 {
+ if x != nil {
+ return x.Exp
+ }
+ return 0
+}
+
+func (x *UserChangedPush) GetLv() int32 {
+ if x != nil {
+ return x.Lv
+ }
+ return 0
+}
+
+//主角形象
+type UserFigureReq struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Preinstall int32 `protobuf:"varint,1,opt,name=preinstall,proto3" json:"preinstall"` //预设编号 1-5
+ Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action"` //部位 1-5 0不修改任何数据
+ Hair *Hair `protobuf:"bytes,3,opt,name=hair,proto3" json:"hair"` //部位 1
+ Eyes *Eyes `protobuf:"bytes,4,opt,name=eyes,proto3" json:"eyes"` //部位 2
+ Mouth *Mouth `protobuf:"bytes,5,opt,name=mouth,proto3" json:"mouth"` //部位 3
+ Body *Body `protobuf:"bytes,6,opt,name=body,proto3" json:"body"` //部位 4
+ Complexion *Complexion `protobuf:"bytes,7,opt,name=complexion,proto3" json:"complexion"` //部位 5
+}
+
+func (x *UserFigureReq) Reset() {
+ *x = UserFigureReq{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_user_user_msg_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UserFigureReq) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserFigureReq) ProtoMessage() {}
+
+func (x *UserFigureReq) ProtoReflect() protoreflect.Message {
+ mi := &file_user_user_msg_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UserFigureReq.ProtoReflect.Descriptor instead.
+func (*UserFigureReq) Descriptor() ([]byte, []int) {
+ return file_user_user_msg_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *UserFigureReq) GetPreinstall() int32 {
+ if x != nil {
+ return x.Preinstall
+ }
+ return 0
+}
+
+func (x *UserFigureReq) GetAction() int32 {
+ if x != nil {
+ return x.Action
+ }
+ return 0
+}
+
+func (x *UserFigureReq) GetHair() *Hair {
+ if x != nil {
+ return x.Hair
+ }
+ return nil
+}
+
+func (x *UserFigureReq) GetEyes() *Eyes {
+ if x != nil {
+ return x.Eyes
+ }
+ return nil
+}
+
+func (x *UserFigureReq) GetMouth() *Mouth {
+ if x != nil {
+ return x.Mouth
+ }
+ return nil
+}
+
+func (x *UserFigureReq) GetBody() *Body {
+ if x != nil {
+ return x.Body
+ }
+ return nil
+}
+
+func (x *UserFigureReq) GetComplexion() *Complexion {
+ if x != nil {
+ return x.Complexion
+ }
+ return nil
+}
+
+type UserFigureResp struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
+ Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action"` //部位
+ Figure *Figure `protobuf:"bytes,3,opt,name=figure,proto3" json:"figure"`
+}
+
+func (x *UserFigureResp) Reset() {
+ *x = UserFigureResp{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_user_user_msg_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *UserFigureResp) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserFigureResp) ProtoMessage() {}
+
+func (x *UserFigureResp) ProtoReflect() protoreflect.Message {
+ mi := &file_user_user_msg_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UserFigureResp.ProtoReflect.Descriptor instead.
+func (*UserFigureResp) Descriptor() ([]byte, []int) {
+ return file_user_user_msg_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *UserFigureResp) GetUid() string {
+ if x != nil {
+ return x.Uid
+ }
+ return ""
+}
+
+func (x *UserFigureResp) GetAction() int32 {
+ if x != nil {
+ return x.Action
+ }
+ return 0
+}
+
+func (x *UserFigureResp) GetFigure() *Figure {
+ if x != nil {
+ return x.Figure
+ }
+ return nil
+}
+
var File_user_user_msg_proto protoreflect.FileDescriptor
var file_user_user_msg_proto_rawDesc = []byte{
@@ -1227,27 +1469,54 @@ var file_user_user_msg_proto_rawDesc = []byte{
0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a,
0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e,
0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07,
- 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x55,
+ 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70,
- 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43, 0x6f, 0x64, 0x65,
- 0x52, 0x65, 0x71, 0x22, 0x26, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43,
- 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x25, 0x0a, 0x0f, 0x55,
- 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x12, 0x12,
- 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f,
- 0x64, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61,
- 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x22, 0x27, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f,
- 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
- 0x3c, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x12, 0x0a,
- 0x10, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65,
- 0x71, 0x22, 0x2d, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69,
- 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64, 0x73,
- 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
+ 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x43, 0x6f,
+ 0x64, 0x65, 0x52, 0x65, 0x71, 0x22, 0x26, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x72,
+ 0x69, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x25, 0x0a,
+ 0x0f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71,
+ 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
+ 0x63, 0x6f, 0x64, 0x65, 0x22, 0x24, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x69, 0x74,
+ 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x11, 0x55, 0x73,
+ 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12,
+ 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x69, 0x66,
+ 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6a, 0x69,
+ 0x61, 0x6e, 0x52, 0x65, 0x71, 0x22, 0x2d, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x47, 0x65, 0x74,
+ 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65,
+ 0x72, 0x6f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72,
+ 0x6f, 0x69, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x50, 0x75, 0x73, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x6c,
+ 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x22, 0xe3, 0x01, 0x0a, 0x0d,
+ 0x55, 0x73, 0x65, 0x72, 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a,
+ 0x0a, 0x70, 0x72, 0x65, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x0a,
+ 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x04, 0x68, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x69, 0x72, 0x52, 0x04, 0x68, 0x61, 0x69, 0x72,
+ 0x12, 0x19, 0x0a, 0x04, 0x65, 0x79, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05,
+ 0x2e, 0x45, 0x79, 0x65, 0x73, 0x52, 0x04, 0x65, 0x79, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x05, 0x6d,
+ 0x6f, 0x75, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x4d, 0x6f, 0x75,
+ 0x74, 0x68, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x04, 0x62, 0x6f, 0x64,
+ 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, 0x04,
+ 0x62, 0x6f, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69,
+ 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c,
+ 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x6f,
+ 0x6e, 0x22, 0x5b, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a,
+ 0x06, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e,
+ 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x06, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x42, 0x06,
+ 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -1262,7 +1531,7 @@ func file_user_user_msg_proto_rawDescGZIP() []byte {
return file_user_user_msg_proto_rawDescData
}
-var file_user_user_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
+var file_user_user_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
var file_user_user_msg_proto_goTypes = []interface{}{
(*UserLoginReq)(nil), // 0: UserLoginReq
(*UserLoginResp)(nil), // 1: UserLoginResp
@@ -1288,27 +1557,42 @@ var file_user_user_msg_proto_goTypes = []interface{}{
(*UserModifynameResp)(nil), // 21: UserModifynameResp
(*UserGetTujianReq)(nil), // 22: UserGetTujianReq
(*UserGetTujianResp)(nil), // 23: UserGetTujianResp
- (*DBUser)(nil), // 24: DBUser
- (*DBUserExpand)(nil), // 25: DBUserExpand
- (ErrorCode)(0), // 26: ErrorCode
- (*CacheUser)(nil), // 27: CacheUser
- (*UserAssets)(nil), // 28: UserAssets
- (*DBUserSetting)(nil), // 29: DBUserSetting
+ (*UserChangedPush)(nil), // 24: UserChangedPush
+ (*UserFigureReq)(nil), // 25: UserFigureReq
+ (*UserFigureResp)(nil), // 26: UserFigureResp
+ (*DBUser)(nil), // 27: DBUser
+ (*DBUserExpand)(nil), // 28: DBUserExpand
+ (ErrorCode)(0), // 29: ErrorCode
+ (*CacheUser)(nil), // 30: CacheUser
+ (*UserAssets)(nil), // 31: UserAssets
+ (*DBUserSetting)(nil), // 32: DBUserSetting
+ (*Hair)(nil), // 33: Hair
+ (*Eyes)(nil), // 34: Eyes
+ (*Mouth)(nil), // 35: Mouth
+ (*Body)(nil), // 36: Body
+ (*Complexion)(nil), // 37: Complexion
+ (*Figure)(nil), // 38: Figure
}
var file_user_user_msg_proto_depIdxs = []int32{
- 24, // 0: UserLoginResp.data:type_name -> DBUser
- 25, // 1: UserLoginResp.ex:type_name -> DBUserExpand
- 26, // 2: UserRegisterResp.Code:type_name -> ErrorCode
- 27, // 3: UserLoadResp.data:type_name -> CacheUser
- 28, // 4: UserAddResReq.res:type_name -> UserAssets
- 28, // 5: UserAddResResp.res:type_name -> UserAssets
- 29, // 6: UserGetSettingResp.setting:type_name -> DBUserSetting
- 29, // 7: UserUpdateSettingReq.setting:type_name -> DBUserSetting
- 8, // [8:8] is the sub-list for method output_type
- 8, // [8:8] is the sub-list for method input_type
- 8, // [8:8] is the sub-list for extension type_name
- 8, // [8:8] is the sub-list for extension extendee
- 0, // [0:8] is the sub-list for field type_name
+ 27, // 0: UserLoginResp.data:type_name -> DBUser
+ 28, // 1: UserLoginResp.ex:type_name -> DBUserExpand
+ 29, // 2: UserRegisterResp.Code:type_name -> ErrorCode
+ 30, // 3: UserLoadResp.data:type_name -> CacheUser
+ 31, // 4: UserAddResReq.res:type_name -> UserAssets
+ 31, // 5: UserAddResResp.res:type_name -> UserAssets
+ 32, // 6: UserGetSettingResp.setting:type_name -> DBUserSetting
+ 32, // 7: UserUpdateSettingReq.setting:type_name -> DBUserSetting
+ 33, // 8: UserFigureReq.hair:type_name -> Hair
+ 34, // 9: UserFigureReq.eyes:type_name -> Eyes
+ 35, // 10: UserFigureReq.mouth:type_name -> Mouth
+ 36, // 11: UserFigureReq.body:type_name -> Body
+ 37, // 12: UserFigureReq.complexion:type_name -> Complexion
+ 38, // 13: UserFigureResp.figure:type_name -> Figure
+ 14, // [14:14] is the sub-list for method output_type
+ 14, // [14:14] is the sub-list for method input_type
+ 14, // [14:14] is the sub-list for extension type_name
+ 14, // [14:14] is the sub-list for extension extendee
+ 0, // [0:14] is the sub-list for field type_name
}
func init() { file_user_user_msg_proto_init() }
@@ -1609,6 +1893,42 @@ func file_user_user_msg_proto_init() {
return nil
}
}
+ file_user_user_msg_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UserChangedPush); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_user_user_msg_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UserFigureReq); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_user_user_msg_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*UserFigureResp); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -1616,7 +1936,7 @@ func file_user_user_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_user_user_msg_proto_rawDesc,
NumEnums: 0,
- NumMessages: 24,
+ NumMessages: 27,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/pb/userexpand.pb.go b/pb/userexpand.pb.go
index c1fecda2e..b38281522 100644
--- a/pb/userexpand.pb.go
+++ b/pb/userexpand.pb.go
@@ -20,26 +20,372 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
+// 发型
+type Hair struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ResId int32 `protobuf:"varint,1,opt,name=resId,proto3" json:"resId"` //资源ID
+ Color string `protobuf:"bytes,2,opt,name=color,proto3" json:"color"` //颜色
+}
+
+func (x *Hair) Reset() {
+ *x = Hair{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_userexpand_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Hair) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Hair) ProtoMessage() {}
+
+func (x *Hair) ProtoReflect() protoreflect.Message {
+ mi := &file_userexpand_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Hair.ProtoReflect.Descriptor instead.
+func (*Hair) Descriptor() ([]byte, []int) {
+ return file_userexpand_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *Hair) GetResId() int32 {
+ if x != nil {
+ return x.ResId
+ }
+ return 0
+}
+
+func (x *Hair) GetColor() string {
+ if x != nil {
+ return x.Color
+ }
+ return ""
+}
+
+// 眼睛
+type Eyes struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ResId int32 `protobuf:"varint,1,opt,name=resId,proto3" json:"resId"` //资源ID
+ Color string `protobuf:"bytes,2,opt,name=color,proto3" json:"color"` //颜色
+}
+
+func (x *Eyes) Reset() {
+ *x = Eyes{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_userexpand_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Eyes) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Eyes) ProtoMessage() {}
+
+func (x *Eyes) ProtoReflect() protoreflect.Message {
+ mi := &file_userexpand_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Eyes.ProtoReflect.Descriptor instead.
+func (*Eyes) Descriptor() ([]byte, []int) {
+ return file_userexpand_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *Eyes) GetResId() int32 {
+ if x != nil {
+ return x.ResId
+ }
+ return 0
+}
+
+func (x *Eyes) GetColor() string {
+ if x != nil {
+ return x.Color
+ }
+ return ""
+}
+
+// 嘴巴
+type Mouth struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ ResId string `protobuf:"bytes,1,opt,name=resId,proto3" json:"resId"` //资源ID
+}
+
+func (x *Mouth) Reset() {
+ *x = Mouth{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_userexpand_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Mouth) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Mouth) ProtoMessage() {}
+
+func (x *Mouth) ProtoReflect() protoreflect.Message {
+ mi := &file_userexpand_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Mouth.ProtoReflect.Descriptor instead.
+func (*Mouth) Descriptor() ([]byte, []int) {
+ return file_userexpand_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *Mouth) GetResId() string {
+ if x != nil {
+ return x.ResId
+ }
+ return ""
+}
+
+// 身体
+type Body struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ High int32 `protobuf:"varint,1,opt,name=high,proto3" json:"high"` //身高
+ Shape int32 `protobuf:"varint,2,opt,name=shape,proto3" json:"shape"` //体型
+}
+
+func (x *Body) Reset() {
+ *x = Body{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_userexpand_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Body) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Body) ProtoMessage() {}
+
+func (x *Body) ProtoReflect() protoreflect.Message {
+ mi := &file_userexpand_proto_msgTypes[3]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Body.ProtoReflect.Descriptor instead.
+func (*Body) Descriptor() ([]byte, []int) {
+ return file_userexpand_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *Body) GetHigh() int32 {
+ if x != nil {
+ return x.High
+ }
+ return 0
+}
+
+func (x *Body) GetShape() int32 {
+ if x != nil {
+ return x.Shape
+ }
+ return 0
+}
+
+// 肤色
+type Complexion struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Color string `protobuf:"bytes,1,opt,name=color,proto3" json:"color"` //颜色值
+}
+
+func (x *Complexion) Reset() {
+ *x = Complexion{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_userexpand_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Complexion) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Complexion) ProtoMessage() {}
+
+func (x *Complexion) ProtoReflect() protoreflect.Message {
+ mi := &file_userexpand_proto_msgTypes[4]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Complexion.ProtoReflect.Descriptor instead.
+func (*Complexion) Descriptor() ([]byte, []int) {
+ return file_userexpand_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *Complexion) GetColor() string {
+ if x != nil {
+ return x.Color
+ }
+ return ""
+}
+
+// 形象
+type Figure struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Hair *Hair `protobuf:"bytes,1,opt,name=hair,proto3" json:"hair"`
+ Eyes *Eyes `protobuf:"bytes,2,opt,name=eyes,proto3" json:"eyes"`
+ Mouth *Mouth `protobuf:"bytes,3,opt,name=mouth,proto3" json:"mouth"`
+ Body *Body `protobuf:"bytes,4,opt,name=body,proto3" json:"body"`
+ Complexion *Complexion `protobuf:"bytes,5,opt,name=complexion,proto3" json:"complexion"`
+}
+
+func (x *Figure) Reset() {
+ *x = Figure{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_userexpand_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *Figure) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Figure) ProtoMessage() {}
+
+func (x *Figure) ProtoReflect() protoreflect.Message {
+ mi := &file_userexpand_proto_msgTypes[5]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use Figure.ProtoReflect.Descriptor instead.
+func (*Figure) Descriptor() ([]byte, []int) {
+ return file_userexpand_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *Figure) GetHair() *Hair {
+ if x != nil {
+ return x.Hair
+ }
+ return nil
+}
+
+func (x *Figure) GetEyes() *Eyes {
+ if x != nil {
+ return x.Eyes
+ }
+ return nil
+}
+
+func (x *Figure) GetMouth() *Mouth {
+ if x != nil {
+ return x.Mouth
+ }
+ return nil
+}
+
+func (x *Figure) GetBody() *Body {
+ if x != nil {
+ return x.Body
+ }
+ return nil
+}
+
+func (x *Figure) GetComplexion() *Complexion {
+ if x != nil {
+ return x.Complexion
+ }
+ return nil
+}
+
//用户扩展数据
type DBUserExpand struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` //主键id
- Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id
- Lastreadnotiftime int64 `protobuf:"varint,3,opt,name=lastreadnotiftime,proto3" json:"lastreadnotiftime"` //最后阅读公告时间
- LastInitdataTime int64 `protobuf:"varint,4,opt,name=lastInitdataTime,proto3" json:"lastInitdataTime"` //上次初始数据时间
- InitdataCount uint32 `protobuf:"varint,5,opt,name=initdataCount,proto3" json:"initdataCount"` //今日初始累计次数
- Chatchannel int32 `protobuf:"varint,6,opt,name=chatchannel,proto3" json:"chatchannel"` //跨服聊天频道
- ModifynameCount int32 `protobuf:"varint,7,opt,name=modifynameCount,proto3" json:"modifynameCount"` //修改昵称次数
- Tujian map[string]bool `protobuf:"bytes,8,rep,name=tujian,proto3" json:"tujian" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 图鉴
+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` //主键id
+ Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id
+ Lastreadnotiftime int64 `protobuf:"varint,3,opt,name=lastreadnotiftime,proto3" json:"lastreadnotiftime"` //最后阅读公告时间
+ LastInitdataTime int64 `protobuf:"varint,4,opt,name=lastInitdataTime,proto3" json:"lastInitdataTime"` //上次初始数据时间
+ InitdataCount uint32 `protobuf:"varint,5,opt,name=initdataCount,proto3" json:"initdataCount"` //今日初始累计次数
+ Chatchannel int32 `protobuf:"varint,6,opt,name=chatchannel,proto3" json:"chatchannel"` //跨服聊天频道
+ ModifynameCount int32 `protobuf:"varint,7,opt,name=modifynameCount,proto3" json:"modifynameCount"` //修改昵称次数
+ Tujian map[string]bool `protobuf:"bytes,8,rep,name=tujian,proto3" json:"tujian" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 图鉴
+ CurFigure int32 `protobuf:"varint,9,opt,name=curFigure,proto3" json:"curFigure"` //当前形象
+ Preinstall map[int32]*Figure `protobuf:"bytes,10,rep,name=preinstall,proto3" json:"preinstall" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` //形象预设
}
func (x *DBUserExpand) Reset() {
*x = DBUserExpand{}
if protoimpl.UnsafeEnabled {
- mi := &file_userexpand_proto_msgTypes[0]
+ mi := &file_userexpand_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -52,7 +398,7 @@ func (x *DBUserExpand) String() string {
func (*DBUserExpand) ProtoMessage() {}
func (x *DBUserExpand) ProtoReflect() protoreflect.Message {
- mi := &file_userexpand_proto_msgTypes[0]
+ mi := &file_userexpand_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -65,7 +411,7 @@ func (x *DBUserExpand) ProtoReflect() protoreflect.Message {
// Deprecated: Use DBUserExpand.ProtoReflect.Descriptor instead.
func (*DBUserExpand) Descriptor() ([]byte, []int) {
- return file_userexpand_proto_rawDescGZIP(), []int{0}
+ return file_userexpand_proto_rawDescGZIP(), []int{6}
}
func (x *DBUserExpand) GetId() string {
@@ -124,34 +470,83 @@ func (x *DBUserExpand) GetTujian() map[string]bool {
return nil
}
+func (x *DBUserExpand) GetCurFigure() int32 {
+ if x != nil {
+ return x.CurFigure
+ }
+ return 0
+}
+
+func (x *DBUserExpand) GetPreinstall() map[int32]*Figure {
+ if x != nil {
+ return x.Preinstall
+ }
+ return nil
+}
+
var File_userexpand_proto protoreflect.FileDescriptor
var file_userexpand_proto_rawDesc = []byte{
0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x22, 0xea, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70,
- 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x61,
- 0x64, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x61, 0x64, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x74,
- 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x64,
- 0x61, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6c,
- 0x61, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12,
- 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74,
- 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61,
- 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x74, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x74,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66,
- 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e,
- 0x74, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64,
- 0x2e, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x75,
- 0x6a, 0x69, 0x61, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e,
- 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42,
- 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x74, 0x6f, 0x22, 0x32, 0x0a, 0x04, 0x48, 0x61, 0x69, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65,
+ 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64,
+ 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x79, 0x65, 0x73, 0x12, 0x14,
+ 0x0a, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72,
+ 0x65, 0x73, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x1d, 0x0a, 0x05, 0x4d, 0x6f,
+ 0x75, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x73, 0x49, 0x64, 0x22, 0x30, 0x0a, 0x04, 0x42, 0x6f, 0x64,
+ 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x68, 0x61, 0x70, 0x65, 0x22, 0x22, 0x0a, 0x0a, 0x43,
+ 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x22,
+ 0xa4, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x68, 0x61,
+ 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x69, 0x72, 0x52,
+ 0x04, 0x68, 0x61, 0x69, 0x72, 0x12, 0x19, 0x0a, 0x04, 0x65, 0x79, 0x65, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x79, 0x65, 0x73, 0x52, 0x04, 0x65, 0x79, 0x65, 0x73,
+ 0x12, 0x1c, 0x0a, 0x05, 0x6d, 0x6f, 0x75, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x06, 0x2e, 0x4d, 0x6f, 0x75, 0x74, 0x68, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x74, 0x68, 0x12, 0x19,
+ 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x42,
+ 0x6f, 0x64, 0x79, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x2b, 0x0a, 0x0a, 0x63, 0x6f, 0x6d,
+ 0x70, 0x6c, 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
+ 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70,
+ 0x6c, 0x65, 0x78, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x04, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65,
+ 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x73,
+ 0x74, 0x72, 0x65, 0x61, 0x64, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x61, 0x64, 0x6e, 0x6f,
+ 0x74, 0x69, 0x66, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x49,
+ 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x03, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x54,
+ 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x64, 0x61, 0x74, 0x61, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x6e, 0x69, 0x74,
+ 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61,
+ 0x74, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
+ 0x63, 0x68, 0x61, 0x74, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d,
+ 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x6e, 0x61, 0x6d, 0x65,
+ 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x18,
+ 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78,
+ 0x70, 0x61, 0x6e, 0x64, 0x2e, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x06, 0x74, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x75, 0x72, 0x46,
+ 0x69, 0x67, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x75, 0x72,
+ 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x44, 0x42, 0x55,
+ 0x73, 0x65, 0x72, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x65, 0x69, 0x6e, 0x73,
+ 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x69, 0x6e,
+ 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+ 0x1a, 0x46, 0x0a, 0x0f, 0x50, 0x72, 0x65, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x6e,
+ 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x46, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
+ 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -166,18 +561,32 @@ func file_userexpand_proto_rawDescGZIP() []byte {
return file_userexpand_proto_rawDescData
}
-var file_userexpand_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_userexpand_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_userexpand_proto_goTypes = []interface{}{
- (*DBUserExpand)(nil), // 0: DBUserExpand
- nil, // 1: DBUserExpand.TujianEntry
+ (*Hair)(nil), // 0: Hair
+ (*Eyes)(nil), // 1: Eyes
+ (*Mouth)(nil), // 2: Mouth
+ (*Body)(nil), // 3: Body
+ (*Complexion)(nil), // 4: Complexion
+ (*Figure)(nil), // 5: Figure
+ (*DBUserExpand)(nil), // 6: DBUserExpand
+ nil, // 7: DBUserExpand.TujianEntry
+ nil, // 8: DBUserExpand.PreinstallEntry
}
var file_userexpand_proto_depIdxs = []int32{
- 1, // 0: DBUserExpand.tujian:type_name -> DBUserExpand.TujianEntry
- 1, // [1:1] is the sub-list for method output_type
- 1, // [1:1] is the sub-list for method input_type
- 1, // [1:1] is the sub-list for extension type_name
- 1, // [1:1] is the sub-list for extension extendee
- 0, // [0:1] is the sub-list for field type_name
+ 0, // 0: Figure.hair:type_name -> Hair
+ 1, // 1: Figure.eyes:type_name -> Eyes
+ 2, // 2: Figure.mouth:type_name -> Mouth
+ 3, // 3: Figure.body:type_name -> Body
+ 4, // 4: Figure.complexion:type_name -> Complexion
+ 7, // 5: DBUserExpand.tujian:type_name -> DBUserExpand.TujianEntry
+ 8, // 6: DBUserExpand.preinstall:type_name -> DBUserExpand.PreinstallEntry
+ 5, // 7: DBUserExpand.PreinstallEntry.value:type_name -> Figure
+ 8, // [8:8] is the sub-list for method output_type
+ 8, // [8:8] is the sub-list for method input_type
+ 8, // [8:8] is the sub-list for extension type_name
+ 8, // [8:8] is the sub-list for extension extendee
+ 0, // [0:8] is the sub-list for field type_name
}
func init() { file_userexpand_proto_init() }
@@ -187,6 +596,78 @@ func file_userexpand_proto_init() {
}
if !protoimpl.UnsafeEnabled {
file_userexpand_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Hair); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_userexpand_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Eyes); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_userexpand_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Mouth); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_userexpand_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Body); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_userexpand_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Complexion); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_userexpand_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*Figure); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_userexpand_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DBUserExpand); i {
case 0:
return &v.state
@@ -205,7 +686,7 @@ func file_userexpand_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_userexpand_proto_rawDesc,
NumEnums: 0,
- NumMessages: 2,
+ NumMessages: 9,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/sys/configure/structs/Tables.go b/sys/configure/structs/Tables.go
index 83bc6b541..90ce3d76c 100644
--- a/sys/configure/structs/Tables.go
+++ b/sys/configure/structs/Tables.go
@@ -16,9 +16,7 @@ type Tables struct {
LocalizeConfig_ENCategory *Localize_LocalizeConfig_ENCategory
LocalizeConfig_TWCategory *Localize_LocalizeConfig_TWCategory
global *Game_global
- hero *Game_hero
ui *Game_ui
- skill *Game_skill
plot *Game_plot
extservers *Game_extservers
skillAtk *Game_skillAtk
@@ -68,6 +66,8 @@ type Tables struct {
monster *Game_monster
equipPos *Game_equipPos
playerlv *Game_playerlv
+ propsgroup *Game_propsgroup
+ facemod *Game_facemod
}
func NewTables(loader JsonLoader) (*Tables, error) {
@@ -99,24 +99,12 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.global, err = NewGame_global(buf) ; err != nil {
return nil, err
}
- if buf, err = loader("game_hero") ; err != nil {
- return nil, err
- }
- if tables.hero, err = NewGame_hero(buf) ; err != nil {
- return nil, err
- }
if buf, err = loader("game_ui") ; err != nil {
return nil, err
}
if tables.ui, err = NewGame_ui(buf) ; err != nil {
return nil, err
}
- if buf, err = loader("game_skill") ; err != nil {
- return nil, err
- }
- if tables.skill, err = NewGame_skill(buf) ; err != nil {
- return nil, err
- }
if buf, err = loader("game_plot") ; err != nil {
return nil, err
}
@@ -411,5 +399,17 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.playerlv, err = NewGame_playerlv(buf) ; err != nil {
return nil, err
}
+ if buf, err = loader("game_propsgroup") ; err != nil {
+ return nil, err
+ }
+ if tables.propsgroup, err = NewGame_propsgroup(buf) ; err != nil {
+ return nil, err
+ }
+ if buf, err = loader("game_facemod") ; err != nil {
+ return nil, err
+ }
+ if tables.facemod, err = NewGame_facemod(buf) ; err != nil {
+ return nil, err
+ }
return tables, nil
}
diff --git a/sys/configure/structs/game.Figure.go b/sys/configure/structs/game.Figure.go
new file mode 100644
index 000000000..ca6add3cc
--- /dev/null
+++ b/sys/configure/structs/game.Figure.go
@@ -0,0 +1,39 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+import "errors"
+
+type Game_Figure struct {
+ Id int32
+ Key string
+ Color string
+ Val int32
+ PositonX int32
+ PositonY int32
+ PositonZ int32
+ Icon string
+}
+
+func (Game_Figure) GetTypeId() int {
+ return -1818502016
+}
+
+func NewGame_Figure(_buf map[string]interface{}) (_v *Game_Figure, err error) {
+ _v = &Game_Figure{}
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
+ { var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } }
+ { var _ok_ bool; if _v.Color, _ok_ = _buf["color"].(string); !_ok_ { err = errors.New("color error"); return } }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["val"].(float64); !_ok_ { err = errors.New("val error"); return }; _v.Val = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["positon_x"].(float64); !_ok_ { err = errors.New("positon_x error"); return }; _v.PositonX = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["positon_y"].(float64); !_ok_ { err = errors.New("positon_y error"); return }; _v.PositonY = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["positon_z"].(float64); !_ok_ { err = errors.New("positon_z error"); return }; _v.PositonZ = int32(_tempNum_) }
+ { var _ok_ bool; if _v.Icon, _ok_ = _buf["icon"].(string); !_ok_ { err = errors.New("icon error"); return } }
+ return
+}
diff --git a/sys/configure/structs/game.facemod.go b/sys/configure/structs/game.facemod.go
new file mode 100644
index 000000000..dc10813dc
--- /dev/null
+++ b/sys/configure/structs/game.facemod.go
@@ -0,0 +1,42 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+type Game_facemod struct {
+ _dataMap map[int32]*Game_facemodData
+ _dataList []*Game_facemodData
+}
+
+func NewGame_facemod(_buf []map[string]interface{}) (*Game_facemod, error) {
+ _dataList := make([]*Game_facemodData, 0, len(_buf))
+ dataMap := make(map[int32]*Game_facemodData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := NewGame_facemodData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Id] = _v
+ }
+ }
+ return &Game_facemod{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *Game_facemod) GetDataMap() map[int32]*Game_facemodData {
+ return table._dataMap
+}
+
+func (table *Game_facemod) GetDataList() []*Game_facemodData {
+ return table._dataList
+}
+
+func (table *Game_facemod) Get(key int32) *Game_facemodData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.facemodData.go b/sys/configure/structs/game.facemodData.go
new file mode 100644
index 000000000..104e459c0
--- /dev/null
+++ b/sys/configure/structs/game.facemodData.go
@@ -0,0 +1,42 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+import "errors"
+
+type Game_facemodData struct {
+ Id int32
+ Suitintr string
+ Figure []*Game_Figure
+}
+
+func (Game_facemodData) GetTypeId() int {
+ return -214755117
+}
+
+func NewGame_facemodData(_buf map[string]interface{}) (_v *Game_facemodData, err error) {
+ _v = &Game_facemodData{}
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) }
+ { var _ok_ bool; if _v.Suitintr, _ok_ = _buf["suitintr"].(string); !_ok_ { err = errors.New("suitintr error"); return } }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["figure"].([]interface{}); !_ok_ { err = errors.New("figure error"); return }
+
+ _v.Figure = make([]*Game_Figure, 0, len(_arr_))
+
+ for _, _e_ := range _arr_ {
+ var _list_v_ *Game_Figure
+ { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = NewGame_Figure(_x_); err != nil { return } }
+ _v.Figure = append(_v.Figure, _list_v_)
+ }
+ }
+
+ return
+}
diff --git a/sys/configure/structs/game.newHeroData.go b/sys/configure/structs/game.newHeroData.go
index e8eeb738b..aaf7877e1 100644
--- a/sys/configure/structs/game.newHeroData.go
+++ b/sys/configure/structs/game.newHeroData.go
@@ -19,6 +19,7 @@ type Game_newHeroData struct {
Race int32
Job int32
Type int32
+ Handbook int32
Prefab int32
Icon int32
Sound string
@@ -33,6 +34,8 @@ type Game_newHeroData struct {
Skill2 int32
Skill3 int32
Txt string
+ Enteranivalue int32
+ Camerainterval float32
}
func (Game_newHeroData) GetTypeId() int {
@@ -48,6 +51,7 @@ func NewGame_newHeroData(_buf map[string]interface{}) (_v *Game_newHeroData, err
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["race"].(float64); !_ok_ { err = errors.New("race error"); return }; _v.Race = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["job"].(float64); !_ok_ { err = errors.New("job error"); return }; _v.Job = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["handbook"].(float64); !_ok_ { err = errors.New("handbook error"); return }; _v.Handbook = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["prefab"].(float64); !_ok_ { err = errors.New("prefab error"); return }; _v.Prefab = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["icon"].(float64); !_ok_ { err = errors.New("icon error"); return }; _v.Icon = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["sound"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Sound error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Sound, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
@@ -95,5 +99,7 @@ func NewGame_newHeroData(_buf map[string]interface{}) (_v *Game_newHeroData, err
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill2"].(float64); !_ok_ { err = errors.New("skill2 error"); return }; _v.Skill2 = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skill3"].(float64); !_ok_ { err = errors.New("skill3 error"); return }; _v.Skill3 = int32(_tempNum_) }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["txt"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Txt error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Txt, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["enteranivalue"].(float64); !_ok_ { err = errors.New("enteranivalue error"); return }; _v.Enteranivalue = int32(_tempNum_) }
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["camerainterval"].(float64); !_ok_ { err = errors.New("camerainterval error"); return }; _v.Camerainterval = float32(_tempNum_) }
return
}