gotchi-battler-game-logic 2.0.7 → 3.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 (67) hide show
  1. package/.vscode/settings.json +4 -4
  2. package/Dockerfile +9 -9
  3. package/README.md +49 -49
  4. package/cloudbuild.yaml +27 -27
  5. package/constants/tournamentManagerAbi.json +208 -208
  6. package/game-logic/index.js +7 -6
  7. package/game-logic/v1.4/constants.js +114 -114
  8. package/game-logic/v1.4/index.js +1366 -1366
  9. package/game-logic/v1.6/constants.js +123 -123
  10. package/game-logic/v1.6/index.js +1406 -1406
  11. package/game-logic/v1.7/constants.js +142 -140
  12. package/game-logic/v1.7/helpers.js +610 -593
  13. package/game-logic/v1.7/index.js +802 -795
  14. package/game-logic/v1.8/constants.js +135 -0
  15. package/game-logic/v1.8/helpers.js +628 -0
  16. package/game-logic/v1.8/index.js +826 -0
  17. package/index.js +12 -12
  18. package/package.json +26 -26
  19. package/schemas/team.json +349 -343
  20. package/scripts/balancing/createCSV.js +126 -126
  21. package/scripts/balancing/createTrainingGotchis.js +267 -0
  22. package/scripts/balancing/extractOnchainTraits.js +61 -0
  23. package/scripts/balancing/fixTrainingGotchis.js +155 -259
  24. package/scripts/balancing/processSims.js +229 -229
  25. package/scripts/balancing/sims.js +278 -278
  26. package/scripts/balancing/v1.7/class_combos.js +43 -43
  27. package/scripts/balancing/v1.7/mapGotchi.js +119 -0
  28. package/scripts/balancing/v1.7/setTeamPositions.js +105 -105
  29. package/scripts/balancing/v1.7/training_gotchis.json +20161 -20161
  30. package/scripts/balancing/v1.7/training_gotchis_traits.json +520 -0
  31. package/scripts/balancing/v1.7/trait_combos.json +9 -9
  32. package/scripts/balancing/v1.7.1/class_combos.js +43 -43
  33. package/scripts/balancing/v1.7.1/mapGotchi.js +119 -0
  34. package/scripts/balancing/v1.7.1/setTeamPositions.js +122 -122
  35. package/scripts/balancing/v1.7.1/training_gotchis.json +22401 -22401
  36. package/scripts/balancing/v1.7.1/training_gotchis_traits.json +520 -0
  37. package/scripts/balancing/v1.7.1/trait_combos.json +9 -9
  38. package/scripts/balancing/v1.7.2/class_combos.js +44 -0
  39. package/scripts/balancing/v1.7.2/mapGotchi.js +157 -0
  40. package/scripts/balancing/v1.7.2/setTeamPositions.js +122 -0
  41. package/scripts/balancing/v1.7.2/training_gotchis.json +22402 -0
  42. package/scripts/balancing/v1.7.2/training_gotchis_traits.json +520 -0
  43. package/scripts/balancing/v1.7.2/trait_combos.json +10 -0
  44. package/scripts/balancing/v1.7.3/class_combos.js +44 -0
  45. package/scripts/balancing/v1.7.3/mapGotchi.js +164 -0
  46. package/scripts/balancing/v1.7.3/setTeamPositions.js +122 -0
  47. package/scripts/balancing/v1.7.3/training_gotchis.json +22402 -0
  48. package/scripts/balancing/v1.7.3/training_gotchis_traits.json +37 -0
  49. package/scripts/balancing/v1.7.3/trait_combos.json +10 -0
  50. package/scripts/data/team1.json +213 -213
  51. package/scripts/data/team2.json +200 -200
  52. package/scripts/data/tournaments.json +71 -66
  53. package/scripts/{runBattle.js → runLocalBattle.js} +18 -18
  54. package/scripts/runRealBattle.js +52 -0
  55. package/scripts/simRealBattle.js +121 -0
  56. package/scripts/validateBattle.js +83 -70
  57. package/scripts/validateTournament.js +101 -101
  58. package/utils/contracts.js +12 -12
  59. package/utils/errors.js +29 -29
  60. package/utils/mapGotchi.js +119 -0
  61. package/utils/transforms.js +89 -88
  62. package/utils/validations.js +39 -39
  63. package/debug.log +0 -2
  64. package/game-logic/v1.6/debug.log +0 -1
  65. package/game-logic/v1.7/debug.log +0 -3
  66. package/scripts/data/debug.log +0 -2
  67. package/scripts/debug.log +0 -1
@@ -0,0 +1,520 @@
1
+ {
2
+ "godlike": {
3
+ "cleaver": {
4
+ "brs": 783,
5
+ "nrg": [2,97],
6
+ "agg": [null,111],
7
+ "spk": [-2,101],
8
+ "brn": [-8,107],
9
+ "eys": [null,94],
10
+ "eyc": [null,94]
11
+ },
12
+ "cursed": {
13
+ "brs": 783,
14
+ "nrg": [2,97],
15
+ "agg": [-1,100],
16
+ "spk": [null,111],
17
+ "brn": [-9,108],
18
+ "eys": [null,94],
19
+ "eyc": [null,94]
20
+ },
21
+ "mage": {
22
+ "brs": 783,
23
+ "nrg": [1,103],
24
+ "agg": [-2,101],
25
+ "spk": [1,98],
26
+ "brn": [null,114],
27
+ "eys": [null,94],
28
+ "eyc": [null,94]
29
+ },
30
+ "ninja": {
31
+ "brs": 783,
32
+ "nrg": [null,110],
33
+ "agg": [1,98],
34
+ "spk": [-2,101],
35
+ "brn": [-8,107],
36
+ "eys": [null,94],
37
+ "eyc": [null,94]
38
+ },
39
+ "troll": {
40
+ "brs": 783,
41
+ "nrg": [-4,103],
42
+ "agg": [-2,101],
43
+ "spk": [-2,101],
44
+ "brn": [-12],
45
+ "eys": [null,94],
46
+ "eyc": [null,94]
47
+ },
48
+ "healer": {
49
+ "brs": 783,
50
+ "nrg": [-1,100],
51
+ "agg": [-2,101],
52
+ "spk": [-15],
53
+ "brn": [-2,101],
54
+ "eys": [null,94],
55
+ "eyc": [null,94]
56
+ },
57
+ "tank": {
58
+ "brs": 783,
59
+ "nrg": [0,99],
60
+ "agg": [-15],
61
+ "spk": [1,98],
62
+ "brn": [-6,105],
63
+ "eys": [null,94],
64
+ "eyc": [null,94]
65
+ },
66
+ "enlightened": {
67
+ "brs": 783,
68
+ "nrg": [-13],
69
+ "agg": [-1,100],
70
+ "spk": [-1,100],
71
+ "brn": [-5,104],
72
+ "eys": [null,94],
73
+ "eyc": [null,94]
74
+ }
75
+ },
76
+ "mythical": {
77
+ "ninja": {
78
+ "brs": 690,
79
+ "nrg": [null,108],
80
+ "agg": [0,99],
81
+ "spk": [3,96],
82
+ "brn": [1,98],
83
+ "eys": [null,91],
84
+ "eyc": [null,92]
85
+ },
86
+ "cleaver": {
87
+ "brs": 690,
88
+ "nrg": [1,101],
89
+ "agg": [null,109],
90
+ "spk": [4,95],
91
+ "brn": [3,96],
92
+ "eys": [null,91],
93
+ "eyc": [null,92]
94
+ },
95
+ "cursed": {
96
+ "brs": 690,
97
+ "nrg": [3,97],
98
+ "agg": [1,98],
99
+ "spk": [null,108],
100
+ "brn": [1,98],
101
+ "eys": [null,91],
102
+ "eyc": [null,92]
103
+ },
104
+ "mage": {
105
+ "brs": 690,
106
+ "nrg": [2,98],
107
+ "agg": [2,98],
108
+ "spk": [3,96],
109
+ "brn": [null,109],
110
+ "eys": [null,91],
111
+ "eyc": [null,92]
112
+ },
113
+ "troll": {
114
+ "brs": 690,
115
+ "nrg": [0,99],
116
+ "agg": [1,98],
117
+ "spk": [4,95],
118
+ "brn": [-10],
119
+ "eys": [null,91],
120
+ "eyc": [null,92]
121
+ },
122
+ "healer": {
123
+ "brs": 690,
124
+ "nrg": [1,98],
125
+ "agg": [4,95],
126
+ "spk": [-15],
127
+ "brn": [5,94],
128
+ "eys": [null,91],
129
+ "eyc": [null,92]
130
+ },
131
+ "tank": {
132
+ "brs": 690,
133
+ "nrg": [1,98],
134
+ "agg": [-7],
135
+ "spk": [1,98],
136
+ "brn": [0,99],
137
+ "eys": [null,91],
138
+ "eyc": [null,92]
139
+ },
140
+ "enlightened": {
141
+ "brs": 690,
142
+ "nrg": [-10],
143
+ "agg": [3,96],
144
+ "spk": [2,97],
145
+ "brn": [0,99],
146
+ "eys": [null,92],
147
+ "eyc": [null,91]
148
+ }
149
+ },
150
+ "legendary": {
151
+ "ninja": {
152
+ "brs": 638,
153
+ "nrg": [null,106],
154
+ "agg": [4,95],
155
+ "spk": [5,94],
156
+ "brn": [5,94],
157
+ "eys": [null,90],
158
+ "eyc": [null,90]
159
+ },
160
+ "cleaver": {
161
+ "brs": 638,
162
+ "nrg": [5,94],
163
+ "agg": [null,105],
164
+ "spk": [4,95],
165
+ "brn": [-1,95],
166
+ "eys": [null,90],
167
+ "eyc": [null,90]
168
+ },
169
+ "cursed": {
170
+ "brs": 638,
171
+ "nrg": [4,95],
172
+ "agg": [6,93],
173
+ "spk": [null,106],
174
+ "brn": [4,95],
175
+ "eys": [null,90],
176
+ "eyc": [null,90]
177
+ },
178
+ "mage": {
179
+ "brs": 638,
180
+ "nrg": [4,96],
181
+ "agg": [6,93],
182
+ "spk": [6,93],
183
+ "brn": [null,107],
184
+ "eys": [null,90],
185
+ "eyc": [null,90]
186
+ },
187
+ "troll": {
188
+ "brs": 638,
189
+ "nrg": [4,95],
190
+ "agg": [5,94],
191
+ "spk": [3,96],
192
+ "brn": [-5],
193
+ "eys": [null,90],
194
+ "eyc": [null,90]
195
+ },
196
+ "healer": {
197
+ "brs": 638,
198
+ "nrg": [4,95],
199
+ "agg": [6,93],
200
+ "spk": [-7],
201
+ "brn": [4,95],
202
+ "eys": [null,90],
203
+ "eyc": [null,90]
204
+ },
205
+ "tank": {
206
+ "brs": 638,
207
+ "nrg": [3,96],
208
+ "agg": [-6],
209
+ "spk": [5,94],
210
+ "brn": [5,94],
211
+ "eys": [null,90],
212
+ "eyc": [null,90]
213
+ },
214
+ "enlightened": {
215
+ "brs": 638,
216
+ "nrg": [-6],
217
+ "agg": [6,93],
218
+ "spk": [4,95],
219
+ "brn": [3,96],
220
+ "eys": [null,90],
221
+ "eyc": [null,90]
222
+ }
223
+ },
224
+ "rare": {
225
+ "ninja": {
226
+ "brs": 597,
227
+ "nrg": [null,103],
228
+ "agg": [7,92],
229
+ "spk": [8,91],
230
+ "brn": [8,91],
231
+ "eys": [null,88],
232
+ "eyc": [null,89]
233
+ },
234
+ "cleaver": {
235
+ "brs": 597,
236
+ "nrg": [9,90],
237
+ "agg": [null,105],
238
+ "spk": [8,91],
239
+ "brn": [8,91],
240
+ "eys": [null,88],
241
+ "eyc": [null,89]
242
+ },
243
+ "cursed": {
244
+ "brs": 597,
245
+ "nrg": [9,90],
246
+ "agg": [7,92],
247
+ "spk": [null,103],
248
+ "brn": [7,92],
249
+ "eys": [null,88],
250
+ "eyc": [null,89]
251
+ },
252
+ "mage": {
253
+ "brs": 597,
254
+ "nrg": [8,91],
255
+ "agg": [7,92],
256
+ "spk": [8,91],
257
+ "brn": [null,103],
258
+ "eys": [null,88],
259
+ "eyc": [null,89]
260
+ },
261
+ "troll": {
262
+ "brs": 597,
263
+ "nrg": [9,90],
264
+ "agg": [7,92],
265
+ "spk": [7,92],
266
+ "brn": [-4],
267
+ "eys": [null,88],
268
+ "eyc": [null,89]
269
+ },
270
+ "healer": {
271
+ "brs": 597,
272
+ "nrg": [8,91],
273
+ "agg": [7,92],
274
+ "spk": [-3],
275
+ "brn": [7,92],
276
+ "eys": [null,89],
277
+ "eyc": [null,88]
278
+ },
279
+ "tank": {
280
+ "brs": 597,
281
+ "nrg": [7,92],
282
+ "agg": [-3],
283
+ "spk": [8,91],
284
+ "brn": [7,92],
285
+ "eys": [null,88],
286
+ "eyc": [null,89]
287
+ },
288
+ "enlightened": {
289
+ "brs": 597,
290
+ "nrg": [-2],
291
+ "agg": [7,92],
292
+ "spk": [7,92],
293
+ "brn": [7,92],
294
+ "eys": [null,88],
295
+ "eyc": [null,89]
296
+ }
297
+ },
298
+ "uncommon": {
299
+ "ninja": {
300
+ "brs": 556,
301
+ "nrg": [null,102],
302
+ "agg": [12,87],
303
+ "spk": [13,86],
304
+ "brn": [12,87],
305
+ "eys": [null,87],
306
+ "eyc": [null,87]
307
+ },
308
+ "cleaver": {
309
+ "brs": 556,
310
+ "nrg": [12,87],
311
+ "agg": [null,102],
312
+ "spk": [13,86],
313
+ "brn": [11,88],
314
+ "eys": [null,87],
315
+ "eyc": [null,87]
316
+ },
317
+ "cursed": {
318
+ "brs": 556,
319
+ "nrg": [12,87],
320
+ "agg": [12,87],
321
+ "spk": [null,102],
322
+ "brn": [12,87],
323
+ "eys": [null,87],
324
+ "eyc": [null,87]
325
+ },
326
+ "mage": {
327
+ "brs": 556,
328
+ "nrg": [12,87],
329
+ "agg": [11,88],
330
+ "spk": [13,86],
331
+ "brn": [null,102],
332
+ "eys": [null,87],
333
+ "eyc": [null,87]
334
+ },
335
+ "troll": {
336
+ "brs": 556,
337
+ "nrg": [13,86],
338
+ "agg": [12,87],
339
+ "spk": [13,86],
340
+ "brn": [-4],
341
+ "eys": [null,87],
342
+ "eyc": [null,88]
343
+ },
344
+ "healer": {
345
+ "brs": 556,
346
+ "nrg": [13,86],
347
+ "agg": [12,87],
348
+ "spk": [-3],
349
+ "brn": [11,88],
350
+ "eys": [null,87],
351
+ "eyc": [null,87]
352
+ },
353
+ "tank": {
354
+ "brs": 556,
355
+ "nrg": [12,87],
356
+ "agg": [-3],
357
+ "spk": [12,87],
358
+ "brn": [13,87],
359
+ "eys": [null,87],
360
+ "eyc": [null,87]
361
+ },
362
+ "enlightened": {
363
+ "brs": 556,
364
+ "nrg": [-3],
365
+ "agg": [11,88],
366
+ "spk": [13,86],
367
+ "brn": [12,87],
368
+ "eys": [null,87],
369
+ "eyc": [null,87]
370
+ }
371
+ },
372
+ "common": {
373
+ "ninja": {
374
+ "brs": 501,
375
+ "nrg": [null,95],
376
+ "agg": [21,78],
377
+ "spk": [22,77],
378
+ "brn": [21,78],
379
+ "eys": [null,82],
380
+ "eyc": [null,83]
381
+ },
382
+ "cleaver": {
383
+ "brs": 501,
384
+ "nrg": [22,77],
385
+ "agg": [null,96],
386
+ "spk": [21,78],
387
+ "brn": [21,78],
388
+ "eys": [null,82],
389
+ "eyc": [null,83]
390
+ },
391
+ "cursed": {
392
+ "brs": 501,
393
+ "nrg": [22,77],
394
+ "agg": [21,78],
395
+ "spk": [null,96],
396
+ "brn": [21,78],
397
+ "eys": [null,82],
398
+ "eyc": [null,83]
399
+ },
400
+ "mage": {
401
+ "brs": 501,
402
+ "nrg": [22,77],
403
+ "agg": [21,79],
404
+ "spk": [22,77],
405
+ "brn": [null,96],
406
+ "eys": [null,82],
407
+ "eyc": [null,83]
408
+ },
409
+ "troll": {
410
+ "brs": 501,
411
+ "nrg": [22,77],
412
+ "agg": [22,77],
413
+ "spk": [22,77],
414
+ "brn": [3],
415
+ "eys": [null,83],
416
+ "eyc": [null,84]
417
+ },
418
+ "healer": {
419
+ "brs": 501,
420
+ "nrg": [22,77],
421
+ "agg": [22,77],
422
+ "spk": [3],
423
+ "brn": [21,78],
424
+ "eys": [null,83],
425
+ "eyc": [null,82]
426
+ },
427
+ "tank": {
428
+ "brs": 501,
429
+ "nrg": [22,77],
430
+ "agg": [3],
431
+ "spk": [22,77],
432
+ "brn": [21,78],
433
+ "eys": [null,83],
434
+ "eyc": [null,82]
435
+ },
436
+ "enlightened": {
437
+ "brs": 501,
438
+ "nrg": [4],
439
+ "agg": [21,78],
440
+ "spk": [22,77],
441
+ "brn": [21,78],
442
+ "eys": [null,83],
443
+ "eyc": [null,82]
444
+ }
445
+ },
446
+ "garbage": {
447
+ "ninja": {
448
+ "brs": 400,
449
+ "nrg": [null,51],
450
+ "agg": [49,50],
451
+ "spk": [49,50],
452
+ "brn": [49,50],
453
+ "eys": [null,50],
454
+ "eyc": [null,50]
455
+ },
456
+ "cleaver": {
457
+ "brs": 400,
458
+ "nrg": [49,50],
459
+ "agg": [null,50],
460
+ "spk": [49,50],
461
+ "brn": [49,50],
462
+ "eys": [null,50],
463
+ "eyc": [null,50]
464
+ },
465
+ "cursed": {
466
+ "brs": 400,
467
+ "nrg": [49,50],
468
+ "agg": [49,50],
469
+ "spk": [null,50],
470
+ "brn": [49,50],
471
+ "eys": [null,50],
472
+ "eyc": [null,50]
473
+ },
474
+ "mage": {
475
+ "brs": 400,
476
+ "nrg": [49,50],
477
+ "agg": [49,50],
478
+ "spk": [49,50],
479
+ "brn": [null,50],
480
+ "eys": [null,50],
481
+ "eyc": [null,50]
482
+ },
483
+ "troll": {
484
+ "brs": 400,
485
+ "nrg": [49,50],
486
+ "agg": [49,50],
487
+ "spk": [49,50],
488
+ "brn": [49],
489
+ "eys": [null,50],
490
+ "eyc": [null,50]
491
+ },
492
+ "healer": {
493
+ "brs": 400,
494
+ "nrg": [49,50],
495
+ "agg": [49,50],
496
+ "spk": [49],
497
+ "brn": [49,50],
498
+ "eys": [null,50],
499
+ "eyc": [null,50]
500
+ },
501
+ "tank": {
502
+ "brs": 400,
503
+ "nrg": [49,50],
504
+ "agg": [49],
505
+ "spk": [49,50],
506
+ "brn": [49,50],
507
+ "eys": [null,50],
508
+ "eyc": [null,50]
509
+ },
510
+ "enlightened": {
511
+ "brs": 400,
512
+ "nrg": [49],
513
+ "agg": [49,50],
514
+ "spk": [49,50],
515
+ "brn": [49,50],
516
+ "eys": [null,50],
517
+ "eyc": [null,50]
518
+ }
519
+ }
520
+ }
@@ -1,10 +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"]
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
10
  ]
@@ -0,0 +1,44 @@
1
+ const generateClassCombinations = () => {
2
+ // Generate combinations of the 8 classes for the 4 non-leader spots
3
+ const combinations = []
4
+
5
+ for (let i = 1; i <= 8; i++) {
6
+ for (let j = 1; j <= 8; j++) {
7
+ for (let k = 1; k <= 8; k++) {
8
+ for (let l = 1; l <= 8; l++) {
9
+ combinations.push([i, j, k, l].sort())
10
+ }
11
+ }
12
+ }
13
+ }
14
+
15
+ // Remove duplicate combinations, so [1,1,1,1] is allowed but [1,1,1,2] and [1,1,2,1] are duplicates
16
+ // Keep as numbers for now, convert to strings to remove duplicates, then convert back to numbers
17
+ const uniqueCombinations = [...new Set(combinations.map((combination) => combination.join('')))].map((combination) => combination.split('').map((number) => parseInt(number)))
18
+
19
+ return uniqueCombinations
20
+ }
21
+
22
+ const getCombinationsForALeader = (leaderClass) => {
23
+ const combinations = generateClassCombinations()
24
+
25
+ const combinationsForALeader = combinations.map((combination) => {
26
+ return [leaderClass, ...combination]
27
+ })
28
+
29
+ return combinationsForALeader
30
+ }
31
+
32
+ const getAllClassCombos = () => {
33
+ const allClassCombos = []
34
+
35
+ for (let i = 1; i <= 8; i++) {
36
+ allClassCombos.push(...getCombinationsForALeader(i))
37
+ }
38
+
39
+ return allClassCombos
40
+ }
41
+
42
+ const allClassCombos = getAllClassCombos()
43
+
44
+ module.exports = allClassCombos