gotchi-battler-game-logic 2.0.6 → 2.0.8

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 (45) 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 +6 -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 +595 -593
  13. package/game-logic/v1.7/index.js +802 -795
  14. package/index.js +12 -12
  15. package/package.json +26 -26
  16. package/schemas/team.json +349 -343
  17. package/scripts/balancing/createCSV.js +126 -126
  18. package/scripts/balancing/fixTrainingGotchis.js +155 -259
  19. package/scripts/balancing/processSims.js +229 -229
  20. package/scripts/balancing/sims.js +278 -278
  21. package/scripts/balancing/v1.7/class_combos.js +43 -43
  22. package/scripts/balancing/v1.7/setTeamPositions.js +105 -105
  23. package/scripts/balancing/v1.7/training_gotchis.json +20161 -20161
  24. package/scripts/balancing/v1.7/trait_combos.json +9 -9
  25. package/scripts/balancing/v1.7.1/class_combos.js +43 -43
  26. package/scripts/balancing/v1.7.1/setTeamPositions.js +122 -122
  27. package/scripts/balancing/v1.7.1/training_gotchis.json +22401 -22401
  28. package/scripts/balancing/v1.7.1/trait_combos.json +9 -9
  29. package/scripts/balancing/v1.7.2/class_combos.js +44 -0
  30. package/scripts/balancing/v1.7.2/setTeamPositions.js +122 -0
  31. package/scripts/balancing/v1.7.2/training_gotchis.json +22402 -0
  32. package/scripts/balancing/v1.7.2/trait_combos.json +10 -0
  33. package/scripts/data/team1.json +213 -213
  34. package/scripts/data/team2.json +200 -200
  35. package/scripts/data/tournaments.json +66 -66
  36. package/scripts/{runBattle.js → runLocalBattle.js} +18 -18
  37. package/scripts/runRealBattle.js +52 -0
  38. package/scripts/simRealBattle.js +121 -0
  39. package/scripts/validateBattle.js +74 -70
  40. package/scripts/validateTournament.js +101 -101
  41. package/utils/contracts.js +12 -12
  42. package/utils/errors.js +29 -29
  43. package/utils/mapGotchi.js +119 -0
  44. package/utils/transforms.js +89 -88
  45. package/utils/validations.js +39 -39
@@ -1,201 +1,201 @@
1
- {
2
- "formation": {
3
- "front": [
4
- null,
5
- {
6
- "id": 539,
7
- "snapshotBlock": 59673035,
8
- "onchainId": 13681,
9
- "name": "Artemis",
10
- "brs": 851,
11
- "nrg": -11,
12
- "agg": -2,
13
- "spk": 86,
14
- "brn": 110,
15
- "eyc": 1,
16
- "eys": 0,
17
- "kinship": 1663,
18
- "xp": 2745,
19
- "speed": 100,
20
- "health": 1370,
21
- "crit": 0,
22
- "armor": 104,
23
- "evade": 11,
24
- "resist": 0,
25
- "magic": 518,
26
- "physical": 213,
27
- "accuracy": 99.5,
28
- "attack": "magic",
29
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/9f4def373cf431294f0b84f41d44f01b37672083a8b7b50d3ce0d95228fc5d9f.png",
30
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/34c3252ba2f0f42a8b729d3bd63d1f4da0127638f8fa182a6a4dc4d21613c559.png",
31
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/92600bb5938b211f40d0def5878df8543f67cd9b05afd80a284a5ef4c348fc18.png",
32
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/6bb67fb53ac8400770f788af79e7495f00f7fa584d30d3e08f1407a18f58f5e3.png",
33
- "specialId": 7,
34
- "special": {
35
- "id": 7,
36
- "class": "Mage",
37
- "name": "Thunder",
38
- "cooldown": 2,
39
- "leaderPassive": "Channel the coven"
40
- }
41
- },
42
- null,
43
- {
44
- "id": 540,
45
- "snapshotBlock": 59673035,
46
- "onchainId": 16676,
47
- "name": "Renna",
48
- "brs": 706,
49
- "nrg": 4,
50
- "agg": 1,
51
- "spk": -10,
52
- "brn": 100,
53
- "eyc": 97,
54
- "eys": 12,
55
- "kinship": 2017,
56
- "xp": 3465,
57
- "speed": 100,
58
- "health": 1082,
59
- "crit": 0,
60
- "armor": 98,
61
- "evade": 0,
62
- "resist": 60,
63
- "magic": 432,
64
- "physical": 177,
65
- "accuracy": 93,
66
- "attack": "magic",
67
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/3e2ab7f51c68b9f6d840112acf85e43cdd4482d6928d036a0d25ed9d4d7fd8cb.png",
68
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/70a7da02ab9172152ccef9210f87c6cd55b326a0c9e84f8f2bbe8f6c3ccb4417.png",
69
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/991830ed19232f1c9a677dbe4ced307af9918f89bf140476a7036a5c529fd956.png",
70
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/0b897d90ee01a77aff97a80cdf75a179b53ec5f51cd151e6dfa5380e6e25357d.png",
71
- "specialId": 6,
72
- "special": {
73
- "id": 6,
74
- "class": "Healer",
75
- "name": "Blessing",
76
- "cooldown": 0,
77
- "leaderPassive": "Cleansing Aura"
78
- }
79
- },
80
- null
81
- ],
82
- "back": [
83
- {
84
- "id": 536,
85
- "snapshotBlock": 59673035,
86
- "onchainId": 15560,
87
- "name": "Czar",
88
- "brs": 823,
89
- "nrg": 103,
90
- "agg": 108,
91
- "spk": 17,
92
- "brn": -27,
93
- "eyc": 0,
94
- "eys": 0,
95
- "kinship": 2121,
96
- "xp": 4350,
97
- "speed": 154,
98
- "health": 617,
99
- "crit": 30,
100
- "armor": 0,
101
- "evade": 0,
102
- "resist": 33,
103
- "magic": 206,
104
- "physical": 591,
105
- "accuracy": 100,
106
- "attack": "physical",
107
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/314f74e7dc6c347aeb88e7a3ce1ea582154f857b59d407dbab7ec35926b3b978.png",
108
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/dbf15d1c3b74baefaa42ce5ec5de868a1ac8ebd0e38553f8b37de7763014614c.png",
109
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/6832d15ef8e784d36306a5ef14ae5d80c716a609e5bb48607964d0280dba6ad9.png",
110
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/6e9d00e3947134dbca37c97dddb0f5f02a8a8c35417ad88f0ba6202e82b25d0d.png",
111
- "specialId": 8,
112
- "special": {
113
- "id": 8,
114
- "class": "Troll",
115
- "name": "Devestating Smash",
116
- "cooldown": 2,
117
- "leaderPassive": "Clan momentum"
118
- }
119
- },
120
- null,
121
- {
122
- "id": 537,
123
- "snapshotBlock": 59673035,
124
- "onchainId": 474,
125
- "name": "Titan",
126
- "brs": 740,
127
- "nrg": 107,
128
- "agg": 100,
129
- "spk": 107,
130
- "brn": 107,
131
- "eyc": 91,
132
- "eys": 92,
133
- "kinship": 2295,
134
- "xp": 3380,
135
- "speed": 158,
136
- "health": 555,
137
- "crit": 26,
138
- "armor": 0,
139
- "evade": 17,
140
- "resist": 0,
141
- "magic": 475,
142
- "physical": 185,
143
- "accuracy": 92.5,
144
- "attack": "magic",
145
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/c44da0ac4057817671968dc80027c7262f679a51b5c0fffa468d56d990d10795.png",
146
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/8f8e6e9f7ec7e3e11c0591014108885a20057f49ec009dc4980190c1b4bdcfb0.png",
147
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/a7a485f674cc6c5b4f22271408688a18ba985f743e7ec4794f208cb50d2fdc26.png",
148
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/aa0d6349e760625cdd34781f683dd316649630b39fa7ad829e8b862efad31a78.png",
149
- "specialId": 5,
150
- "special": {
151
- "id": 5,
152
- "class": "Cursed",
153
- "name": "Curse",
154
- "cooldown": 0,
155
- "leaderPassive": "Spread the fear"
156
- }
157
- },
158
- null,
159
- {
160
- "id": 538,
161
- "snapshotBlock": 59673035,
162
- "onchainId": 2270,
163
- "name": "Caesar",
164
- "brs": 750,
165
- "nrg": 97,
166
- "agg": 101,
167
- "spk": 98,
168
- "brn": 120,
169
- "eyc": 1,
170
- "eys": 85,
171
- "kinship": 2511,
172
- "xp": 4905,
173
- "speed": 148,
174
- "health": 563,
175
- "crit": 26,
176
- "armor": 0,
177
- "evade": 15,
178
- "resist": 0,
179
- "magic": 543,
180
- "physical": 188,
181
- "accuracy": 92.5,
182
- "attack": "magic",
183
- "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/6f733ca8e041965680bbd482a82d669c3d45d8e73bbcc105f367937d62b4604b.png",
184
- "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/ce74959c2b5ff03e74568389a2068e4a14a8d6b9969c247b3bbe804bac2ab4d4.png",
185
- "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/2c8a0e22e9af7be4c2232d7596f9a0ee1b2d1df0e114def431f6c7809e2d2629.png",
186
- "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/fc3e90aefb6f8d8c9bf846b94358619aa495d6c14da096f17e24a7634c2270f4.png",
187
- "specialId": 7,
188
- "special": {
189
- "id": 7,
190
- "class": "Mage",
191
- "name": "Thunder",
192
- "cooldown": 2,
193
- "leaderPassive": "Channel the coven"
194
- }
195
- }
196
- ]
197
- },
198
- "leader": 537,
199
- "name": "Wagdiddly",
200
- "owner": "0xd281f988242c900d67ff2aafabe683b8004ee778"
1
+ {
2
+ "formation": {
3
+ "front": [
4
+ null,
5
+ {
6
+ "id": 539,
7
+ "snapshotBlock": 59673035,
8
+ "onchainId": 13681,
9
+ "name": "Artemis",
10
+ "brs": 851,
11
+ "nrg": -11,
12
+ "agg": -2,
13
+ "spk": 86,
14
+ "brn": 110,
15
+ "eyc": 1,
16
+ "eys": 0,
17
+ "kinship": 1663,
18
+ "xp": 2745,
19
+ "speed": 100,
20
+ "health": 1370,
21
+ "crit": 0,
22
+ "armor": 104,
23
+ "evade": 11,
24
+ "resist": 0,
25
+ "magic": 518,
26
+ "physical": 213,
27
+ "accuracy": 99.5,
28
+ "attack": "magic",
29
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/9f4def373cf431294f0b84f41d44f01b37672083a8b7b50d3ce0d95228fc5d9f.png",
30
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/34c3252ba2f0f42a8b729d3bd63d1f4da0127638f8fa182a6a4dc4d21613c559.png",
31
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/92600bb5938b211f40d0def5878df8543f67cd9b05afd80a284a5ef4c348fc18.png",
32
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/6bb67fb53ac8400770f788af79e7495f00f7fa584d30d3e08f1407a18f58f5e3.png",
33
+ "specialId": 7,
34
+ "special": {
35
+ "id": 7,
36
+ "class": "Mage",
37
+ "name": "Thunder",
38
+ "cooldown": 2,
39
+ "leaderPassive": "Channel the coven"
40
+ }
41
+ },
42
+ null,
43
+ {
44
+ "id": 540,
45
+ "snapshotBlock": 59673035,
46
+ "onchainId": 16676,
47
+ "name": "Renna",
48
+ "brs": 706,
49
+ "nrg": 4,
50
+ "agg": 1,
51
+ "spk": -10,
52
+ "brn": 100,
53
+ "eyc": 97,
54
+ "eys": 12,
55
+ "kinship": 2017,
56
+ "xp": 3465,
57
+ "speed": 100,
58
+ "health": 1082,
59
+ "crit": 0,
60
+ "armor": 98,
61
+ "evade": 0,
62
+ "resist": 60,
63
+ "magic": 432,
64
+ "physical": 177,
65
+ "accuracy": 93,
66
+ "attack": "magic",
67
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/3e2ab7f51c68b9f6d840112acf85e43cdd4482d6928d036a0d25ed9d4d7fd8cb.png",
68
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/70a7da02ab9172152ccef9210f87c6cd55b326a0c9e84f8f2bbe8f6c3ccb4417.png",
69
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/991830ed19232f1c9a677dbe4ced307af9918f89bf140476a7036a5c529fd956.png",
70
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/0b897d90ee01a77aff97a80cdf75a179b53ec5f51cd151e6dfa5380e6e25357d.png",
71
+ "specialId": 6,
72
+ "special": {
73
+ "id": 6,
74
+ "class": "Healer",
75
+ "name": "Blessing",
76
+ "cooldown": 0,
77
+ "leaderPassive": "Cleansing Aura"
78
+ }
79
+ },
80
+ null
81
+ ],
82
+ "back": [
83
+ {
84
+ "id": 536,
85
+ "snapshotBlock": 59673035,
86
+ "onchainId": 15560,
87
+ "name": "Czar",
88
+ "brs": 823,
89
+ "nrg": 103,
90
+ "agg": 108,
91
+ "spk": 17,
92
+ "brn": -27,
93
+ "eyc": 0,
94
+ "eys": 0,
95
+ "kinship": 2121,
96
+ "xp": 4350,
97
+ "speed": 154,
98
+ "health": 617,
99
+ "crit": 30,
100
+ "armor": 0,
101
+ "evade": 0,
102
+ "resist": 33,
103
+ "magic": 206,
104
+ "physical": 591,
105
+ "accuracy": 100,
106
+ "attack": "physical",
107
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/314f74e7dc6c347aeb88e7a3ce1ea582154f857b59d407dbab7ec35926b3b978.png",
108
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/dbf15d1c3b74baefaa42ce5ec5de868a1ac8ebd0e38553f8b37de7763014614c.png",
109
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/6832d15ef8e784d36306a5ef14ae5d80c716a609e5bb48607964d0280dba6ad9.png",
110
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/6e9d00e3947134dbca37c97dddb0f5f02a8a8c35417ad88f0ba6202e82b25d0d.png",
111
+ "specialId": 8,
112
+ "special": {
113
+ "id": 8,
114
+ "class": "Troll",
115
+ "name": "Devestating Smash",
116
+ "cooldown": 2,
117
+ "leaderPassive": "Clan momentum"
118
+ }
119
+ },
120
+ null,
121
+ {
122
+ "id": 537,
123
+ "snapshotBlock": 59673035,
124
+ "onchainId": 474,
125
+ "name": "Titan",
126
+ "brs": 740,
127
+ "nrg": 107,
128
+ "agg": 100,
129
+ "spk": 107,
130
+ "brn": 107,
131
+ "eyc": 91,
132
+ "eys": 92,
133
+ "kinship": 2295,
134
+ "xp": 3380,
135
+ "speed": 158,
136
+ "health": 555,
137
+ "crit": 26,
138
+ "armor": 0,
139
+ "evade": 17,
140
+ "resist": 0,
141
+ "magic": 475,
142
+ "physical": 185,
143
+ "accuracy": 92.5,
144
+ "attack": "magic",
145
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/c44da0ac4057817671968dc80027c7262f679a51b5c0fffa468d56d990d10795.png",
146
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/8f8e6e9f7ec7e3e11c0591014108885a20057f49ec009dc4980190c1b4bdcfb0.png",
147
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/a7a485f674cc6c5b4f22271408688a18ba985f743e7ec4794f208cb50d2fdc26.png",
148
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/aa0d6349e760625cdd34781f683dd316649630b39fa7ad829e8b862efad31a78.png",
149
+ "specialId": 5,
150
+ "special": {
151
+ "id": 5,
152
+ "class": "Cursed",
153
+ "name": "Curse",
154
+ "cooldown": 0,
155
+ "leaderPassive": "Spread the fear"
156
+ }
157
+ },
158
+ null,
159
+ {
160
+ "id": 538,
161
+ "snapshotBlock": 59673035,
162
+ "onchainId": 2270,
163
+ "name": "Caesar",
164
+ "brs": 750,
165
+ "nrg": 97,
166
+ "agg": 101,
167
+ "spk": 98,
168
+ "brn": 120,
169
+ "eyc": 1,
170
+ "eys": 85,
171
+ "kinship": 2511,
172
+ "xp": 4905,
173
+ "speed": 148,
174
+ "health": 563,
175
+ "crit": 26,
176
+ "armor": 0,
177
+ "evade": 15,
178
+ "resist": 0,
179
+ "magic": 543,
180
+ "physical": 188,
181
+ "accuracy": 92.5,
182
+ "attack": "magic",
183
+ "svgFront": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/6f733ca8e041965680bbd482a82d669c3d45d8e73bbcc105f367937d62b4604b.png",
184
+ "svgBack": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/ce74959c2b5ff03e74568389a2068e4a14a8d6b9969c247b3bbe804bac2ab4d4.png",
185
+ "svgLeft": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/2c8a0e22e9af7be4c2232d7596f9a0ee1b2d1df0e114def431f6c7809e2d2629.png",
186
+ "svgRight": "https://storage.googleapis.com/gotchi-battler-live_gotchis/onchain/fc3e90aefb6f8d8c9bf846b94358619aa495d6c14da096f17e24a7634c2270f4.png",
187
+ "specialId": 7,
188
+ "special": {
189
+ "id": 7,
190
+ "class": "Mage",
191
+ "name": "Thunder",
192
+ "cooldown": 2,
193
+ "leaderPassive": "Channel the coven"
194
+ }
195
+ }
196
+ ]
197
+ },
198
+ "leader": 537,
199
+ "name": "Wagdiddly",
200
+ "owner": "0xd281f988242c900d67ff2aafabe683b8004ee778"
201
201
  }
@@ -1,67 +1,67 @@
1
- [
2
- {
3
- "id": 1,
4
- "name": "Test Tournament 1",
5
- "gameLogicVersion": "v1.5"
6
- },
7
- {
8
- "id": 2,
9
- "name": "Test Tournament 2",
10
- "gameLogicVersion": "v1.5"
11
- },
12
- {
13
- "id": 4,
14
- "name": "1000 DAI Bounty Tournament",
15
- "gameLogicVersion": "v1.5"
16
- },
17
- {
18
- "id": 5,
19
- "name": "2000 DAI Bounty Tournament",
20
- "gameLogicVersion": "v1.5"
21
- },
22
- {
23
- "id": 7,
24
- "name": "10k GHST Rarity Farming Tournament",
25
- "gameLogicVersion": "v1.5"
26
- },
27
- {
28
- "id": 8,
29
- "name": "30k GHST Rarity Farming Tournament",
30
- "gameLogicVersion": "v1.5"
31
- },
32
- {
33
- "id": 9,
34
- "name": "60k GHST Rarity Farming Tournament",
35
- "gameLogicVersion": "v1.5"
36
- },
37
- {
38
- "id": 10,
39
- "name": "Test Tournament 3",
40
- "gameLogicVersion": "v1.5"
41
- },
42
- {
43
- "id": 11,
44
- "name": "1000 DAI Bounty Tournament",
45
- "gameLogicVersion": "v1.4"
46
- },
47
- {
48
- "id": 12,
49
- "name": "1000 DAI Bounty Tournament",
50
- "gameLogicVersion": "v1.5"
51
- },
52
- {
53
- "id": 13,
54
- "name": "RF8 10K GHST Tournament",
55
- "gameLogicVersion": "v1.5"
56
- },
57
- {
58
- "id": 14,
59
- "name": "RF8 40K GHST Tournament",
60
- "gameLogicVersion": "v1.6"
61
- },
62
- {
63
- "id": 15,
64
- "name": "RF8 100K GHST Tournament",
65
- "gameLogicVersion": "v1.6"
66
- }
1
+ [
2
+ {
3
+ "id": 1,
4
+ "name": "Test Tournament 1",
5
+ "gameLogicVersion": "v1.5"
6
+ },
7
+ {
8
+ "id": 2,
9
+ "name": "Test Tournament 2",
10
+ "gameLogicVersion": "v1.5"
11
+ },
12
+ {
13
+ "id": 4,
14
+ "name": "1000 DAI Bounty Tournament",
15
+ "gameLogicVersion": "v1.5"
16
+ },
17
+ {
18
+ "id": 5,
19
+ "name": "2000 DAI Bounty Tournament",
20
+ "gameLogicVersion": "v1.5"
21
+ },
22
+ {
23
+ "id": 7,
24
+ "name": "10k GHST Rarity Farming Tournament",
25
+ "gameLogicVersion": "v1.5"
26
+ },
27
+ {
28
+ "id": 8,
29
+ "name": "30k GHST Rarity Farming Tournament",
30
+ "gameLogicVersion": "v1.5"
31
+ },
32
+ {
33
+ "id": 9,
34
+ "name": "60k GHST Rarity Farming Tournament",
35
+ "gameLogicVersion": "v1.5"
36
+ },
37
+ {
38
+ "id": 10,
39
+ "name": "Test Tournament 3",
40
+ "gameLogicVersion": "v1.5"
41
+ },
42
+ {
43
+ "id": 11,
44
+ "name": "1000 DAI Bounty Tournament",
45
+ "gameLogicVersion": "v1.4"
46
+ },
47
+ {
48
+ "id": 12,
49
+ "name": "1000 DAI Bounty Tournament",
50
+ "gameLogicVersion": "v1.5"
51
+ },
52
+ {
53
+ "id": 13,
54
+ "name": "RF8 10K GHST Tournament",
55
+ "gameLogicVersion": "v1.5"
56
+ },
57
+ {
58
+ "id": 14,
59
+ "name": "RF8 40K GHST Tournament",
60
+ "gameLogicVersion": "v1.6"
61
+ },
62
+ {
63
+ "id": 15,
64
+ "name": "RF8 100K GHST Tournament",
65
+ "gameLogicVersion": "v1.6"
66
+ }
67
67
  ]
@@ -1,18 +1,18 @@
1
- const fs = require('fs')
2
- const path = require('path')
3
- const { battle } = require('..')
4
-
5
- // Edit these json files to test different battles
6
- // NOTE: Only the in-game stats (speed, health, crit etc..) are used in the game logic
7
- const team1 = require('./data/team1.json')
8
- const team2 = require('./data/team2.json')
9
-
10
- const results = battle(team1, team2, "82807311112923564712218359337695919195403960526804010606215202651499586140469")
11
-
12
- const timestamp = new Date().getTime()
13
- const resultsFilename = `results-${timestamp}.json`
14
- fs.writeFileSync(path.join(__dirname, 'output', resultsFilename), JSON.stringify(results, null, '\t'))
15
-
16
- console.log(`Results written to ${path.join(__dirname, 'output', resultsFilename)}`)
17
-
18
- // node scripts/runBattle.js
1
+ const fs = require('fs')
2
+ const path = require('path')
3
+ const { battle } = require('..')
4
+
5
+ // Edit these json files to test different battles
6
+ // NOTE: Only the in-game stats (speed, health, crit etc..) are used in the game logic
7
+ const team1 = require('./data/team1.json')
8
+ const team2 = require('./data/team2.json')
9
+
10
+ const results = battle(team1, team2, "82807311112923564712218359337695919195403960526804010606215202651499586140469", true)
11
+
12
+ const timestamp = new Date().getTime()
13
+ const resultsFilename = `results-${timestamp}.json`
14
+ fs.writeFileSync(path.join(__dirname, 'output', resultsFilename), JSON.stringify(results, null, '\t'))
15
+
16
+ console.log(`Results written to ${path.join(__dirname, 'output', resultsFilename)}`)
17
+
18
+ // node scripts/runLocalBattle.js
@@ -0,0 +1,52 @@
1
+ const axios = require('axios')
2
+ const axiosRetry = require('axios-retry').default
3
+ axiosRetry(axios, {
4
+ retries: 3,
5
+ retryDelay: axiosRetry.exponentialDelay
6
+ })
7
+ const fs = require('fs')
8
+ const path = require('path')
9
+
10
+ const { webappTeamToInGameTeam } = require('../utils/transforms')
11
+ const { battle } = require('..')
12
+
13
+ const main = async (battleId) => {
14
+
15
+ const battleRes = await axios.get(`https://gotchi-battler-backend-blmom6tkla-ew.a.run.app/api/v1/battles/${battleId}`)
16
+
17
+ if (!battleRes || !battleRes.data || !battleRes.data.seed || !battleRes.data.team1 || !battleRes.data.team2) {
18
+ console.error('Battle not found')
19
+ return
20
+ }
21
+
22
+ const seed = battleRes.data.seed
23
+
24
+ // Transform the logs to in-game teams
25
+ const team1 = webappTeamToInGameTeam(battleRes.data.team1Snapshot || battleRes.data.team1)
26
+ const team2 = webappTeamToInGameTeam(battleRes.data.team2Snapshot || battleRes.data.team2)
27
+
28
+ // Run the game loop
29
+ const logs = await battle(team1, team2, seed, true)
30
+
31
+ // Write the logs to a file
32
+ fs.writeFileSync(path.join(__dirname, 'output', `${battleId}.json`), JSON.stringify(logs, null, '\t'))
33
+
34
+ return logs
35
+ }
36
+
37
+ module.exports = main
38
+
39
+ // node scripts/runRealBattle.js 19566507-bafe-4a97-a5ee-0926ac9efcd8
40
+ if (require.main === module) {
41
+ const battleId = process.argv[2]
42
+
43
+ main(battleId)
44
+ .then(() => {
45
+ console.log('Done')
46
+ process.exit(0)
47
+ })
48
+ .catch((error) => {
49
+ console.error('Error: ', error)
50
+ process.exit(1)
51
+ })
52
+ }