This commit is contained in:
liwei1dao 2022-07-15 20:08:19 +08:00
commit f8653cdd3d
49 changed files with 8351 additions and 1993 deletions

57
bin/json/game_com.json Normal file
View File

@ -0,0 +1,57 @@
[
{
"index": "max_hy",
"var": "30",
"intr": "最大好友数"
},
{
"index": "max_getreward",
"var": "10002,99",
"intr": "领取/赠送奖励"
},
{
"index": "max_get",
"var": "30",
"intr": "每日领取/赠送次数"
},
{
"index": "max_char",
"var": "100",
"intr": "聊天最大输入字符数量"
},
{
"index": "max_hmd",
"var": "30",
"intr": "最大黑名单数"
},
{
"index": "task_reset",
"var": "8",
"intr": "日/周常任务刷新时间8点"
},
{
"index": "init_gold",
"var": "100000",
"intr": "初始金币"
},
{
"index": "init_hero",
"var": "15001,25001",
"intr": "初始英雄"
},
{
"index": "cameramin",
"var": "0,0,0",
"intr": "镜头坐标最小值"
},
{
"index": "cameramax",
"var": "-1.53,1.1,-8",
"intr": "镜头坐标最大值"
},
{
"index": "heroshownum",
"var": "2",
"intr": "播放开场动作角色数量"
}
]

View File

@ -46,7 +46,7 @@
},
{
"index": "cameramax",
"var": "0,1.54,-2.62",
"var": "-1.53,1.1,-8",
"intr": "镜头坐标最大值"
},
{

View File

@ -1,7 +1,10 @@
[
{
"id": 11001,
"name": "阿宝",
"name": {
"key": "11001",
"text": "阿宝"
},
"star": 4,
"color": 3,
"race": 1,
@ -30,7 +33,10 @@
},
{
"id": 11002,
"name": "原始人",
"name": {
"key": "11002",
"text": "原始人"
},
"star": 5,
"color": 4,
"race": 1,
@ -59,7 +65,10 @@
},
{
"id": 11003,
"name": "波比",
"name": {
"key": "11003",
"text": "波比"
},
"star": 5,
"color": 4,
"race": 2,
@ -90,7 +99,10 @@
},
{
"id": 11004,
"name": "布兰",
"name": {
"key": "11004",
"text": "布兰"
},
"star": 5,
"color": 4,
"race": 1,
@ -119,7 +131,10 @@
},
{
"id": 11005,
"name": "无牙仔",
"name": {
"key": "11005",
"text": "无牙仔"
},
"star": 4,
"color": 3,
"race": 1,
@ -148,7 +163,10 @@
},
{
"id": 11006,
"name": "亚丝翠",
"name": {
"key": "11006",
"text": "亚丝翠"
},
"star": 5,
"color": 4,
"race": 1,
@ -177,7 +195,10 @@
},
{
"id": 11009,
"name": "希卡普",
"name": {
"key": "11009",
"text": "希卡普"
},
"star": 4,
"color": 3,
"race": 3,
@ -206,7 +227,10 @@
},
{
"id": 22002,
"name": "沈王爷青春版",
"name": {
"key": "22002",
"text": "沈王爷青春版"
},
"star": 5,
"color": 4,
"race": 2,
@ -235,7 +259,10 @@
},
{
"id": 90001,
"name": "邪恶阿宝",
"name": {
"key": "90001",
"text": "邪恶阿宝"
},
"star": 4,
"color": 3,
"race": 1,
@ -264,7 +291,10 @@
},
{
"id": 11011,
"name": "浣熊",
"name": {
"key": "11011",
"text": "浣熊"
},
"star": 4,
"color": 3,
"race": 2,
@ -293,7 +323,10 @@
},
{
"id": 11008,
"name": "悍娇虎",
"name": {
"key": "11008",
"text": "悍娇虎"
},
"star": 5,
"color": 4,
"race": 2,
@ -322,7 +355,10 @@
},
{
"id": 11017,
"name": "冰霜杰克",
"name": {
"key": "11017",
"text": "冰霜杰克"
},
"star": 5,
"color": 4,
"race": 4,
@ -353,7 +389,10 @@
},
{
"id": 11018,
"name": "睡神",
"name": {
"key": "11018",
"text": "睡神"
},
"star": 5,
"color": 4,
"race": 4,
@ -385,7 +424,10 @@
},
{
"id": 11019,
"name": "莫甘娜",
"name": {
"key": "11019",
"text": "莫甘娜"
},
"star": 5,
"color": 4,
"race": 2,
@ -414,7 +456,10 @@
},
{
"id": 11020,
"name": "莫甘娜二阶段",
"name": {
"key": "11020",
"text": "莫甘娜二阶段"
},
"star": 5,
"color": 4,
"race": 2,
@ -443,7 +488,10 @@
},
{
"id": 11021,
"name": "莫甘娜巨怪",
"name": {
"key": "11021",
"text": "莫甘娜巨怪"
},
"star": 5,
"color": 4,
"race": 2,
@ -472,7 +520,10 @@
},
{
"id": 11099,
"name": "触手",
"name": {
"key": "11099",
"text": "触手"
},
"star": 5,
"color": 4,
"race": 2,
@ -501,7 +552,10 @@
},
{
"id": 12001,
"name": "黑化阿宝",
"name": {
"key": "12001",
"text": "黑化阿宝"
},
"star": 5,
"color": 4,
"race": 2,
@ -530,7 +584,10 @@
},
{
"id": 12003,
"name": "黑化包比",
"name": {
"key": "12003",
"text": "黑化包比"
},
"star": 5,
"color": 4,
"race": 2,
@ -561,7 +618,10 @@
},
{
"id": 12009,
"name": "黑化希卡普",
"name": {
"key": "12009",
"text": "黑化希卡普"
},
"star": 5,
"color": 4,
"race": 2,
@ -590,7 +650,10 @@
},
{
"id": 12017,
"name": "黑化杰克",
"name": {
"key": "12017",
"text": "黑化杰克"
},
"star": 5,
"color": 4,
"race": 2,
@ -621,7 +684,10 @@
},
{
"id": 12018,
"name": "黑化睡神",
"name": {
"key": "12018",
"text": "黑化睡神"
},
"star": 5,
"color": 4,
"race": 2,
@ -647,5 +713,37 @@
"skill3": 0,
"enteranivalue": 0,
"camerainterval": 0.6
},
{
"id": 44005,
"name": {
"key": "44005",
"text": "小伊"
},
"star": 4,
"color": 4,
"race": 4,
"job": 3,
"type": 1,
"prefab": "Person/44005.prefab",
"icon": 44005,
"sound": 44005,
"tujing": [
1
],
"intr": "",
"events": "EventDataSet/Hero_44005.asset",
"cite": "",
"effectstay": [],
"hpspace": {
"x": 0,
"y": 0,
"z": 0
},
"skill1": 0,
"skill2": 0,
"skill3": 0,
"enteranivalue": 0,
"camerainterval": 0.6
}
]

View File

@ -5,7 +5,8 @@
"star": 2,
"color": 1,
"heroexp": 1000,
"skilllevelup": 0
"skilllevelup": 0,
"needgold": 1000
},
{
"hid": 43911,
@ -13,7 +14,8 @@
"star": 3,
"color": 2,
"heroexp": 5000,
"skilllevelup": 0
"skilllevelup": 0,
"needgold": 5000
},
{
"hid": 44911,
@ -21,7 +23,8 @@
"star": 4,
"color": 3,
"heroexp": 20000,
"skilllevelup": 0
"skilllevelup": 0,
"needgold": 20000
},
{
"hid": 43921,
@ -29,7 +32,8 @@
"star": 3,
"color": 2,
"heroexp": 0,
"skilllevelup": 1
"skilllevelup": 1,
"needgold": 1000
},
{
"hid": 44921,
@ -37,7 +41,8 @@
"star": 4,
"color": 3,
"heroexp": 0,
"skilllevelup": 1
"skilllevelup": 1,
"needgold": 1000
},
{
"hid": 45921,
@ -45,6 +50,7 @@
"star": 5,
"color": 4,
"heroexp": 0,
"skilllevelup": 1
"skilllevelup": 1,
"needgold": 1000
}
]

View File

@ -8,13 +8,6 @@
"n": 300
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 300
}
],
"hp": 1857,
"atk": 137,
"def": 137
@ -28,13 +21,6 @@
"n": 320
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 320
}
],
"hp": 1953,
"atk": 142.7,
"def": 143.7
@ -48,13 +34,6 @@
"n": 340
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 340
}
],
"hp": 2049,
"atk": 148.4,
"def": 150.4
@ -68,13 +47,6 @@
"n": 360
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 360
}
],
"hp": 2145,
"atk": 154.1,
"def": 157.1
@ -88,13 +60,6 @@
"n": 380
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 380
}
],
"hp": 2241,
"atk": 159.8,
"def": 163.8
@ -108,13 +73,6 @@
"n": 400
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 400
}
],
"hp": 2337,
"atk": 165.5,
"def": 170.5
@ -128,13 +86,6 @@
"n": 420
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 420
}
],
"hp": 2433,
"atk": 171.2,
"def": 177.2
@ -148,13 +99,6 @@
"n": 440
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 440
}
],
"hp": 2529,
"atk": 176.9,
"def": 183.9
@ -168,13 +112,6 @@
"n": 460
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 460
}
],
"hp": 2625,
"atk": 182.6,
"def": 190.6
@ -188,13 +125,6 @@
"n": 480
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 480
}
],
"hp": 2721,
"atk": 188.3,
"def": 197.3
@ -208,13 +138,6 @@
"n": 1100
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1100
}
],
"hp": 2817,
"atk": 194,
"def": 204
@ -228,13 +151,6 @@
"n": 1200
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1200
}
],
"hp": 2913,
"atk": 199.7,
"def": 210.7
@ -248,13 +164,6 @@
"n": 1300
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1300
}
],
"hp": 3009,
"atk": 205.4,
"def": 217.4
@ -268,13 +177,6 @@
"n": 1400
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1400
}
],
"hp": 3105,
"atk": 211.1,
"def": 224.1
@ -288,13 +190,6 @@
"n": 1500
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1500
}
],
"hp": 3201,
"atk": 216.8,
"def": 230.8
@ -308,13 +203,6 @@
"n": 1600
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1600
}
],
"hp": 3297,
"atk": 222.5,
"def": 237.5
@ -328,13 +216,6 @@
"n": 1700
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1700
}
],
"hp": 3393,
"atk": 228.2,
"def": 244.2
@ -348,13 +229,6 @@
"n": 1800
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1800
}
],
"hp": 3489,
"atk": 233.9,
"def": 250.9
@ -368,13 +242,6 @@
"n": 1900
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 1900
}
],
"hp": 3585,
"atk": 239.6,
"def": 257.6
@ -388,13 +255,6 @@
"n": 2000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 2000
}
],
"hp": 3681,
"atk": 245.3,
"def": 264.3
@ -408,13 +268,6 @@
"n": 6300
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 6300
}
],
"hp": 3777,
"atk": 251,
"def": 271
@ -428,13 +281,6 @@
"n": 6600
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 6600
}
],
"hp": 3873,
"atk": 256.7,
"def": 277.7
@ -448,13 +294,6 @@
"n": 6900
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 6900
}
],
"hp": 3969,
"atk": 262.4,
"def": 284.4
@ -468,13 +307,6 @@
"n": 7200
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 7200
}
],
"hp": 4065,
"atk": 268.1,
"def": 291.1
@ -488,13 +320,6 @@
"n": 7500
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 7500
}
],
"hp": 4161,
"atk": 273.8,
"def": 297.8
@ -508,13 +333,6 @@
"n": 7800
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 7800
}
],
"hp": 4257,
"atk": 279.5,
"def": 304.5
@ -528,13 +346,6 @@
"n": 8100
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 8100
}
],
"hp": 4353,
"atk": 285.2,
"def": 311.2
@ -548,13 +359,6 @@
"n": 8400
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 8400
}
],
"hp": 4449,
"atk": 290.9,
"def": 317.9
@ -568,13 +372,6 @@
"n": 8700
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 8700
}
],
"hp": 4545,
"atk": 296.6,
"def": 324.6
@ -588,13 +385,6 @@
"n": 9000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 9000
}
],
"hp": 4641,
"atk": 302.3,
"def": 331.3
@ -608,13 +398,6 @@
"n": 15500
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 15500
}
],
"hp": 4737,
"atk": 308,
"def": 338
@ -628,13 +411,6 @@
"n": 16000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 16000
}
],
"hp": 4833,
"atk": 313.7,
"def": 344.7
@ -648,13 +424,6 @@
"n": 16500
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 16500
}
],
"hp": 4929,
"atk": 319.4,
"def": 351.4
@ -668,13 +437,6 @@
"n": 17000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 17000
}
],
"hp": 5025,
"atk": 325.1,
"def": 358.1
@ -688,13 +450,6 @@
"n": 17500
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 17500
}
],
"hp": 5121,
"atk": 330.8,
"def": 364.8
@ -708,13 +463,6 @@
"n": 18000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 18000
}
],
"hp": 5217,
"atk": 336.5,
"def": 371.5
@ -728,13 +476,6 @@
"n": 18500
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 18500
}
],
"hp": 5313,
"atk": 342.2,
"def": 378.2
@ -748,13 +489,6 @@
"n": 19000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 19000
}
],
"hp": 5409,
"atk": 347.9,
"def": 384.9
@ -768,13 +502,6 @@
"n": 19500
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 19500
}
],
"hp": 5505,
"atk": 353.6,
"def": 391.6
@ -788,13 +515,6 @@
"n": 20000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 20000
}
],
"hp": 5601,
"atk": 359.3,
"def": 398.3
@ -808,13 +528,6 @@
"n": 24600
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 24600
}
],
"hp": 5697,
"atk": 365,
"def": 405
@ -828,13 +541,6 @@
"n": 25200
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 25200
}
],
"hp": 5793,
"atk": 370.7,
"def": 411.7
@ -848,13 +554,6 @@
"n": 25800
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 25800
}
],
"hp": 5889,
"atk": 376.4,
"def": 418.4
@ -868,13 +567,6 @@
"n": 26400
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 26400
}
],
"hp": 5985,
"atk": 382.1,
"def": 425.1
@ -888,13 +580,6 @@
"n": 27000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 27000
}
],
"hp": 6081,
"atk": 387.8,
"def": 431.8
@ -908,13 +593,6 @@
"n": 27600
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 27600
}
],
"hp": 6177,
"atk": 393.5,
"def": 438.5
@ -928,13 +606,6 @@
"n": 28200
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 28200
}
],
"hp": 6273,
"atk": 399.2,
"def": 445.2
@ -948,13 +619,6 @@
"n": 28800
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 28800
}
],
"hp": 6369,
"atk": 404.9,
"def": 451.9
@ -968,13 +632,6 @@
"n": 29400
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 29400
}
],
"hp": 6465,
"atk": 410.6,
"def": 458.6
@ -988,13 +645,6 @@
"n": 30000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 30000
}
],
"hp": 6561,
"atk": 416.3,
"def": 465.3
@ -1008,13 +658,6 @@
"n": 48450
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 48450
}
],
"hp": 6657,
"atk": 422,
"def": 472
@ -1028,13 +671,6 @@
"n": 49400
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 49400
}
],
"hp": 6753,
"atk": 427.7,
"def": 478.7
@ -1048,13 +684,6 @@
"n": 50350
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 50350
}
],
"hp": 6849,
"atk": 433.4,
"def": 485.4
@ -1068,13 +697,6 @@
"n": 51300
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 51300
}
],
"hp": 6945,
"atk": 439.1,
"def": 492.1
@ -1088,13 +710,6 @@
"n": 52250
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 52250
}
],
"hp": 7041,
"atk": 444.8,
"def": 498.8
@ -1108,13 +723,6 @@
"n": 53200
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 53200
}
],
"hp": 7137,
"atk": 450.5,
"def": 505.5
@ -1128,13 +736,6 @@
"n": 54150
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 54150
}
],
"hp": 7233,
"atk": 456.2,
"def": 512.2
@ -1148,13 +749,6 @@
"n": 55100
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 55100
}
],
"hp": 7329,
"atk": 461.9,
"def": 518.9
@ -1168,13 +762,6 @@
"n": 56050
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 56050
}
],
"hp": 7425,
"atk": 467.6,
"def": 525.6
@ -1188,13 +775,6 @@
"n": 57000
}
],
"gold": [
{
"a": "attr",
"t": "gold",
"n": 57000
}
],
"hp": 7521,
"atk": 473.3,
"def": 532.3

View File

@ -2,6 +2,7 @@
{
"star": 1,
"level": 1,
"maxlevel": 10,
"starup_hp": 0,
"starup_atk": 0,
"starup_def": 0,
@ -10,6 +11,7 @@
{
"star": 2,
"level": 10,
"maxlevel": 20,
"starup_hp": 9.5,
"starup_atk": 9.5,
"starup_def": 9.5,
@ -18,6 +20,7 @@
{
"star": 3,
"level": 20,
"maxlevel": 30,
"starup_hp": 19,
"starup_atk": 19,
"starup_def": 19,
@ -26,6 +29,7 @@
{
"star": 4,
"level": 30,
"maxlevel": 40,
"starup_hp": 28.5,
"starup_atk": 28.5,
"starup_def": 28.5,
@ -34,6 +38,7 @@
{
"star": 5,
"level": 40,
"maxlevel": 50,
"starup_hp": 38,
"starup_atk": 38,
"starup_def": 38,
@ -42,6 +47,7 @@
{
"star": 6,
"level": 50,
"maxlevel": 60,
"starup_hp": 47.5,
"starup_atk": 47.5,
"starup_def": 47.5,

View File

@ -3,7 +3,6 @@
"key": 1,
"id": 25001,
"star": 4,
"maxlevel": 40,
"needhero": 25001,
"needherostar": 4,
"needheronum": 1,
@ -18,7 +17,6 @@
"key": 2,
"id": 25001,
"star": 5,
"maxlevel": 50,
"needhero": 25001,
"needherostar": 5,
"needheronum": 1,
@ -33,7 +31,6 @@
"key": 3,
"id": 25001,
"star": 6,
"maxlevel": 60,
"needhero": 0,
"needherostar": 0,
"needheronum": 0,
@ -46,7 +43,6 @@
"key": 4,
"id": 25002,
"star": 5,
"maxlevel": 50,
"needhero": 25002,
"needherostar": 5,
"needheronum": 1,
@ -61,7 +57,6 @@
"key": 5,
"id": 25002,
"star": 6,
"maxlevel": 60,
"needhero": 0,
"needherostar": 0,
"needheronum": 0,
@ -74,7 +69,6 @@
"key": 6,
"id": 25003,
"star": 5,
"maxlevel": 50,
"needhero": 25003,
"needherostar": 5,
"needheronum": 1,
@ -89,7 +83,6 @@
"key": 7,
"id": 25003,
"star": 6,
"maxlevel": 60,
"needhero": 0,
"needherostar": 0,
"needheronum": 0,
@ -102,7 +95,6 @@
"key": 8,
"id": 15004,
"star": 5,
"maxlevel": 50,
"needhero": 15004,
"needherostar": 5,
"needheronum": 1,
@ -117,7 +109,6 @@
"key": 9,
"id": 15004,
"star": 6,
"maxlevel": 60,
"needhero": 0,
"needherostar": 0,
"needheronum": 0,
@ -130,7 +121,6 @@
"key": 10,
"id": 43901,
"star": 3,
"maxlevel": 30,
"needhero": 43901,
"needherostar": 3,
"needheronum": 1,
@ -148,7 +138,6 @@
"key": 11,
"id": 43901,
"star": 4,
"maxlevel": 40,
"needhero": 43901,
"needherostar": 4,
"needheronum": 1,
@ -166,7 +155,6 @@
"key": 12,
"id": 43901,
"star": 5,
"maxlevel": 50,
"needhero": 43901,
"needherostar": 5,
"needheronum": 1,
@ -184,7 +172,6 @@
"key": 13,
"id": 43901,
"star": 6,
"maxlevel": 60,
"needhero": 0,
"needherostar": 0,
"needheronum": 0,

View File

@ -1,278 +1,282 @@
[
{
"itemid": 10001,
"name": "1阵营觉醒材料",
"usetype": 9,
"color": 2,
"id": 1,
"name": "绿色材料",
"usetype": 1,
"color": 1,
"bagtype": 1,
"index": 1,
"special_type": 0,
"effects": "",
"drop": 0,
"synthetize_num": 10,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 10,
"isani": 0,
"star": 2,
"race": 1,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
"synthetize_hero": 0,
"img": "item1",
"ico": "item1",
"intr": "绿色材料,可以合成蓝色材料",
"sale": [
{
"a": "attr",
"t": "gold",
"n": 2000
}
],
"boxhero": []
},
{
"itemid": 10002,
"name": "1阵营觉醒材料",
"usetype": 9,
"id": 2,
"name": "蓝色材料",
"usetype": 1,
"color": 2,
"bagtype": 2,
"index": 2,
"special_type": 0,
"effects": "",
"drop": 0,
"synthetize_num": 20,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 0,
"isani": 0,
"star": 3,
"race": 2,
"synthetize_hero": 0,
"img": "item2",
"ico": "item2",
"intr": "蓝色材料,可以合成紫色材料",
"sale": [
{
"a": "attr",
"t": "gold",
"n": 3000
}
],
"boxhero": []
},
{
"id": 3,
"name": "紫色材料",
"usetype": 1,
"color": 3,
"bagtype": 3,
"index": 3,
"special_type": 0,
"effects": "",
"drop": 0,
"synthetize_num": 30,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 0,
"isani": 0,
"star": 4,
"race": 3,
"synthetize_hero": 0,
"img": "item3",
"ico": "item3",
"intr": "紫色材料,可以合成橙色材料",
"sale": [
{
"a": "attr",
"t": "gold",
"n": 4000
}
],
"boxhero": []
},
{
"id": 4,
"name": "橙色材料",
"usetype": 1,
"color": 4,
"bagtype": 3,
"index": 4,
"special_type": 0,
"effects": "",
"drop": 0,
"synthetize_num": 40,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 0,
"isani": 0,
"star": 5,
"race": 4,
"synthetize_hero": 0,
"img": "item4",
"ico": "item4",
"intr": "橙色材料,可以合成红色材料",
"sale": [
{
"a": "attr",
"t": "gold",
"n": 5000
}
],
"boxhero": []
},
{
"id": 5,
"name": "红色材料",
"usetype": 2,
"color": 5,
"bagtype": 3,
"index": 5,
"special_type": 0,
"effects": "effects1",
"drop": 0,
"synthetize_num": 0,
"access": 0,
"use_skip": 0,
"upper_limit": 1,
"uselv": 0,
"isani": 1,
"star": 6,
"race": 4,
"synthetize_hero": 0,
"img": "item5",
"ico": "item5",
"intr": "红色材料,最顶级的材料",
"sale": [
{
"a": "attr",
"t": "gold",
"n": 6000
}
],
"boxhero": []
},
{
"id": 6,
"name": "金币箱子",
"usetype": 4,
"color": 4,
"bagtype": 1,
"index": 6,
"special_type": 0,
"effects": "",
"drop": 0,
"synthetize_num": 0,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 0,
"isani": 0,
"star": 5,
"race": 0,
"synthetize_hero": 0,
"img": "item6",
"ico": "item6",
"intr": "可以在以下道具中选择任选1个",
"sale": [],
"boxhero": []
},
{
"id": 7,
"name": "随机金币箱子",
"usetype": 7,
"color": 4,
"bagtype": 1,
"index": 7,
"special_type": 0,
"effects": "",
"drop": 1,
"synthetize_num": 0,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 0,
"isani": 0,
"star": 5,
"race": 0,
"synthetize_hero": 0,
"img": "item7",
"ico": "item7",
"intr": "可以下一下道具中随机获取1个",
"sale": [],
"boxhero": []
},
{
"id": 8,
"name": "2小时金币",
"usetype": 5,
"color": 4,
"bagtype": 1,
"index": 8,
"special_type": 120,
"effects": "",
"drop": 0,
"synthetize_num": 0,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 0,
"isani": 0,
"star": 5,
"race": 0,
"synthetize_hero": 0,
"img": "item8",
"ico": "item8",
"intr": "使用后获得2小时金币收益",
"sale": [],
"boxhero": []
},
{
"id": 9,
"name": "1分钟就不见",
"usetype": 6,
"color": 4,
"bagtype": 1,
"index": 9,
"special_type": 1,
"effects": "",
"drop": 0,
"synthetize_num": 0,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 0,
"isani": 0,
"star": 5,
"race": 0,
"synthetize_hero": 0,
"img": "item9",
"ico": "item9",
"intr": "获得1分钟后该道具消失",
"sale": [],
"boxhero": []
},
{
"id": 10001,
"name": "绿色材料",
"usetype": 1,
"color": 1,
"bagtype": 1,
"index": 1,
"special_type": 0,
"effects": "",
"drop": 0,
"synthetize_num": 10,
"access": 0,
"use_skip": 0,
"upper_limit": 999,
"uselv": 10,
"isani": 0,
"star": 2,
"race": 1,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10003,
"name": "1阵营觉醒材料",
"usetype": 9,
"color": 4,
"race": 1,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10011,
"name": "2阵营觉醒材料",
"usetype": 9,
"color": 2,
"race": 2,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10012,
"name": "2阵营觉醒材料",
"usetype": 9,
"color": 3,
"race": 2,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10013,
"name": "2阵营觉醒材料",
"usetype": 9,
"color": 4,
"race": 2,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10021,
"name": "3阵营觉醒材料",
"usetype": 9,
"color": 2,
"race": 3,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10022,
"name": "3阵营觉醒材料",
"usetype": 9,
"color": 3,
"race": 3,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10023,
"name": "3阵营觉醒材料",
"usetype": 9,
"color": 4,
"race": 3,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10031,
"name": "4阵营觉醒材料",
"usetype": 9,
"color": 2,
"race": 4,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10032,
"name": "4阵营觉醒材料",
"usetype": 9,
"color": 3,
"race": 4,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
},
{
"itemid": 10033,
"name": "4阵营觉醒材料",
"usetype": 9,
"color": 4,
"race": 4,
"bagtype": false,
"index": 10001,
"texiao": "",
"dlp": 0,
"composenum": 0,
"htype": 0,
"tujing": 0,
"usetz": 0,
"maxnum": 999,
"uselv": 1,
"ismutil": 1,
"type": 0,
"img": "",
"ico": "",
"intr": "",
"sale": ""
"synthetize_hero": 0,
"img": "item1",
"ico": "item1",
"intr": "绿色材料,可以合成蓝色材料",
"sale": [],
"boxhero": []
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,210 +1,496 @@
[
{
"Id": 390001001,
"Type": "ProBuff",
"Type": "Type=ProBuff",
"Name": "攻击提升",
"Desc": "攻击提升40%",
"Tags": [
"201"
],
"OverlayTimes": 0,
"SameID": false
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390001002,
"Type": "ProBuff",
"Name": "攻击下降",
"Desc": "攻击下降40%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390001003,
"Type": "ProBuff",
"Type": "Type=ProBuff",
"Name": "防御提升",
"Desc": "防御提升60%",
"Tags": [
"201"
],
"OverlayTimes": 0,
"SameID": false
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390001004,
"Type": "ProBuff",
"Name": "防御下降",
"Desc": "防御下降60%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390001005,
"Type": "ProBuff",
"Id": 390001003,
"Type": "Type=ProBuff",
"Name": "速度提升",
"Desc": "速度提升30%",
"Tags": [
"201"
],
"OverlayTimes": 0,
"SameID": false
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390001006,
"Type": "ProBuff",
"Name": "速度下降",
"Desc": "速度下降30%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390001007,
"Type": "ProBuff",
"Id": 390001004,
"Type": "Type=ProBuff",
"Name": "暴击提升",
"Desc": "暴击率提升30%",
"Tags": [
"201"
],
"OverlayTimes": 0,
"SameID": false
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390001008,
"Type": "ProBuff",
"Name": "暴击下降",
"Desc": "暴击率下降30%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390001009,
"Type": "ProBuff",
"Name": "烙印",
"Desc": "被攻击时受到的伤害提高25%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390001010,
"Type": "ProBuff",
"Name": "失手率提升",
"Desc": "失手率提升50%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390001011,
"Type": "ProBuff",
"Name": "叹息之力",
"Desc": "无法驱散类状态每层使自身攻击力提升5%每10层使自身受到伤害降低3%。最高可叠加50层",
"Tags": [
"201",
"301"
],
"OverlayTimes": 50,
"SameID": true
},
{
"Id": 390001012,
"Type": "ProBuff",
"Id": 390001005,
"Type": "Type=ProBuff",
"Name": "暴击抵抗",
"Desc": "受到暴击概率降低30%",
"Tags": [
"201"
],
"OverlayTimes": 0,
"SameID": false
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390001006,
"Type": "Type=ProBuff",
"Name": "叹息之力",
"Desc": "无法驱散类状态每层使自身攻击力提升5%每10层使自身受到伤害降低3%。最高可叠加50层",
"Tags": [
"303"
],
"OverlayTimes": 50,
"SameID": true,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390001007,
"Type": "Type=ProBuff",
"Name": "公牛之怒",
"Desc": "每层使自身基础防御提升10%效果抵抗提升5%最多可叠加10层。",
"Tags": [
"201"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390001008,
"Type": "Type=ProBuff",
"Name": "雷之庇佑",
"Desc": "每次受到攻击提升20%的防御最多叠加5层",
"Tags": [
"201"
],
"OverlayTimes": 5,
"SameID": true,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390002001,
"Type": "TagBuff",
"Name": "眩晕",
"Desc": "无法进行任务行动",
"Tags": [
"202",
"302"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390002002,
"Type": "TagBuff",
"Name": "冰冻",
"Desc": "无法进行任何行动",
"Tags": [
"202",
"302"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390002003,
"Type": "TagBuff",
"Name": "无法获得增益效果",
"Desc": "无法附加增益状态(不可驱散)(不配置标签)",
"Tags": [],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390002004,
"Type": "TagBuff",
"Name": "无法获得减益效果",
"Desc": "无法获得减益效果(不可驱散)(不配置标签)",
"Tags": [],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390002005,
"Type": "TagBuff",
"Name": "免疫",
"Desc": "无法获得减益效果",
"Tags": [
"201"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390002006,
"Type": "TagBuff",
"Name": "无敌",
"Desc": "无法受到任何伤害",
"Tags": [
"201"
],
"OverlayTimes": 0,
"SameID": false
},
{
"Id": 390002007,
"Type": "TagBuff",
"Name": "禁疗",
"Desc": "无法恢复生命",
"Type": "Type=ProBuff",
"Name": "攻击下降",
"Desc": "攻击下降40%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390002002,
"Type": "Type=ProBuff",
"Name": "防御下降",
"Desc": "防御下降60%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390002003,
"Type": "Type=ProBuff",
"Name": "速度下降",
"Desc": "速度下降30%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390002004,
"Type": "Type=ProBuff",
"Name": "暴击下降",
"Desc": "暴击率下降30%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390002005,
"Type": "Type=ProBuff",
"Name": "烙印",
"Desc": "被攻击时受到的伤害提高25%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390002006,
"Type": "Type=ProBuff",
"Name": "失手率提升",
"Desc": "失手率提升50%",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390003001,
"Type": "Type=TagBuff",
"Name": "无敌",
"Desc": "不会受到任何伤害",
"Tags": [
"201",
"301"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390003002,
"Type": "Type=TagBuff",
"Name": "对峙",
"Desc": "生命最低降为1",
"Tags": [
"201",
"501"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390003003,
"Type": "Type=TagBuff",
"Name": "免疫控制效果",
"Desc": "无法被附加任何控制效果",
"Tags": [
"304"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 390003004,
"Type": "Type=TagBuff",
"Name": "免除死亡",
"Desc": "",
"Tags": [
"501"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 390004001,
"Type": "Type=TagBuff",
"Name": "眩晕",
"Desc": "无法进行任务行动",
"Tags": [
"202",
"604"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390004002,
"Type": "Type=TagBuff",
"Name": "冰冻",
"Desc": "无法进行任何行动",
"Tags": [
"202",
"604"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390004003,
"Type": "Type=TagBuff",
"Name": "禁疗",
"Desc": "无法恢复生命",
"Tags": [
"202",
"401"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390004004,
"Type": "Type=TagBuff",
"Name": "石化",
"Desc": "无法进行任何行动,不会随着回合到来降低技能冷却",
"Tags": [
"202",
"604",
"602",
"204"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302",
"304"
]
},
{
"Id": 390004005,
"Type": "Type=TagBuff",
"Name": "沉默",
"Desc": "只能释放基础技能",
"Tags": [
"202",
"603",
"204"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302",
"304"
]
},
{
"Id": 390004006,
"Type": "Type=TagBuff",
"Name": "吞噬",
"Desc": "无法进行任何行动,无法被选中,无法被攻击,无法获得任何强化及弱化效果",
"Tags": [
"202",
"604",
"606",
"204"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302",
"304"
]
},
{
"Id": 390004007,
"Type": "Type=TagBuff",
"Name": "挑衅",
"Desc": "回合开始时,会被迫发起攻击,向附加状态者释放基础技能",
"Tags": [
"202",
"204"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302",
"304"
]
},
{
"Id": 390004008,
"Type": "Type=TagBuff",
"Name": "猫猫威慑 ",
"Desc": "携带者阵亡时清除此状态并对携带者一方全体造成崔佛释放者攻击力40%的效果附加伤害每层使伤害系数提升40%最多可叠加5层。",
"Tags": [
"202"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": [
"302"
]
},
{
"Id": 390005001,
"Type": "Type=TagBuff",
"Name": "炎阳",
"Desc": "(无法驱散类状态)可以增强炎阳灼射的威力。",
"Tags": [
"201",
"303"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 390005002,
"Type": "Type=TagBuff",
"Name": "无法获得减益",
"Desc": "无法获得减益效果(不可驱散)(不配置标签)",
"Tags": [
"302"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 390005003,
"Type": "Type=TagBuff",
"Name": "不会失手",
"Desc": "不会失手",
"Tags": [
"502"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 390006001,
"Type": "Type=TagBuff",
"Name": "无法获得增益",
"Desc": "无法附加增益状态(不可驱散)(不配置标签)",
"Tags": [
"302"
],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 300102103,
"Type": "Type=ProBuff",
"Name": "",
"Desc": "受到的所有伤害降低10%",
"Tags": [],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 300162105,
"Type": "Type=CallShieldBuff",
"Name": "",
"Desc": "",
"Tags": [],
"OverlayTimes": 0,
"SameID": false,
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 300192114,
"Type": "Type=ProBuff",
"Name": "猫猫推理",
"Desc": "每层为崔佛释放者提供15%伤害减免",
"Tags": [
"201"
],
"OverlayTimes": 2,
"SameID": true,
"RelyTags": [],
"NoRelyTags": []
}
]

View File

@ -1 +1,624 @@
[]
[
{
"Id": 490001001,
"Desc": "免疫",
"When": "SufEff",
"Where": "Target=3,EffType=1,EffID=101",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [
"302"
],
"RelyTags": [],
"NoRelyTags": [
"402"
]
},
{
"Id": 490067001,
"Desc": "被动1 每回合行动前对敌方全体造成80%攻击力伤害",
"When": "RouFro",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490068001,
"Desc": "被动1 每回合行动前对敌方全体造成80%攻击力伤害",
"When": "RouFro",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490069001,
"Desc": "每次攻击前对敌方全体造成80%攻击力伤害",
"When": "EffFro",
"Where": "Target=3,EffType=1,EffID=101",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490070001,
"Desc": "每次受到攻击前对敌方全体造成80%攻击力伤害",
"When": "SufEffFro",
"Where": "Target=3,EffType=1,EffID=101",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490071001,
"Desc": "暴击时回复自身5%最大生命值血量",
"When": "CriCal",
"Where": "Target=3,CriRely=1,TesLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490072001,
"Desc": "被暴击时回复自身5%最大生命值血量",
"When": "CovCriCal",
"Where": "Target=3,CriRely=1,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490073001,
"Desc": "受到致死伤害后免除死亡每场战斗最多1次",
"When": "SufDmg",
"Where": "Target=3,LetDmg=1,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490074001,
"Desc": "击破护盾时对敌方全体造成80%攻击力伤害",
"When": "BreShield",
"Where": "Target=3,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490075001,
"Desc": "护盾被击破时对敌方全体造成80%攻击力伤害",
"When": "ShieldBro",
"Where": "Target=3,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490076001,
"Desc": "攻击时对敌方全体造成80%攻击力伤害",
"When": "ImpEff",
"Where": "Target=3,EffType=1,EffID=101,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490077001,
"Desc": "受到攻击时对敌方全体造成80%攻击力伤害",
"When": "SufEff",
"Where": "Target=3,EffType=1,EffID=101,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490078001,
"Desc": "击杀敌人后对敌方全体造成80%攻击力伤害",
"When": "Kill",
"Where": "Target=3,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490079001,
"Desc": "死亡后,立即复活",
"When": "Dead",
"Where": "Target=3,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490080001,
"Desc": "复活后对敌方全体造成80%攻击力伤害",
"When": "Resurrection",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490081001,
"Desc": "BUFF结束对敌方全体造成80%攻击力伤害",
"When": "BuffEnd",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490082001,
"Desc": "回合结束后对敌方全体造成80%攻击力伤害",
"When": "RouEnd",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490083001,
"Desc": "行动结束前对敌方全体造成80%攻击力伤害",
"When": "ActEndFro",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 490084001,
"Desc": "行动结束后对敌方全体造成80%攻击力伤害",
"When": "ActEnd",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400012101,
"Desc": "主被动1 每回合结束后,调用子技能的触发类效果 调用引雷123",
"When": "RouFro",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400012102,
"Desc": "主被动2 自身的任意主动技能命中敌人触发暴击时调用子技能",
"When": "CriCal",
"Where": "Target=3,CriRely=1,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400012103,
"Desc": "引雷1 在自身新回合开始时,调用子技能的触发类效果",
"When": "RouFro",
"Where": "Target=3,CriRely=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [
"1001"
],
"NoRelyTags": []
},
{
"Id": 400012104,
"Desc": "引雷2 但出于不可行动状态时,调用子技能的触发类效果",
"When": "SufEff",
"Where": "Target=3,EffType=1,EffID=604,EffTakeRel=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [
"1001"
],
"NoRelyTags": []
},
{
"Id": 400012105,
"Desc": "引雷3 【引雷】期间自身每次受到攻击时,调用子技能的触发类效果",
"When": "SufEff",
"Where": "Target=3,EffType=1,EffID=101",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [
"1001"
],
"NoRelyTags": []
},
{
"Id": 400022102,
"Desc": "加被动2 每回合行动前为己方全体清除任意一个非无法行动状态的减益状态并回复其5%最大生命值",
"When": "RouFro",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400022103,
"Desc": "加被动3 且在任意队友获得减益状态时自身获得20%行动值提升每回合仅触发1次。",
"When": "SufEff",
"Where": "Target=1,EffType=1,EffID=202,EffTakeRel=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400092102,
"Desc": "被动2 当敌方单位使其友方减益状态提前结束时令该单位失去30%当前生命值同时失去全部增益状态并获得1回合【石化】效果。",
"When": "ImpEff",
"Where": "Target=2,EffType=1,EffID=105,EffTakeRel=1,EffCovType=1,EffCovId=201,EffCovOp=0,EffReVal=1,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400102104,
"Desc": "被动4 每次被施加增益状态时自身获得1层【叹息之力】",
"When": "SufEff",
"Where": "Target=3,EffType=1,EffID=201",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400102105,
"Desc": "被动5 每次被施加减益状态时自身获得1层【叹息之力】",
"When": "SufEff",
"Where": "Target=3,EffType=1,EffID=202",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400102106,
"Desc": "被动6 每有1个队友死亡时自身获得10层【叹息之力】",
"When": "Dead",
"Where": "Target=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400102107,
"Desc": "被动7 每次战斗中首次受到致命伤害时,免除本次死亡",
"When": "SufDmg",
"Where": "Target=3,LetDmg=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400102108,
"Desc": "被动8 每次战斗中首次受到致命伤害时根据当前【叹息之力】层数回复自身生命值状态每层回复自身1%最大生命值状态。",
"When": "SufDmg",
"Where": "Target=3,LetDmg=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400102113,
"Desc": "敌方行动结束前,移除免除死亡",
"When": "ActEndFro",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400162101,
"Desc": "被动1 对己方任意目标造成治疗效果时会同时为其净化2个减益效果若目标没有减益效果则额外为其施加1回合【免疫】效果。",
"When": "ImpEff",
"Where": "Target=1,EffType=1,EffID=103",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400162102,
"Desc": "被动2 对己方任意目标造成治疗效果时同时自身治疗量溢出的120%将转变为【护盾】效果持续2回合。",
"When": "ImpEff",
"Where": "Target=1,EffType=1,EffID=103",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400191102,
"Desc": "猫猫威慑 敌方死亡后触发调用子技能",
"When": "Dead",
"Where": "Target=2",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400192101,
"Desc": "被动1 每次攻击后没有Buff5且标的生命值比例高于50%则给自己添加行动结束前触发的被动6。每回合仅触发1次 同时修改被动2回合CD",
"When": "ImpEff",
"Where": "Target=3,EffType=1,EffID=101,TriLim=1",
"AddCon": [
"Type=BuffRely,RelyType=0,Key=300192112,Op=1,Val=1",
"Type=ProJudge,JudgeType=1,Key=NowHp_Per,Op=0,Val=500"
],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400192102,
"Desc": "被动2 每次攻击后没有Buff5且目标的生命值比例小于等于50%自身获得1层【猫猫推理】。每回合仅触发1次同时修改被动1回合CD",
"When": "ImpEff",
"Where": "Target=3,EffType=1,EffID=101,TriLim=1",
"AddCon": [
"Type=BuffRely,RelyType=0,Key=300192112,Op=1,Val=1",
"Type=ProJudge,JudgeType=1,Key=NowHp_Per,Op=5,Val=500"
],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400192103,
"Desc": "被动3 每次攻击后若有Buff5则给自己添加行动结束前触发的被动6并修改被动1,2的回合CD",
"When": "ImpEff",
"Where": "Target=3,EffType=1,EffID=101,TriLim=1",
"AddCon": [
"Type=BuffRely,RelyType=0,Key=300192112,Op=0,Val=0"
],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400192104,
"Desc": "被动4 检测猫猫推理层数达到2层立即重置全部技能的冷却时间并且给自身加下一回合必定对目标进行重复攻击的标记Buff5之后清除猫猫推理",
"When": "ImpEff",
"Where": "Target=3,EffType=0,EffID=300192114",
"AddCon": [
"Type=BuffRely,RelyType=0,Key=300192114,Op=0,Val=1"
],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400192112,
"Desc": "被动6 行动结束前触发,对该目标重复释放一次本次攻击所用技能,触发后移除",
"When": "ActEndFro",
"Where": "Target=3",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400622101,
"Desc": "被动1 当队友向敌方任意1个目标发起攻击时给自己加被动2",
"When": "ImpEff",
"Where": "Target=1,EffType=1,EffID=101,TriLim=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
},
{
"Id": 400622102,
"Desc": "被动2 友军行动结束前触发跟随队友对目标造成攻击力40%的伤害",
"When": "ActEndFro",
"Where": "Target=1,TarActTar=1",
"AddCon": [],
"Type": "CallSkillPas",
"MaxEmitTimes": 0,
"OverlayTimes": 0,
"SameID": false,
"Tags": [],
"RelyTags": [],
"NoRelyTags": []
}
]

View File

@ -35,18 +35,6 @@
"comname": "useragreement",
"des": "登录界面用户隐私协议"
},
{
"id": "notice",
"file": "LoginNoticeWindow",
"unloadpkg": 0,
"loadtype": 1,
"full": 0,
"blur": 1,
"package": "login/login",
"packagename": "login",
"comname": "notice",
"des": "登录界面公告"
},
{
"id": "serverlist",
"file": "ServerListWindow",
@ -442,5 +430,29 @@
"packagename": "roledetails",
"comname": "main",
"des": "英雄详细信息"
},
{
"id": "bag",
"file": "BagWindow",
"unloadpkg": 0,
"loadtype": 1,
"full": 1,
"blur": 0,
"package": "bag/bag",
"packagename": "bag",
"comname": "main",
"des": "背包"
},
{
"id": "notice",
"file": "NoticeWindow",
"unloadpkg": 0,
"loadtype": 1,
"full": 0,
"blur": 0,
"package": "notice/notice",
"packagename": "notice",
"comname": "main",
"des": "背包"
}
]

View File

@ -68,7 +68,7 @@ var (
mainType: string(comm.ModuleHero),
subType: hero.HeroSubTypeChouka,
req: &pb.HeroChoukaReq{
HeroIds: []int32{42911},
HeroIds: []int32{14001, 14002, 14003, 14004, 14005, 14006, 14007},
},
rsp: &pb.HeroChoukaResp{},
// enabled: true,
@ -78,7 +78,7 @@ var (
subType: hero.HeroSubTypeList,
req: &pb.HeroListReq{},
rsp: &pb.HeroListResp{},
enabled: true,
// enabled: true,
next: func(robot *Robot, rsp proto.Message) {
if r, ok := rsp.(*pb.HeroListResp); ok {
tcs := []*TestCase{}
@ -94,11 +94,13 @@ var (
HeroRace: []*pb.CostCardData{
{
CostCardObj: heroId,
Amount: 1,
},
},
Hero: []*pb.CostCardData{
{
CostCardObj: heroId,
Amount: 1,
},
},
},
@ -111,18 +113,35 @@ var (
}
},
}, {
// enabled: true,
}, {
desc: "英雄列表",
mainType: string(comm.ModuleHero),
subType: hero.StrengthenUplv,
req: &pb.HeroStrengthenUplvReq{
HeroObjID: "62bd0489ff6632434a7d0d1f",
ExpCardID: "62bd0b4eca37634b8230d4be",
Amount: 1,
subType: hero.HeroSubTypeList,
req: &pb.HeroListReq{},
rsp: &pb.HeroListResp{},
enabled: true,
next: func(robot *Robot, rsp proto.Message) {
if r, ok := rsp.(*pb.HeroListResp); ok {
tcs := []*TestCase{}
// selHero := r.List[0] //选中的英雄
for _, v := range r.List {
heroId := v.Id
tc := &TestCase{
desc: "英雄升级",
mainType: string(comm.ModuleHero),
subType: hero.StrengthenUplv,
req: &pb.HeroStrengthenUplvReq{
HeroObjID: heroId,
ExpCardID: "62d124700625e43054ba307d",
Amount: 1,
},
rsp: &pb.HeroStrengthenUplvResp{},
enabled: true,
}
tcs = append(tcs, tc)
}
robot.addBuilders(tcs)
}
},
rsp: &pb.HeroStrengthenUplvResp{},
// enabled: true,
},
}
)

View File

@ -53,6 +53,7 @@ func initlog() {
writers := []io.Writer{
file,
os.Stdout}
//同时写文件和屏幕
fileAndStdoutWriter := io.MultiWriter(writers...)
if err == nil {
@ -93,12 +94,6 @@ func (r *Robot) Run() {
r.AccountLogin()
}
// go func() {
// for {
// r.handleRsp()
// }
// }()
ticker := time.NewTicker(time.Second * 5)
go func() {
for {
@ -120,18 +115,17 @@ func (r *Robot) Run() {
}
type TestCase struct {
id string //用例ID 如果没有指定,会自动赋值uuid
desc string //用例描述
mainType string //协议类型 L1
subType string //协议类型 L2
req proto.Message //请求类型
rsp proto.Message //响应类型
enabled bool //是否启用
start time.Time //启用时间
hs time.Duration //耗时
// requested bool //是否是请求的case
print func(rsp proto.Message) //定义打印
next func(robot *Robot, rsp proto.Message) //处理下一层用例请求
id string //用例ID 如果没有指定,会自动赋值uuid
desc string //用例描述
mainType string //协议类型 L1
subType string //协议类型 L2
req proto.Message //请求类型
rsp proto.Message //响应类型
enabled bool //是否启用
start time.Time //启用时间
hs time.Duration //耗时
print func(rsp proto.Message) //定义打印
next func(robot *Robot, rsp proto.Message) //处理下一层用例请求
}
//添加测试用用例
@ -162,7 +156,6 @@ func (r *Robot) handleReq() {
for _, b := range r.builderMap {
if b.enabled && b.req != nil {
time.Sleep(time.Millisecond * 500)
// r.reqCh <- b.id
b.start = time.Now()
r.start = time.Now()
head := &pb.UserMessage{MainType: b.mainType, SubType: b.subType}
@ -229,7 +222,6 @@ func (r *Robot) handleRsp(id string) {
uuid = id
}
// uuid := <-r.reqCh
r.handleNotify(uuid, msg)
if v, ok := r.builderMap[uuid]; ok {
if v.enabled &&

View File

@ -1,7 +1,6 @@
package robot
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/modules/task"
"go_dreamfactory/pb"
@ -12,7 +11,6 @@ import (
var (
taskBuilders = []*TestCase{
{
//list
desc: "任务列表",
mainType: string(comm.ModuleTask),
subType: task.TaskSubTypeList,
@ -20,13 +18,19 @@ var (
TaskTag: int32(comm.TASK_DAILY),
},
rsp: &pb.TaskListResp{},
print: func(rsp proto.Message) {
out := rsp.(*pb.TaskListResp)
for _, v := range out.List {
fmt.Printf("%v \n", v)
}
},
// print: func(rsp proto.Message) {
// out := rsp.(*pb.TaskListResp)
// for _, v := range out.List {
// fmt.Printf("%v \n", v)
// }
// },
// enabled: true,
next: func(robot *Robot, rsp proto.Message) {
tcs := []*TestCase{}
if _, ok := rsp.(*pb.TaskListResp); ok {
}
robot.addBuilders(tcs)
},
}, {
desc: "领取任务奖励",
mainType: string(comm.ModuleTask),

View File

@ -69,13 +69,13 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
}
for _, value := range tagHeroConfig.GetDataList() {
if _hero.HeroID == value.Id && _hero.Star == value.Star && _hero.Lv >= value.Maxlevel { // 找到了 满足升星条件
if _hero.HeroID == value.Id && _hero.Star == value.Star { //&& _hero.Lv >= value.Maxlevel { // 找到了 满足升星条件
target = value
break
}
}
if target == nil {
code = pb.ErrorCode_HeroNoExist
code = pb.ErrorCode_HeroStarErr //升星条件不满足
return
}
// 优先校验数量对不对

View File

@ -10,11 +10,16 @@ import (
//参数校验
func (this *apiComp) StrengthenUplvCheck(session comm.IUserSession, req *pb.HeroStrengthenUplvReq) (code pb.ErrorCode) {
if req.HeroObjID == "" || req.ExpCardID == "" || req.Amount <= 0 {
if req.HeroObjID == "" || len(req.ExpCards) == 0 {
code = pb.ErrorCode_ReqParameterError
return
}
for k, v := range req.ExpCards {
if v <= 0 || k == "" {
code = pb.ErrorCode_ReqParameterError
return
}
}
return
}
@ -23,13 +28,13 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
var (
curLv int32
curExp int32 // 当前英雄的经验
addExp int32 // 需要增加的经验
costRes map[string][]*cfg.Game_atn // 需要消耗的资源
_hero *pb.DBHero // 目标英雄
_expHero *pb.DBHero // 消耗英雄
curExp int32 // 当前英雄的经验
addExp int32 // 需要增加的经验
costGold int32 // 需要消耗的资源
_hero *pb.DBHero // 目标英雄
_expHero *pb.DBHero // 消耗英雄
)
costRes = make(map[string][]*cfg.Game_atn, 0)
code = this.StrengthenUplvCheck(session, req) // check
if code != pb.ErrorCode_Success {
return
@ -38,31 +43,43 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
if code != pb.ErrorCode_Success {
return
}
// 只有英雄卡才能升级
if _hero.CardType != comm.CardTypeHero {
code = pb.ErrorCode_HeroTypeErr
return
}
for k, v := range req.ExpCards {
_expHero, code = this.module.GetHero(session.GetUserId(), k) // 校验需要消耗经验卡牌的对象是否存在
if code != pb.ErrorCode_Success {
return
}
if _expHero.Block { // 锁定的卡不允许被消耗
code = pb.ErrorCode_HeroIsLock
return
}
_expHero, code = this.module.GetHero(session.GetUserId(), req.ExpCardID) // 校验需要消耗经验卡牌的对象是否存在
if code != pb.ErrorCode_Success {
return
if v > _expHero.SameCount { // 校验数量
code = pb.ErrorCode_HeroNoEnough
return
}
// 查询 本次消耗会获得多少经验
expConf := this.module.configure.GetHeroExp(_expHero.HeroID)
if expConf != nil {
addExp += expConf.Heroexp * v
}
costGold = expConf.Needgold * v // 需要消耗的金币
if _expHero.SameCount < v { // 消耗经验卡片数量不足
code = pb.ErrorCode_HeroNoEnough
return
}
}
if req.Amount <= 0 { // 消耗数量校验
code = pb.ErrorCode_HeroNoExist
return
}
if _expHero.Block { // 锁定的卡不允许被消耗
code = pb.ErrorCode_HeroIsLock
if addExp == 0 {
code = pb.ErrorCode_HeroExpTypeErr
return
}
curLv = _hero.Lv
curExp = _hero.Exp // 当前英雄的经验
addExp = 1000
// 查询 本次消耗会获得多少经验
expConf := this.module.configure.GetHeroExp(_expHero.HeroID)
if expConf != nil {
addExp = expConf.Heroexp * req.Amount
}
if _expHero.SameCount < req.Amount { // 消耗经验卡片数量不足
code = pb.ErrorCode_HeroNoEnough
return
}
// 校验当前能不能升级
if _hero.Lv >= _hero.Star*comm.HeroStarLvRatio { // 达到最大等级
@ -78,40 +95,6 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
code = pb.ErrorCode_HeroMaxLv
return
}
curExp += addExp // 先把经验加上
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.module.configure.GetHeroLv(curLv)
if _data == nil { // 等级加失败了 回到原来的等级
curLv -= 1
break
}
for _, v := range _data.Gold {
if _, ok := costRes[v.T]; !ok {
costRes[v.T] = append(costRes[v.T], v)
} else {
for _, v1 := range costRes[v.T] {
if v1.T == v.T && v1.A == v.A {
v1.N += v.N
}
}
}
}
}
}
} else {
code = pb.ErrorCode_HeroNoExist
return
@ -121,29 +104,39 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
return
}
this.module.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costRes["gold"], addExp)
// 执行升级逻辑
code = this.module.AddCardExp(session.GetUserId(), req.HeroObjID, addExp) // 加经验
this.module.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costGold, addExp)
// 消耗金币
res := make([]*cfg.Game_atn, 0)
_d := &cfg.Game_atn{
A: "attr",
T: "gold",
N: costGold,
}
res = append(res, _d)
code = this.module.CheckConsumeRes(session.GetUserId(), res, true)
if code != pb.ErrorCode_Success {
return
}
// 消耗道具
for _, v := range costRes {
code = this.module.CheckConsumeRes(session.GetUserId(), v, true)
if code != pb.ErrorCode_Success {
// 执行升级逻辑
code = this.module.AddCardExp(session.GetUserId(), req.HeroObjID, addExp) // 加经验
if code != pb.ErrorCode_Success {
// 升级失败资源回退
code = this.module.DispenseRes(session.GetUserId(), res, true)
return
}
// 删除经验卡
for k, v := range req.ExpCards {
err1 := this.module.modelHero.consumeOneHeroCard(session.GetUserId(), k, v)
if err1 != nil {
code = pb.ErrorCode_HeroNoEnough
this.module.Errorf("delete err failed err:%T!", err1)
return
}
}
// 删除经验卡
err1 := this.module.modelHero.consumeOneHeroCard(session.GetUserId(), req.ExpCardID, req.Amount)
if err1 != nil {
code = pb.ErrorCode_HeroNoEnough
this.module.Errorf("delete err failed err:%T!", err1)
return
}
err1 = this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化
err1 := this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化
if err1 != nil {
this.module.Errorf("PushHeroProperty err!")
}

View File

@ -236,7 +236,7 @@ func (this *ModelItemsComp) Pack_AddItemToUserPackByGrid(uId string, gridid stri
if num < 0 {
err = ItemNotEnoughError
} else {
if num > int64(conf.Maxnum) {
if num > int64(conf.UpperLimit) {
err = GirdAmountUpper
return
} else {
@ -281,15 +281,15 @@ func (this *ModelItemsComp) pack_addItemToUserPack(uid string, items []*pb.DB_Us
update = append(update, v)
break
} else if num > 0 && num > int64(v.Amount) {
if num <= int64(conf.Maxnum) {
if num <= int64(conf.UpperLimit) {
leftnum = 0
v.Amount = uint32(num)
update = append(update, v)
break
} else {
if v.Amount < uint32(conf.Maxnum) {
leftnum = int64(num - int64(conf.Maxnum))
v.Amount = uint32(conf.Maxnum)
if v.Amount < uint32(conf.UpperLimit) {
leftnum = int64(num - int64(conf.UpperLimit))
v.Amount = uint32(conf.UpperLimit)
update = append(update, v)
}
}
@ -306,7 +306,7 @@ func (this *ModelItemsComp) pack_addItemToUserPack(uid string, items []*pb.DB_Us
if leftnum > 0 { //还没有放完 寻找空的格子填充
index := int32(len(items))
for leftnum > 0 { //需要补充格子
if leftnum <= int64(conf.Maxnum) {
if leftnum <= int64(conf.UpperLimit) {
grid := &pb.DB_UserItemData{
GridId: primitive.NewObjectID().Hex(),
UId: uid,
@ -320,12 +320,12 @@ func (this *ModelItemsComp) pack_addItemToUserPack(uid string, items []*pb.DB_Us
leftnum = 0
break
} else {
leftnum -= int64(conf.Maxnum)
leftnum -= int64(conf.UpperLimit)
grid := &pb.DB_UserItemData{
GridId: primitive.NewObjectID().Hex(),
UId: uid,
ItemId: itemId,
Amount: uint32(conf.Maxnum),
Amount: uint32(conf.UpperLimit),
CTime: time.Now().Unix(),
IsNewItem: isNew,
}

View File

@ -84,6 +84,10 @@ const (
ErrorCode_HeroMaxAwaken ErrorCode = 1312 // 达到最大觉醒等级
ErrorCode_HeroIsLock ErrorCode = 1313 // 英雄被锁定不能被消耗
ErrorCode_HeroMaxCount ErrorCode = 1314 // 英雄达到最大数量
ErrorCode_HeroCostTypeErr ErrorCode = 1315 // 消耗英雄参数不匹配
ErrorCode_HeroStarErr ErrorCode = 1316 // 不满足升星条件
ErrorCode_HeroTypeErr ErrorCode = 1317 // 升级英雄类型不对
ErrorCode_HeroExpTypeErr ErrorCode = 1318 // 技能升级卡类型不对
// equipment
ErrorCode_EquipmentOnFoundEquipment ErrorCode = 1400 // 未找到武器
ErrorCode_EquipmentLvlimitReached ErrorCode = 1401 // 武器等级已达上限
@ -160,6 +164,10 @@ var (
1312: "HeroMaxAwaken",
1313: "HeroIsLock",
1314: "HeroMaxCount",
1315: "HeroCostTypeErr",
1316: "HeroStarErr",
1317: "HeroTypeErr",
1318: "HeroExpTypeErr",
1400: "EquipmentOnFoundEquipment",
1401: "EquipmentLvlimitReached",
1500: "StoryNotFindChapter",
@ -230,6 +238,10 @@ var (
"HeroMaxAwaken": 1312,
"HeroIsLock": 1313,
"HeroMaxCount": 1314,
"HeroCostTypeErr": 1315,
"HeroStarErr": 1316,
"HeroTypeErr": 1317,
"HeroExpTypeErr": 1318,
"EquipmentOnFoundEquipment": 1400,
"EquipmentLvlimitReached": 1401,
"StoryNotFindChapter": 1500,
@ -275,7 +287,7 @@ var File_errorcode_proto protoreflect.FileDescriptor
var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2a, 0x87, 0x0b, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x6f, 0x2a, 0xd6, 0x0b, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d,
0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12,
0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
@ -348,23 +360,28 @@ var file_errorcode_proto_rawDesc = []byte{
0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x41, 0x77, 0x61, 0x6b, 0x65, 0x6e, 0x10,
0xa0, 0x0a, 0x12, 0x0f, 0x0a, 0x0a, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x73, 0x4c, 0x6f, 0x63, 0x6b,
0x10, 0xa1, 0x0a, 0x12, 0x11, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x61, 0x78, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x10, 0xa2, 0x0a, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d,
0x65, 0x6e, 0x74, 0x4f, 0x6e, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d,
0x65, 0x6e, 0x74, 0x10, 0xf8, 0x0a, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d,
0x65, 0x6e, 0x74, 0x4c, 0x76, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65,
0x64, 0x10, 0xf9, 0x0a, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x74,
0x46, 0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x10, 0xdc, 0x0b, 0x12, 0x12,
0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10,
0xdd, 0x0b, 0x12, 0x0d, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc0,
0x0c, 0x12, 0x0e, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x10, 0xc1,
0x0c, 0x12, 0x0f, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x10,
0xc2, 0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76,
0x65, 0x64, 0x10, 0xc3, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74,
0x69, 0x76, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc6, 0x0c, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61,
0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x10,
0xc4, 0x0c, 0x12, 0x17, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65,
0x4e, 0x6f, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xc5, 0x0c, 0x42, 0x06, 0x5a, 0x04, 0x2e,
0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x75, 0x6e, 0x74, 0x10, 0xa2, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x48, 0x65, 0x72, 0x6f, 0x43, 0x6f,
0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa3, 0x0a, 0x12, 0x10, 0x0a, 0x0b,
0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x45, 0x72, 0x72, 0x10, 0xa4, 0x0a, 0x12, 0x10,
0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x45, 0x72, 0x72, 0x10, 0xa5, 0x0a,
0x12, 0x13, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x78, 0x70, 0x54, 0x79, 0x70, 0x65, 0x45,
0x72, 0x72, 0x10, 0xa6, 0x0a, 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x4f, 0x6e, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x10, 0xf8, 0x0a, 0x12, 0x1c, 0x0a, 0x17, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
0x6e, 0x74, 0x4c, 0x76, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64,
0x10, 0xf9, 0x0a, 0x12, 0x18, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x74, 0x46,
0x69, 0x6e, 0x64, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x10, 0xdc, 0x0b, 0x12, 0x12, 0x0a,
0x0d, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x44, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xdd,
0x0b, 0x12, 0x0d, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc0, 0x0c,
0x12, 0x0e, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x10, 0xc1, 0x0c,
0x12, 0x0f, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x10, 0xc2,
0x0c, 0x12, 0x11, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
0x64, 0x10, 0xc3, 0x0c, 0x12, 0x13, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69,
0x76, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0xc6, 0x0c, 0x12, 0x16, 0x0a, 0x11, 0x54, 0x61, 0x73,
0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xc4,
0x0c, 0x12, 0x17, 0x0a, 0x12, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e,
0x6f, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xc5, 0x0c, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -262,9 +262,8 @@ type HeroStrengthenUplvReq struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
HeroObjID string `protobuf:"bytes,1,opt,name=heroObjID,proto3" json:"heroObjID"` // 英雄对象ID
ExpCardID string `protobuf:"bytes,2,opt,name=expCardID,proto3" json:"expCardID"` // 经验卡对象ID
Amount int32 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount"` // 消耗经验卡数量}
HeroObjID string `protobuf:"bytes,1,opt,name=heroObjID,proto3" json:"heroObjID"` // 英雄对象ID
ExpCards map[string]int32 `protobuf:"bytes,2,rep,name=expCards,proto3" json:"expCards" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}
func (x *HeroStrengthenUplvReq) Reset() {
@ -306,18 +305,11 @@ func (x *HeroStrengthenUplvReq) GetHeroObjID() string {
return ""
}
func (x *HeroStrengthenUplvReq) GetExpCardID() string {
func (x *HeroStrengthenUplvReq) GetExpCards() map[string]int32 {
if x != nil {
return x.ExpCardID
return x.ExpCards
}
return ""
}
func (x *HeroStrengthenUplvReq) GetAmount() int32 {
if x != nil {
return x.Amount
}
return 0
return nil
}
// 卡牌升级返回
@ -1389,114 +1381,118 @@ var file_hero_hero_msg_proto_rawDesc = []byte{
0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61,
0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x6b, 0x0a, 0x15, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72,
0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e, 0x55, 0x70, 0x6c, 0x76, 0x52, 0x65, 0x71, 0x12, 0x1c,
0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09,
0x65, 0x78, 0x70, 0x43, 0x61, 0x72, 0x64, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x65, 0x78, 0x70, 0x43, 0x61, 0x72, 0x64, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,
0x6e, 0x74, 0x22, 0x35, 0x0a, 0x16, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67,
0x74, 0x68, 0x65, 0x6e, 0x55, 0x70, 0x6c, 0x76, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04,
0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48,
0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x22, 0x48, 0x0a, 0x0c, 0x43, 0x6f, 0x73,
0x74, 0x43, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x73,
0x74, 0x43, 0x61, 0x72, 0x64, 0x4f, 0x62, 0x6a, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
0x63, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4f, 0x62, 0x6a, 0x12, 0x16, 0x0a, 0x06, 0x61,
0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x6d, 0x6f,
0x75, 0x6e, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x17, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65,
0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e, 0x55, 0x70, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x71, 0x12,
0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb4, 0x01, 0x0a, 0x15, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74,
0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e, 0x55, 0x70, 0x6c, 0x76, 0x52, 0x65, 0x71, 0x12,
0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x21, 0x0a,
0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f,
0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f,
0x12, 0x29, 0x0a, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x52, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74,
0x61, 0x52, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x52, 0x61, 0x63, 0x65, 0x22, 0x37, 0x0a, 0x18, 0x48,
0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e, 0x55, 0x70, 0x53,
0x74, 0x61, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18,
0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x40, 0x0a,
0x08, 0x65, 0x78, 0x70, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x24, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e,
0x55, 0x70, 0x6c, 0x76, 0x52, 0x65, 0x71, 0x2e, 0x45, 0x78, 0x70, 0x43, 0x61, 0x72, 0x64, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x65, 0x78, 0x70, 0x43, 0x61, 0x72, 0x64, 0x73, 0x1a,
0x3b, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x43, 0x61, 0x72, 0x64, 0x73, 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,
0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x35, 0x0a, 0x16,
0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e, 0x55, 0x70,
0x6c, 0x76, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68,
0x65, 0x72, 0x6f, 0x22, 0x48, 0x0a, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x44,
0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4f,
0x62, 0x6a, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x61,
0x72, 0x64, 0x4f, 0x62, 0x6a, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x85, 0x01,
0x0a, 0x17, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e,
0x55, 0x70, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72,
0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65,
0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x21, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64,
0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x29, 0x0a, 0x08, 0x68, 0x65,
0x72, 0x6f, 0x52, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43,
0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x68, 0x65, 0x72,
0x6f, 0x52, 0x61, 0x63, 0x65, 0x22, 0x37, 0x0a, 0x18, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72,
0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e, 0x55, 0x70, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x73,
0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x22, 0x5a,
0x0a, 0x18, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e,
0x55, 0x70, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65,
0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68,
0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74,
0x43, 0x61, 0x72, 0x64, 0x4f, 0x62, 0x6a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63,
0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4f, 0x62, 0x6a, 0x22, 0x38, 0x0a, 0x19, 0x48, 0x65,
0x72, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e, 0x55, 0x70, 0x53, 0x6b,
0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04,
0x68, 0x65, 0x72, 0x6f, 0x22, 0x5a, 0x0a, 0x18, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65,
0x6e, 0x67, 0x74, 0x68, 0x65, 0x6e, 0x55, 0x70, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x71,
0x68, 0x65, 0x72, 0x6f, 0x22, 0x4e, 0x0a, 0x10, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f,
0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f,
0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72,
0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x4f, 0x62,
0x6a, 0x49, 0x44, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x73, 0x74, 0x4f,
0x62, 0x6a, 0x49, 0x44, 0x22, 0x71, 0x0a, 0x11, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f,
0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72,
0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f,
0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, 0x27,
0x0a, 0x0a, 0x75, 0x70, 0x53, 0x74, 0x61, 0x72, 0x43, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x0a, 0x75, 0x70, 0x53,
0x74, 0x61, 0x72, 0x43, 0x61, 0x72, 0x64, 0x22, 0x35, 0x0a, 0x15, 0x48, 0x65, 0x72, 0x6f, 0x52,
0x65, 0x73, 0x6f, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71,
0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x20,
0x0a, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4f, 0x62, 0x6a, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4f, 0x62, 0x6a,
0x22, 0x38, 0x0a, 0x19, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68,
0x65, 0x6e, 0x55, 0x70, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a,
0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42,
0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x22, 0x4e, 0x0a, 0x10, 0x48, 0x65,
0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1c,
0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09,
0x63, 0x6f, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
0x09, 0x63, 0x6f, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x22, 0x71, 0x0a, 0x11, 0x48, 0x65,
0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12,
0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e,
0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x16, 0x0a, 0x06,
0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x6e,
0x65, 0x72, 0x67, 0x79, 0x12, 0x27, 0x0a, 0x0a, 0x75, 0x70, 0x53, 0x74, 0x61, 0x72, 0x43, 0x61,
0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72,
0x6f, 0x52, 0x0a, 0x75, 0x70, 0x53, 0x74, 0x61, 0x72, 0x43, 0x61, 0x72, 0x64, 0x22, 0x35, 0x0a,
0x15, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62,
0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f,
0x62, 0x6a, 0x49, 0x44, 0x22, 0x4d, 0x0a, 0x16, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f,
0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b,
0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x22, 0x4d,
0x0a, 0x16, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52,
0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52,
0x04, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x22, 0x71, 0x0a,
0x19, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x73,
0x65, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65,
0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68,
0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x45,
0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x75, 0x73, 0x65,
0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x54, 0x79, 0x70,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65,
0x22, 0x39, 0x0a, 0x1a, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e, 0x61, 0x6e, 0x63,
0x65, 0x55, 0x73, 0x65, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b,
0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44,
0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x65,
0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x6e, 0x65,
0x72, 0x67, 0x79, 0x22, 0x71, 0x0a, 0x19, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x73, 0x6f, 0x6e,
0x61, 0x6e, 0x63, 0x65, 0x55, 0x73, 0x65, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x52, 0x65, 0x71,
0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x12, 0x1c,
0x0a, 0x09, 0x75, 0x73, 0x65, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x75, 0x73, 0x65, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, 0x18, 0x0a, 0x07,
0x75, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x75,
0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x39, 0x0a, 0x1a, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65,
0x73, 0x6f, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x73, 0x65, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79,
0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72,
0x6f, 0x22, 0x2d, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x77, 0x61, 0x6b, 0x65, 0x6e, 0x52,
0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44,
0x22, 0x2d, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x77, 0x61, 0x6b, 0x65, 0x6e, 0x52, 0x65,
0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x22,
0x29, 0x0a, 0x0d, 0x48, 0x65, 0x72, 0x6f, 0x43, 0x68, 0x6f, 0x75, 0x6b, 0x61, 0x52, 0x65, 0x71,
0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x05, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x73, 0x22, 0x31, 0x0a, 0x0e, 0x48, 0x65,
0x72, 0x6f, 0x43, 0x68, 0x6f, 0x75, 0x6b, 0x61, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x06,
0x68, 0x65, 0x72, 0x6f, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44,
0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x65, 0x73, 0x22, 0x9e, 0x02,
0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x16,
0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x50,
0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12,
0x40, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
0x79, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 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, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e,
0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 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, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25,
0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a,
0x06, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68,
0x65, 0x72, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4c, 0x6f, 0x63,
0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65,
0x72, 0x6f, 0x22, 0x2d, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x72, 0x6f,
0x50, 0x75, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72,
0x6f, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x22, 0x2d, 0x0a, 0x0d, 0x48,
0x65, 0x72, 0x6f, 0x41, 0x77, 0x61, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09,
0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x44, 0x22, 0x2d, 0x0a, 0x0e, 0x48, 0x65,
0x72, 0x6f, 0x41, 0x77, 0x61, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1b, 0x0a, 0x04,
0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48,
0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x22, 0x29, 0x0a, 0x0d, 0x48, 0x65, 0x72,
0x6f, 0x43, 0x68, 0x6f, 0x75, 0x6b, 0x61, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65,
0x72, 0x6f, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x68, 0x65, 0x72,
0x6f, 0x49, 0x64, 0x73, 0x22, 0x31, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x43, 0x68, 0x6f, 0x75,
0x6b, 0x61, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1f, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x65, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52,
0x06, 0x68, 0x65, 0x72, 0x6f, 0x65, 0x73, 0x22, 0x9e, 0x02, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f,
0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64,
0x12, 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
0x79, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0b, 0x61, 0x64, 0x64,
0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e,
0x2e, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x41, 0x64,
0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x1a, 0x3b, 0x0a, 0x0d, 0x50,
0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 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, 0x05, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50,
0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 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, 0x05, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f,
0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x69, 0x64, 0x22,
0x2b, 0x0a, 0x0c, 0x48, 0x65, 0x72, 0x6f, 0x4c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12,
0x1b, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e,
0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x22, 0x2d, 0x0a, 0x0e,
0x41, 0x64, 0x64, 0x4e, 0x65, 0x77, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1b,
0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44,
0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x42, 0x06, 0x5a, 0x04, 0x2e,
0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -1511,7 +1507,7 @@ func file_hero_hero_msg_proto_rawDescGZIP() []byte {
return file_hero_hero_msg_proto_rawDescData
}
var file_hero_hero_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
var file_hero_hero_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
var file_hero_hero_msg_proto_goTypes = []interface{}{
(*HeroInfoReq)(nil), // 0: HeroInfoReq
(*HeroInfoResp)(nil), // 1: HeroInfoResp
@ -1539,33 +1535,35 @@ var file_hero_hero_msg_proto_goTypes = []interface{}{
(*HeroLockReq)(nil), // 23: HeroLockReq
(*HeroLockResp)(nil), // 24: HeroLockResp
(*AddNewHeroPush)(nil), // 25: AddNewHeroPush
nil, // 26: HeroProperty.PropertyEntry
nil, // 27: HeroProperty.AddPropertyEntry
(*DBHero)(nil), // 28: DBHero
nil, // 26: HeroStrengthenUplvReq.ExpCardsEntry
nil, // 27: HeroProperty.PropertyEntry
nil, // 28: HeroProperty.AddPropertyEntry
(*DBHero)(nil), // 29: DBHero
}
var file_hero_hero_msg_proto_depIdxs = []int32{
28, // 0: HeroInfoResp.base:type_name -> DBHero
28, // 1: HeroListResp.list:type_name -> DBHero
28, // 2: HeroStrengthenUplvResp.hero:type_name -> DBHero
7, // 3: HeroStrengthenUpStarReq.hero:type_name -> CostCardData
7, // 4: HeroStrengthenUpStarReq.heroRace:type_name -> CostCardData
28, // 5: HeroStrengthenUpStarResp.hero:type_name -> DBHero
28, // 6: HeroStrengthenUpSkillResp.hero:type_name -> DBHero
28, // 7: HeroResonanceResp.hero:type_name -> DBHero
28, // 8: HeroResonanceResp.upStarCard:type_name -> DBHero
28, // 9: HeroResonanceResetResp.hero:type_name -> DBHero
28, // 10: HeroResonanceUseEnergyResp.hero:type_name -> DBHero
28, // 11: HeroAwakenResp.hero:type_name -> DBHero
28, // 12: HeroChoukaResp.heroes:type_name -> DBHero
26, // 13: HeroProperty.property:type_name -> HeroProperty.PropertyEntry
27, // 14: HeroProperty.addProperty:type_name -> HeroProperty.AddPropertyEntry
28, // 15: HeroLockResp.hero:type_name -> DBHero
28, // 16: AddNewHeroPush.hero:type_name -> DBHero
17, // [17:17] is the sub-list for method output_type
17, // [17:17] is the sub-list for method input_type
17, // [17:17] is the sub-list for extension type_name
17, // [17:17] is the sub-list for extension extendee
0, // [0:17] is the sub-list for field type_name
29, // 0: HeroInfoResp.base:type_name -> DBHero
29, // 1: HeroListResp.list:type_name -> DBHero
26, // 2: HeroStrengthenUplvReq.expCards:type_name -> HeroStrengthenUplvReq.ExpCardsEntry
29, // 3: HeroStrengthenUplvResp.hero:type_name -> DBHero
7, // 4: HeroStrengthenUpStarReq.hero:type_name -> CostCardData
7, // 5: HeroStrengthenUpStarReq.heroRace:type_name -> CostCardData
29, // 6: HeroStrengthenUpStarResp.hero:type_name -> DBHero
29, // 7: HeroStrengthenUpSkillResp.hero:type_name -> DBHero
29, // 8: HeroResonanceResp.hero:type_name -> DBHero
29, // 9: HeroResonanceResp.upStarCard:type_name -> DBHero
29, // 10: HeroResonanceResetResp.hero:type_name -> DBHero
29, // 11: HeroResonanceUseEnergyResp.hero:type_name -> DBHero
29, // 12: HeroAwakenResp.hero:type_name -> DBHero
29, // 13: HeroChoukaResp.heroes:type_name -> DBHero
27, // 14: HeroProperty.property:type_name -> HeroProperty.PropertyEntry
28, // 15: HeroProperty.addProperty:type_name -> HeroProperty.AddPropertyEntry
29, // 16: HeroLockResp.hero:type_name -> DBHero
29, // 17: AddNewHeroPush.hero:type_name -> DBHero
18, // [18:18] is the sub-list for method output_type
18, // [18:18] is the sub-list for method input_type
18, // [18:18] is the sub-list for extension type_name
18, // [18:18] is the sub-list for extension extendee
0, // [0:18] is the sub-list for field type_name
}
func init() { file_hero_hero_msg_proto_init() }
@ -1894,7 +1892,7 @@ func file_hero_hero_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_hero_hero_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 28,
NumMessages: 29,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -68,6 +68,9 @@ enum ErrorCode {
HeroIsLock = 1313; //
HeroMaxCount = 1314; //
HeroCostTypeErr = 1315; //
HeroStarErr = 1316; //
HeroTypeErr = 1317; //
HeroExpTypeErr = 1318; //
// equipment
EquipmentOnFoundEquipment = 1400; //

View File

@ -25,8 +25,7 @@ message ItemData {
//
message HeroStrengthenUplvReq {
string heroObjID = 1; // ID
string expCardID = 2; // ID
int32 amount = 3; // }
map<string, int32> expCards = 2;
}
//

View File

@ -0,0 +1,37 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type _ALocalizeConfig struct {
Key string
}
func New_ALocalizeConfig(_buf map[string]interface{}) (_v interface{}, err error) {
var id string
var _ok_ bool
if id, _ok_ = _buf["__type__"].(string) ; !_ok_ {
return nil, errors.New("type id missing")
}
switch id {
case "LocalizeConfig_CN": return New_LocalizeConfig_CN(_buf);
case "LocalizeConfig_EN": return New_LocalizeConfig_EN(_buf);
case "LocalizeConfig_TW": return New_LocalizeConfig_TW(_buf);
default: return nil, errors.New("unknown type id")
}
return
}
func New_ALocalizeConfig_Body(_buf map[string]interface{}) (_v *_ALocalizeConfig, err error) {
_v = &_ALocalizeConfig{}
{ var _ok_ bool; if _v.Key, _ok_ = _buf["key"].(string); !_ok_ { err = errors.New("key error"); return } }
return
}

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type Localize_LocalizeConfig_CNCategory struct {
_dataMap map[string]*_LocalizeConfig_CN
_dataList []*_LocalizeConfig_CN
}
func NewLocalize_LocalizeConfig_CNCategory(_buf []map[string]interface{}) (*Localize_LocalizeConfig_CNCategory, error) {
_dataList := make([]*_LocalizeConfig_CN, 0, len(_buf))
dataMap := make(map[string]*_LocalizeConfig_CN)
for _, _ele_ := range _buf {
if _v, err2 := New_LocalizeConfig_CN(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Key] = _v
}
}
return &Localize_LocalizeConfig_CNCategory{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *Localize_LocalizeConfig_CNCategory) GetDataMap() map[string]*_LocalizeConfig_CN {
return table._dataMap
}
func (table *Localize_LocalizeConfig_CNCategory) GetDataList() []*_LocalizeConfig_CN {
return table._dataList
}
func (table *Localize_LocalizeConfig_CNCategory) Get(key string) *_LocalizeConfig_CN {
return table._dataMap[key]
}

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type Localize_LocalizeConfig_ENCategory struct {
_dataMap map[string]*_LocalizeConfig_EN
_dataList []*_LocalizeConfig_EN
}
func NewLocalize_LocalizeConfig_ENCategory(_buf []map[string]interface{}) (*Localize_LocalizeConfig_ENCategory, error) {
_dataList := make([]*_LocalizeConfig_EN, 0, len(_buf))
dataMap := make(map[string]*_LocalizeConfig_EN)
for _, _ele_ := range _buf {
if _v, err2 := New_LocalizeConfig_EN(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Key] = _v
}
}
return &Localize_LocalizeConfig_ENCategory{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *Localize_LocalizeConfig_ENCategory) GetDataMap() map[string]*_LocalizeConfig_EN {
return table._dataMap
}
func (table *Localize_LocalizeConfig_ENCategory) GetDataList() []*_LocalizeConfig_EN {
return table._dataList
}
func (table *Localize_LocalizeConfig_ENCategory) Get(key string) *_LocalizeConfig_EN {
return table._dataMap[key]
}

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type Localize_LocalizeConfig_TWCategory struct {
_dataMap map[string]*_LocalizeConfig_TW
_dataList []*_LocalizeConfig_TW
}
func NewLocalize_LocalizeConfig_TWCategory(_buf []map[string]interface{}) (*Localize_LocalizeConfig_TWCategory, error) {
_dataList := make([]*_LocalizeConfig_TW, 0, len(_buf))
dataMap := make(map[string]*_LocalizeConfig_TW)
for _, _ele_ := range _buf {
if _v, err2 := New_LocalizeConfig_TW(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Key] = _v
}
}
return &Localize_LocalizeConfig_TWCategory{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *Localize_LocalizeConfig_TWCategory) GetDataMap() map[string]*_LocalizeConfig_TW {
return table._dataMap
}
func (table *Localize_LocalizeConfig_TWCategory) GetDataList() []*_LocalizeConfig_TW {
return table._dataList
}
func (table *Localize_LocalizeConfig_TWCategory) Get(key string) *_LocalizeConfig_TW {
return table._dataMap[key]
}

View File

@ -0,0 +1,29 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type _LocalizeConfig_CN struct {
_ALocalizeConfig
TextCn string
}
func (_LocalizeConfig_CN) GetTypeId() int {
return 2049582687
}
func New_LocalizeConfig_CN(_buf map[string]interface{}) (_v *_LocalizeConfig_CN, err error) {
_v = &_LocalizeConfig_CN{}
var _p *_ALocalizeConfig
if _p, err = New_ALocalizeConfig_Body(_buf) ; err != nil { return }
_v._ALocalizeConfig = *_p
{ var _ok_ bool; if _v.TextCn, _ok_ = _buf["text_cn"].(string); !_ok_ { err = errors.New("text_cn error"); return } }
return
}

View File

@ -0,0 +1,29 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type _LocalizeConfig_EN struct {
_ALocalizeConfig
TextEn string
}
func (_LocalizeConfig_EN) GetTypeId() int {
return 2049582749
}
func New_LocalizeConfig_EN(_buf map[string]interface{}) (_v *_LocalizeConfig_EN, err error) {
_v = &_LocalizeConfig_EN{}
var _p *_ALocalizeConfig
if _p, err = New_ALocalizeConfig_Body(_buf) ; err != nil { return }
_v._ALocalizeConfig = *_p
{ var _ok_ bool; if _v.TextEn, _ok_ = _buf["text_en"].(string); !_ok_ { err = errors.New("text_en error"); return } }
return
}

View File

@ -0,0 +1,29 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type _LocalizeConfig_TW struct {
_ALocalizeConfig
TextTw string
}
func (_LocalizeConfig_TW) GetTypeId() int {
return 2049583223
}
func New_LocalizeConfig_TW(_buf map[string]interface{}) (_v *_LocalizeConfig_TW, err error) {
_v = &_LocalizeConfig_TW{}
var _p *_ALocalizeConfig
if _p, err = New_ALocalizeConfig_Body(_buf) ; err != nil { return }
_v._ALocalizeConfig = *_p
{ var _ok_ bool; if _v.TextTw, _ok_ = _buf["text_tw"].(string); !_ok_ { err = errors.New("text_tw error"); return } }
return
}

View File

@ -12,12 +12,14 @@ package cfg
type JsonLoader func(string) ([]map[string]interface{}, error)
type Tables struct {
LocalizeConfig_CNCategory *Localize_LocalizeConfig_CNCategory
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
language *Game_language
extservers *Game_extservers
skillAtk *Game_skillAtk
skillAfteratk *Game_skillAfteratk
@ -47,6 +49,9 @@ type Tables struct {
storyHard *Game_storyHard
storyPurgatory *Game_storyPurgatory
serverList *Game_serverList
com *Game_com
newSkill *Game_newSkill
model *Game_model
}
func NewTables(loader JsonLoader) (*Tables, error) {
@ -54,6 +59,24 @@ func NewTables(loader JsonLoader) (*Tables, error) {
var buf []map[string]interface{}
tables := &Tables{}
if buf, err = loader("LocalizeConfig_CN") ; err != nil {
return nil, err
}
if tables.LocalizeConfig_CNCategory, err = NewLocalize_LocalizeConfig_CNCategory(buf) ; err != nil {
return nil, err
}
if buf, err = loader("LocalizeConfig_EN") ; err != nil {
return nil, err
}
if tables.LocalizeConfig_ENCategory, err = NewLocalize_LocalizeConfig_ENCategory(buf) ; err != nil {
return nil, err
}
if buf, err = loader("LocalizeConfig_TW") ; err != nil {
return nil, err
}
if tables.LocalizeConfig_TWCategory, err = NewLocalize_LocalizeConfig_TWCategory(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_global") ; err != nil {
return nil, err
}
@ -84,12 +107,6 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.plot, err = NewGame_plot(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_language") ; err != nil {
return nil, err
}
if tables.language, err = NewGame_language(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_extservers") ; err != nil {
return nil, err
}
@ -264,5 +281,23 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.serverList, err = NewGame_serverList(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_com") ; err != nil {
return nil, err
}
if tables.com, err = NewGame_com(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_newskill") ; err != nil {
return nil, err
}
if tables.newSkill, err = NewGame_newSkill(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_model") ; err != nil {
return nil, err
}
if tables.model, err = NewGame_model(buf) ; err != nil {
return nil, err
}
return tables, nil
}

View File

@ -9,15 +9,15 @@
package cfg
type Game_com struct {
_dataMap map[string]*Game_gameComData
_dataList []*Game_gameComData
_dataMap map[string]*Game_comData
_dataList []*Game_comData
}
func NewGame_com(_buf []map[string]interface{}) (*Game_com, error) {
_dataList := make([]*Game_gameComData, 0, len(_buf))
dataMap := make(map[string]*Game_gameComData)
_dataList := make([]*Game_comData, 0, len(_buf))
dataMap := make(map[string]*Game_comData)
for _, _ele_ := range _buf {
if _v, err2 := NewGame_gameComData(_ele_); err2 != nil {
if _v, err2 := NewGame_comData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
@ -27,15 +27,15 @@ func NewGame_com(_buf []map[string]interface{}) (*Game_com, error) {
return &Game_com{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *Game_com) GetDataMap() map[string]*Game_gameComData {
func (table *Game_com) GetDataMap() map[string]*Game_comData {
return table._dataMap
}
func (table *Game_com) GetDataList() []*Game_gameComData {
func (table *Game_com) GetDataList() []*Game_comData {
return table._dataList
}
func (table *Game_com) Get(key string) *Game_gameComData {
func (table *Game_com) Get(key string) *Game_comData {
return table._dataMap[key]
}

View File

@ -42,7 +42,7 @@ func (Game_heroData) GetTypeId() int {
func NewGame_heroData(_buf map[string]interface{}) (_v *Game_heroData, err error) {
_v = &Game_heroData{}
{ 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.Name, _ok_ = _buf["name"].(string); !_ok_ { err = errors.New("name error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["color"].(float64); !_ok_ { err = errors.New("color error"); return }; _v.Color = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["race"].(float64); !_ok_ { err = errors.New("race error"); return }; _v.Race = int32(_tempNum_) }

View File

@ -17,6 +17,7 @@ type Game_heroExpData struct {
Color int32
Heroexp int32
Skilllevelup int32
Needgold int32
}
func (Game_heroExpData) GetTypeId() int {
@ -31,5 +32,6 @@ func NewGame_heroExpData(_buf map[string]interface{}) (_v *Game_heroExpData, err
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["color"].(float64); !_ok_ { err = errors.New("color error"); return }; _v.Color = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["heroexp"].(float64); !_ok_ { err = errors.New("heroexp error"); return }; _v.Heroexp = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["skilllevelup"].(float64); !_ok_ { err = errors.New("skilllevelup error"); return }; _v.Skilllevelup = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["needgold"].(float64); !_ok_ { err = errors.New("needgold error"); return }; _v.Needgold = int32(_tempNum_) }
return
}

View File

@ -13,7 +13,6 @@ import "errors"
type Game_heroLevelupData struct {
Level int32
Heroexp []*Game_atn
Gold []*Game_atn
Hp float32
Atk float32
Def float32
@ -40,20 +39,6 @@ func NewGame_heroLevelupData(_buf map[string]interface{}) (_v *Game_heroLevelupD
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["gold"].([]interface{}); !_ok_ { err = errors.New("gold error"); return }
_v.Gold = make([]*Game_atn, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Game_atn
{ 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_atn(_x_); err != nil { return } }
_v.Gold = append(_v.Gold, _list_v_)
}
}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["hp"].(float64); !_ok_ { err = errors.New("hp error"); return }; _v.Hp = float32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["atk"].(float64); !_ok_ { err = errors.New("atk error"); return }; _v.Atk = float32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["def"].(float64); !_ok_ { err = errors.New("def error"); return }; _v.Def = float32(_tempNum_) }

View File

@ -13,6 +13,7 @@ import "errors"
type Game_heroStargrowData struct {
Star int32
Level int32
Maxlevel int32
StarupHp float32
StarupAtk float32
StarupDef float32
@ -27,6 +28,7 @@ func NewGame_heroStargrowData(_buf map[string]interface{}) (_v *Game_heroStargro
_v = &Game_heroStargrowData{}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["level"].(float64); !_ok_ { err = errors.New("level error"); return }; _v.Level = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["maxlevel"].(float64); !_ok_ { err = errors.New("maxlevel error"); return }; _v.Maxlevel = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["starup_hp"].(float64); !_ok_ { err = errors.New("starup_hp error"); return }; _v.StarupHp = float32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["starup_atk"].(float64); !_ok_ { err = errors.New("starup_atk error"); return }; _v.StarupAtk = float32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["starup_def"].(float64); !_ok_ { err = errors.New("starup_def error"); return }; _v.StarupDef = float32(_tempNum_) }

View File

@ -14,7 +14,6 @@ type Game_heroStarupData struct {
Key int32
Id int32
Star int32
Maxlevel int32
Needhero int32
Needherostar int32
Needheronum int32
@ -33,7 +32,6 @@ func NewGame_heroStarupData(_buf map[string]interface{}) (_v *Game_heroStarupDat
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
{ 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; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["maxlevel"].(float64); !_ok_ { err = errors.New("maxlevel error"); return }; _v.Maxlevel = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["needhero"].(float64); !_ok_ { err = errors.New("needhero error"); return }; _v.Needhero = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["needherostar"].(float64); !_ok_ { err = errors.New("needherostar error"); return }; _v.Needherostar = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["needheronum"].(float64); !_ok_ { err = errors.New("needheronum error"); return }; _v.Needheronum = int32(_tempNum_) }

View File

@ -21,7 +21,7 @@ func NewGame_item(_buf []map[string]interface{}) (*Game_item, error) {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Itemid] = _v
dataMap[_v.Id] = _v
}
}
return &Game_item{_dataList:_dataList, _dataMap:dataMap}, nil

View File

@ -11,27 +11,29 @@ package cfg
import "errors"
type Game_itemData struct {
Itemid int32
Id int32
Name string
Usetype int32
Color int32
Race int32
Bagtype bool
Bagtype int32
Index int32
Texiao string
Dlp int32
Composenum int32
Htype int32
Tujing int32
Usetz int32
Maxnum int32
SpecialType int32
Effects string
Drop int32
SynthetizeNum int32
Access int32
UseSkip int32
UpperLimit int32
Uselv int32
Ismutil int32
Type int32
Isani int32
Star int32
Race int32
SynthetizeHero int32
Img string
Ico string
Intr string
Sale string
Sale []*Game_atn
Boxhero []*Game_atn
}
func (Game_itemData) GetTypeId() int {
@ -40,26 +42,54 @@ func (Game_itemData) GetTypeId() int {
func NewGame_itemData(_buf map[string]interface{}) (_v *Game_itemData, err error) {
_v = &Game_itemData{}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["itemid"].(float64); !_ok_ { err = errors.New("itemid error"); return }; _v.Itemid = int32(_tempNum_) }
{ 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.Name, _ok_ = _buf["name"].(string); !_ok_ { err = errors.New("name error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["usetype"].(float64); !_ok_ { err = errors.New("usetype error"); return }; _v.Usetype = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["color"].(float64); !_ok_ { err = errors.New("color error"); return }; _v.Color = int32(_tempNum_) }
{ 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; if _v.Bagtype, _ok_ = _buf["bagtype"].(bool); !_ok_ { err = errors.New("bagtype error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["bagtype"].(float64); !_ok_ { err = errors.New("bagtype error"); return }; _v.Bagtype = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["index"].(float64); !_ok_ { err = errors.New("index error"); return }; _v.Index = int32(_tempNum_) }
{ var _ok_ bool; if _v.Texiao, _ok_ = _buf["texiao"].(string); !_ok_ { err = errors.New("texiao error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["dlp"].(float64); !_ok_ { err = errors.New("dlp error"); return }; _v.Dlp = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["composenum"].(float64); !_ok_ { err = errors.New("composenum error"); return }; _v.Composenum = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["htype"].(float64); !_ok_ { err = errors.New("htype error"); return }; _v.Htype = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["tujing"].(float64); !_ok_ { err = errors.New("tujing error"); return }; _v.Tujing = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["usetz"].(float64); !_ok_ { err = errors.New("usetz error"); return }; _v.Usetz = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["maxnum"].(float64); !_ok_ { err = errors.New("maxnum error"); return }; _v.Maxnum = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["special_type"].(float64); !_ok_ { err = errors.New("special_type error"); return }; _v.SpecialType = int32(_tempNum_) }
{ var _ok_ bool; if _v.Effects, _ok_ = _buf["effects"].(string); !_ok_ { err = errors.New("effects error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["drop"].(float64); !_ok_ { err = errors.New("drop error"); return }; _v.Drop = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["synthetize_num"].(float64); !_ok_ { err = errors.New("synthetize_num error"); return }; _v.SynthetizeNum = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["access"].(float64); !_ok_ { err = errors.New("access error"); return }; _v.Access = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["use_skip"].(float64); !_ok_ { err = errors.New("use_skip error"); return }; _v.UseSkip = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["upper_limit"].(float64); !_ok_ { err = errors.New("upper_limit error"); return }; _v.UpperLimit = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["uselv"].(float64); !_ok_ { err = errors.New("uselv error"); return }; _v.Uselv = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["ismutil"].(float64); !_ok_ { err = errors.New("ismutil error"); return }; _v.Ismutil = 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["isani"].(float64); !_ok_ { err = errors.New("isani error"); return }; _v.Isani = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
{ 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["synthetize_hero"].(float64); !_ok_ { err = errors.New("synthetize_hero error"); return }; _v.SynthetizeHero = int32(_tempNum_) }
{ var _ok_ bool; if _v.Img, _ok_ = _buf["img"].(string); !_ok_ { err = errors.New("img error"); return } }
{ var _ok_ bool; if _v.Ico, _ok_ = _buf["ico"].(string); !_ok_ { err = errors.New("ico error"); return } }
{ var _ok_ bool; if _v.Intr, _ok_ = _buf["intr"].(string); !_ok_ { err = errors.New("intr error"); return } }
{ var _ok_ bool; if _v.Sale, _ok_ = _buf["sale"].(string); !_ok_ { err = errors.New("sale error"); return } }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["sale"].([]interface{}); !_ok_ { err = errors.New("sale error"); return }
_v.Sale = make([]*Game_atn, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Game_atn
{ 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_atn(_x_); err != nil { return } }
_v.Sale = append(_v.Sale, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["boxhero"].([]interface{}); !_ok_ { err = errors.New("boxhero error"); return }
_v.Boxhero = make([]*Game_atn, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Game_atn
{ 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_atn(_x_); err != nil { return } }
_v.Boxhero = append(_v.Boxhero, _list_v_)
}
}
return
}

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type Game_model struct {
_dataMap map[int32]*Game_modelData
_dataList []*Game_modelData
}
func NewGame_model(_buf []map[string]interface{}) (*Game_model, error) {
_dataList := make([]*Game_modelData, 0, len(_buf))
dataMap := make(map[int32]*Game_modelData)
for _, _ele_ := range _buf {
if _v, err2 := NewGame_modelData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &Game_model{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *Game_model) GetDataMap() map[int32]*Game_modelData {
return table._dataMap
}
func (table *Game_model) GetDataList() []*Game_modelData {
return table._dataList
}
func (table *Game_model) Get(key int32) *Game_modelData {
return table._dataMap[key]
}

View File

@ -0,0 +1,35 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type Game_modelData struct {
Id int32
Preson string
Ico string
Img string
Heroimg string
Portrait string
}
func (Game_modelData) GetTypeId() int {
return -1307411593
}
func NewGame_modelData(_buf map[string]interface{}) (_v *Game_modelData, err error) {
_v = &Game_modelData{}
{ 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.Preson, _ok_ = _buf["preson"].(string); !_ok_ { err = errors.New("preson error"); return } }
{ var _ok_ bool; if _v.Ico, _ok_ = _buf["ico"].(string); !_ok_ { err = errors.New("ico error"); return } }
{ var _ok_ bool; if _v.Img, _ok_ = _buf["img"].(string); !_ok_ { err = errors.New("img error"); return } }
{ var _ok_ bool; if _v.Heroimg, _ok_ = _buf["heroimg"].(string); !_ok_ { err = errors.New("heroimg error"); return } }
{ var _ok_ bool; if _v.Portrait, _ok_ = _buf["portrait"].(string); !_ok_ { err = errors.New("portrait error"); return } }
return
}

View File

@ -21,7 +21,7 @@ type Game_newHeroData struct {
Type int32
Prefab string
Icon int32
Sound int32
Sound string
Tujing []int32
Intr string
Events string
@ -41,7 +41,7 @@ func (Game_newHeroData) GetTypeId() int {
func NewGame_newHeroData(_buf map[string]interface{}) (_v *Game_newHeroData, err error) {
_v = &Game_newHeroData{}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["hid"].(float64); !_ok_ { err = errors.New("hid error"); return }; _v.Hid = int32(_tempNum_) }
{ var _ok_ bool; if _v.Name, _ok_ = _buf["name"].(string); !_ok_ { err = errors.New("name error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["color"].(float64); !_ok_ { err = errors.New("color error"); return }; _v.Color = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["race"].(float64); !_ok_ { err = errors.New("race error"); return }; _v.Race = int32(_tempNum_) }
@ -49,7 +49,7 @@ func NewGame_newHeroData(_buf map[string]interface{}) (_v *Game_newHeroData, err
{ 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; if _v.Prefab, _ok_ = _buf["prefab"].(string); !_ok_ { err = errors.New("prefab error"); return } }
{ 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 _tempNum_ float64; if _tempNum_, _ok_ = _buf["sound"].(float64); !_ok_ { err = errors.New("sound error"); return }; _v.Sound = 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 } } }
{
var _arr_ []interface{}
var _ok_ bool
@ -64,7 +64,7 @@ func NewGame_newHeroData(_buf map[string]interface{}) (_v *Game_newHeroData, err
}
}
{ var _ok_ bool; if _v.Intr, _ok_ = _buf["intr"].(string); !_ok_ { err = errors.New("intr error"); return } }
{var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["intr"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Intr error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Intr, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
{ var _ok_ bool; if _v.Events, _ok_ = _buf["events"].(string); !_ok_ { err = errors.New("events error"); return } }
{ var _ok_ bool; if _v.Cite, _ok_ = _buf["cite"].(string); !_ok_ { err = errors.New("cite error"); return } }
{

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type Game_newSkill struct {
_dataMap map[int32]*Game_newSkillData
_dataList []*Game_newSkillData
}
func NewGame_newSkill(_buf []map[string]interface{}) (*Game_newSkill, error) {
_dataList := make([]*Game_newSkillData, 0, len(_buf))
dataMap := make(map[int32]*Game_newSkillData)
for _, _ele_ := range _buf {
if _v, err2 := NewGame_newSkillData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &Game_newSkill{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *Game_newSkill) GetDataMap() map[int32]*Game_newSkillData {
return table._dataMap
}
func (table *Game_newSkill) GetDataList() []*Game_newSkillData {
return table._dataList
}
func (table *Game_newSkill) Get(key int32) *Game_newSkillData {
return table._dataMap[key]
}

View File

@ -0,0 +1,80 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type Game_newSkillData struct {
Id int32
Name string
Ico string
Type int32
MaxLV int32
CD []int32
Target int32
ChildSkill []*Game_ChildSkills
Desc []string
}
func (Game_newSkillData) GetTypeId() int {
return -1344126889
}
func NewGame_newSkillData(_buf map[string]interface{}) (_v *Game_newSkillData, err error) {
_v = &Game_newSkillData{}
{ 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.Name, _ok_ = _buf["Name"].(string); !_ok_ { err = errors.New("Name error"); return } }
{ var _ok_ bool; if _v.Ico, _ok_ = _buf["ico"].(string); !_ok_ { err = errors.New("ico error"); return } }
{ 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["MaxLV"].(float64); !_ok_ { err = errors.New("MaxLV error"); return }; _v.MaxLV = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["CD"].([]interface{}); !_ok_ { err = errors.New("CD error"); return }
_v.CD = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.CD = append(_v.CD, _list_v_)
}
}
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Target"].(float64); !_ok_ { err = errors.New("Target error"); return }; _v.Target = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["ChildSkill"].([]interface{}); !_ok_ { err = errors.New("ChildSkill error"); return }
_v.ChildSkill = make([]*Game_ChildSkills, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Game_ChildSkills
{ 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_ChildSkills(_x_); err != nil { return } }
_v.ChildSkill = append(_v.ChildSkill, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["Desc"].([]interface{}); !_ok_ { err = errors.New("Desc error"); return }
_v.Desc = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.Desc = append(_v.Desc, _list_v_)
}
}
return
}

View File

@ -22,9 +22,12 @@ type Game_skillAfteratkData struct {
Argu string
AddEffect bool
FollowSK []int32
SucFollowSK []string
FailFollowSK []string
MustHit bool
Tags []string
RelyTags []string
NoRelyTags []string
}
func (Game_skillAfteratkData) GetTypeId() int {
@ -83,6 +86,20 @@ func NewGame_skillAfteratkData(_buf map[string]interface{}) (_v *Game_skillAfter
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["SucFollowSK"].([]interface{}); !_ok_ { err = errors.New("SucFollowSK error"); return }
_v.SucFollowSK = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.SucFollowSK = append(_v.SucFollowSK, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
@ -112,5 +129,33 @@ func NewGame_skillAfteratkData(_buf map[string]interface{}) (_v *Game_skillAfter
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["RelyTags"].([]interface{}); !_ok_ { err = errors.New("RelyTags error"); return }
_v.RelyTags = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.RelyTags = append(_v.RelyTags, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["NoRelyTags"].([]interface{}); !_ok_ { err = errors.New("NoRelyTags error"); return }
_v.NoRelyTags = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.NoRelyTags = append(_v.NoRelyTags, _list_v_)
}
}
return
}

View File

@ -13,12 +13,13 @@ import "errors"
type Game_skillAtkData struct {
Id int32
Name string
Ico string
Type int32
Desc string
MaxLV int32
CD []int32
Target int32
ChildSkill []*Game_ChildSkills
Desc []string
}
func (Game_skillAtkData) GetTypeId() int {
@ -29,8 +30,8 @@ func NewGame_skillAtkData(_buf map[string]interface{}) (_v *Game_skillAtkData, e
_v = &Game_skillAtkData{}
{ 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.Name, _ok_ = _buf["Name"].(string); !_ok_ { err = errors.New("Name error"); return } }
{ var _ok_ bool; if _v.Ico, _ok_ = _buf["ico"].(string); !_ok_ { err = errors.New("ico error"); return } }
{ 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; if _v.Desc, _ok_ = _buf["Desc"].(string); !_ok_ { err = errors.New("Desc error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["MaxLV"].(float64); !_ok_ { err = errors.New("MaxLV error"); return }; _v.MaxLV = int32(_tempNum_) }
{
var _arr_ []interface{}
@ -61,5 +62,19 @@ func NewGame_skillAtkData(_buf map[string]interface{}) (_v *Game_skillAtkData, e
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["Desc"].([]interface{}); !_ok_ { err = errors.New("Desc error"); return }
_v.Desc = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.Desc = append(_v.Desc, _list_v_)
}
}
return
}

View File

@ -18,6 +18,8 @@ type Game_skillBuffData struct {
Tags []string
OverlayTimes byte
SameID bool
RelyTags []string
NoRelyTags []string
}
func (Game_skillBuffData) GetTypeId() int {
@ -46,5 +48,33 @@ func NewGame_skillBuffData(_buf map[string]interface{}) (_v *Game_skillBuffData,
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["OverlayTimes"].(float64); !_ok_ { err = errors.New("OverlayTimes error"); return }; _v.OverlayTimes = byte(_tempNum_) }
{ var _ok_ bool; if _v.SameID, _ok_ = _buf["SameID"].(bool); !_ok_ { err = errors.New("SameID error"); return } }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["RelyTags"].([]interface{}); !_ok_ { err = errors.New("RelyTags error"); return }
_v.RelyTags = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.RelyTags = append(_v.RelyTags, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["NoRelyTags"].([]interface{}); !_ok_ { err = errors.New("NoRelyTags error"); return }
_v.NoRelyTags = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.NoRelyTags = append(_v.NoRelyTags, _list_v_)
}
}
return
}

View File

@ -14,10 +14,15 @@ type Game_skillPassiveData struct {
Id int32
Desc string
When string
Where string
AddCon []string
Type string
Argu []string
MaxEmitTimes int32
OverlayTimes byte
SameID bool
Tags []string
RelyTags []string
NoRelyTags []string
}
func (Game_skillPassiveData) GetTypeId() int {
@ -29,22 +34,25 @@ func NewGame_skillPassiveData(_buf map[string]interface{}) (_v *Game_skillPassiv
{ 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.Desc, _ok_ = _buf["Desc"].(string); !_ok_ { err = errors.New("Desc error"); return } }
{ var _ok_ bool; if _v.When, _ok_ = _buf["When"].(string); !_ok_ { err = errors.New("When error"); return } }
{ var _ok_ bool; if _v.Type, _ok_ = _buf["Type"].(string); !_ok_ { err = errors.New("Type error"); return } }
{ var _ok_ bool; if _v.Where, _ok_ = _buf["Where"].(string); !_ok_ { err = errors.New("Where error"); return } }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["Argu"].([]interface{}); !_ok_ { err = errors.New("Argu error"); return }
if _arr_, _ok_ = _buf["AddCon"].([]interface{}); !_ok_ { err = errors.New("AddCon error"); return }
_v.Argu = make([]string, 0, len(_arr_))
_v.AddCon = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.Argu = append(_v.Argu, _list_v_)
_v.AddCon = append(_v.AddCon, _list_v_)
}
}
{ var _ok_ bool; if _v.Type, _ok_ = _buf["Type"].(string); !_ok_ { err = errors.New("Type error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["MaxEmitTimes"].(float64); !_ok_ { err = errors.New("MaxEmitTimes error"); return }; _v.MaxEmitTimes = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["OverlayTimes"].(float64); !_ok_ { err = errors.New("OverlayTimes error"); return }; _v.OverlayTimes = byte(_tempNum_) }
{ var _ok_ bool; if _v.SameID, _ok_ = _buf["SameID"].(bool); !_ok_ { err = errors.New("SameID error"); return } }
{
var _arr_ []interface{}
var _ok_ bool
@ -59,5 +67,33 @@ func NewGame_skillPassiveData(_buf map[string]interface{}) (_v *Game_skillPassiv
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["RelyTags"].([]interface{}); !_ok_ { err = errors.New("RelyTags error"); return }
_v.RelyTags = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.RelyTags = append(_v.RelyTags, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["NoRelyTags"].([]interface{}); !_ok_ { err = errors.New("NoRelyTags error"); return }
_v.NoRelyTags = make([]string, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ string
{ if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } }
_v.NoRelyTags = append(_v.NoRelyTags, _list_v_)
}
}
return
}