gotchi-battler-game-logic 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/.env.example +1 -0
  2. package/.vscode/settings.json +4 -4
  3. package/Dockerfile +10 -0
  4. package/README.md +49 -49
  5. package/cloudbuild.yaml +27 -0
  6. package/constants/tournamentManagerAbi.json +208 -208
  7. package/game-logic/index.js +6 -5
  8. package/game-logic/v1.4/constants.js +120 -120
  9. package/game-logic/v1.4/index.js +1366 -1353
  10. package/game-logic/v1.5/index.js +8 -8
  11. package/game-logic/v1.6/constants.js +129 -129
  12. package/game-logic/v1.6/index.js +1406 -1402
  13. package/game-logic/v1.7/constants.js +147 -0
  14. package/game-logic/v1.7/index.js +1389 -0
  15. package/index.js +13 -6
  16. package/package.json +26 -22
  17. package/schemas/team.json +208 -203
  18. package/scripts/balancing/createCSV.js +126 -0
  19. package/scripts/balancing/fixTrainingGotchis.js +260 -0
  20. package/scripts/balancing/processSims.js +230 -0
  21. package/scripts/balancing/sims.js +278 -0
  22. package/scripts/balancing/v1.7/class_combos.js +44 -0
  23. package/scripts/balancing/v1.7/setTeamPositions.js +105 -0
  24. package/scripts/balancing/v1.7/training_gotchis.json +20162 -0
  25. package/scripts/balancing/v1.7/trait_combos.json +10 -0
  26. package/scripts/balancing/v1.7.1/class_combos.js +44 -0
  27. package/scripts/balancing/v1.7.1/setTeamPositions.js +122 -0
  28. package/scripts/balancing/v1.7.1/training_gotchis.json +22402 -0
  29. package/scripts/balancing/v1.7.1/trait_combos.json +10 -0
  30. package/scripts/data/team1.json +200 -200
  31. package/scripts/data/team2.json +200 -200
  32. package/scripts/data/tournaments.json +66 -66
  33. package/scripts/runBattle.js +15 -15
  34. package/scripts/validateBattle.js +70 -64
  35. package/scripts/validateTournament.js +101 -101
  36. package/utils/contracts.js +12 -12
  37. package/utils/errors.js +29 -29
  38. package/utils/transforms.js +88 -47
  39. package/utils/validations.js +39 -39
@@ -0,0 +1,10 @@
1
+ [
2
+ ["avg-magic", "avg-physical"],
3
+ ["avg-magic", "avg-physical"],
4
+ ["avg-magic", "avg-physical"],
5
+ ["avg-magic", "avg-physical"],
6
+ ["avg-magic", "avg-physical"],
7
+ ["avg-magic", "avg-physical"],
8
+ ["avg-magic", "avg-magic"],
9
+ ["avg-physical", "avg-physical"]
10
+ ]
@@ -1,201 +1,201 @@
1
- {
2
- "formation": {
3
- "front": [
4
- {
5
- "id": 533,
6
- "snapshotBlock": 59673035,
7
- "onchainId": 23795,
8
- "name": "Slide",
9
- "brs": 1005,
10
- "nrg": -29,
11
- "agg": 3,
12
- "spk": -3,
13
- "brn": -29,
14
- "eyc": 99,
15
- "eys": 88,
16
- "kinship": 1732,
17
- "xp": 182430,
18
- "speed": 100,
19
- "health": 1702,
20
- "crit": 0,
21
- "armor": 94,
22
- "evade": 0,
23
- "resist": 53,
24
- "magic": 251,
25
- "physical": 646,
26
- "accuracy": 94.5,
27
- "attack": "physical",
28
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/74f07327e89d0ea20c704549f98adee094d78ad7f95a27948d88e2b69766b191.png",
29
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/3b5139773724c184ae73afa033a1abc8b2222e6f1feba86fce33fc743a054800.png",
30
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/93f829f50da50b168de50c4679e1a7b0bfbb922f3bdd44900a7307578e7c9ce2.png",
31
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/944e70e7a094e891d4b89df5ee15d2d3cc65e73734257605e6d9110fe3eb4be8.png",
32
- "specialId": 2,
33
- "special": {
34
- "id": 2,
35
- "class": "Enlightened",
36
- "name": "Meditate",
37
- "cooldown": 0,
38
- "leaderPassive": "Cloud of Zen"
39
- }
40
- },
41
- null,
42
- {
43
- "id": 534,
44
- "snapshotBlock": 59673035,
45
- "onchainId": 16291,
46
- "name": "Aavenomics",
47
- "brs": 786,
48
- "nrg": 2,
49
- "agg": -18,
50
- "spk": 117,
51
- "brn": 3,
52
- "eyc": 95,
53
- "eys": 83,
54
- "kinship": 1804,
55
- "xp": 3445,
56
- "speed": 100,
57
- "health": 1166,
58
- "crit": 0,
59
- "armor": 136,
60
- "evade": 20,
61
- "resist": 0,
62
- "magic": 197,
63
- "physical": 432,
64
- "accuracy": 90,
65
- "attack": "physical",
66
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/545e7f3a61833374bb2c27b53b549a560580397494866fc5599088112199d992.png",
67
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/7329e0c0e57637ca99d58dcf571730259c64f1aed63526d31fe31bb8323fa83b.png",
68
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/96625cba302f81dcf441331274f5b7cc5ae646da2d47fa07988fcd4bc17c342b.png",
69
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/7dbc392da25ccc50ec08705703b50c363ba5cb7f4b35d971324fe4ad84308fec.png",
70
- "specialId": 5,
71
- "special": {
72
- "id": 5,
73
- "class": "Cursed",
74
- "name": "Curse",
75
- "cooldown": 0,
76
- "leaderPassive": "Spread the fear"
77
- }
78
- },
79
- null,
80
- {
81
- "id": 535,
82
- "snapshotBlock": 59673035,
83
- "onchainId": 2057,
84
- "name": "Blue Moon",
85
- "brs": 775,
86
- "nrg": -2,
87
- "agg": 98,
88
- "spk": 91,
89
- "brn": 120,
90
- "eyc": 95,
91
- "eys": 5,
92
- "kinship": 1786,
93
- "xp": 3755,
94
- "speed": 100,
95
- "health": 1205,
96
- "crit": 25,
97
- "armor": 0,
98
- "evade": 13,
99
- "resist": 0,
100
- "magic": 549,
101
- "physical": 194,
102
- "accuracy": 95.5,
103
- "attack": "magic",
104
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/135a500abe09364fa61c0e129c78cd5efd3fe15998cb784c60c94a7261e3f22e.png",
105
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/69824fede30868d1b9ba84af5044357b262ff64fe8b94079be667f35c2b62979.png",
106
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/dae02ef55bfa696e737fdff901c8a6321a37cf234e4dbb0b52beab80563e67f4.png",
107
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/4909819acbcfa03247b8319776e7f031c666fca51aeaa3fac7400415d6055ed6.png",
108
- "specialId": 7,
109
- "special": {
110
- "id": 7,
111
- "class": "Mage",
112
- "name": "Thunder",
113
- "cooldown": 2,
114
- "leaderPassive": "Channel the coven"
115
- }
116
- }
117
- ],
118
- "back": [
119
- null,
120
- {
121
- "id": 531,
122
- "snapshotBlock": 59673035,
123
- "onchainId": 13700,
124
- "name": "Maxicrouton",
125
- "brs": 813,
126
- "nrg": 114,
127
- "agg": 102,
128
- "spk": -21,
129
- "brn": 102,
130
- "eyc": 93,
131
- "eys": 76,
132
- "kinship": 2146,
133
- "xp": 23515,
134
- "speed": 165,
135
- "health": 610,
136
- "crit": 27,
137
- "armor": 0,
138
- "evade": 0,
139
- "resist": 71,
140
- "magic": 468,
141
- "physical": 203,
142
- "accuracy": 85.5,
143
- "attack": "magic",
144
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/3e19380df6b59a735bc1e545c355b09438c14164cc1d8a78ddcbae6c6e8e6e19.png",
145
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/cc1f62ade1657feaaf68bdd320cc34c3d8f80e775e07a9efb4d8a0a16c0cae70.png",
146
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/c507028197648c575d94dcdb0e7142cf7568e873cb0ba524719e9fb9ac62959f.png",
147
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/88a3d7debfa56845d536da1fc5725446a2d70db2d1a2683ef478d971273936a4.png",
148
- "specialId": 6,
149
- "special": {
150
- "id": 6,
151
- "class": "Healer",
152
- "name": "Blessing",
153
- "cooldown": 0,
154
- "leaderPassive": "Cleansing Aura"
155
- }
156
- },
157
- null,
158
- {
159
- "id": 532,
160
- "snapshotBlock": 59673035,
161
- "onchainId": 13996,
162
- "name": "Scavenger",
163
- "brs": 821,
164
- "nrg": 108,
165
- "agg": 108,
166
- "spk": 108,
167
- "brn": 96,
168
- "eyc": 97,
169
- "eys": 98,
170
- "kinship": 1941,
171
- "xp": 14345,
172
- "speed": 159,
173
- "health": 616,
174
- "crit": 30,
175
- "armor": 0,
176
- "evade": 18,
177
- "resist": 0,
178
- "magic": 440,
179
- "physical": 205,
180
- "accuracy": 98.5,
181
- "attack": "magic",
182
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/ed88a02c8d88fea501dbc0b265ada9d1217ff309b882237424b608533674ddd3.png",
183
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/afa1e56b2e27546f528792f6cad24ea9031be838b0c552a84166d0f8d6a02422.png",
184
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/803c6ce2e90c81ae8c9107341d4262c0d4ed88e049473ba625d622d524c334fb.png",
185
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/9572e2555f4a22b6a9dff0a4ecff0175d235916acd13cb890789079f0aca6e13.png",
186
- "specialId": 5,
187
- "special": {
188
- "id": 5,
189
- "class": "Cursed",
190
- "name": "Curse",
191
- "cooldown": 0,
192
- "leaderPassive": "Spread the fear"
193
- }
194
- },
195
- null
196
- ]
197
- },
198
- "leader": 533,
199
- "name": "Ogi Maxi",
200
- "owner": "0xa532f169cee0e551d4da641031ac78fd85461035"
1
+ {
2
+ "formation": {
3
+ "front": [
4
+ {
5
+ "id": 533,
6
+ "snapshotBlock": 59673035,
7
+ "onchainId": 23795,
8
+ "name": "Slide",
9
+ "brs": 1005,
10
+ "nrg": -29,
11
+ "agg": 3,
12
+ "spk": -3,
13
+ "brn": -29,
14
+ "eyc": 99,
15
+ "eys": 88,
16
+ "kinship": 1732,
17
+ "xp": 182430,
18
+ "speed": 100,
19
+ "health": 1702,
20
+ "crit": 0,
21
+ "armor": 94,
22
+ "evade": 0,
23
+ "resist": 53,
24
+ "magic": 251,
25
+ "physical": 646,
26
+ "accuracy": 94.5,
27
+ "attack": "physical",
28
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/74f07327e89d0ea20c704549f98adee094d78ad7f95a27948d88e2b69766b191.png",
29
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/3b5139773724c184ae73afa033a1abc8b2222e6f1feba86fce33fc743a054800.png",
30
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/93f829f50da50b168de50c4679e1a7b0bfbb922f3bdd44900a7307578e7c9ce2.png",
31
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/944e70e7a094e891d4b89df5ee15d2d3cc65e73734257605e6d9110fe3eb4be8.png",
32
+ "specialId": 2,
33
+ "special": {
34
+ "id": 2,
35
+ "class": "Enlightened",
36
+ "name": "Meditate",
37
+ "cooldown": 0,
38
+ "leaderPassive": "Cloud of Zen"
39
+ }
40
+ },
41
+ null,
42
+ {
43
+ "id": 534,
44
+ "snapshotBlock": 59673035,
45
+ "onchainId": 16291,
46
+ "name": "Aavenomics",
47
+ "brs": 786,
48
+ "nrg": 2,
49
+ "agg": -18,
50
+ "spk": 117,
51
+ "brn": 3,
52
+ "eyc": 95,
53
+ "eys": 83,
54
+ "kinship": 1804,
55
+ "xp": 3445,
56
+ "speed": 100,
57
+ "health": 1166,
58
+ "crit": 0,
59
+ "armor": 136,
60
+ "evade": 20,
61
+ "resist": 0,
62
+ "magic": 197,
63
+ "physical": 432,
64
+ "accuracy": 90,
65
+ "attack": "physical",
66
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/545e7f3a61833374bb2c27b53b549a560580397494866fc5599088112199d992.png",
67
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/7329e0c0e57637ca99d58dcf571730259c64f1aed63526d31fe31bb8323fa83b.png",
68
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/96625cba302f81dcf441331274f5b7cc5ae646da2d47fa07988fcd4bc17c342b.png",
69
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/7dbc392da25ccc50ec08705703b50c363ba5cb7f4b35d971324fe4ad84308fec.png",
70
+ "specialId": 5,
71
+ "special": {
72
+ "id": 5,
73
+ "class": "Cursed",
74
+ "name": "Curse",
75
+ "cooldown": 0,
76
+ "leaderPassive": "Spread the fear"
77
+ }
78
+ },
79
+ null,
80
+ {
81
+ "id": 535,
82
+ "snapshotBlock": 59673035,
83
+ "onchainId": 2057,
84
+ "name": "Blue Moon",
85
+ "brs": 775,
86
+ "nrg": -2,
87
+ "agg": 98,
88
+ "spk": 91,
89
+ "brn": 120,
90
+ "eyc": 95,
91
+ "eys": 5,
92
+ "kinship": 1786,
93
+ "xp": 3755,
94
+ "speed": 100,
95
+ "health": 1205,
96
+ "crit": 25,
97
+ "armor": 0,
98
+ "evade": 13,
99
+ "resist": 0,
100
+ "magic": 549,
101
+ "physical": 194,
102
+ "accuracy": 95.5,
103
+ "attack": "magic",
104
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/135a500abe09364fa61c0e129c78cd5efd3fe15998cb784c60c94a7261e3f22e.png",
105
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/69824fede30868d1b9ba84af5044357b262ff64fe8b94079be667f35c2b62979.png",
106
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/dae02ef55bfa696e737fdff901c8a6321a37cf234e4dbb0b52beab80563e67f4.png",
107
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/4909819acbcfa03247b8319776e7f031c666fca51aeaa3fac7400415d6055ed6.png",
108
+ "specialId": 7,
109
+ "special": {
110
+ "id": 7,
111
+ "class": "Mage",
112
+ "name": "Thunder",
113
+ "cooldown": 2,
114
+ "leaderPassive": "Channel the coven"
115
+ }
116
+ }
117
+ ],
118
+ "back": [
119
+ null,
120
+ {
121
+ "id": 531,
122
+ "snapshotBlock": 59673035,
123
+ "onchainId": 13700,
124
+ "name": "Maxicrouton",
125
+ "brs": 813,
126
+ "nrg": 114,
127
+ "agg": 102,
128
+ "spk": -21,
129
+ "brn": 102,
130
+ "eyc": 93,
131
+ "eys": 76,
132
+ "kinship": 2146,
133
+ "xp": 23515,
134
+ "speed": 165,
135
+ "health": 610,
136
+ "crit": 27,
137
+ "armor": 0,
138
+ "evade": 0,
139
+ "resist": 71,
140
+ "magic": 468,
141
+ "physical": 203,
142
+ "accuracy": 85.5,
143
+ "attack": "magic",
144
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/3e19380df6b59a735bc1e545c355b09438c14164cc1d8a78ddcbae6c6e8e6e19.png",
145
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/cc1f62ade1657feaaf68bdd320cc34c3d8f80e775e07a9efb4d8a0a16c0cae70.png",
146
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/c507028197648c575d94dcdb0e7142cf7568e873cb0ba524719e9fb9ac62959f.png",
147
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/88a3d7debfa56845d536da1fc5725446a2d70db2d1a2683ef478d971273936a4.png",
148
+ "specialId": 6,
149
+ "special": {
150
+ "id": 6,
151
+ "class": "Healer",
152
+ "name": "Blessing",
153
+ "cooldown": 0,
154
+ "leaderPassive": "Cleansing Aura"
155
+ }
156
+ },
157
+ null,
158
+ {
159
+ "id": 532,
160
+ "snapshotBlock": 59673035,
161
+ "onchainId": 13996,
162
+ "name": "Scavenger",
163
+ "brs": 821,
164
+ "nrg": 108,
165
+ "agg": 108,
166
+ "spk": 108,
167
+ "brn": 96,
168
+ "eyc": 97,
169
+ "eys": 98,
170
+ "kinship": 1941,
171
+ "xp": 14345,
172
+ "speed": 159,
173
+ "health": 616,
174
+ "crit": 30,
175
+ "armor": 0,
176
+ "evade": 18,
177
+ "resist": 0,
178
+ "magic": 440,
179
+ "physical": 205,
180
+ "accuracy": 98.5,
181
+ "attack": "magic",
182
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/ed88a02c8d88fea501dbc0b265ada9d1217ff309b882237424b608533674ddd3.png",
183
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/afa1e56b2e27546f528792f6cad24ea9031be838b0c552a84166d0f8d6a02422.png",
184
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/803c6ce2e90c81ae8c9107341d4262c0d4ed88e049473ba625d622d524c334fb.png",
185
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/9572e2555f4a22b6a9dff0a4ecff0175d235916acd13cb890789079f0aca6e13.png",
186
+ "specialId": 5,
187
+ "special": {
188
+ "id": 5,
189
+ "class": "Cursed",
190
+ "name": "Curse",
191
+ "cooldown": 0,
192
+ "leaderPassive": "Spread the fear"
193
+ }
194
+ },
195
+ null
196
+ ]
197
+ },
198
+ "leader": 533,
199
+ "name": "Ogi Maxi",
200
+ "owner": "0xa532f169cee0e551d4da641031ac78fd85461035"
201
201
  }