diff --git a/bin/json/game_heromethod.json b/bin/json/game_heromethod.json
new file mode 100644
index 000000000..84cf2a3b3
--- /dev/null
+++ b/bin/json/game_heromethod.json
@@ -0,0 +1,1564 @@
+[
+ {
+ "hid": 13001,
+ "herointr": {
+ "key": "hero_13001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 0,
+ 100
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 1,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 13002,
+ "herointr": {
+ "key": "hero_13002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 1,
+ 101
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 2,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 13003,
+ "herointr": {
+ "key": "hero_13003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 2,
+ 102
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 3,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 13004,
+ "herointr": {
+ "key": "hero_13004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 3,
+ 103
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 4,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 13005,
+ "herointr": {
+ "key": "hero_13005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 4,
+ 104
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 5,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 14001,
+ "herointr": {
+ "key": "hero_14001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 5,
+ 105
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 6,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 14002,
+ "herointr": {
+ "key": "hero_14002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 6,
+ 106
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 7,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 14003,
+ "herointr": {
+ "key": "hero_14003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 7,
+ 107
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 8,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 14004,
+ "herointr": {
+ "key": "hero_14004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 8,
+ 108
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 9,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 14005,
+ "herointr": {
+ "key": "hero_14005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 9,
+ 109
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 0,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 14006,
+ "herointr": {
+ "key": "hero_14006",
+ "text": ""
+ },
+ "equip_suit1": [
+ 0,
+ 100
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 1,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 14007,
+ "herointr": {
+ "key": "hero_14007",
+ "text": ""
+ },
+ "equip_suit1": [
+ 1,
+ 101
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 2,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 15001,
+ "herointr": {
+ "key": "hero_15001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 2,
+ 102
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 3,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 15002,
+ "herointr": {
+ "key": "hero_15002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 3,
+ 103
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 4,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 15003,
+ "herointr": {
+ "key": "hero_15003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 4,
+ 104
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 5,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 15004,
+ "herointr": {
+ "key": "hero_15004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 5,
+ 105
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 6,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 15005,
+ "herointr": {
+ "key": "hero_15005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 6,
+ 106
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 7,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 23001,
+ "herointr": {
+ "key": "hero_23001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 7,
+ 107
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 8,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 23002,
+ "herointr": {
+ "key": "hero_23002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 8,
+ 108
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 9,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 23003,
+ "herointr": {
+ "key": "hero_23003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 9,
+ 109
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 0,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 23004,
+ "herointr": {
+ "key": "hero_23004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 0,
+ 100
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 1,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24001,
+ "herointr": {
+ "key": "hero_24001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 1,
+ 101
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 2,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24002,
+ "herointr": {
+ "key": "hero_24002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 2,
+ 102
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 3,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24003,
+ "herointr": {
+ "key": "hero_24003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 3,
+ 103
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 4,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24004,
+ "herointr": {
+ "key": "hero_24004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 4,
+ 104
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 5,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24005,
+ "herointr": {
+ "key": "hero_24005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 5,
+ 105
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 6,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24006,
+ "herointr": {
+ "key": "hero_24006",
+ "text": ""
+ },
+ "equip_suit1": [
+ 6,
+ 106
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 7,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24007,
+ "herointr": {
+ "key": "hero_24007",
+ "text": ""
+ },
+ "equip_suit1": [
+ 7,
+ 107
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 8,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24008,
+ "herointr": {
+ "key": "hero_24008",
+ "text": ""
+ },
+ "equip_suit1": [
+ 8,
+ 108
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 9,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 24009,
+ "herointr": {
+ "key": "hero_24009",
+ "text": ""
+ },
+ "equip_suit1": [
+ 9,
+ 109
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 0,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 25001,
+ "herointr": {
+ "key": "hero_25001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 0,
+ 100
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 1,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 25002,
+ "herointr": {
+ "key": "hero_25002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 1,
+ 101
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 2,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 25003,
+ "herointr": {
+ "key": "hero_25003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 2,
+ 102
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 3,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 25004,
+ "herointr": {
+ "key": "hero_25004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 3,
+ 103
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 4,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 33001,
+ "herointr": {
+ "key": "hero_33001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 4,
+ 104
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 5,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 33002,
+ "herointr": {
+ "key": "hero_33002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 5,
+ 105
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 6,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 33003,
+ "herointr": {
+ "key": "hero_33003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 6,
+ 106
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 7,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 33004,
+ "herointr": {
+ "key": "hero_33004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 7,
+ 107
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 8,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 33005,
+ "herointr": {
+ "key": "hero_33005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 8,
+ 108
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 9,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 33006,
+ "herointr": {
+ "key": "hero_33006",
+ "text": ""
+ },
+ "equip_suit1": [
+ 9,
+ 109
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 0,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 34001,
+ "herointr": {
+ "key": "hero_34001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 0,
+ 100
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 1,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 34002,
+ "herointr": {
+ "key": "hero_34002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 1,
+ 101
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 2,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 34003,
+ "herointr": {
+ "key": "hero_34003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 2,
+ 102
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 3,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 34004,
+ "herointr": {
+ "key": "hero_34004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 3,
+ 103
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 4,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 34005,
+ "herointr": {
+ "key": "hero_34005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 4,
+ 104
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 5,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 34006,
+ "herointr": {
+ "key": "hero_34006",
+ "text": ""
+ },
+ "equip_suit1": [
+ 5,
+ 105
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 6,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 34007,
+ "herointr": {
+ "key": "hero_34007",
+ "text": ""
+ },
+ "equip_suit1": [
+ 6,
+ 106
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 7,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 34008,
+ "herointr": {
+ "key": "hero_34008",
+ "text": ""
+ },
+ "equip_suit1": [
+ 7,
+ 107
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 8,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 35001,
+ "herointr": {
+ "key": "hero_35001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 8,
+ 108
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 9,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 35002,
+ "herointr": {
+ "key": "hero_35002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 9,
+ 109
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 0,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 35003,
+ "herointr": {
+ "key": "hero_35003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 0,
+ 100
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 1,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 35004,
+ "herointr": {
+ "key": "hero_35004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 1,
+ 101
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 2,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 35005,
+ "herointr": {
+ "key": "hero_35005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 2,
+ 102
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 3,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 35006,
+ "herointr": {
+ "key": "hero_35006",
+ "text": ""
+ },
+ "equip_suit1": [
+ 3,
+ 103
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 4,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 43001,
+ "herointr": {
+ "key": "hero_43001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 4,
+ 104
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 5,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 43002,
+ "herointr": {
+ "key": "hero_43002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 5,
+ 105
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 6,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 43003,
+ "herointr": {
+ "key": "hero_43003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 6,
+ 106
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 7,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 43004,
+ "herointr": {
+ "key": "hero_43004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 7,
+ 107
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 8,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 43005,
+ "herointr": {
+ "key": "hero_43005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 8,
+ 108
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 9,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 43006,
+ "herointr": {
+ "key": "hero_43006",
+ "text": ""
+ },
+ "equip_suit1": [
+ 9,
+ 109
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 0,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 43007,
+ "herointr": {
+ "key": "hero_43007",
+ "text": ""
+ },
+ "equip_suit1": [
+ 0,
+ 100
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 1,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 44001,
+ "herointr": {
+ "key": "hero_44001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 1,
+ 101
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 2,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 44002,
+ "herointr": {
+ "key": "hero_44002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 2,
+ 102
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 3,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 44003,
+ "herointr": {
+ "key": "hero_44003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 3,
+ 103
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 4,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 44004,
+ "herointr": {
+ "key": "hero_44004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 4,
+ 104
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 5,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 44005,
+ "herointr": {
+ "key": "hero_44005",
+ "text": ""
+ },
+ "equip_suit1": [
+ 5,
+ 105
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 6,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 44006,
+ "herointr": {
+ "key": "hero_44006",
+ "text": ""
+ },
+ "equip_suit1": [
+ 6,
+ 106
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 7,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 45001,
+ "herointr": {
+ "key": "hero_45001",
+ "text": ""
+ },
+ "equip_suit1": [
+ 7,
+ 107
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 8,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 45002,
+ "herointr": {
+ "key": "hero_45002",
+ "text": ""
+ },
+ "equip_suit1": [
+ 8,
+ 108
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 9,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 45003,
+ "herointr": {
+ "key": "hero_45003",
+ "text": ""
+ },
+ "equip_suit1": [
+ 9,
+ 109
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 0,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ },
+ {
+ "hid": 45004,
+ "herointr": {
+ "key": "hero_45004",
+ "text": ""
+ },
+ "equip_suit1": [
+ 0,
+ 100
+ ],
+ "pro1": 790,
+ "equip_suit2": [
+ 1,
+ 101
+ ],
+ "pro2": 110,
+ "equip_suit3": [
+ 2,
+ 102
+ ],
+ "pro3": 100
+ }
+]
\ No newline at end of file
diff --git a/bin/json/game_taskround.json b/bin/json/game_taskround.json
index a5b446996..a51ea8af4 100644
--- a/bin/json/game_taskround.json
+++ b/bin/json/game_taskround.json
@@ -698,5 +698,47 @@
"n": 100
}
]
+ },
+ {
+ "key": 40000,
+ "id_list": 41,
+ "id_tag": 4,
+ "task_display": "释放1技能",
+ "type_id": 401,
+ "condition_second": 1,
+ "condition_condition": 13001,
+ "active": 0,
+ "id_after": 0,
+ "reword": []
+ },
+ {
+ "key": 40001,
+ "id_list": 42,
+ "id_tag": 4,
+ "task_display": "释放2技能",
+ "type_id": 402,
+ "condition_second": 2,
+ "condition_condition": 13001,
+ "active": 0,
+ "id_after": 0,
+ "reword": []
+ },
+ {
+ "key": 40002,
+ "id_list": 43,
+ "id_tag": 4,
+ "task_display": "战斗胜利",
+ "type_id": 403,
+ "condition_second": 1,
+ "condition_condition": 13001,
+ "active": 0,
+ "id_after": 0,
+ "reword": [
+ {
+ "a": "attr",
+ "t": "gold",
+ "n": 1000
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/bin/json/game_ui.json b/bin/json/game_ui.json
index a11b8849d..607f9a4d1 100644
--- a/bin/json/game_ui.json
+++ b/bin/json/game_ui.json
@@ -478,5 +478,17 @@
"packagename": "tips",
"comname": "rewardTips",
"des": "奖励预览弹窗"
+ },
+ {
+ "id": "roleupgrade",
+ "file": "RoleUpGradeWindow",
+ "unloadpkg": 1,
+ "loadtype": 1,
+ "full": 2,
+ "blur": 1,
+ "package": "roledetails/roledetails",
+ "packagename": "roledetails",
+ "comname": "roleupgrade",
+ "des": "英雄升级升星详情"
}
]
\ No newline at end of file
diff --git a/cmd/robot/robot.go b/cmd/robot/robot.go
index cdb6769c4..6922be61c 100644
--- a/cmd/robot/robot.go
+++ b/cmd/robot/robot.go
@@ -151,7 +151,6 @@ func (r *Robot) printBuilders() {
//处理用例,发送请求
func (r *Robot) handleReq() {
- // go func() {
for len(r.builderMap) > 0 {
for _, b := range r.builderMap {
if b.enabled && b.req != nil {
@@ -170,7 +169,6 @@ func (r *Robot) handleReq() {
}
}
}
- // }()
}
//加入用例并执行请求
@@ -183,6 +181,7 @@ func (r *Robot) addTestCaseAndReq(tcs []*TestCase) {
func (r *Robot) handleNotify(uuid string, msg *pb.UserMessage) {
if msg.MainType == "notify" && msg.SubType == "errornotify" {
r.caseError++
+ logrus.Debug("errornotify %v", r.caseError)
rsp := &pb.NotifyErrorNotifyPush{}
if !comm.ProtoUnmarshal(msg, rsp) {
return
@@ -217,6 +216,7 @@ func (r *Robot) handleRsp(id string) {
zlog.Fatalf("unmarshal err:%v", err)
}
+ zlog.Debugf("1 %v.%v", msg.MainType, msg.SubType)
uuid, _ := r.findTestCase(msg)
if uuid == "" {
uuid = id
@@ -227,7 +227,7 @@ func (r *Robot) handleRsp(id string) {
if v.enabled &&
(msg.MainType == v.mainType &&
msg.SubType == v.subType) {
-
+ zlog.Debugf("2 %v.%v", msg.MainType, msg.SubType)
v.hs = time.Since(v.start)
if !comm.ProtoUnmarshal(msg, v.rsp) {
return
diff --git a/comm/result.go b/comm/result.go
new file mode 100644
index 000000000..f7c10ea6e
--- /dev/null
+++ b/comm/result.go
@@ -0,0 +1,27 @@
+package comm
+
+import "go_dreamfactory/lego/sys/log"
+
+type ResultStruct[T any] struct {
+ Result T
+ Err error
+}
+
+func Result[T any](result T, err error) *ResultStruct[T] {
+ return &ResultStruct[T]{Result: result, Err: err}
+}
+
+func (this *ResultStruct[T]) Unwrap() T {
+ if this.Err != nil {
+ log.Errorf("%v", this.Err)
+ }
+ return this.Result
+}
+
+func (this *ResultStruct[T]) UnwrapOr(ret T) T {
+ if this.Err != nil {
+ return ret
+ }
+
+ return this.Result
+}
diff --git a/sys/configure/structs/Tables.go b/sys/configure/structs/Tables.go
index e48bd726e..89c065c88 100644
--- a/sys/configure/structs/Tables.go
+++ b/sys/configure/structs/Tables.go
@@ -40,6 +40,7 @@ type Tables struct {
heroResonance *Game_heroResonance
comAtn *Game_comAtn
heroAwaken *Game_heroAwaken
+ heroMethod *Game_heroMethod
shop *Game_shop
shopitem *Game_shopitem
taskRound *Game_taskRound
@@ -227,6 +228,12 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.heroAwaken, err = NewGame_heroAwaken(buf) ; err != nil {
return nil, err
}
+ if buf, err = loader("game_heromethod") ; err != nil {
+ return nil, err
+ }
+ if tables.heroMethod, err = NewGame_heroMethod(buf) ; err != nil {
+ return nil, err
+ }
if buf, err = loader("game_shop") ; err != nil {
return nil, err
}
diff --git a/sys/configure/structs/game.heroMethod.go b/sys/configure/structs/game.heroMethod.go
new file mode 100644
index 000000000..add99c8fd
--- /dev/null
+++ b/sys/configure/structs/game.heroMethod.go
@@ -0,0 +1,42 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+type Game_heroMethod struct {
+ _dataMap map[int32]*Game_heroMethodData
+ _dataList []*Game_heroMethodData
+}
+
+func NewGame_heroMethod(_buf []map[string]interface{}) (*Game_heroMethod, error) {
+ _dataList := make([]*Game_heroMethodData, 0, len(_buf))
+ dataMap := make(map[int32]*Game_heroMethodData)
+ for _, _ele_ := range _buf {
+ if _v, err2 := NewGame_heroMethodData(_ele_); err2 != nil {
+ return nil, err2
+ } else {
+ _dataList = append(_dataList, _v)
+ dataMap[_v.Hid] = _v
+ }
+ }
+ return &Game_heroMethod{_dataList:_dataList, _dataMap:dataMap}, nil
+}
+
+func (table *Game_heroMethod) GetDataMap() map[int32]*Game_heroMethodData {
+ return table._dataMap
+}
+
+func (table *Game_heroMethod) GetDataList() []*Game_heroMethodData {
+ return table._dataList
+}
+
+func (table *Game_heroMethod) Get(key int32) *Game_heroMethodData {
+ return table._dataMap[key]
+}
+
+
diff --git a/sys/configure/structs/game.heroMethodData.go b/sys/configure/structs/game.heroMethodData.go
new file mode 100644
index 000000000..233271863
--- /dev/null
+++ b/sys/configure/structs/game.heroMethodData.go
@@ -0,0 +1,78 @@
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+package cfg
+
+import "errors"
+
+type Game_heroMethodData struct {
+ Hid int32
+ Herointr string
+ EquipSuit1 []int32
+ Pro1 int32
+ EquipSuit2 []int32
+ Pro2 int32
+ EquipSuit3 []int32
+ Pro3 int32
+}
+
+func (Game_heroMethodData) GetTypeId() int {
+ return -622558911
+}
+
+func NewGame_heroMethodData(_buf map[string]interface{}) (_v *Game_heroMethodData, err error) {
+ _v = &Game_heroMethodData{}
+ { 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; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["herointr"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Herointr error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Herointr, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["equip_suit1"].([]interface{}); !_ok_ { err = errors.New("equip_suit1 error"); return }
+
+ _v.EquipSuit1 = 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.EquipSuit1 = append(_v.EquipSuit1, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["pro1"].(float64); !_ok_ { err = errors.New("pro1 error"); return }; _v.Pro1 = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["equip_suit2"].([]interface{}); !_ok_ { err = errors.New("equip_suit2 error"); return }
+
+ _v.EquipSuit2 = 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.EquipSuit2 = append(_v.EquipSuit2, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["pro2"].(float64); !_ok_ { err = errors.New("pro2 error"); return }; _v.Pro2 = int32(_tempNum_) }
+ {
+ var _arr_ []interface{}
+ var _ok_ bool
+ if _arr_, _ok_ = _buf["equip_suit3"].([]interface{}); !_ok_ { err = errors.New("equip_suit3 error"); return }
+
+ _v.EquipSuit3 = 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.EquipSuit3 = append(_v.EquipSuit3, _list_v_)
+ }
+ }
+
+ { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["pro3"].(float64); !_ok_ { err = errors.New("pro3 error"); return }; _v.Pro3 = int32(_tempNum_) }
+ return
+}