From ffd785d534efe59809786419f113eb38a0dd8301 Mon Sep 17 00:00:00 2001 From: Flashfyre Date: Wed, 28 Feb 2024 23:13:05 -0500 Subject: [PATCH] Rebalance item weights and add Rogue tier --- public/images/items.json | 2329 +++++++++++++------------ public/images/items.png | Bin 42115 -> 42013 bytes public/images/items/rb.png | Bin 0 -> 237 bytes public/images/pb.json | 187 +- public/images/pb.png | Bin 946 -> 995 bytes public/images/pokeball/rb.png | Bin 0 -> 226 bytes public/images/pokeball/rb_open.png | Bin 0 -> 259 bytes public/images/pokeball/rb_opening.png | Bin 0 -> 256 bytes src/anims.ts | 1 + src/battle-scene.ts | 6 +- src/data/egg.ts | 20 +- src/data/enums/egg-type.ts | 6 + src/data/pokeball.ts | 10 + src/egg-hatch-phase.ts | 10 +- src/modifier/modifier-tier.ts | 1 + src/modifier/modifier-type.ts | 214 ++- src/system/voucher.ts | 12 +- src/ui/ball-ui-handler.ts | 2 +- src/ui/egg-gacha-ui-handler.ts | 26 +- src/ui/modifier-select-ui-handler.ts | 34 +- src/ui/text.ts | 18 +- src/ui/ui.ts | 2 +- 22 files changed, 1518 insertions(+), 1360 deletions(-) create mode 100644 public/images/items/rb.png create mode 100644 public/images/pokeball/rb.png create mode 100644 public/images/pokeball/rb_open.png create mode 100644 public/images/pokeball/rb_opening.png create mode 100644 src/data/enums/egg-type.ts diff --git a/public/images/items.json b/public/images/items.json index 3689e281e..f7b822e6b 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -4,8 +4,8 @@ "image": "items.png", "format": "RGBA8888", "size": { - "w": 365, - "h": 365 + "w": 366, + "h": 366 }, "scale": 1, "frames": [ @@ -450,27 +450,6 @@ "h": 16 } }, - { - "filename": "revive", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 10, - "y": 8, - "w": 12, - "h": 17 - }, - "frame": { - "x": 350, - "y": 0, - "w": 12, - "h": 17 - } - }, { "filename": "garchompite", "rotated": false, @@ -486,12 +465,33 @@ "h": 16 }, "frame": { - "x": 0, - "y": 14, + "x": 350, + "y": 0, "w": 16, "h": 16 } }, + { + "filename": "revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 10, + "y": 8, + "w": 12, + "h": 17 + }, + "frame": { + "x": 0, + "y": 11, + "w": 12, + "h": 17 + } + }, { "filename": "gardevoirite", "rotated": false, @@ -507,7 +507,7 @@ "h": 16 }, "frame": { - "x": 16, + "x": 12, "y": 14, "w": 16, "h": 16 @@ -528,7 +528,7 @@ "h": 16 }, "frame": { - "x": 32, + "x": 28, "y": 15, "w": 16, "h": 16 @@ -549,7 +549,7 @@ "h": 16 }, "frame": { - "x": 48, + "x": 44, "y": 15, "w": 16, "h": 16 @@ -570,8 +570,8 @@ "h": 16 }, "frame": { - "x": 64, - "y": 16, + "x": 60, + "y": 15, "w": 16, "h": 16 } @@ -591,7 +591,7 @@ "h": 16 }, "frame": { - "x": 80, + "x": 76, "y": 16, "w": 16, "h": 16 @@ -612,7 +612,7 @@ "h": 16 }, "frame": { - "x": 96, + "x": 92, "y": 16, "w": 16, "h": 16 @@ -633,7 +633,7 @@ "h": 16 }, "frame": { - "x": 112, + "x": 108, "y": 16, "w": 16, "h": 16 @@ -654,7 +654,7 @@ "h": 16 }, "frame": { - "x": 128, + "x": 124, "y": 16, "w": 16, "h": 16 @@ -675,7 +675,7 @@ "h": 16 }, "frame": { - "x": 144, + "x": 140, "y": 16, "w": 16, "h": 16 @@ -696,7 +696,7 @@ "h": 16 }, "frame": { - "x": 160, + "x": 156, "y": 16, "w": 16, "h": 16 @@ -717,7 +717,7 @@ "h": 16 }, "frame": { - "x": 176, + "x": 172, "y": 16, "w": 16, "h": 16 @@ -738,7 +738,7 @@ "h": 16 }, "frame": { - "x": 192, + "x": 188, "y": 16, "w": 16, "h": 16 @@ -759,7 +759,7 @@ "h": 16 }, "frame": { - "x": 208, + "x": 204, "y": 16, "w": 16, "h": 16 @@ -780,7 +780,7 @@ "h": 16 }, "frame": { - "x": 224, + "x": 220, "y": 16, "w": 16, "h": 16 @@ -801,7 +801,7 @@ "h": 16 }, "frame": { - "x": 240, + "x": 236, "y": 16, "w": 20, "h": 16 @@ -822,7 +822,7 @@ "h": 16 }, "frame": { - "x": 260, + "x": 256, "y": 16, "w": 16, "h": 16 @@ -843,7 +843,7 @@ "h": 16 }, "frame": { - "x": 276, + "x": 272, "y": 16, "w": 16, "h": 16 @@ -864,7 +864,7 @@ "h": 16 }, "frame": { - "x": 292, + "x": 288, "y": 16, "w": 16, "h": 16 @@ -885,7 +885,7 @@ "h": 16 }, "frame": { - "x": 308, + "x": 304, "y": 16, "w": 16, "h": 16 @@ -906,7 +906,7 @@ "h": 16 }, "frame": { - "x": 324, + "x": 320, "y": 16, "w": 16, "h": 16 @@ -927,8 +927,8 @@ "h": 16 }, "frame": { - "x": 340, - "y": 17, + "x": 336, + "y": 16, "w": 16, "h": 16 } @@ -970,7 +970,7 @@ }, "frame": { "x": 16, - "y": 30, + "y": 31, "w": 16, "h": 16 } @@ -1348,7 +1348,7 @@ }, "frame": { "x": 340, - "y": 33, + "y": 32, "w": 18, "h": 18 } @@ -1369,7 +1369,7 @@ }, "frame": { "x": 0, - "y": 46, + "y": 47, "w": 21, "h": 18 } @@ -1705,7 +1705,7 @@ }, "frame": { "x": 325, - "y": 51, + "y": 50, "w": 20, "h": 18 } @@ -1726,7 +1726,7 @@ }, "frame": { "x": 345, - "y": 51, + "y": 50, "w": 20, "h": 18 } @@ -1747,7 +1747,7 @@ }, "frame": { "x": 0, - "y": 64, + "y": 65, "w": 20, "h": 18 } @@ -2062,7 +2062,7 @@ }, "frame": { "x": 313, - "y": 69, + "y": 68, "w": 20, "h": 19 } @@ -2083,7 +2083,7 @@ }, "frame": { "x": 333, - "y": 69, + "y": 68, "w": 22, "h": 19 } @@ -2104,7 +2104,7 @@ }, "frame": { "x": 0, - "y": 82, + "y": 83, "w": 19, "h": 20 } @@ -2382,27 +2382,6 @@ "h": 20 } }, - { - "filename": "razor_fang", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 18, - "h": 20 - }, - "frame": { - "x": 294, - "y": 87, - "w": 18, - "h": 20 - } - }, { "filename": "magnet", "rotated": false, @@ -2418,8 +2397,8 @@ "h": 20 }, "frame": { - "x": 312, - "y": 88, + "x": 294, + "y": 87, "w": 20, "h": 20 } @@ -2439,8 +2418,8 @@ "h": 20 }, "frame": { - "x": 332, - "y": 88, + "x": 314, + "y": 87, "w": 22, "h": 20 } @@ -2460,8 +2439,8 @@ "h": 20 }, "frame": { - "x": 0, - "y": 103, + "x": 336, + "y": 87, "w": 20, "h": 20 } @@ -2481,7 +2460,7 @@ "h": 20 }, "frame": { - "x": 20, + "x": 0, "y": 103, "w": 20, "h": 20 @@ -2501,8 +2480,50 @@ "w": 20, "h": 20 }, + "frame": { + "x": 20, + "y": 103, + "w": 20, + "h": 20 + } + }, + { + "filename": "razor_fang", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 18, + "h": 20 + }, "frame": { "x": 40, + "y": 103, + "w": 18, + "h": 20 + } + }, + { + "filename": "rb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 58, "y": 104, "w": 20, "h": 20 @@ -2523,7 +2544,7 @@ "h": 20 }, "frame": { - "x": 60, + "x": 78, "y": 105, "w": 23, "h": 20 @@ -2544,7 +2565,7 @@ "h": 20 }, "frame": { - "x": 83, + "x": 101, "y": 105, "w": 24, "h": 20 @@ -2565,7 +2586,7 @@ "h": 20 }, "frame": { - "x": 107, + "x": 125, "y": 105, "w": 24, "h": 20 @@ -2586,33 +2607,12 @@ "h": 20 }, "frame": { - "x": 131, + "x": 149, "y": 105, "w": 24, "h": 20 } }, - { - "filename": "strange_ball", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 6, - "w": 20, - "h": 20 - }, - "frame": { - "x": 155, - "y": 105, - "w": 20, - "h": 20 - } - }, { "filename": "shell_bell", "rotated": false, @@ -2628,7 +2628,7 @@ "h": 20 }, "frame": { - "x": 175, + "x": 173, "y": 106, "w": 23, "h": 20 @@ -2649,12 +2649,33 @@ "h": 20 }, "frame": { - "x": 198, + "x": 196, "y": 106, "w": 24, "h": 20 } }, + { + "filename": "strange_ball", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 20, + "h": 20 + }, + "frame": { + "x": 220, + "y": 107, + "w": 20, + "h": 20 + } + }, { "filename": "tera_orb", "rotated": false, @@ -2670,7 +2691,7 @@ "h": 20 }, "frame": { - "x": 222, + "x": 240, "y": 107, "w": 22, "h": 20 @@ -2691,7 +2712,7 @@ "h": 20 }, "frame": { - "x": 244, + "x": 262, "y": 107, "w": 20, "h": 20 @@ -2712,7 +2733,7 @@ "h": 21 }, "frame": { - "x": 264, + "x": 282, "y": 107, "w": 23, "h": 21 @@ -2733,7 +2754,7 @@ "h": 21 }, "frame": { - "x": 287, + "x": 305, "y": 107, "w": 23, "h": 21 @@ -2754,12 +2775,33 @@ "h": 21 }, "frame": { - "x": 310, - "y": 108, + "x": 328, + "y": 107, "w": 23, "h": 21 } }, + { + "filename": "leftovers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 15, + "h": 22 + }, + "frame": { + "x": 351, + "y": 107, + "w": 15, + "h": 22 + } + }, { "filename": "dawn_stone", "rotated": false, @@ -2775,8 +2817,8 @@ "h": 21 }, "frame": { - "x": 333, - "y": 108, + "x": 0, + "y": 123, "w": 20, "h": 21 } @@ -2796,7 +2838,7 @@ "h": 21 }, "frame": { - "x": 0, + "x": 20, "y": 123, "w": 22, "h": 21 @@ -2817,33 +2859,12 @@ "h": 21 }, "frame": { - "x": 22, + "x": 42, "y": 124, "w": 21, "h": 21 } }, - { - "filename": "leftovers", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 15, - "h": 22 - }, - "frame": { - "x": 43, - "y": 124, - "w": 15, - "h": 22 - } - }, { "filename": "liechi_berry", "rotated": false, @@ -2859,7 +2880,7 @@ "h": 21 }, "frame": { - "x": 58, + "x": 63, "y": 125, "w": 22, "h": 21 @@ -2880,7 +2901,7 @@ "h": 21 }, "frame": { - "x": 80, + "x": 85, "y": 125, "w": 23, "h": 21 @@ -2901,7 +2922,7 @@ "h": 21 }, "frame": { - "x": 103, + "x": 108, "y": 125, "w": 23, "h": 21 @@ -2922,12 +2943,33 @@ "h": 21 }, "frame": { - "x": 126, + "x": 131, "y": 125, "w": 23, "h": 21 } }, + { + "filename": "spell_tag", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 19, + "h": 21 + }, + "frame": { + "x": 154, + "y": 125, + "w": 19, + "h": 21 + } + }, { "filename": "poison_barb", "rotated": false, @@ -2943,8 +2985,8 @@ "h": 21 }, "frame": { - "x": 149, - "y": 125, + "x": 173, + "y": 126, "w": 21, "h": 21 } @@ -2964,33 +3006,12 @@ "h": 21 }, "frame": { - "x": 170, + "x": 194, "y": 126, "w": 21, "h": 21 } }, - { - "filename": "spell_tag", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 6, - "w": 19, - "h": 21 - }, - "frame": { - "x": 191, - "y": 126, - "w": 19, - "h": 21 - } - }, { "filename": "sweet_apple", "rotated": false, @@ -3006,7 +3027,7 @@ "h": 21 }, "frame": { - "x": 210, + "x": 215, "y": 127, "w": 22, "h": 21 @@ -3027,7 +3048,7 @@ "h": 21 }, "frame": { - "x": 232, + "x": 237, "y": 127, "w": 22, "h": 21 @@ -3048,8 +3069,8 @@ "h": 21 }, "frame": { - "x": 254, - "y": 128, + "x": 259, + "y": 127, "w": 22, "h": 21 } @@ -3069,7 +3090,7 @@ "h": 21 }, "frame": { - "x": 276, + "x": 281, "y": 128, "w": 23, "h": 21 @@ -3090,8 +3111,8 @@ "h": 21 }, "frame": { - "x": 299, - "y": 129, + "x": 304, + "y": 128, "w": 21, "h": 21 } @@ -3111,14 +3132,14 @@ "h": 22 }, "frame": { - "x": 320, - "y": 129, + "x": 325, + "y": 128, "w": 22, "h": 22 } }, { - "filename": "dire_hit", + "filename": "metal_coat", "rotated": false, "trimmed": true, "sourceSize": { @@ -3126,20 +3147,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, + "x": 6, "y": 5, - "w": 22, + "w": 19, "h": 22 }, "frame": { - "x": 342, + "x": 347, "y": 129, - "w": 22, + "w": 19, "h": 22 } }, { - "filename": "dna_splicers", + "filename": "dire_hit", "rotated": false, "trimmed": true, "sourceSize": { @@ -3160,7 +3181,7 @@ } }, { - "filename": "metal_coat", + "filename": "metronome", "rotated": false, "trimmed": true, "sourceSize": { @@ -3168,15 +3189,36 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, + "x": 7, "y": 5, - "w": 19, + "w": 17, "h": 22 }, "frame": { "x": 22, + "y": 144, + "w": 17, + "h": 22 + } + }, + { + "filename": "dna_splicers", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 39, "y": 145, - "w": 19, + "w": 22, "h": 22 } }, @@ -3195,7 +3237,7 @@ "h": 22 }, "frame": { - "x": 41, + "x": 61, "y": 146, "w": 22, "h": 22 @@ -3216,7 +3258,7 @@ "h": 22 }, "frame": { - "x": 63, + "x": 83, "y": 146, "w": 22, "h": 22 @@ -3237,7 +3279,7 @@ "h": 22 }, "frame": { - "x": 85, + "x": 105, "y": 146, "w": 24, "h": 22 @@ -3258,12 +3300,33 @@ "h": 22 }, "frame": { - "x": 109, + "x": 129, "y": 146, "w": 24, "h": 22 } }, + { + "filename": "sitrus_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 20, + "h": 22 + }, + "frame": { + "x": 153, + "y": 146, + "w": 20, + "h": 22 + } + }, { "filename": "ganlon_berry", "rotated": false, @@ -3279,14 +3342,14 @@ "h": 22 }, "frame": { - "x": 133, - "y": 146, + "x": 173, + "y": 147, "w": 22, "h": 22 } }, { - "filename": "full_heal", + "filename": "soothe_bell", "rotated": false, "trimmed": true, "sourceSize": { @@ -3294,16 +3357,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 9, - "y": 4, - "w": 15, - "h": 23 + "x": 8, + "y": 5, + "w": 17, + "h": 22 }, "frame": { - "x": 155, - "y": 146, - "w": 15, - "h": 23 + "x": 195, + "y": 147, + "w": 17, + "h": 22 } }, { @@ -3321,33 +3384,12 @@ "h": 22 }, "frame": { - "x": 170, - "y": 147, + "x": 212, + "y": 148, "w": 22, "h": 22 } }, - { - "filename": "metronome", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 192, - "y": 147, - "w": 17, - "h": 22 - } - }, { "filename": "healing_charm", "rotated": false, @@ -3363,7 +3405,7 @@ "h": 22 }, "frame": { - "x": 209, + "x": 234, "y": 148, "w": 23, "h": 22 @@ -3384,7 +3426,7 @@ "h": 22 }, "frame": { - "x": 232, + "x": 257, "y": 148, "w": 22, "h": 22 @@ -3405,7 +3447,7 @@ "h": 22 }, "frame": { - "x": 254, + "x": 279, "y": 149, "w": 22, "h": 22 @@ -3426,12 +3468,75 @@ "h": 22 }, "frame": { - "x": 276, + "x": 301, "y": 149, "w": 22, "h": 22 } }, + { + "filename": "peat_block", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 5, + "w": 24, + "h": 22 + }, + "frame": { + "x": 323, + "y": 150, + "w": 24, + "h": 22 + } + }, + { + "filename": "full_heal", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 4, + "w": 15, + "h": 23 + }, + "frame": { + "x": 347, + "y": 151, + "w": 15, + "h": 23 + } + }, + { + "filename": "map", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 3, + "y": 5, + "w": 27, + "h": 22 + }, + "frame": { + "x": 0, + "y": 166, + "w": 27, + "h": 22 + } + }, { "filename": "protector", "rotated": false, @@ -3447,114 +3552,9 @@ "h": 22 }, "frame": { - "x": 298, - "y": 150, - "w": 22, - "h": 22 - } - }, - { - "filename": "map", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 3, - "y": 5, - "w": 27, - "h": 22 - }, - "frame": { - "x": 320, - "y": 151, - "w": 27, - "h": 22 - } - }, - { - "filename": "soothe_bell", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 22 - }, - "frame": { - "x": 347, - "y": 151, - "w": 17, - "h": 22 - } - }, - { - "filename": "scroll_of_darkness", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 0, - "y": 166, - "w": 22, - "h": 22 - } - }, - { - "filename": "hyper_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 5, - "w": 17, - "h": 23 - }, - "frame": { - "x": 22, + "x": 27, "y": 167, - "w": 17, - "h": 23 - } - }, - { - "filename": "peat_block", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 22 - }, - "frame": { - "x": 39, - "y": 168, - "w": 24, + "w": 22, "h": 22 } }, @@ -3573,12 +3573,33 @@ "h": 22 }, "frame": { - "x": 63, + "x": 49, "y": 168, "w": 23, "h": 22 } }, + { + "filename": "scroll_of_darkness", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 72, + "y": 168, + "w": 22, + "h": 22 + } + }, { "filename": "scroll_of_waters", "rotated": false, @@ -3594,7 +3615,7 @@ "h": 22 }, "frame": { - "x": 86, + "x": 94, "y": 168, "w": 22, "h": 22 @@ -3615,33 +3636,12 @@ "h": 22 }, "frame": { - "x": 108, + "x": 116, "y": 168, "w": 22, "h": 22 } }, - { - "filename": "sitrus_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 5, - "w": 20, - "h": 22 - }, - "frame": { - "x": 130, - "y": 168, - "w": 20, - "h": 22 - } - }, { "filename": "starf_berry", "rotated": false, @@ -3657,8 +3657,8 @@ "h": 22 }, "frame": { - "x": 150, - "y": 169, + "x": 138, + "y": 168, "w": 22, "h": 22 } @@ -3678,7 +3678,7 @@ "h": 22 }, "frame": { - "x": 172, + "x": 160, "y": 169, "w": 22, "h": 22 @@ -3699,8 +3699,8 @@ "h": 22 }, "frame": { - "x": 194, - "y": 170, + "x": 182, + "y": 169, "w": 22, "h": 22 } @@ -3720,7 +3720,7 @@ "h": 22 }, "frame": { - "x": 216, + "x": 204, "y": 170, "w": 22, "h": 22 @@ -3741,8 +3741,8 @@ "h": 22 }, "frame": { - "x": 238, - "y": 171, + "x": 226, + "y": 170, "w": 22, "h": 22 } @@ -3762,8 +3762,8 @@ "h": 22 }, "frame": { - "x": 260, - "y": 171, + "x": 248, + "y": 170, "w": 22, "h": 22 } @@ -3783,8 +3783,8 @@ "h": 22 }, "frame": { - "x": 282, - "y": 172, + "x": 270, + "y": 171, "w": 22, "h": 22 } @@ -3804,8 +3804,8 @@ "h": 22 }, "frame": { - "x": 304, - "y": 173, + "x": 292, + "y": 171, "w": 22, "h": 22 } @@ -3825,14 +3825,14 @@ "h": 22 }, "frame": { - "x": 326, - "y": 173, + "x": 314, + "y": 172, "w": 22, "h": 22 } }, { - "filename": "potion", + "filename": "tm_flying", "rotated": false, "trimmed": true, "sourceSize": { @@ -3840,20 +3840,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, + "x": 5, "y": 5, - "w": 17, - "h": 23 + "w": 22, + "h": 22 }, "frame": { - "x": 348, - "y": 173, - "w": 17, - "h": 23 + "x": 336, + "y": 174, + "w": 22, + "h": 22 } }, { - "filename": "tm_flying", + "filename": "tm_ghost", "rotated": false, "trimmed": true, "sourceSize": { @@ -3873,27 +3873,6 @@ "h": 22 } }, - { - "filename": "tm_ghost", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 22, - "y": 190, - "w": 22, - "h": 22 - } - }, { "filename": "tm_grass", "rotated": false, @@ -3909,8 +3888,8 @@ "h": 22 }, "frame": { - "x": 44, - "y": 190, + "x": 22, + "y": 189, "w": 22, "h": 22 } @@ -3930,7 +3909,7 @@ "h": 22 }, "frame": { - "x": 66, + "x": 44, "y": 190, "w": 22, "h": 22 @@ -3951,7 +3930,7 @@ "h": 22 }, "frame": { - "x": 88, + "x": 66, "y": 190, "w": 22, "h": 22 @@ -3972,33 +3951,12 @@ "h": 22 }, "frame": { - "x": 110, + "x": 88, "y": 190, "w": 22, "h": 22 } }, - { - "filename": "sachet", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 18, - "h": 23 - }, - "frame": { - "x": 132, - "y": 190, - "w": 18, - "h": 23 - } - }, { "filename": "tm_poison", "rotated": false, @@ -4014,8 +3972,8 @@ "h": 22 }, "frame": { - "x": 150, - "y": 191, + "x": 110, + "y": 190, "w": 22, "h": 22 } @@ -4035,8 +3993,8 @@ "h": 22 }, "frame": { - "x": 172, - "y": 191, + "x": 132, + "y": 190, "w": 22, "h": 22 } @@ -4056,8 +4014,8 @@ "h": 22 }, "frame": { - "x": 194, - "y": 192, + "x": 154, + "y": 191, "w": 22, "h": 22 } @@ -4077,8 +4035,8 @@ "h": 22 }, "frame": { - "x": 216, - "y": 192, + "x": 176, + "y": 191, "w": 22, "h": 22 } @@ -4098,8 +4056,8 @@ "h": 22 }, "frame": { - "x": 238, - "y": 193, + "x": 198, + "y": 192, "w": 22, "h": 22 } @@ -4119,8 +4077,8 @@ "h": 22 }, "frame": { - "x": 260, - "y": 193, + "x": 220, + "y": 192, "w": 22, "h": 22 } @@ -4140,8 +4098,8 @@ "h": 22 }, "frame": { - "x": 282, - "y": 194, + "x": 242, + "y": 192, "w": 22, "h": 22 } @@ -4161,8 +4119,8 @@ "h": 22 }, "frame": { - "x": 304, - "y": 195, + "x": 264, + "y": 193, "w": 22, "h": 22 } @@ -4182,14 +4140,14 @@ "h": 22 }, "frame": { - "x": 326, - "y": 195, + "x": 286, + "y": 193, "w": 22, "h": 22 } }, { - "filename": "super_potion", + "filename": "x_sp_atk", "rotated": false, "trimmed": true, "sourceSize": { @@ -4197,20 +4155,41 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, + "x": 5, "y": 5, - "w": 17, - "h": 23 + "w": 22, + "h": 22 }, "frame": { - "x": 348, - "y": 196, - "w": 17, - "h": 23 + "x": 308, + "y": 194, + "w": 22, + "h": 22 } }, { - "filename": "x_sp_atk", + "filename": "x_sp_def", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 22 + }, + "frame": { + "x": 330, + "y": 196, + "w": 22, + "h": 22 + } + }, + { + "filename": "x_speed", "rotated": false, "trimmed": true, "sourceSize": { @@ -4231,7 +4210,7 @@ } }, { - "filename": "x_sp_def", + "filename": "black_belt", "rotated": false, "trimmed": true, "sourceSize": { @@ -4240,36 +4219,15 @@ }, "spriteSourceSize": { "x": 5, - "y": 5, + "y": 4, "w": 22, - "h": 22 + "h": 23 }, "frame": { "x": 22, - "y": 212, + "y": 211, "w": 22, - "h": 22 - } - }, - { - "filename": "x_speed", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 22 - }, - "frame": { - "x": 44, - "y": 212, - "w": 22, - "h": 22 + "h": 23 } }, { @@ -4287,54 +4245,12 @@ "h": 23 }, "frame": { - "x": 66, + "x": 44, "y": 212, "w": 23, "h": 23 } }, - { - "filename": "black_belt", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 89, - "y": 212, - "w": 22, - "h": 23 - } - }, - { - "filename": "dragon_fang", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 21, - "h": 23 - }, - "frame": { - "x": 111, - "y": 212, - "w": 21, - "h": 23 - } - }, { "filename": "bug_tera_shard", "rotated": false, @@ -4350,8 +4266,8 @@ "h": 23 }, "frame": { - "x": 132, - "y": 213, + "x": 67, + "y": 212, "w": 22, "h": 23 } @@ -4371,33 +4287,12 @@ "h": 23 }, "frame": { - "x": 154, - "y": 213, + "x": 89, + "y": 212, "w": 24, "h": 23 } }, - { - "filename": "calcium", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 178, - "y": 213, - "w": 16, - "h": 24 - } - }, { "filename": "coin_case", "rotated": false, @@ -4413,14 +4308,14 @@ "h": 23 }, "frame": { - "x": 194, - "y": 214, + "x": 113, + "y": 212, "w": 24, "h": 23 } }, { - "filename": "mystic_water", + "filename": "hyper_potion", "rotated": false, "trimmed": true, "sourceSize": { @@ -4428,15 +4323,15 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, + "x": 8, "y": 5, - "w": 20, + "w": 17, "h": 23 }, "frame": { - "x": 218, - "y": 214, - "w": 20, + "x": 137, + "y": 212, + "w": 17, "h": 23 } }, @@ -4455,12 +4350,33 @@ "h": 23 }, "frame": { - "x": 238, - "y": 215, + "x": 154, + "y": 213, "w": 22, "h": 23 } }, + { + "filename": "dragon_fang", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 21, + "h": 23 + }, + "frame": { + "x": 176, + "y": 213, + "w": 21, + "h": 23 + } + }, { "filename": "dragon_tera_shard", "rotated": false, @@ -4476,29 +4392,8 @@ "h": 23 }, "frame": { - "x": 260, - "y": 215, - "w": 22, - "h": 23 - } - }, - { - "filename": "electric_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 282, - "y": 216, + "x": 197, + "y": 214, "w": 22, "h": 23 } @@ -4518,56 +4413,14 @@ "h": 23 }, "frame": { - "x": 304, - "y": 217, + "x": 219, + "y": 214, "w": 23, "h": 23 } }, { - "filename": "lansat_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 4, - "w": 21, - "h": 23 - }, - "frame": { - "x": 327, - "y": 217, - "w": 21, - "h": 23 - } - }, - { - "filename": "carbos", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 348, - "y": 219, - "w": 16, - "h": 24 - } - }, - { - "filename": "fairy_tera_shard", + "filename": "electric_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -4581,8 +4434,8 @@ "h": 23 }, "frame": { - "x": 0, - "y": 232, + "x": 242, + "y": 214, "w": 22, "h": 23 } @@ -4602,14 +4455,14 @@ "h": 23 }, "frame": { - "x": 22, - "y": 234, + "x": 264, + "y": 215, "w": 24, "h": 23 } }, { - "filename": "elixir", + "filename": "mystic_water", "rotated": false, "trimmed": true, "sourceSize": { @@ -4617,16 +4470,37 @@ "h": 32 }, "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 + "x": 6, + "y": 5, + "w": 20, + "h": 23 }, "frame": { - "x": 46, - "y": 234, - "w": 18, - "h": 24 + "x": 288, + "y": 215, + "w": 20, + "h": 23 + } + }, + { + "filename": "fairy_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 308, + "y": 216, + "w": 22, + "h": 23 } }, { @@ -4644,8 +4518,8 @@ "h": 23 }, "frame": { - "x": 64, - "y": 235, + "x": 330, + "y": 218, "w": 22, "h": 23 } @@ -4665,8 +4539,8 @@ "h": 23 }, "frame": { - "x": 86, - "y": 235, + "x": 0, + "y": 232, "w": 22, "h": 23 } @@ -4686,8 +4560,8 @@ "h": 23 }, "frame": { - "x": 108, - "y": 235, + "x": 22, + "y": 234, "w": 22, "h": 23 } @@ -4707,8 +4581,8 @@ "h": 23 }, "frame": { - "x": 130, - "y": 236, + "x": 44, + "y": 235, "w": 22, "h": 23 } @@ -4728,8 +4602,8 @@ "h": 23 }, "frame": { - "x": 152, - "y": 236, + "x": 66, + "y": 235, "w": 22, "h": 23 } @@ -4749,8 +4623,8 @@ "h": 23 }, "frame": { - "x": 174, - "y": 237, + "x": 88, + "y": 235, "w": 22, "h": 23 } @@ -4770,54 +4644,12 @@ "h": 23 }, "frame": { - "x": 196, - "y": 237, + "x": 110, + "y": 235, "w": 22, "h": 23 } }, - { - "filename": "ether", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 218, - "y": 237, - "w": 18, - "h": 24 - } - }, - { - "filename": "griseous_core", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 23, - "h": 23 - }, - "frame": { - "x": 236, - "y": 238, - "w": 23, - "h": 23 - } - }, { "filename": "ground_tera_shard", "rotated": false, @@ -4833,14 +4665,14 @@ "h": 23 }, "frame": { - "x": 259, - "y": 238, + "x": 132, + "y": 235, "w": 22, "h": 23 } }, { - "filename": "ice_tera_shard", + "filename": "griseous_core", "rotated": false, "trimmed": true, "sourceSize": { @@ -4848,15 +4680,36 @@ "h": 32 }, "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, + "x": 5, + "y": 5, + "w": 23, "h": 23 }, "frame": { - "x": 281, - "y": 239, - "w": 22, + "x": 154, + "y": 236, + "w": 23, + "h": 23 + } + }, + { + "filename": "potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 177, + "y": 236, + "w": 17, "h": 23 } }, @@ -4875,12 +4728,54 @@ "h": 23 }, "frame": { - "x": 303, - "y": 240, + "x": 194, + "y": 237, "w": 24, "h": 23 } }, + { + "filename": "ice_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 218, + "y": 237, + "w": 22, + "h": 23 + } + }, + { + "filename": "lansat_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 21, + "h": 23 + }, + "frame": { + "x": 240, + "y": 237, + "w": 21, + "h": 23 + } + }, { "filename": "leaf_stone", "rotated": false, @@ -4896,33 +4791,12 @@ "h": 23 }, "frame": { - "x": 327, - "y": 240, + "x": 261, + "y": 238, "w": 21, "h": 23 } }, - { - "filename": "hp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 348, - "y": 243, - "w": 16, - "h": 24 - } - }, { "filename": "never_melt_ice", "rotated": false, @@ -4937,6 +4811,90 @@ "w": 22, "h": 23 }, + "frame": { + "x": 282, + "y": 238, + "w": 22, + "h": 23 + } + }, + { + "filename": "normal_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, + "frame": { + "x": 304, + "y": 239, + "w": 22, + "h": 23 + } + }, + { + "filename": "petaya_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 5, + "w": 22, + "h": 23 + }, + "frame": { + "x": 326, + "y": 241, + "w": 22, + "h": 23 + } + }, + { + "filename": "sachet", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 18, + "h": 23 + }, + "frame": { + "x": 348, + "y": 241, + "w": 18, + "h": 23 + } + }, + { + "filename": "poison_tera_shard", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 22, + "h": 23 + }, "frame": { "x": 0, "y": 255, @@ -4945,7 +4903,7 @@ } }, { - "filename": "normal_tera_shard", + "filename": "psychic_tera_shard", "rotated": false, "trimmed": true, "sourceSize": { @@ -4965,90 +4923,6 @@ "h": 23 } }, - { - "filename": "petaya_berry", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 5, - "w": 22, - "h": 23 - }, - "frame": { - "x": 44, - "y": 258, - "w": 22, - "h": 23 - } - }, - { - "filename": "poison_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 66, - "y": 258, - "w": 22, - "h": 23 - } - }, - { - "filename": "psychic_tera_shard", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 22, - "h": 23 - }, - "frame": { - "x": 88, - "y": 258, - "w": 22, - "h": 23 - } - }, - { - "filename": "full_restore", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 110, - "y": 258, - "w": 18, - "h": 24 - } - }, { "filename": "rare_candy", "rotated": false, @@ -5064,8 +4938,8 @@ "h": 23 }, "frame": { - "x": 128, - "y": 259, + "x": 44, + "y": 258, "w": 23, "h": 23 } @@ -5085,8 +4959,8 @@ "h": 23 }, "frame": { - "x": 151, - "y": 259, + "x": 67, + "y": 258, "w": 23, "h": 23 } @@ -5106,8 +4980,8 @@ "h": 23 }, "frame": { - "x": 174, - "y": 260, + "x": 90, + "y": 258, "w": 22, "h": 23 } @@ -5127,12 +5001,33 @@ "h": 23 }, "frame": { - "x": 196, - "y": 260, + "x": 112, + "y": 258, "w": 22, "h": 23 } }, + { + "filename": "super_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 5, + "w": 17, + "h": 23 + }, + "frame": { + "x": 134, + "y": 258, + "w": 17, + "h": 23 + } + }, { "filename": "scope-lens", "rotated": false, @@ -5148,12 +5043,33 @@ "h": 23 }, "frame": { - "x": 218, - "y": 261, + "x": 151, + "y": 259, "w": 24, "h": 23 } }, + { + "filename": "calcium", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 175, + "y": 259, + "w": 16, + "h": 24 + } + }, { "filename": "sharp_beak", "rotated": false, @@ -5169,33 +5085,12 @@ "h": 23 }, "frame": { - "x": 242, - "y": 261, + "x": 191, + "y": 260, "w": 21, "h": 23 } }, - { - "filename": "iron", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 263, - "y": 261, - "w": 16, - "h": 24 - } - }, { "filename": "steel_tera_shard", "rotated": false, @@ -5211,8 +5106,8 @@ "h": 23 }, "frame": { - "x": 279, - "y": 262, + "x": 212, + "y": 260, "w": 22, "h": 23 } @@ -5232,8 +5127,8 @@ "h": 23 }, "frame": { - "x": 301, - "y": 263, + "x": 234, + "y": 260, "w": 22, "h": 23 } @@ -5253,14 +5148,14 @@ "h": 23 }, "frame": { - "x": 323, - "y": 263, + "x": 256, + "y": 261, "w": 23, "h": 23 } }, { - "filename": "lure", + "filename": "twisted_spoon", "rotated": false, "trimmed": true, "sourceSize": { @@ -5268,16 +5163,16 @@ "h": 32 }, "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 + "x": 4, + "y": 5, + "w": 24, + "h": 23 }, "frame": { - "x": 346, - "y": 267, - "w": 17, - "h": 24 + "x": 279, + "y": 261, + "w": 24, + "h": 23 } }, { @@ -5295,8 +5190,8 @@ "h": 23 }, "frame": { - "x": 0, - "y": 278, + "x": 303, + "y": 262, "w": 22, "h": 23 } @@ -5316,14 +5211,14 @@ "h": 23 }, "frame": { - "x": 22, - "y": 280, + "x": 325, + "y": 264, "w": 21, "h": 23 } }, { - "filename": "twisted_spoon", + "filename": "carbos", "rotated": false, "trimmed": true, "sourceSize": { @@ -5331,57 +5226,15 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, - "y": 5, - "w": 24, - "h": 23 - }, - "frame": { - "x": 43, - "y": 281, - "w": 24, - "h": 23 - } - }, - { - "filename": "big_root", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 4, + "x": 8, "y": 4, - "w": 23, + "w": 16, "h": 24 }, "frame": { - "x": 67, - "y": 281, - "w": 23, - "h": 24 - } - }, - { - "filename": "max_elixir", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 90, - "y": 281, - "w": 18, + "x": 346, + "y": 264, + "w": 16, "h": 24 } }, @@ -5400,12 +5253,33 @@ "h": 24 }, "frame": { - "x": 108, - "y": 282, + "x": 0, + "y": 278, "w": 21, "h": 24 } }, + { + "filename": "big_root", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 21, + "y": 280, + "w": 23, + "h": 24 + } + }, { "filename": "choice_scarf", "rotated": false, @@ -5421,14 +5295,14 @@ "h": 24 }, "frame": { - "x": 129, - "y": 282, + "x": 44, + "y": 281, "w": 24, "h": 24 } }, { - "filename": "max_ether", + "filename": "elixir", "rotated": false, "trimmed": true, "sourceSize": { @@ -5442,8 +5316,29 @@ "h": 24 }, "frame": { - "x": 153, - "y": 282, + "x": 68, + "y": 281, + "w": 18, + "h": 24 + } + }, + { + "filename": "ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 86, + "y": 281, "w": 18, "h": 24 } @@ -5463,14 +5358,14 @@ "h": 24 }, "frame": { - "x": 171, - "y": 283, + "x": 104, + "y": 281, "w": 24, "h": 24 } }, { - "filename": "kings_rock", + "filename": "full_restore", "rotated": false, "trimmed": true, "sourceSize": { @@ -5478,15 +5373,15 @@ "h": 32 }, "spriteSourceSize": { - "x": 5, + "x": 7, "y": 4, - "w": 23, + "w": 18, "h": 24 }, "frame": { - "x": 195, - "y": 283, - "w": 23, + "x": 128, + "y": 281, + "w": 18, "h": 24 } }, @@ -5505,33 +5400,12 @@ "h": 24 }, "frame": { - "x": 218, - "y": 284, + "x": 146, + "y": 282, "w": 24, "h": 24 } }, - { - "filename": "max_lure", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 17, - "h": 24 - }, - "frame": { - "x": 242, - "y": 284, - "w": 17, - "h": 24 - } - }, { "filename": "gracidea", "rotated": false, @@ -5547,33 +5421,12 @@ "h": 24 }, "frame": { - "x": 259, - "y": 285, + "x": 170, + "y": 283, "w": 24, "h": 24 } }, - { - "filename": "max_potion", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 7, - "y": 4, - "w": 18, - "h": 24 - }, - "frame": { - "x": 283, - "y": 285, - "w": 18, - "h": 24 - } - }, { "filename": "grip_claw", "rotated": false, @@ -5589,35 +5442,14 @@ "h": 24 }, "frame": { - "x": 301, - "y": 286, + "x": 194, + "y": 283, "w": 24, "h": 24 } }, { - "filename": "oval_charm", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 21, - "h": 24 - }, - "frame": { - "x": 325, - "y": 286, - "w": 21, - "h": 24 - } - }, - { - "filename": "pp_max", + "filename": "hp_up", "rotated": false, "trimmed": true, "sourceSize": { @@ -5631,14 +5463,35 @@ "h": 24 }, "frame": { - "x": 346, - "y": 291, + "x": 218, + "y": 283, "w": 16, "h": 24 } }, { - "filename": "max_revive", + "filename": "iron", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 234, + "y": 283, + "w": 16, + "h": 24 + } + }, + { + "filename": "kings_rock", "rotated": false, "trimmed": true, "sourceSize": { @@ -5648,34 +5501,13 @@ "spriteSourceSize": { "x": 5, "y": 4, - "w": 22, + "w": 23, "h": 24 }, "frame": { - "x": 0, - "y": 301, - "w": 22, - "h": 24 - } - }, - { - "filename": "pp_up", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 22, - "y": 303, - "w": 16, + "x": 250, + "y": 284, + "w": 23, "h": 24 } }, @@ -5694,8 +5526,8 @@ "h": 24 }, "frame": { - "x": 38, - "y": 304, + "x": 273, + "y": 284, "w": 24, "h": 24 } @@ -5715,33 +5547,12 @@ "h": 24 }, "frame": { - "x": 62, - "y": 305, + "x": 297, + "y": 285, "w": 24, "h": 24 } }, - { - "filename": "protein", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 8, - "y": 4, - "w": 16, - "h": 24 - }, - "frame": { - "x": 86, - "y": 305, - "w": 16, - "h": 24 - } - }, { "filename": "lucky_punch_master", "rotated": false, @@ -5757,12 +5568,54 @@ "h": 24 }, "frame": { - "x": 102, - "y": 306, + "x": 321, + "y": 287, "w": 24, "h": 24 } }, + { + "filename": "lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 345, + "y": 288, + "w": 17, + "h": 24 + } + }, + { + "filename": "max_elixir", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 0, + "y": 302, + "w": 18, + "h": 24 + } + }, { "filename": "lucky_punch_ultra", "rotated": false, @@ -5778,33 +5631,12 @@ "h": 24 }, "frame": { - "x": 126, - "y": 306, + "x": 18, + "y": 304, "w": 24, "h": 24 } }, - { - "filename": "red_orb", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 6, - "y": 4, - "w": 20, - "h": 24 - }, - "frame": { - "x": 150, - "y": 306, - "w": 20, - "h": 24 - } - }, { "filename": "lustrous_globe", "rotated": false, @@ -5820,12 +5652,96 @@ "h": 24 }, "frame": { - "x": 170, - "y": 307, + "x": 42, + "y": 305, "w": 24, "h": 24 } }, + { + "filename": "max_ether", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 66, + "y": 305, + "w": 18, + "h": 24 + } + }, + { + "filename": "max_lure", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 17, + "h": 24 + }, + "frame": { + "x": 84, + "y": 305, + "w": 17, + "h": 24 + } + }, + { + "filename": "max_potion", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 4, + "w": 18, + "h": 24 + }, + "frame": { + "x": 101, + "y": 305, + "w": 18, + "h": 24 + } + }, + { + "filename": "max_revive", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 4, + "w": 22, + "h": 24 + }, + "frame": { + "x": 119, + "y": 305, + "w": 22, + "h": 24 + } + }, { "filename": "muscle_band", "rotated": false, @@ -5841,14 +5757,14 @@ "h": 24 }, "frame": { - "x": 194, - "y": 307, + "x": 141, + "y": 306, "w": 24, "h": 24 } }, { - "filename": "reveal_glass", + "filename": "oval_charm", "rotated": false, "trimmed": true, "sourceSize": { @@ -5856,20 +5772,20 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 6, "y": 4, - "w": 23, + "w": 21, "h": 24 }, "frame": { - "x": 218, - "y": 308, - "w": 23, + "x": 165, + "y": 307, + "w": 21, "h": 24 } }, { - "filename": "super_lure", + "filename": "pp_max", "rotated": false, "trimmed": true, "sourceSize": { @@ -5879,18 +5795,18 @@ "spriteSourceSize": { "x": 8, "y": 4, - "w": 17, + "w": 16, "h": 24 }, "frame": { - "x": 241, - "y": 308, - "w": 17, + "x": 186, + "y": 307, + "w": 16, "h": 24 } }, { - "filename": "salac_berry", + "filename": "pp_up", "rotated": false, "trimmed": true, "sourceSize": { @@ -5898,15 +5814,36 @@ "h": 32 }, "spriteSourceSize": { - "x": 4, + "x": 8, "y": 4, - "w": 24, + "w": 16, "h": 24 }, "frame": { - "x": 258, - "y": 309, - "w": 24, + "x": 202, + "y": 307, + "w": 16, + "h": 24 + } + }, + { + "filename": "protein", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 218, + "y": 307, + "w": 16, "h": 24 } }, @@ -5925,12 +5862,75 @@ "h": 24 }, "frame": { - "x": 282, - "y": 309, + "x": 234, + "y": 307, "w": 16, "h": 24 } }, + { + "filename": "red_orb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 4, + "w": 20, + "h": 24 + }, + "frame": { + "x": 250, + "y": 308, + "w": 20, + "h": 24 + } + }, + { + "filename": "reveal_glass", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 23, + "h": 24 + }, + "frame": { + "x": 270, + "y": 308, + "w": 23, + "h": 24 + } + }, + { + "filename": "salac_berry", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 4, + "y": 4, + "w": 24, + "h": 24 + }, + "frame": { + "x": 293, + "y": 309, + "w": 24, + "h": 24 + } + }, { "filename": "scanner", "rotated": false, @@ -5946,8 +5946,8 @@ "h": 24 }, "frame": { - "x": 298, - "y": 310, + "x": 317, + "y": 311, "w": 24, "h": 24 } @@ -5967,14 +5967,14 @@ "h": 24 }, "frame": { - "x": 322, - "y": 310, + "x": 341, + "y": 312, "w": 21, "h": 24 } }, { - "filename": "zinc", + "filename": "super_lure", "rotated": false, "trimmed": true, "sourceSize": { @@ -5984,35 +5984,14 @@ "spriteSourceSize": { "x": 8, "y": 4, - "w": 16, + "w": 17, "h": 24 }, - "frame": { - "x": 343, - "y": 315, - "w": 16, - "h": 24 - } - }, - { - "filename": "black_augurite", - "rotated": false, - "trimmed": true, - "sourceSize": { - "w": 32, - "h": 32 - }, - "spriteSourceSize": { - "x": 5, - "y": 3, - "w": 22, - "h": 25 - }, "frame": { "x": 0, - "y": 325, - "w": 22, - "h": 25 + "y": 326, + "w": 17, + "h": 24 } }, { @@ -6030,7 +6009,7 @@ "h": 24 }, "frame": { - "x": 22, + "x": 17, "y": 328, "w": 24, "h": 24 @@ -6051,12 +6030,54 @@ "h": 24 }, "frame": { - "x": 46, + "x": 41, "y": 329, "w": 24, "h": 24 } }, + { + "filename": "zinc", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 4, + "w": 16, + "h": 24 + }, + "frame": { + "x": 65, + "y": 329, + "w": 16, + "h": 24 + } + }, + { + "filename": "black_augurite", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 5, + "y": 3, + "w": 22, + "h": 25 + }, + "frame": { + "x": 81, + "y": 329, + "w": 22, + "h": 25 + } + }, { "filename": "ability_charm", "rotated": false, @@ -6072,7 +6093,7 @@ "h": 26 }, "frame": { - "x": 70, + "x": 103, "y": 329, "w": 23, "h": 26 @@ -6093,7 +6114,7 @@ "h": 26 }, "frame": { - "x": 93, + "x": 126, "y": 330, "w": 24, "h": 26 @@ -6114,8 +6135,8 @@ "h": 26 }, "frame": { - "x": 117, - "y": 330, + "x": 150, + "y": 331, "w": 27, "h": 26 } @@ -6135,7 +6156,7 @@ "h": 27 }, "frame": { - "x": 144, + "x": 177, "y": 331, "w": 32, "h": 27 @@ -6156,7 +6177,7 @@ "h": 28 }, "frame": { - "x": 176, + "x": 209, "y": 331, "w": 29, "h": 28 @@ -6177,7 +6198,7 @@ "h": 30 }, "frame": { - "x": 205, + "x": 238, "y": 332, "w": 29, "h": 30 @@ -6198,7 +6219,7 @@ "h": 30 }, "frame": { - "x": 234, + "x": 267, "y": 332, "w": 17, "h": 30 @@ -6219,7 +6240,7 @@ "h": 31 }, "frame": { - "x": 251, + "x": 284, "y": 333, "w": 17, "h": 31 @@ -6240,8 +6261,8 @@ "h": 31 }, "frame": { - "x": 268, - "y": 333, + "x": 301, + "y": 335, "w": 17, "h": 31 } @@ -6261,8 +6282,8 @@ "h": 31 }, "frame": { - "x": 285, - "y": 334, + "x": 318, + "y": 335, "w": 17, "h": 31 } @@ -6273,6 +6294,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:5ab498fb5756f6f3ed6458778d4a7912:435716626779d00fcd5755de13141d94:110e074689c9edd2c54833ce2e4d9270$" + "smartupdate": "$TexturePacker:SmartUpdate:da9dfa54efbac3ab6ffcd5af17456fde:e4349d6f3768c4e71bbf3e8b1c7f9f12:110e074689c9edd2c54833ce2e4d9270$" } } diff --git a/public/images/items.png b/public/images/items.png index 4664afc4934be3c5d043cc068b18d26175a2da6b..590fe3f13b1c8747ee29b112573251cf9e748fa0 100644 GIT binary patch literal 42013 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.|IySlvm%FSKzda_gI zy-PWhw8uUJX!B?YHKQ5wrt1K;3BseL#?{R6q%&eF>SBd=wQ{{O77OJZt@@imPQ@%_8LB{kS6U zV5x&3;d`DH1>l0fEgQ)4+;6%|%GF0^`R@t&tcK}=2M_hGI$y5WYYVsHXjJ7EM9i9( zEia#sFaDB2=?6C4PsKNjWWpG0q|ubiw3>4` zn4Fq}VJO?!_8k$h$*y+B5(}Hs2 zqx$uVj-OZUN0|C>;}m~%X|GhBTa|Zyt=azBI;t2U<6AlCxSJ(@blm9fnS^)q2D@oA|k=5XwXa`3+HswPGFNjd^A}B-kp&!R_ zcxjy!4XHE{!_)3PFQzd!?EtnH`c3p7j@AdR%e-A8t;r61Wx|v(PrpksX*v*q)<4eK ztPglEzlm2n{QRiSxi>kmp+UN#Pt#++^I0;a+7UHaSqbtfS_r8SKHy6#CijhGuv>Tr zTf1ob@O_y&YJS>8&n5pCE)sBcl^G;lPp|p_<*HRxcii?X~YOaYD z#;V-pM!8LfT(CpQD_a98kda`O*{9NMk{mM~+|BB{@=P{^d0t#y9Veyuh*j9;<}6HQ zH>->p74wH#$l@g6(Bac0vDJ^N<)se(Eb7RHr6BLPEW=H!-nXU7PVdk`t{Y!E%HW$a zswC<#KvP_!7zf>=_-=K4DS1@zG_$RXzs{$10oNdR4UO8SCjUl%Jv^VXd6pRCdiUKq z^iKg;5E8=>vM*aFDW=k1J130np)^_*Scc$}h(?hm7BjjWX-W=Kh& z0O|>Pry3O<(h)&1xR~o;-{WGEy{1P1l~fTmZvUlQkAl@sh6IFzi?Y&bsXD>QX176_ z7Vp$sIULRO0#}U3(!=-Gmd31(XF+`nIesr2i29sbc5y*rFJp`w9@CNp{Wbv7k5^ju z$p_g~RVp_IIVeH1m z6G>zgCj0CFU7y`QZjc7m^P4G=6$05v%%%BZ-*~2+H?r8<0oWyK!-e^`-nZ8((X)|7 z@!;WLDmBh_88ck-Bn>)l@M6z>n5mz>mol!0XxS%4E1cS2^Y&}7WC>6x-j@s2gDU-i zX*|~lRLc^w9euAddft=`C5W5mkpBL?H3b6hOr`|PS3V?@gbFmwDD8(-H~)oDzxRXH z+6!U`c7w(<^V42Pd>i>Ow&b+VQGe0*?Lp)Bv9*`OvjGjHZ3*#>HMXhvL6GVt1wB79 zz6TOV?%;0r1;5MA8uWtuo?wvo`ba*m_w0!6m?Xwjy8@!NG(zex*2DC<5Ev;%-(Y=A zJ?m?^F=da0rFI*x4YrO)KjzDqDiOC#%;VDwFIkhFvJSfVcoG>M-O=%G7)bxqDpoC$ z;oOqMi?VxvwX$ z&4BeQ0@p&Hg6S-&=(6;}?+38>>_0h8oKkaKY`iVz$6n6Z+XR@h7e~du)fR@`;>>u>W%0O?+7^4Gbn^}cyw zdQdCNkR$;$wb?OhMW;#tRQe{y2n(HObH*3RquGsr_53Yg`&~$K9W6FOYlw8DnmX6f|C#+3~P_GXJ1wUcO`Y?zvHUFf>zAtsJzO&4DY*Hig zGdkvN|I2MrVJUVgc42lTb@9AJ$BP|HI-&^U6zN~PU4bo9Qe2SgpzG2xpuVzCD7BN^ zS!vzx^Nn8{g96dp!Zp&r8+^9lzx)f!M4g9Bk^c8wUJ*Ks)_PT>>XsStcnNn!%^E0w zH44KPmpsn4H`ROP#OLe%d|cf9 zQA;i(5!^mAOOZQ%3kmQ4#*TdXvW?BWk?c+I_@33WXSx|FVIxx`;YmmB@&5)Qs; z+lJ3f{*Z^uH2m(1yJWCrr{n+hCkQ)6^skg}Zdzj6OREjuFOK|TQsS4vJW1*J=919{ z=ejERLn2FhI1}_@7)nEc?BOHou0 zbtnY8M3p7U9t8-^J(&0o^qZqT`U0GVk=H5nUd#_&U7rt@HKmV+L2l~zWW7u91!P~k zZNX=*PDR$)W#eH%IMN~_#o^2(D+~ycO0Buo&PBAP3*;WUdBmM2hM?+?+Lu=jL71gB zx!Fo5%6Ee(Fm;36+_oTb8*$0|+uW>#Zx~Y?$Jp}6R4_d%$MA_kdL7aQN73|l&`{-Sm4)Ner0)mB5HDAs z#pp%=rs%w~s^eMxWsTf|Bi-tCM(03f3BVd;m2oPYJCCS8wz4---uX_vBs2tw*T|Ok zzq#tcTOU$J&)0*+G`T*RnhyDNiKrbRf~p=V_=l?phqs#T{z7Tm!qR71Ojszw7jLd} zOfL}$Bi0V6%&bydh4=ZVX9w$|k5HpaC(~1=rh2ALPE`YtzZnvEO6u9tIMsbTb>Ojw z;*qganKYB$CAE2TYt)R@3Q01o5(mNygSCZJASssHv7C&dtz{oWbKlEB{i=+ix+BME zn(Xa>h97dY%9$~RuT$o~9=3fryj(CpypgftL+*GC!B(EZ6u0ov=%4B+D%1}|#f@78 zddhU6LCIU7zx>xPTd|1V)$^+iOAl)$A7c3iffMhNPkE4Lgbm-=St+GG$-vyXyV=pY zr?D`c#-Mr-YAp^z|D4sg6Of)dfbGItiu{fs3z;rX?#5pQsfJ1*qY4~b#>1v5iW}=| z;@=@3PopBY;V&S|F<&yPzjU@ldLeeBYK2(e?=L)yK< zr3P~!!2Y^SRQ{?1!aRMK1k}dL?m4P(CE6>6g9ur7Ty{~8L2DByCngQ)eC_YPdfT-% zMB6ttCO_C+UI(Lk;063Pcsp6(mnXA|kr4;*_GrjGja*V+(pRo-I8b}OjfuWc)dVf6 z@7|E)fB>R(FX65RZrb{3K^(_Ie#60s38L3L74S;D>zvI)@@yRD{%4lA3=Z-SA^rBnaBb0=rD> zCnYX)s+QEki+#6Cp%IpjB8!X&uN_gvTLq2mGg!b%D;|+1K+m6zj zPJI04brLm-#5L?!mTWWj>C-TDk_EtK1!9sGQtBF+M*x^g38GwPmNS`>fO|gECxSy@ zGgm$ND(S9xUsM9=Z*2>?0@dc~;|;x5p5j-BK2acaLW4KRD!kqigx|kOf+gxC=!DIc zeqkucM%p>K?)1{H&q}zMCNdSItqSk3!2uQtF;M=b7WMw;_cNok$_V)JMPn3NWmXK! ztyq6;W@S8iCK&z=$vg{NCU7R5ZI{tD*HDvV$6szeCc8Y;HU6niHpM6LCWZV$4cfb+CZDD`k5!25Pa4EDHQJKdK8 zBQE>!c~O!uTpqhdlQmfdt(9o2B5Eh=1RWW3w&fvvBMjO+aKwhg8WJC&t0n?UqQ+zy zGXyeZJL%bQ?Jut5H7)80p3#dB!o{r#_)u)QS<^C(`}F) z9abJi%WN#f?12)w73DBZOSEx;K>(z#R}mzT_rv6v z#;d)c-@%SI0H|{ohMScZZ-z2}no{n1Bd^bSWJI z(lAPLgtSOW$LMYZ2aHY$VRVksCBjCB4CJ@>=ll5mvp@Fw=e+K{uY1pZ-gC}feVThH z$DI-r2RaT$Dguq2W`s-JN7Yu7V42!t6!W# z>0{A6cRU(TSBj`k9w&NYuZ&+n~!8-?b$RpMu+)gZiz9 zKX^e+b-z8znam~{p)WcfN-hMO)v1P9nVhNrK0Zz$qljYE+U8>_JWNL(>rWl#Hk|Eg zf<&}b2|m3y^+}u6SI+1%3;5yOFK5up)X(*lHpa~F=S5{%^CLB{4#`RjxJX~xs*Khl zuhY5+l@f@|U7fWNpg~jlK++aOz1q00SVSG1)`33V8GTFsc%D19no~;4%AIwPuNO6W zWo`Vz-^Oy}N%$+qtRhG75r0Sts{cUfVr^Kq?hq)Os?pI2J{1x2)}EaZ^22DAW{y^k z8-uU(IM)fiP)CLb^R-*ZRdVVeQDDEcAkcVoXNRQ_jfiquQ;Pugb%z0wegF5)Ylne74VeblN}SeHS>O$ z$ot&tMG8+j;ch0BasV*U6|}&t$$|2rU1wKuC%`{nMeI4{%LAAswRSJmGQ}hvCZEKC zB3T=>Z7M%Hh4gvKwqE=rIvVxhlT$H$iy z=a$^mhotzA$&`4Qt{5`Qqa#OdXt@q22 zWknpglK0Fw$V*gX;r9bBaq8vYxpR$%1_t#gPu+>*-_JuK9m_4kNX0E$Ll_DA$ZaLL z>q&V-610UeGvlc>?JH){x7QKGl{m6T4Hm@t;i4bEjpT<|6wTuK{C=YQ`f;jyf7*n6 zeqLAn=}5EMxOplt(tjZ#1_$MX5=Zw&)PjEmPX6;(dLypf0&~b2nD4zmW84)bn(1I3 z^=a??Jj2(1WZW%4RV<+-sfb32!nj*@;AS}xMh{0hTIAYV8<5d+kM5gKvG)#dx|#qv z*&3Y5ePWt;SJ)Ky;+w*gKKbaIi7XAS@L|?|Q;Ym>0V8`Yx~HoK1UOn#C{Im3Pyh3; zFFNsbfdsJqPU@j=0r&r;y&`<;M&Jy^lDo+cy|q>X>s8IW@ZWYiOYfj_yaU0XYHW>u zRt*CWlt%fPm%Cu*;7h36S{@Wn1BAP`NCL3xU*wX4H6(fcIO2f4$oh~WjRVy1|B8$ech_exOy+K-WW(K8WB{xjd8oyT80x+?GWy~@4TyDIX!jk;CI z1>cXP+@Hx~-KRf(CgK1-r3`dt!qls(3@VY;1}`XGM&@=WmEGxWP z@2p%Dg`^wInZ5gmmDE?q9-uF;K~hiLCcJ$8#xGIQ_;qXG1RH%90Ep2>feh45jGiT4 z{7w5LJQl0TzQiESPo?KWD428lOwW^F_9*&`TJ1;Y$$tu9b=P;}gK?0VL^M4(WZ>91 z9fW%Ae)ff|)@a843UayUZ5?`!jgLU|m{YS+Q?KaYjIeqE)P;0=4Qn?UD=&LB7b`32 zR(_kS9Go4>hSoaS@Fz8_Om{qeQG$;9N+#Qp)GixxW%Zd!G&GsJ4Uk5X#>n|=!x$7tX`n#(>Htkmljj8xIpE)HxmYcAq zshz7d+S0lNx9Fbl@mS?AcYA@)bj)+;xabjauM8#AH(gWUhn@$qkP(2L!pBj92cQL? zIJX6yKFLM(g{>7yVo*CZW3NgT8* z)9U`dl#Hsjyx`3*5oC11I>p8U6yF+3;1z}3>8Qp>_x6yl4g|S$Pe%QFQG^o?Y5YrCx?TV{QS5XCdU7Iv;-DwWewK$@SjMR4Du2 zozcL%wV0~6-7Ev>w)&ETqL94PfPJMQ!>gVZ=#wid5;_)-=zP*qO@}Tl`uG+!n^1H? zbMc5^Y=z{iIC*)Rp%R~9;ah!g+DWZN=5Gz6p@m1YAqlHb^F9=vNw0j59|6&{{&@Z7 z6DcTrKee!>PqSCBxZU?inrZo)dO*hLf;DZO(UDDbd? z9Z64Jz!u7pmsqIT>*~3tn{4)GQPX1rVwgd=K|Wqdx8$FUsa1Ia8%hY8uw>3U*0U|8 z8Q1)|ZHFWB@60n+Kw5HRF^5%8wb;?M`9P10LdCUfpf|u1UHTU560_}G4;B%Rr6IAt zB9SN$Sbmn4nnn$%4ikOWPxt0eKy8h~4=gdKP~BG^0*eR@3qs%j=fs9`c@9etJ1)9lN;hve?x8@ki4L5<8+_qul z(cHGS%b9bj%1n7pBYxV%S*%Sj(#B$@y8J*OA+qj7V}wWuA(|kw6YzYnWn4Jj3ujf; zzyrNu-X@L>MkvVTZzYww0%NIPc*D9;E@p7v6%t5QysXA5Rd2O${}qR}quUHuuB9&N zem%UfP^Ov4{qR|u`eCFMA}XhETk0F3)2FkQoe3v#E zZtDm_`Pu`H#kTJaVHjCc_j{MWNu)h@KN%SZG!z#=xX68XO|45$X6g*iit&D6MS;*W zBQv&WQ%r~Ui$ZgrI46GmJK_n5T+m^=k?$TN&0$Rw6M^VD@MjL zdl8=jjcu2t^{&!i!TN&!Bl5>SQnJvq(?=FiQqqHxX6PW(Ra@s(&ko@%@y0~RKd-|( zgyvCgoGH&`9&_lP&*Nr^KIqu#>6qiC>;+kltlgq>JNGrF+#6%ca@bZbyU4GAK{7Im zz&HlW?ayT!xfIDNbpz%#R!RduTt_buGwBxoa%YLMl$iu16`2kR{~E8G6tp1F}HY ztL*Qr<4l(p)V%wxKBp72&f;TQ z5x?SHyiSK?6#A&4f+D5EhM!@c=Udz#+T&9o$b^&2EGpMRSA`Zxwd8|bXrKdWj7Q(g zlMA>XMxJ<=U8c|1n!4fa3BIFqiy=pdX@ctR&NBCB%3GYd=W`bEI!9Pf@jejZL+#73 zHe!^<8C{g}2pctXRuYHvkoUo0s{&9E?he&{?{I|2*6{M$+T-uF1Yk?gE2xkfdZ7_8bx!flZMbZhfe zOqQ|u165||Sddtk6k!OS?|b19&Gm{-cMiYq0`Cmbd=aJ^J z(k@<@ufuPKzv@5D%GRSMqiFi0d0w;5ylpqAwf3`AUFy72VoHIkxTLk8L8DGjqda@$ z{Jwu%NMI*lO?k@6`v&(C)xwyK+-l<<7~~niz3itv^Xh!d+5x^)a{b}hb(`Gb(Sn)g zu6Dd^rbia6G!)aEG28HOitKKQy1ux7?#U@>N2|d-T3r=9*gaJAhA1JIYXyLg%y(P@ z3g^^O*Y2UXPt*g>e>Lp6nhJ8I==?O@5K7>19f&e3a@U_%M){CjDcz=~g*C17pvK8_ zE2)n+lkiCq>#~(ePHx@iSe+Cs!s8w0xS!|h=7MeoZoqlj6||*^7CumMTaya_e!wch z9lm#hM_5^KzQdJ!#I}aq(XiXV6^O0U<9*D}hXemMaid!Lf<^_25~L%%1eON&HMA&v zrJv+$%y*b$qpJe^J|^Ru*6y-Zc?=yZy+#bc%dVm(({uUp0nGZlW&e_JydABhAEdP7 zTqzoH7*!)vSSlH6-h(CwX9#*s+<#mxgkSx+!U8`{8PG&nCj3iw>b_CiSzW$Vayg7y zOqj18Ote)4P1aR>kG!HD=AIGzUOo01>FRjKH(vCH$2aXK+-ziHqweLewLcPu<|qEr z7SJtH*CvtCrKd2(e4-{Fr?0&bdz#qPOK>0E1ON5#JtpPl$T^zVm12i$fYRXRR{Rfc?gWq$qM=JQC9bv^2R zIPmAXERTGMhTI2j$nIZ;XOEiBOT)rn`GXRLLFF^tO)n}%Y=xNVwxxOao{^o37V;h& znC9s~k2#@Sy)|GaC@oXnHUb(=hI9x2gFsWzEot@dLt`@Prgsb$<;5m2ni>%q0@Frmp4dGFo zeeGRwBo81!9bNQv5`EO5MMJl(34Asj-TXLZrL>7drhNI==nF5Y%N?djh@I4LS1mqW zR^C)GJQ`bfPG39!h$#_Q7IO9780A+eBAe;S!qgA8f=(D#;#`@j@7tWZ?Ew;xQ)>qQ zhpDl?6UsKkE%hw)U7xcr3gNw}7Lp&uy+%0ffhk4J4gS6f zU`ZGMilF7y`V{xmBj&QIcjnFDw%AgNcxtmfpesA!sP~!mA4Mu8E1+w=p^}QuV(+*E z7NFzjZm#pK{^(73k50~e5H(W3gWH{A?K+uM_uK2Tq2ry({duLQABxuV7FYjZjPcwe zPEQ}`vpRA5yMFxGgHm(Fb=vw5Gy&Sq^M?JqHUR+b?Y39Voq^kx+#8Q%v#E}!ZTE4k z&wgQax|KOg0c-tfju}`pJ`b~Z(0>H>A}6`5jJM1VAIdIi|o8f23yRvubCcI(;2kbHIpubk+^FI-nIA6Qt(Y1T(0 z;@)yT?JsWD&rX^jng1Z#265E%Qgye~bGGs4>^bNUm=l>z5POgt#VsdxrG3?ij9a<3 z?p{!aWtmjq9p}McW)ozz2`^nSwd}J^Azrb-}H#*_re$d*m-zdKD-EN0|M?J zu-XF_#2;9&RRh9|AipLkk4xj*8R6GIRu?kH0dVoSEJ*NmXHPe#Ya?;`!zxSY!w;f` zJIR-FP)Fi83tU-9XZ>?d_LTuZIl^U{6~{Agif?rFAN}#{EeW_5xGJ)_a%o~Bt<|_t zrzRR#@?L(tYh$g}v4Gg2c6p1w$kp&^iDdTsM zbE>LkfcAqrBv)^(AKqmtYF2d4WQ(Uw@%n>|u3NS(Gc|RRqO4H3zOivDuKJ9jyJI6Y z$O+R@nF9OwWfhJ!n?&86cumA?$gKFd&y;;3`r>LUETZmNjR7ArrvRTmmCw&YBm?E- zG**KXz0;5dt{}zGX6$CSgv$;dLE!;niZqS~0;k}uoQ;Y!X=Tg^LzjDs_bGfvDyO2` zar084OQE5IM2QFA!LAVyr|dG5%|xA5w?W3)eDL_-N*TONQmocishKObaq%-wq^zRoS`<^x^(dwa+o`nblJ_VY# zk}Wsd^0aKiC)@0`r`a1{w`aTgEY$s>H=9+ipn!H$6%|O{3})}PA!ijtvBC&JXd)t= zdWq(Im4&sP{_1Lse${@m9e4VzQrEON=$sBR#0?sG(8+3LLT%5*qi z{%DG*An3HDzU+ju<3vuuT!-+_=RGY`WI?SkXPBg)8@v&9Q+O#xKk-{rku-_JiX)DB z$!gd1XQfAb-fy*upA&z5O&{*mm9&r53$#wL?lNXnwFtydGIyS^O)Y(v1vfh&S4M|T z*Iao)&ns%(@l>utLn~I;V0cZ+nW7J?Ch{p~Er@gl3|^r|QZCDwrKf*T-~NVs%gLy9 z9gV$Z{pEP0;O{;GO{e~8@x&90=IDml)pQ1{KI@t_mNXxe=-DQ44HOJ*`bCboZl=_s z|9-xjQ=@Jiz&S~=XfvuNqeuOyVxkB#=N@bV;&458;tzt5QjT{tR^TajK%u|Km;fR-i)`JFQ8EgJ;Sl zcSVa9NlU=(WlO$y&tPY+n*Cw`ZmLL#_fJpN9>u^Am8R6zlz|0u$_&iY;UMhSOEgT5 zScH8Lgq@_nY|pqbw*yk+Vn)R54JIMKpMx$>hSp`RpRi7u@7U>&*PApo5XqdpuP$>j z<90U8c^MoyTeKqX1xe*nOw6zMS>B+RzNNeg>d(CL8LFEh z-=Q%d^p=tCf5eBoLV7bEaUN4^0cXD1kqCj_q8Ep>yIP8^UIv^R~i=r4Q0d_wnut4wKR{eQj z6Y#YUu9b^>^n2@hK;$p@w2IGRX7B@LhhrRMR#p7MQwbW{PR}h8x11@Li$4$8S8gE> zF2^LLgbHnyS{bDrCJSm!JwmjXyL%K=-$YnBv%HZ(5{V$y0}g0r5IiO%vKfA=a#8%$}sK?90D{ zf`1L3?Ey}^qJ|^`^37gsZ;x>3-i{Dbd~OL*+0C!>P#nupE-jLT!dkFdQF+!k>`%l1 z9uqFKRu5z@f=;6e51~enG8{0B^z`(9uPr7?Y8~C5(sNiuMEutg+X5{U13{^$vCK-M9c8wILCov|oqy2T< z=;Ec#tGIcpC9>8xoDW`@D1H>%Wj>Xmr$B7Wtsj*9j*tS67`I zjF~FN^ZRsWf?d;+J-wRh!TZx#{vahZ#ey>g^owBt{2ya%M+IS&5n2)JS=eOTN)E4l zU725rFPb?r$Wj;Pt=`mp>6oa`*5k5f^&$qoS>;Wvm*TczZRKn3&EaSX^fYJl8&YYw z)>}j3czQTBwS5Xsok&`S5@*_>9#W`@U0tQ#kxrNKB_PB>vt@h~<8Q{ud1nWScS^CA z=7wq|*Bl+5N=wEj@~!DYMH9{fpNP<uBI|W zrG_R#x~zpMt=;A5oA*pSzJ%53&R8-7T&~jGbk-N~7H?`u@9tBM)46&hbmILybF(5| zgtf`>hFt`!7W3Tt=eAa;*hI_W=U)FgkEU%zY?mL`A(3g3zP8;2k*W64MSJO4er%=E z;N@42-INzuk9x2Wtyis+asID!$L#=JVGq5<>{+PAT;nJC=12coyoy|}n{-m#l=gl5 z*+ifSsJa|QLNz7(RJC>oF;FWGk_=fN3Yk)~Xgx$cM4__->V7jyYMCZBTMMx#F-JZGA3(Y_YBh z(!%k(;7BaPIsW2eI^(zGYOiQ8J3o(rIzAf4V;!g!et@l80$%$uRw9RV!9)>Pe7WtM zWN+6KX|RsCk1iQn|3Vq2@ALjgq>^A3Me{#6?073>-ycIm&=z3AfT#OSFB*&wqH zzvR`E3g?pL?NYe4O4CF;Z-1ycOH-Dob9T-(7M9t$Xm;)fg@E(rF^674A0*BK58z$y zp$8XzcR5FY{{@5ZFPB&yuiBNsVi5VYJi~Y>Mxw}kc)m{7PM&0s2l0`+mIgGL@c3np z5#`a(U-yRA)Yrgy@&!GM)AWPNoaVOgLv~Z1fYDLc#@AB`(gd^|&KxdOEtI&702-QY z<+Ff66jQtHJz;$WWdn{QiOT3`W`AqU<;!6VqwFR_HI521 z=fio?R-rj(lNR;nXucn10d0r5@i6Q0@1xSp-B1VVt7#M>DE`BG@KYCRx&2F8+$GPUJ9B~6 zRXg(mV!4?a1~)#%x9EdAhWonKMh^#l&h7X)Xl@pW=dic8Fh{Si&j#%^Di99BPx&yB znbg-N`*oag$~aM_Y#B8i)OB>ij}C^-xf4&=E8hL{slY$oYd)ilmnPF4~MOK2tbhlwx6;G0kNjCqGOMzTI%I% z%2SfOLyB^WE(K9HbY}$in)PcStVGelTV-0c^sv@ysejiQEnLNO znMVZ)?rRTLsr)>02|@ZRxL2Xia{IN6Yu4u%Pzrh-LuWKZcUEPOvY7wUfaKeGHecVC zkOyne%gOSM2a1x~JpV`}&Ak#bbQbCeo>hkfi!w74OtF!uK&*9T_$N;P}ua0?FY+rA= zy)NcUrf;wFS15Z19V27LwwTSkFYdNpa`f|H$brT30C*Wca|FL3iWlG_N(0)KbX{i$ z%pKE|w*}p#W-`ex6|oJTsxJTa#s!@9!55AJ13^IWmX6vxlK8V1y!7O!6hrX4u0?Ya zboWjQo9xGzDGrte0#}^7uI{WbVQC>^!8G|SP0y%mXD(!U-|O|VGftTqTHoPGih%)^ zG3JfD-r48r#-pRrj?5;4+vY%T{)%w_A|BnpGCTyzVRpCt780*Q!iu<0&^TAD(VxLl zgs8LZvLoU*n7WZu@7$Xg!x#?afY%)aa1~E@XzZq9=9R(ko^L_!U%tuX2kf8YGPS1J z(f_0VQQ6+kP8kzW@6Yg2VI0gV4su$yx~Fj!ZOiU~?Q2d$}D=%X1O`#m|Ak zyt8{FOmSWAF7}U;>_`cU#4v>pS?eH#thb-WPk+(YM({cBuhTQ+M;?V~$&QbsWQO&J zED)be<#}_+;>71%BY{|8lmp)11-ru}cV5_b?NCAz=) z7AiB=kzr9xe99gU*>XGEuea;E`BR;hSD0HfFnx)?hd-n$ReJ1fi`d!O*`kRrlOCw$ zU6}3BdhW5X!)qicFRzf)0-Z1EG_GN9y8cEBh=X8(zRoATj6S9@Mv7%;zXB7`2|0wk zf|0K>)_u*qx?FBC=?GE{ec-^Wuwfv-!7}0g2BtYyZo+2dD=D!*#g7tMLmO_0Wbt;K z!@u~EHeEa1EsEp zTM2rXRz34P4$vylYB89ve)P~F`Gm5X9<7b@n{~-KP3c0}f405pmybU3wRJJU)*iUq z-R*Cf_+9tOwkfez#M|~iF^`5_FjLCn1EuYDxgSovTA83a@;`fpxt=PPM03gVNznV~ zp?)eAx_W=kffXP8c?D!4@tqdZ)?N_nbfiTKDnV+vD%S0iC-({0*)w!467Y2f)HESg zOOC`J7TykJtvuOa*uNsTE=na^4rOHq4BZW~^0+;I$;zh+(}2{2s`bBhjPjwQ6J*bI zX2@1b;@|qanIO!ctnO9$Q^zLG{Dbj;^7BlvlFPT#)hpD!B!<%!EssQ9w|Ee*EcQyw zbMq)TPe@S8?9U>|HxoFWwwfD**AobxX?-)&vR@%bURVM{aEj@4#6O1r9$C{-nVKdx z9SnLB*|8lz6a)A%P18e>k@&P$>F;rW%2C@ve>AVQ&lk+%ixMtMwjVe*N1E;5(g_q> zMUGHg;a{2~S@Yskx!#uwMhlQiiSbGRJyZ^+YzBL@=sfHV48whR=+Lr%L=>O}ZIGPY z%jKZwnuECx8_JZt{%Ub&7tD`^sG*hJ;aVL%t}d>h=7?xp_A^@KgV!H8to?(QDN9{}Ie7d)ynvW&eH zNOE>1bdv~K%Pf0g^QXvrPHj3y@|$7w;ofoQ7c;|irhjkn-WenssK+Hn*I;5g+DV}j z9O&)(@`~4$)uVeIKbhY5k!x)8M6mvn^qbja-=#lkk=H74yko!v1W19$1&E)t`<(VW zI#OB!nUyzxZ;X9*1XSKW$T_oki;%k+ZV(pq;C)YMW)D14SKCm#HBPz_sCV}Vdi4KD zN{(~XYfRRVJsTiiR1Fxe3#yn4@;~}2t*0;!`4T(OuD*V`|9car@m=d!nKy6OYImly zA%!k<_v+Rg{!n%i#p9;G(j^OK$TLi|Ml_}HY7;m`HvdD%`6l{zyt!{;oZfuAxha$j z@*@tAQnmCOc*}EvT;k%9kvU8={D`deF~ME5NmbmP(JslC(#@?bKgf{%K8p9rGUX~Npg4{kFE4l%a1rqHUjWnX4J;PkKS1E5G9Y-{UhUkoN{p|S^9aXY}t{xO)Aeg zo32g+FEXRXynX&lT5WAQ%vbs7)BS5~w__q!&kCN~basop^P+nm#9?8Ec+Pb`YT}I7 zn&4JZ{OnRyH>zPZ2ykwC{x}31wrb;JP!w_!d6klcV__3n?L791ZzJ6k{kts}%}L;4 zUuJkka{1lrh?2G0sy|Ag41aA!_uX3OD$4Zsbbf0nJ@iK z$7+O*=uzaXt05sXn9u*fjA$L37P-pJRk6gQo8R(H1LJM^vDBNl$NO1xbDdZNJw&qe z9tklRdCl8 zX1bQu?X@=^m|yLX`hI^9&g8mxP*3@{l zWIYUI1MCg=Wd3>%wJjRHsxWkANq?YpN0_FnTsp`)AM~Y=%dB{V5w_f;P2lnliP>7#6)hnOJ zPmul%K4lYj*=M@^hYgYZ>pTdHj-Z>&>lZeI1M1!p87+Q7g&xNaTlO;#axN&YcC-Sp zMR_iD#Jax7UH<>kgu zD}?Z1n9uW}+ziHbuKl)Um4QGyLUdA)ijee9JZr_2&&WlAm+8Q-mQ(yUVX{9OicUV% zyPtXOGS?SAn0N=L86{9((w2RQ5Jlg{GAaNcllbZ^Sr`#NRyC8=R&`l#`NL zagF2c&M*dE(8nnSeNwToFo`~|U@+|xrDAPwe3|Y?sDV7(SJ5ldeB(v88*4G1=A4hOQwH+8dq3Y{2=fC-pa9iPA?#8WJY~ggyxbD*!|?9F zi}CMRE&+TTy+2dHCMcW1ZVvr`;~*T?x1%!SbNB!y{tW5&ZWQkztzl=Uz;!G5hI%~@ z2hoUC8jie5U_B!JjZrgN6%w4=(nMSXf$4S9z6q}Wf6bPrC7ew%OHmVcVV7frj`7Km zPvJlmvyA<84lPZ8Pn(}5+MsMYibz}w4DE?;FVDknT4x+okpaO0GKWgkz8qLif8>Dh=OaY;+Xtv7@%ma4M-aq{6O>gH~Zr@(?!GYf{>S zIj(FZz1M>WXgKo44ZO5}JMC;D^Q*bzR@4vZU`T~lzJczr(O^de!>Lw3oPo_KrP0f) z1?@#qqy~$QXXuKbSSnU=Oa7T_k&_qv!cy30aOAnH^OESIYN04P(I+-VQds1@K_7OV zJ&0{~3C(@BIX@#K^MTht-K(B!wV^>6*Y}C=!~lG+_}#mgcR&choze`qKwXP?F*zJV z#jOBjCjr#pC!>Eq!#m8F$W5vJh!Ed|KLoV`P?+zC^;)v8@uhFXA3?pCm$PG+=Qo4g zX-!ENEZwFE(3+HA-~N?G{XL}e^?0F|Oi7QpY3#EdZMNUnLd^EIMi!Nb2~<9>sd>qU z3ary!JDp1xBxS%p3sA988A=d0Z%jT-!Jjup zuZVoxW{j9wgsM*yI+4cwN3yoW8ZqW5Ldys$8_>w_x<@!~%^XT8hWc8*2#3-}K$v{O zh*TF^mmKFr*!e@`A%J}oS~c}k?<#j0eH%YXz2pWG*HuXBUI~#0Bg0c}-MoWvdrt19 z)3h_)|DGni#ORKLxw(0jSo6aG`H6iV@=x9MQ_XPw@&3NrSZjn`T${Il;4PiM%`lrp z8wDf)SbaJDRUgKcgkg!LnPANTheeb1fvXR!p<9Pjnr9&Gd1O`Eq54jhzT zN_Usp@`)ykG6R4CP!Gfy3DcE02ME35LIO$7m3;_PueU&ncrg7pg70<}YQn4-c@O)| zRf&<{{1{B@fqWbLST?73;ln5zI2=d8ib=KGDHfk* zUg9nkJBpy#5>%Sfz9ix^H%5gInOMC3kIK}&M9_xeBinO?!^-YPJT@kfE-?tKDzVhiY z9R09&kiVKznJ`wAcEM{*nvf@S694;YWTN{zRmIyOX#VE)LO%_tt0+<+88W62kngtLwjr-nbQGOvt3fqHKZfB_7hzT4;S5@ zfx;3Ue{A)0WKa`t{_Kqj3DrUkPE)b)_RQ4JlM2I+wyu^(x_w#zk7a0O&!-!PD;!g( zLnxSNH6y*5bNb?$LK&5+t|--acgpLPv8)2wbzd4#P)yl=c3p};?NL`5Y)d`ONxB0} zelkd28+o=1lZOnJ!X0TrKHid!tf|syJ{r(}%`2YeL#$bWbAZ1n`3{8g$D6*pQH9CY zUqqz6+ISB@C>U_?VLQj4Z$Y+JfuaL5a>lep5SHXr@0>a_P&S2vm1eVHl9Lw*5F#BM;d z|F?}rG{q=EMp(Pg^)!9OlF(6?NFf7YJ^{6C~MdGl>@+;`6ch zbZjy(;3BK}K4`u080v>!3G9&#nKw3-ltjGWfba|G>G6D-*n_(1))Se(<6dWGW{$gX z$8w|!;}hP6aniSGA>$C>)yyuldLIFZ$n1wb@#OadCSioLi6^=34+hef0&-3T&!=Q; zP(v@)tk)HW87#1={+P$$TAAgFDy~B8RX3D?A8k?-x~uU(RO66aJKHP6=X?V=?Qtq7 z95>BT{XeAIq>DZin#VlI(+?xd?9tQ~uS1^2K#bo=Aw(TbY&cteiWMM7dQI8wL_u17 zP3}WOM~@FYEBLpU!vKGqHJ3q%s~5o-ZHMf3u3ZuUmAJMBlzoEvhj6o9eDT*;SjG^s zoE=%WZUMjN9nZSM$Tmi95-Kxyv}ET#LP;~X%xF2>Hrw6VnnQge+30r~PuRa2JH^N8 zGTO5gl@yO_20hXOlZfs4#IqfEGcDm2v&6>uzMt!=3M$Gdmc7b(_-M^Z?NNVTLM^_c#>_8T4^E5cpn9PffG6;Lh#9d6IvHvG#p{ za~|CM;9>dQh*Jyze0Q<1C$ek)(VPA4;Hcl&*1#2yJGW-Q6U24Om!`Rpy$*R%tB?|* z$2vs*hMQ$%59;b8b_Ha|^O}t7{X2Fp7v%(&xe;T&kH}uQYn~h1~1M zE<@XzB_<^(&!y=$LiVzs=$I$;hcpSOvk|Wzx$%Q^cE_RJb@jQ^&h>nOOnK$b`{E{8 z;=uL0d7uE9)wh*A(Hb!4AITC2r(JN{_wQxXTSZMg!@$P?+fR^&Ca)hBkc0CSALt@4 zrY3Oul=gD*Q7`0<3f{YXWn@d3O}%aGdP+b6_NDmYxKQV!Nlc;bp`inMF^B3SM^vKu z-rR9^@=z`b$PNp;Ph^24fn#=S%Y2*F(m^axXOgr+$F@&8_3s?SE?F!?4x5_1EK_bv zI&&HHEtlFvFGteK@?TB&+%YYUP-f``IDGE7+ENyV`=F7n(*9QO02`$K*tc| zEIy})Q=Y=?w+qAqiNdmhFGkJeL0emZt$>5+R5Co~feVKlFREKo{5Knc>$=?;;7DsV zH+=9TLcr9G_0c1_Kn|0yy~_irH|_Z;EyCQ%3?>HWD5L#e1q_)xxSoBmsPRYf>`030 z)F1U{b<|I*Fiz(zRebZ$HtTM$Z6@nJSuj1A88^Wo%xGX8)Z`lN+84igRo5FD7*Ir7 ztno-CcFmB=LL6mldY3&n?2Rxnk{i3cqpp16;jReSY8p76L-(Z!Rgq9RZ`{4Zikb!uvATwloB4GR^ z+d96^M3ol1awgg$>fzi7uikbY8FwncR4`2kHQ#c4I57H@rsz(_mljhBv?gqy{Cs5-EYd1SOD$>;dnv8^o zLi*)6nMp=@#)|kDH9BZC%fE<~Il@_Ymb{Oiiy?sH_ay(-v?^zD1JeR*gXInf_&_Az zj32ddYUq7F?Dtq!K9!l0^cy{m@}PBn5;CHOpOTW|<+UBzaYXPt+k_0SKPQUNtHOj@My)y_yD--W3CV`hsE8 zUpW%t7OeD`qpR$jOwGUdDD^DlDSk5I2>d}qlAP0w;(8=TNU?cpd3Z1hygZ7|6<_oR zi1y~dML|z^kYpX+GVw;sNTP4h*cOn+)Cr z0!JNz3j||baIYkp>_nX}`U484Guc20_Z0!CSlVNu2ddpJZ1NwI8!;66ZtW}$D)+$i zl^BYD#_Vj%T`zC9UZ%YV4UM|PSpJ!0g8~kBVLzvr3fSl+GKrB2ED%$8CuELm?vN*R zXw}>cpzp}Yc$G3Bn~NMu9a5uIE{I6Vd9R|^s5mLa|6D`w)XvpLOhR>iYyd@f z#VX-O7x2zV4upFcsG|4!?iOQ(rLljxWOQPA zYq1#vtgIk{rfhc@AGieHdTg#Z&MDM^_jEl{isS0bcF$SaZAa8HFNektrbw-p>*0cQ z7-b{avZ>XwK)y?S=}$mO4gQiOF*u>;P9|lBrpISi(P73r6f9@Sk~gO(CkjjNm5wGP z^zx#H3FW{>XI>7MH!1&G{uWr$R!C^YTDq&}w-T?vZ*hQ zKD)7@E|85rvrC5oSuFIvYB#lysPA^GcMu#zppSkP=c7pq4d|0+TMtuuH!| z+#bOg@Xe^IBmo1CZQ@0F~Nv=iG#G0$0XyZJFd zvDZiXn9ID?O6I0{Rqkfka!E~GU?bvA!D&m2{<6TiJLVsh@WT3bA)#Bc;>dTey{W07 z^UR#~YW;}~Uw9~FzVVH)%JUdanBlSA76Y_DQy)n`gK1YQ*ltxtm%N%>Eu1bpoFHvk z;48BA0f{@f9gfk>;B*!R49Ct-{ybsI2=l0idnT&CZ!s{uax}~%ZTtA_gB+o%8otd_ z>T~Z;9p{D%p~$~Np=I2on#ke%R}kQrVQ_z+hM2;SS#l2uGA_T3@zovT&DY+oRA0U4T%!6p(F=mvxTlPP+ z8F;*_`X7DeY`PGAtBr_&4645T+41|iNLcN(;V#CpRpiMjks=*z18H5a(39@42CiS&<`5452=wv8GTGwSUx1YkSu&6p zVkuF}_)a%Yn{|6|QUI9Hmr%%D!Bi;12(qST`_O(@sN8IPn`3>op?_=Pfp4=R{cH9Ek%*ntjvhnS=^t~g9%#8Tui6b)@+&=T}i24fNLbjxWMik$ZPLr86pRx5z+eM zvZQb-&*O1%+FsBse3!XHc*O1b=a#gyK2qWB?|HvA&`IYYA2XufW?8k{oDc}XH8GKi+JUCXL0VP>j&^4 zqMLJRzvCyQ`&)(@q|5g&P!Jp zJx=G6)6-{Xw`+HQ${t=`gkS?82jiaYnVh+p_Y&5vI6eSM`wuxl0D__-pMDP;&13pn z_FA`BTelzkGD&D|b<{RuuWFE88wT=#o@l{GIBW^^urXYm8+N5X9)RCFI*M4&RXz0r z&Kat!nIyM>B>ZNk{~g?4wn*##Li}@CX@k3nDYS4?AZB}(O#*$Nnb$AW=f}1*NJ9Q! z0JR`W-)mV3IzGBSqoQJ(<1mi8nYU5q>wY25z%QIcuGymi03ZNKL_t*lx$XP%Hf4%~ z64gDML7Q(qo0AhrUmkAoM!#p>2kUH0F=_8$I|Of{-H*3e z=3%q!WI@46=bCtIhJamBF>|K9UIUA{*=RA$m|S7BTKRR`%H7^J6s=@A`>uzfr?biL zx5Q19i8+Lw6UbR3(Jtb)jW4ri)kn~}v3$vB&`u@V_cMd`?V!!~37PKPTC4!}y^iE< z6cS9@JD4GFX3|!9Gtx9GIEfpNEt}4qF^-Q;7o!ayPPk`USIV;(Q{5(RQ{7J783d-3$?QMM<;2Ux*o_5r>VxLIL=nwo+euxZN2Pk*|deOL4Gvx*6S{Nn__jT`n6 zAm@gquz)@LqjVN+S`FI3U9_vT-rOIX#LaOhlbf*h>xuRZjyr0xnIjhzY(}K~U~>Vl zAn-aFr8EZZ9R}{9A#mfrpG;>32}=`*`ld~ri~(w9)8@Esd7HQ`?>3s#OU5O(IUIke zL0jR?iU>8e?Jm{R!nKbd>b3d!gKz%v>pp$Ho*+9ngTPaPJ-}%jZ;eMuI7wF4s`?@r z3J3I;zm%BH&1utO(tk6Z+oBEF(Det1l$$qmH{iHO)9KA=8?n;H9UJRRU``e+EnrI% z5|;7{ls6gI?=$Y(L>mvDljO~=iy0+uA~9gs)qWvv*GW@y+s2JcWaGx!SK->UUATYx zQ!m~E_T#_&rHeNk8y_D(++)1t%|CM7e>9vs024tUCsjB&c$@lwfe7EunuTa7Xoscp0nhw7Oz~zENv*Qz2D z_vq1F*_L;QvBitIvMujM0=U_zvGer8N&|PmOAa0sW@5-SL)Ag;{t7gw#0GVP1;ynATcnG3EYg+ zM&`YIxxGeW(NCG6ee4*(vtHmHd*A@4t>X6kH*5=n_M6P|5`s*f9DzF^A5NZ?kbP&( zviGSsaSQLZd8aHE-pz&<5OCfKK-&^6yLs9);GQ<^=RY@bQ>+xUZ`JkwvbssyOCj!) zOAFGO87gN8-0%_fDFtrkQM^)rZcD^1z`eVTI+jrQxHcgwlQzCxF5_mLHZt$++b!NU z?n8%^Eph=n2-sr}FlSNW9kzE6Qo%QamX}Z}!jJ{7L6o%AZTw?BWhJv_fp(GgJGX8% z+{Ey1QH?sLh}ML9B%PW&odd<_zH$W1);B$dCmx9qPW7N#2b(sV~(N z0Nc(48TD}t++hOuG;2!AlquN~?(FQdXRV(T%M;r~s03vgcN?snUamw~38#IlW5C6v zjc>QxxPQq6?f?2OfS1q317qWZ2hgM~MEq~Q`Q|(C>|%c2(J`NxBkEEj>kf19W;_X` z?v)iOCEAvETeMB@9y%15=U4LrS@j38=IRn`H1GJ)^t_+%*wIIFEfCio`evXF8(Es5 zbMK~p4%av2&7J$)ImlY{<1O4%&}7_a(HyuF4cu%T+|w}c5|g&$^_b$*jUzI);IOutEzak1oV@Xd|Ta0ZrwA_iBXf8?3{^PEJ$MG zKFgc&GY4Hhj^k$I5|Mo;ikE|BFK5UCm6MBNrJ(IR3^r|iE8904&b94GOuhtczh{M! z)GfM`GH*tvokbfG6xm*q${XP}mRDjkX3Q|QRuvl}vZ2omttQ-bS1ox7bt!?H!#>EA zrRr~$^v!6jBt0Fh;V9@?q9@PHex*nQXA0WWB;47nR%K6-&BQKdS-4+>Ww*V^cX5+W zE)aK~Twx5By`3QoR1U-A!b&)8IkK}+LCQ^r2S+hSML5JDN~&Qcjsa$LD~o0c*hTgs z*lIOnyxTAnX>U~q+y`kEA>F-i<34zh_u*Zz#lIT*?$6A;=%g@`0vf1dVa!pHVQiW~ zo8!J4cxlAJ#Cx}@?nK%l<;8I?CNhS*M0`kNu?Uj=Rj|}RT=6*Gq2#oks@E4RAnOh; zSfKYjp2Eij-KDQte9Q!WoqG8=TChjU(-t`F#dh!bAV?qNckjzpHv;YnoBoySTi~{O zmJ}#i!O4OUV-&yO;^xIG{wvX*Uo^wH$xKB@PxD`6tSx0>zaeWLVS8fGMIMmEmcdUJAhe;6E* zT_3dotQU>?>Z=8#Br~LC=C^Hov=1`5dn{eh<>}?sUT-TRf(oD!5k0v?sMRWZp5gJ& zpCr_sn<*z(_lH4NJtNXz337&^=#2sqspj_`f8Cw+*zQVOteLJlX2A4T)4FX06k#+ zZ-2Y~&LIQrwYYxsz=A*g;ij903?5`fvBPn3;Js3Ud(%yW2ZvuJ@doY?yqVqQ=(ZZw zlUanA>-7&k3byLmqB1V-GH-F;6Abcb$xPZV-Wp)jD1-sroWJs$-+=dmKMWZ>*yPPt z#_1fl-JQ9KH}IBlhv3bUC(_o@UJ1}!xO>Zrh2uByHs1XC`v2hVdh_S`>v)^bl`{s^=uLSwndBNSg~vw(N5;L``p7Ev=!V$o3_doz}K%gczfX%;y%36l($Jc zoQ3aUGVVmLe352?)Dm>%XmHwSr^Q*g$;54p#LoE-qlt@vSnfKb<=XQj4B*mh>UX$9 z%sy)BVg#4J+m1&>`}cp}W;!>g9U6DU0MO1Fl0~?uOabpZ2SgaOe*@Y#5$!Tl-OHDA z+6Hcmb~w9A#!b8voo`?8#(PUnOja$0y>(h1)7dmmT$?@4#BHkE#BHkE#!c_u@%xxw zaEFsO+c$aNWNP^8nhyM(z2?z>N8`8+@3wJQS33@kHe|q*ZHR{g_crk6@|MIssH|*= zF{pOJ`Z%QgZKRAO1$3S{2wrI%Q6(xgF=gCOq^JYNSRnWv6f#wTzFrgmXL4T~qaa-OU z#$vg)jl_iQx#}vO1@aH`%oezHN47w)q3c9M%G%nAoVSN+4BCIbImT?P=XoWz&P?2( z4dbTviOl=Rq$7MV6JKXaCcof;2LSsX`ennIi#GED&S|4<_u!p+kCk@|E8(>5@p2nC zse1r#!n`S$zez+&)4Q7+C^w01Xg19Rz^~dvw{Ve~0BI}nzS@y3uw*2FiHs~8-wG>R^OJ6xQt z+V0|Qlw#l}a^5Xy%Y(gy+myFK+rT|&5LdSC-Au2mBkOLcs}mH%@$Y-~2s07#4r8qx za^f(vF@rYc+x*^;x62H-Z4)o>_dnl!Gx5gf-&rr_l}O1qvuQs#bm)V``x9o1n_sf* zkTXk&NvQ+%|2)yYUbeT^O=J$9Oqc_kaNsY#X;| zrgszVXX~1qn{jXO4iay~N`z$txA2oh6StVFkZgFhnENv^(H$qBefC*q;QsK=4{s)c z|M~A9{+;zauf&qJWn2XXpQH~>c<{l5p`GT2KcxRsZwc8-@*BFLK|ZiGtF z&*6EVa1-I(95-M6z{Winz=Ow+6Yg*eccQ?ZXwM{>n4BznVzm<|y2edFTfseK$o1C` zk#J|z+BlARCBOc)bCJ`zP z+A>t&o;Vx58)~y>yKz4&nuMFOYzgVZxT1)o46mKGS~tbIQ28&;7l6oWB@&V zdb9`az03BppZ}bNxf8*jD&b;?itCyhti&9m5(6THdyvtoB+}=FyqS0g0T;0M7!xUp zW-EMK#{I+-6Ajou^TIu!XxB-&d2^^6ZG!i_5_KS*8EFZ;d+5;4PJw%nA#V^3DjFDP zwv&sy)AU&m+=gwxx&t?IKd$To1vfu7rzzojX PmEQA8)G`t4{NxivNVIg5 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 JPDHLkV1i6IY)AkA literal 42115 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 literal 0 HcmV?d00001 diff --git a/public/images/pb.json b/public/images/pb.json index 2b2b8cf9b..c45d722e2 100644 --- a/public/images/pb.json +++ b/public/images/pb.json @@ -4,8 +4,8 @@ "image": "pb.png", "format": "RGBA8888", "size": { - "w": 14, - "h": 245 + "w": 12, + "h": 246 }, "scale": 1, "frames": [ @@ -24,8 +24,8 @@ "h": 16 }, "frame": { - "x": 1, - "y": 1, + "x": 0, + "y": 0, "w": 12, "h": 16 } @@ -45,8 +45,8 @@ "h": 16 }, "frame": { - "x": 1, - "y": 19, + "x": 0, + "y": 16, "w": 12, "h": 16 } @@ -66,8 +66,8 @@ "h": 16 }, "frame": { - "x": 1, - "y": 37, + "x": 0, + "y": 32, "w": 12, "h": 16 } @@ -87,8 +87,29 @@ "h": 16 }, "frame": { - "x": 1, - "y": 55, + "x": 0, + "y": 48, + "w": 12, + "h": 16 + } + }, + { + "filename": "rb_open", + "rotated": false, + "trimmed": false, + "sourceSize": { + "w": 12, + "h": 16 + }, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 12, + "h": 16 + }, + "frame": { + "x": 0, + "y": 64, "w": 12, "h": 16 } @@ -108,8 +129,8 @@ "h": 16 }, "frame": { - "x": 1, - "y": 73, + "x": 0, + "y": 80, "w": 12, "h": 16 } @@ -124,15 +145,15 @@ }, "spriteSourceSize": { "x": 0, - "y": 2, + "y": 3, "w": 12, - "h": 14 + "h": 13 }, "frame": { - "x": 1, - "y": 91, + "x": 0, + "y": 96, "w": 12, - "h": 14 + "h": 13 } }, { @@ -145,15 +166,15 @@ }, "spriteSourceSize": { "x": 0, - "y": 2, + "y": 3, "w": 12, - "h": 14 + "h": 13 }, "frame": { - "x": 1, - "y": 107, + "x": 0, + "y": 109, "w": 12, - "h": 14 + "h": 13 } }, { @@ -166,15 +187,15 @@ }, "spriteSourceSize": { "x": 0, - "y": 2, + "y": 3, "w": 12, - "h": 14 + "h": 13 }, "frame": { - "x": 1, - "y": 123, + "x": 0, + "y": 122, "w": 12, - "h": 14 + "h": 13 } }, { @@ -187,15 +208,36 @@ }, "spriteSourceSize": { "x": 0, - "y": 2, + "y": 3, "w": 12, - "h": 14 + "h": 13 }, "frame": { - "x": 1, - "y": 139, + "x": 0, + "y": 135, "w": 12, - "h": 14 + "h": 13 + } + }, + { + "filename": "rb_opening", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 12, + "h": 16 + }, + "spriteSourceSize": { + "x": 0, + "y": 3, + "w": 12, + "h": 13 + }, + "frame": { + "x": 0, + "y": 148, + "w": 12, + "h": 13 } }, { @@ -208,15 +250,15 @@ }, "spriteSourceSize": { "x": 0, - "y": 2, + "y": 3, "w": 12, - "h": 14 + "h": 13 }, "frame": { - "x": 1, - "y": 155, + "x": 0, + "y": 161, "w": 12, - "h": 14 + "h": 13 } }, { @@ -229,15 +271,15 @@ }, "spriteSourceSize": { "x": 0, - "y": 3, + "y": 4, "w": 12, - "h": 13 + "h": 12 }, "frame": { - "x": 1, - "y": 171, + "x": 0, + "y": 174, "w": 12, - "h": 13 + "h": 12 } }, { @@ -250,15 +292,15 @@ }, "spriteSourceSize": { "x": 0, - "y": 3, + "y": 4, "w": 12, - "h": 13 + "h": 12 }, "frame": { - "x": 1, + "x": 0, "y": 186, "w": 12, - "h": 13 + "h": 12 } }, { @@ -271,15 +313,15 @@ }, "spriteSourceSize": { "x": 0, - "y": 3, + "y": 4, "w": 12, - "h": 13 + "h": 12 }, "frame": { - "x": 1, - "y": 201, + "x": 0, + "y": 198, "w": 12, - "h": 13 + "h": 12 } }, { @@ -292,15 +334,36 @@ }, "spriteSourceSize": { "x": 0, - "y": 3, + "y": 4, "w": 12, - "h": 13 + "h": 12 }, "frame": { - "x": 1, - "y": 216, + "x": 0, + "y": 210, "w": 12, - "h": 13 + "h": 12 + } + }, + { + "filename": "rb", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 12, + "h": 16 + }, + "spriteSourceSize": { + "x": 0, + "y": 4, + "w": 12, + "h": 12 + }, + "frame": { + "x": 0, + "y": 222, + "w": 12, + "h": 12 } }, { @@ -313,15 +376,15 @@ }, "spriteSourceSize": { "x": 0, - "y": 3, + "y": 4, "w": 12, - "h": 13 + "h": 12 }, "frame": { - "x": 1, - "y": 231, + "x": 0, + "y": 234, "w": 12, - "h": 13 + "h": 12 } } ] @@ -330,6 +393,6 @@ "meta": { "app": "https://www.codeandweb.com/texturepacker", "version": "3.0", - "smartupdate": "$TexturePacker:SmartUpdate:c08fee07b4a02d4a278d0b9e81cafea9:8bb540e5126337d0b85e58b6cfcef619:8bcd206ed4f9371dcc2f2cbe354ed6ed$" + "smartupdate": "$TexturePacker:SmartUpdate:d0201027b060060859e6dd538ff09720:06e35198d6d176c5d754233d7a871f7c:8bcd206ed4f9371dcc2f2cbe354ed6ed$" } } diff --git a/public/images/pb.png b/public/images/pb.png index b65be2646a9e9b5a15d2ea5f86dd47650c00f5f9..c82530404a42ee1799c4c12c9d867fd288652f6c 100644 GIT binary patch literal 995 zcmV<9104K`P)!>$LnySOM2uZY5;>jcqtibb9fpdbpB zLU`JvgD@H#A%Q3xNtiQ^ydf;NRa5Lm!}F;iva>r0Dk%-b$O#PZb2X2!YD#xl6rZ0> zli~Y&L>PTv;xhsiWFdThd3la^jEEr7NHh{jA_<>kH9m#d6kT2`L#F9D7b7EivC1mt z9DScA%<~Ly`F$G1*Y9&hWZ1S;+E%g183D?Ka}K1n=RH~oy}=$5h_ar9IepI?*@0C% z{_k@^Wau0f=M;;S2v8=JIgsYcJsgDEU=0aGSxv&6y5^1Sz^eVv_pxv}!Qw%nBzJG3 zt0>l$WLs2Eny5^ZVv!R9lnJLCNSjW3Ob`Zx10)b-0||46fj6=Pt9JbR zJP?uBSI#)agk3j|S`9!rzPJow@Ellh(D8?tjWlzk*ner%KN$79QFZrMMw=$3Y_uUp zNG35F0bb&=%#lo*C8c>zDN4b@tY$D|Wr$%)^h5JN`(bjApy3f_Tcg~0qVjgmqfGEVpta3A29&Xg8mEzOHv7volU|>`t)i7|G zYO)<2DmbWwEsv|xd0=i%$L}c5A=&8dhPEGXA7mf5HGti29}q@WK(y;Sj)_qZGCUA* z`H`m=^``Hgy#+P#@80ZqU@58b=((!0ZuCK!HG1PY1SsLDCgBugB%t9#n5&AXjkGK= zU>-zGN;(g6wWNiOV10$(?;FntTW_ydwzl^6+uN@IwyrCLb#2-9XG%!mFzEGw!Gj9- ztv?^JZ^CbV_Ex(KyScP>zJyEeZ3t9M61Kdik$}-#T^{1?{+NBHwrb)2&C1^|lT^^& zCUL-_F1@GGP}lTd*PFMp{Fyg?gZHNO4^8_!fNf1{iZ<=u&Y5uEw8T&M?GK%oQ^S~U RTz&um002ovPDHLkV1j#Z(+dCq literal 946 zcmV;j15NyiP)| zg=-H5ih-tWAPsdW>-T@iJ#(>>XqDCe$u=Vq`5VTAj~yNP>51bV@pO(W?0Z7=y%Etf z0trC@Nl4{$3Dl#qQD{&vDBK9j+@|3aY3tnCD3C;uQc6Ub=@OH+N|L~@%}pF3l+FQ> zJ4@mM{=m1ls=9?QFAjYNNDT))>bIr zL5c3hYK_69_^IE~-B@j|?M9W>b;X*?Zd8bW-iQA9ecX)d_u+;+QShXD2k1HN9eu>Cy@LOGU3N z;x2mkdp1X-FTgN#i!B2~aXi(_z~@`56Am)Klbuixuzv9KJ)PM8j2Py59BmmGil?ar z2G-lE*Ud7(lf6y_wGXa0gmZ#+N4CDn90{i9h}<-(1b0-ulM@M!*sSn4b2AmRdvLvc zRV#WA2N+g!_)z{hED3x#d}yV-1)5*=Y;;Xymq0MDpD7EJttaL`WFlKx*V$DK_Qfa2^iU^Ad`Bt*$N9t#)Mg7h zrBik!RL=Z%9__ltW+l@V!7PyJu>|t9=fZQsmFN6Q;IrrGTl1XaNCjCSH@l<2-`wuzz<*}Ta+r?%WOe+)=Qj&Bm(2~5eyIGMZ(d&2Rtu#=sfGJ% add(g0cuN*|c=Q7u&EVj z$q|Dv3|x6q1TA=|LbTu(@-rReoetoa7TkhW1w#vTp*%8TjAKalrDG*)cTA|DuZNa7 z-Jf*GEm*u)02sUOuwdFY06@R4v=1!aYfY>%Z5#S^CD+>8f^nRk@(&j8)!AeS;go2- zvFqSkjjI{~05j_uA*Hm(B0{^ZCU<-+vHRp_B7%m+OAt0r66n%vl z<56_Z834XsD(fObH*3uEj2PoiDC^D7XQIw*HJ7NqwYJxYhBpduQY>9$iERJ?002ov JPDHLkV1n8XXEgu- literal 0 HcmV?d00001 diff --git a/public/images/pokeball/rb_opening.png b/public/images/pokeball/rb_opening.png new file mode 100644 index 0000000000000000000000000000000000000000..21075b528d737701733c61feb88281a438e07d5c GIT binary patch literal 256 zcmV+b0ssDqP)TzU+a=f(_3NipEg4;FAxbz^&yRK`%pX(KX zufqX=({8uoA*BUa)leGH&Pcs0%A#5f2vG4iK`QP5(_Ir+fPtN(g0f;N+ zo=TDzNot0>`!Eb%a%$QdV_XC`&n3*0E-kJDTO|F;U%CSracSVRvh8F50000 1) { this.gameData.saveSetting(Setting.Game_Speed, Math.max(settingOptions[Setting.Game_Speed].indexOf(`${this.gameSpeed}x`) - 1, 0)); - if (this.ui.getMode() === Mode.SETTINGS) + if (this.ui?.getMode() === Mode.SETTINGS) (this.ui.getHandler() as SettingsUiHandler).show([]); } } else diff --git a/src/data/egg.ts b/src/data/egg.ts index 9e38db093..28626ef2a 100644 --- a/src/data/egg.ts +++ b/src/data/egg.ts @@ -1,9 +1,9 @@ -import { ModifierTier } from "../modifier/modifier-tier"; import { Type } from "./type"; import * as Utils from "../utils"; import BattleScene from "../battle-scene"; import { Species } from "./enums/species"; import { getPokemonSpecies, speciesStarters } from "./pokemon-species"; +import { EggTier } from "./enums/egg-type"; export const EGG_SEED = 1073741824; @@ -15,7 +15,7 @@ export enum GachaType { export class Egg { public id: integer; - public tier: ModifierTier; + public tier: EggTier; public gachaType: GachaType; public hatchWaves: integer; public timestamp: integer; @@ -29,7 +29,7 @@ export class Egg { } isManaphyEgg(): boolean { - return this.tier === ModifierTier.COMMON && !(this.id % 255); + return this.tier === EggTier.COMMON && !(this.id % 255); } getKey(): string { @@ -39,13 +39,13 @@ export class Egg { } } -export function getEggTierDefaultHatchWaves(tier: ModifierTier): integer { +export function getEggTierDefaultHatchWaves(tier: EggTier): integer { switch (tier) { - case ModifierTier.COMMON: + case EggTier.COMMON: return 10; - case ModifierTier.GREAT: + case EggTier.GREAT: return 25; - case ModifierTier.ULTRA: + case EggTier.ULTRA: return 50; } return 100; @@ -55,11 +55,11 @@ export function getEggDescriptor(egg: Egg): string { if (egg.isManaphyEgg()) return 'Manaphy'; switch (egg.tier) { - case ModifierTier.GREAT: + case EggTier.GREAT: return 'Rare'; - case ModifierTier.ULTRA: + case EggTier.ULTRA: return 'Epic'; - case ModifierTier.MASTER: + case EggTier.MASTER: return 'Legendary'; default: return 'Common'; diff --git a/src/data/enums/egg-type.ts b/src/data/enums/egg-type.ts new file mode 100644 index 000000000..cd845a0d2 --- /dev/null +++ b/src/data/enums/egg-type.ts @@ -0,0 +1,6 @@ +export enum EggTier { + COMMON, + GREAT, + ULTRA, + MASTER +} \ No newline at end of file diff --git a/src/data/pokeball.ts b/src/data/pokeball.ts index ca36287a6..45775f33d 100644 --- a/src/data/pokeball.ts +++ b/src/data/pokeball.ts @@ -4,6 +4,7 @@ export enum PokeballType { POKEBALL, GREAT_BALL, ULTRA_BALL, + ROGUE_BALL, MASTER_BALL, LUXURY_BALL }; @@ -16,6 +17,8 @@ export function getPokeballAtlasKey(type: PokeballType): string { return 'gb'; case PokeballType.ULTRA_BALL: return 'ub'; + case PokeballType.ROGUE_BALL: + return 'rb'; case PokeballType.MASTER_BALL: return 'mb'; case PokeballType.LUXURY_BALL: @@ -35,6 +38,9 @@ export function getPokeballName(type: PokeballType): string { case PokeballType.ULTRA_BALL: ret = 'Ultra Ball'; break; + case PokeballType.ROGUE_BALL: + ret = 'Rogue Ball'; + break; case PokeballType.MASTER_BALL: ret = 'Master Ball'; break; @@ -53,6 +59,8 @@ export function getPokeballCatchMultiplier(type: PokeballType): number { return 1.5; case PokeballType.ULTRA_BALL: return 2; + case PokeballType.ROGUE_BALL: + return 3; case PokeballType.MASTER_BALL: return -1; case PokeballType.LUXURY_BALL: @@ -68,6 +76,8 @@ export function getPokeballTintColor(type: PokeballType): number { return 0x94b4de; case PokeballType.ULTRA_BALL: return 0xe6cd31; + case PokeballType.ROGUE_BALL: + return 0xd52929; case PokeballType.MASTER_BALL: return 0xa441bd; case PokeballType.LUXURY_BALL: diff --git a/src/egg-hatch-phase.ts b/src/egg-hatch-phase.ts index 19a29f1d8..c7e692951 100644 --- a/src/egg-hatch-phase.ts +++ b/src/egg-hatch-phase.ts @@ -5,7 +5,6 @@ import * as Utils from "./utils"; import { Mode } from "./ui/ui"; import { EGG_SEED, Egg, GachaType, getLegendaryGachaSpeciesForTimestamp, getTypeGachaTypeForTimestamp } from "./data/egg"; import EggHatchSceneHandler from "./ui/egg-hatch-scene-handler"; -import { ModifierTier } from "./modifier/modifier-tier"; import { Species } from "./data/enums/species"; import { PlayerPokemon } from "./pokemon"; import { getPokemonSpecies, speciesStarters } from "./data/pokemon-species"; @@ -16,6 +15,7 @@ import { achvs } from "./system/achv"; import { addWindow } from "./ui/window"; import { getNatureName } from "./data/nature"; import { pokemonPrevolutions } from "./data/pokemon-evolutions"; +import { EggTier } from "./data/enums/egg-type"; export class EggHatchPhase extends Phase { private egg: Egg; @@ -375,7 +375,7 @@ export class EggHatchPhase extends Phase { speciesOverride = rand ? Species.PHIONE : Species.MANAPHY; }, this.egg.id, EGG_SEED.toString()); - } else if (this.egg.tier === ModifierTier.MASTER + } else if (this.egg.tier === EggTier.MASTER && this.egg.gachaType === GachaType.LEGENDARY) { this.scene.executeWithSeedOffset(() => { if (!Utils.randSeedInt(2)) @@ -393,15 +393,15 @@ export class EggHatchPhase extends Phase { let maxStarterValue: integer; switch (this.egg.tier) { - case ModifierTier.GREAT: + case EggTier.GREAT: minStarterValue = 4; maxStarterValue = 5; break; - case ModifierTier.ULTRA: + case EggTier.ULTRA: minStarterValue = 6; maxStarterValue = 7; break; - case ModifierTier.MASTER: + case EggTier.MASTER: minStarterValue = 8; maxStarterValue = 9; break; diff --git a/src/modifier/modifier-tier.ts b/src/modifier/modifier-tier.ts index 27292e47f..ab9ae9989 100644 --- a/src/modifier/modifier-tier.ts +++ b/src/modifier/modifier-tier.ts @@ -2,6 +2,7 @@ export enum ModifierTier { COMMON, GREAT, ULTRA, + ROGUE, MASTER, LUXURY } \ No newline at end of file diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index cc78aa253..c27935e3e 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -20,6 +20,9 @@ import { VoucherType, getVoucherTypeIcon, getVoucherTypeName } from '../system/v import { FormChangeItem, SpeciesFormChangeItemTrigger, pokemonFormChanges } from '../data/pokemon-forms'; import { ModifierTier } from './modifier-tier'; +const outputModifierData = false; +const useMaxWeightForOutput = false; + type Modifier = Modifiers.Modifier; export enum ModifierPoolType { @@ -678,11 +681,13 @@ type WeightedModifierTypeWeightFunc = (party: Pokemon[]) => integer; class WeightedModifierType { public modifierType: ModifierType; public weight: integer | WeightedModifierTypeWeightFunc; + public maxWeight: integer; - constructor(modifierTypeFunc: ModifierTypeFunc, weight: integer | WeightedModifierTypeWeightFunc) { + constructor(modifierTypeFunc: ModifierTypeFunc, weight: integer | WeightedModifierTypeWeightFunc, maxWeight?: integer) { this.modifierType = modifierTypeFunc(); this.modifierType.id = Object.keys(modifierTypes).find(k => modifierTypes[k] === modifierTypeFunc); this.weight = weight; + this.maxWeight = maxWeight || (!(weight instanceof Function) ? weight : 0); } setTier(tier: ModifierTier) { @@ -694,6 +699,7 @@ export const modifierTypes = { POKEBALL: () => new AddPokeballModifierType(PokeballType.POKEBALL, 5, 'pb'), GREAT_BALL: () => new AddPokeballModifierType(PokeballType.GREAT_BALL, 5, 'gb'), ULTRA_BALL: () => new AddPokeballModifierType(PokeballType.ULTRA_BALL, 5, 'ub'), + ROGUE_BALL: () => new AddPokeballModifierType(PokeballType.ROGUE_BALL, 5, 'rb'), MASTER_BALL: () => new AddPokeballModifierType(PokeballType.MASTER_BALL, 1, 'mb'), RARE_CANDY: () => new PokemonLevelIncrementModifierType('Rare Candy'), @@ -878,19 +884,19 @@ const modifierPool = { new WeightedModifierType(modifierTypes.POTION, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => p.getInverseHp() >= 10 || p.getHpRatio() <= 0.875).length, 3); return thresholdPartyMemberCount * 3; - }), + }, 9), new WeightedModifierType(modifierTypes.SUPER_POTION, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => p.getInverseHp() >= 25 || p.getHpRatio() <= 0.75).length, 3); return thresholdPartyMemberCount; - }), + }, 3), new WeightedModifierType(modifierTypes.ETHER, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3); return thresholdPartyMemberCount * 3; - }), + }, 9), new WeightedModifierType(modifierTypes.MAX_ETHER, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3); return thresholdPartyMemberCount; - }), + }, 3), new WeightedModifierType(modifierTypes.LURE, 2), new WeightedModifierType(modifierTypes.TEMP_STAT_BOOSTER, 4), new WeightedModifierType(modifierTypes.BERRY, 2), @@ -898,110 +904,110 @@ const modifierPool = { ].map(m => { m.setTier(ModifierTier.COMMON); return m; }), [ModifierTier.GREAT]: [ new WeightedModifierType(modifierTypes.GREAT_BALL, 6), - new WeightedModifierType(modifierTypes.EVOLUTION_ITEM, 2), new WeightedModifierType(modifierTypes.FULL_HEAL, (party: Pokemon[]) => { const statusEffectPartyMemberCount = Math.min(party.filter(p => p.hp && !!p.status).length, 3); return statusEffectPartyMemberCount * 6; - }), + }, 18), new WeightedModifierType(modifierTypes.REVIVE, (party: Pokemon[]) => { const faintedPartyMemberCount = Math.min(party.filter(p => p.isFainted()).length, 3); return faintedPartyMemberCount * 9; - }), + }, 3), new WeightedModifierType(modifierTypes.MAX_REVIVE, (party: Pokemon[]) => { const faintedPartyMemberCount = Math.min(party.filter(p => p.isFainted()).length, 3); return faintedPartyMemberCount * 3; - }), + }, 9), new WeightedModifierType(modifierTypes.SACRED_ASH, (party: Pokemon[]) => { return party.filter(p => p.isFainted()).length >= Math.ceil(party.length / 2) ? 1 : 0; - }), + }, 1), new WeightedModifierType(modifierTypes.HYPER_POTION, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => p.getInverseHp() >= 100 || p.getHpRatio() <= 0.625).length, 3); return thresholdPartyMemberCount * 3; - }), + }, 9), new WeightedModifierType(modifierTypes.MAX_POTION, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => p.getInverseHp() >= 150 || p.getHpRatio() <= 0.5).length, 3); return thresholdPartyMemberCount; - }), + }, 3), new WeightedModifierType(modifierTypes.FULL_RESTORE, (party: Pokemon[]) => { const statusEffectPartyMemberCount = Math.min(party.filter(p => p.hp && !!p.status).length, 3); const thresholdPartyMemberCount = Math.floor((Math.min(party.filter(p => p.getInverseHp() >= 150 || p.getHpRatio() <= 0.5).length, 3) + statusEffectPartyMemberCount) / 2); return thresholdPartyMemberCount; - }), + }, 3), new WeightedModifierType(modifierTypes.ELIXIR, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3); return thresholdPartyMemberCount * 3; - }), + }, 9), new WeightedModifierType(modifierTypes.MAX_ELIXIR, (party: Pokemon[]) => { const thresholdPartyMemberCount = Math.min(party.filter(p => p.hp && p.getMoveset().filter(m => (m.getMove().pp - m.ppUsed) <= 5).length).length, 3); return thresholdPartyMemberCount; - }), + }, 3), new WeightedModifierType(modifierTypes.SUPER_LURE, 4), new WeightedModifierType(modifierTypes.NUGGET, 5), - new WeightedModifierType(modifierTypes.BIG_NUGGET, 1), - new WeightedModifierType(modifierTypes.MAP, (party: Pokemon[]) => party[0].scene.gameMode === GameMode.CLASSIC ? 1 : 0), + new WeightedModifierType(modifierTypes.MAP, (party: Pokemon[]) => party[0].scene.gameMode === GameMode.CLASSIC ? 1 : 0, 1), new WeightedModifierType(modifierTypes.TM_GREAT, 2), - new WeightedModifierType(modifierTypes.EXP_SHARE, 1), - new WeightedModifierType(modifierTypes.AMULET_COIN, 1), - new WeightedModifierType(modifierTypes.EXP_CHARM, 2), new WeightedModifierType(modifierTypes.MEMORY_MUSHROOM, (party: Pokemon[]) => { if (!party.find(p => p.getLearnableLevelMoves().length)) return 0; const highestPartyLevel = party.map(p => p.level).reduce((highestLevel: integer, level: integer) => Math.max(highestLevel, level), 1); return Math.min(Math.ceil(highestPartyLevel / 20), 4); - }), + }, 4), new WeightedModifierType(modifierTypes.BASE_STAT_BOOSTER, 3), new WeightedModifierType(modifierTypes.TERA_SHARD, 1), new WeightedModifierType(modifierTypes.DNA_SPLICERS, (party: Pokemon[]) => party[0].scene.gameMode === GameMode.SPLICED_ENDLESS && party.filter(p => !p.fusionSpecies).length > 1 ? 4 : 0), new WeightedModifierType(modifierTypes.REVERSE_DNA_SPLICERS, (party: Pokemon[]) => party[0].scene.gameMode === GameMode.SPLICED_ENDLESS && party.filter(p => p.fusionSpecies).length ? 6 : 0), ].map(m => { m.setTier(ModifierTier.GREAT); return m; }), [ModifierTier.ULTRA]: [ - new WeightedModifierType(modifierTypes.ULTRA_BALL, 8), + new WeightedModifierType(modifierTypes.ULTRA_BALL, 24), new WeightedModifierType(modifierTypes.MAX_LURE, 4), - new WeightedModifierType(modifierTypes.RELIC_GOLD, 3), - new WeightedModifierType(modifierTypes.PP_UP, 6), - new WeightedModifierType(modifierTypes.PP_MAX, 2), - new WeightedModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, 4), - new WeightedModifierType(modifierTypes.TM_ULTRA, 5), - new WeightedModifierType(modifierTypes.REVIVER_SEED, 3), - new WeightedModifierType(modifierTypes.CANDY_JAR, 3), - new WeightedModifierType(modifierTypes.RARER_CANDY, 3), + new WeightedModifierType(modifierTypes.BIG_NUGGET, 12), + new WeightedModifierType(modifierTypes.PP_UP, 9), + new WeightedModifierType(modifierTypes.PP_MAX, 3), + new WeightedModifierType(modifierTypes.EVOLUTION_ITEM, 16), + new WeightedModifierType(modifierTypes.AMULET_COIN, 3), + new WeightedModifierType(modifierTypes.REVIVER_SEED, 4), + new WeightedModifierType(modifierTypes.CANDY_JAR, 5), + new WeightedModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, 10), + new WeightedModifierType(modifierTypes.TM_ULTRA, 8), + new WeightedModifierType(modifierTypes.RARER_CANDY, 4), new WeightedModifierType(modifierTypes.SOOTHE_BELL, (party: Pokemon[]) => { const friendshipBenefitPartyMemberCount = Math.min(party.filter(p => (pokemonEvolutions.hasOwnProperty(p.species.speciesId) && pokemonEvolutions[p.species.speciesId].find(e => e.condition && e.condition instanceof SpeciesFriendshipEvolutionCondition)) || p.moveset.find(m => m.moveId === Moves.RETURN)).length, 3); return friendshipBenefitPartyMemberCount * 3; - }), - new WeightedModifierType(modifierTypes.SOUL_DEW, 3), + }, 9), + new WeightedModifierType(modifierTypes.SOUL_DEW, 2), new WeightedModifierType(modifierTypes.GOLDEN_PUNCH, 2), - new WeightedModifierType(modifierTypes.GRIP_CLAW, 2), - new WeightedModifierType(modifierTypes.BATON, 1), - new WeightedModifierType(modifierTypes.FOCUS_BAND, 3), - new WeightedModifierType(modifierTypes.KINGS_ROCK, 2), - new WeightedModifierType(modifierTypes.LEFTOVERS, 2), - new WeightedModifierType(modifierTypes.SHELL_BELL, 2), - new WeightedModifierType(modifierTypes.BERRY_POUCH, 3), - new WeightedModifierType(modifierTypes.SUPER_EXP_CHARM, 3), - new WeightedModifierType(modifierTypes.OVAL_CHARM, 2), - new WeightedModifierType(modifierTypes.ABILITY_CHARM, 2), new WeightedModifierType(modifierTypes.IV_SCANNER, 2), - new WeightedModifierType(modifierTypes.TERA_ORB, (party: Pokemon[]) => Math.max(Math.floor(party[0].scene.currentBattle.waveIndex / 50) * 2, 1)), + new WeightedModifierType(modifierTypes.EXP_CHARM, 8), + new WeightedModifierType(modifierTypes.EXP_SHARE, 12), new WeightedModifierType(modifierTypes.EXP_BALANCE, 1), - new WeightedModifierType(modifierTypes.FORM_CHANGE_ITEM, 1), - new WeightedModifierType(modifierTypes.REVERSE_DNA_SPLICERS, (party: Pokemon[]) => party[0].scene.gameMode !== GameMode.SPLICED_ENDLESS && party.filter(p => p.fusionSpecies).length ? 3 : 0), + new WeightedModifierType(modifierTypes.TERA_ORB, (party: Pokemon[]) => Math.min(Math.max(Math.floor(party[0].scene.currentBattle.waveIndex / 50) * 2, 1), 4), 4), + new WeightedModifierType(modifierTypes.REVERSE_DNA_SPLICERS, (party: Pokemon[]) => party[0].scene.gameMode !== GameMode.SPLICED_ENDLESS && party.filter(p => p.fusionSpecies).length ? 3 : 0, 3), new WeightedModifierType(modifierTypes.VOUCHER, 3), ].map(m => { m.setTier(ModifierTier.ULTRA); return m; }), + [ModifierTier.ROGUE]: [ + new WeightedModifierType(modifierTypes.ROGUE_BALL, 12), + new WeightedModifierType(modifierTypes.RELIC_GOLD, 3), + new WeightedModifierType(modifierTypes.LEFTOVERS, 1), + new WeightedModifierType(modifierTypes.SHELL_BELL, 1), + new WeightedModifierType(modifierTypes.BERRY_POUCH, 2), + new WeightedModifierType(modifierTypes.GRIP_CLAW, 2), + new WeightedModifierType(modifierTypes.BATON, 1), + //new WeightedModifierType(modifierTypes.OVAL_CHARM, 2), + new WeightedModifierType(modifierTypes.ABILITY_CHARM, 2), + new WeightedModifierType(modifierTypes.FOCUS_BAND, 3), + new WeightedModifierType(modifierTypes.KINGS_ROCK, 2), + new WeightedModifierType(modifierTypes.SUPER_EXP_CHARM, 5), + new WeightedModifierType(modifierTypes.FORM_CHANGE_ITEM, 9), + new WeightedModifierType(modifierTypes.MEGA_BRACELET, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 4, 16), + new WeightedModifierType(modifierTypes.DYNAMAX_BAND, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 4, 16), + ].map(m => { m.setTier(ModifierTier.ROGUE); return m; }), [ModifierTier.MASTER]: [ new WeightedModifierType(modifierTypes.MASTER_BALL, 32), new WeightedModifierType(modifierTypes.SHINY_CHARM, 18), new WeightedModifierType(modifierTypes.HEALING_CHARM, 18), - new WeightedModifierType(modifierTypes.VOUCHER_PLUS, 6), - new WeightedModifierType(modifierTypes.MEGA_BRACELET, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 8), - new WeightedModifierType(modifierTypes.DYNAMAX_BAND, (party: Pokemon[]) => Math.min(Math.ceil(party[0].scene.currentBattle.waveIndex / 50), 4) * 8), - new WeightedModifierType(modifierTypes.DNA_SPLICERS, (party: Pokemon[]) => party[0].scene.gameMode !== GameMode.SPLICED_ENDLESS && party.filter(p => !p.fusionSpecies).length > 1 ? 12 : 0), - new WeightedModifierType(modifierTypes.MINI_BLACK_HOLE, (party: Pokemon[]) => party[0].scene.gameData.unlocks[Unlockables.MINI_BLACK_HOLE] ? 2 : 0), + new WeightedModifierType(modifierTypes.VOUCHER_PLUS, 8), + new WeightedModifierType(modifierTypes.DNA_SPLICERS, (party: Pokemon[]) => party[0].scene.gameMode !== GameMode.SPLICED_ENDLESS && party.filter(p => !p.fusionSpecies).length > 1 ? 24 : 0, 24), + new WeightedModifierType(modifierTypes.MINI_BLACK_HOLE, (party: Pokemon[]) => party[0].scene.gameData.unlocks[Unlockables.MINI_BLACK_HOLE] ? 1 : 0, 1), ].map(m => { m.setTier(ModifierTier.MASTER); return m; }), [ModifierTier.LUXURY]: [ - new WeightedModifierType(modifierTypes.GOLDEN_EXP_CHARM, 1), - new WeightedModifierType(modifierTypes.GOLDEN_POKEBALL, 1), - new WeightedModifierType(modifierTypes.RARER_CANDY, 1), ].map(m => { m.setTier(ModifierTier.LUXURY); return m; }), }; @@ -1028,19 +1034,20 @@ const trainerModifierPool = { ].map(m => { m.setTier(ModifierTier.COMMON); return m; }), [ModifierTier.GREAT]: [ new WeightedModifierType(modifierTypes.BASE_STAT_BOOSTER, 3), - new WeightedModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, 1), ].map(m => { m.setTier(ModifierTier.GREAT); return m; }), [ModifierTier.ULTRA]: [ + new WeightedModifierType(modifierTypes.ATTACK_TYPE_BOOSTER, 1), + ].map(m => { m.setTier(ModifierTier.ULTRA); return m; }), + [ModifierTier.ROGUE]: [ new WeightedModifierType(modifierTypes.REVIVER_SEED, 2), new WeightedModifierType(modifierTypes.FOCUS_BAND, 2), new WeightedModifierType(modifierTypes.LUCKY_EGG, 4), new WeightedModifierType(modifierTypes.GRIP_CLAW, 1), + ].map(m => { m.setTier(ModifierTier.ROGUE); return m; }), + [ModifierTier.MASTER]: [ new WeightedModifierType(modifierTypes.KINGS_ROCK, 1), new WeightedModifierType(modifierTypes.LEFTOVERS, 1), new WeightedModifierType(modifierTypes.SHELL_BELL, 1), - ].map(m => { m.setTier(ModifierTier.ULTRA); return m; }), - [ModifierTier.MASTER]: [ - new WeightedModifierType(modifierTypes.GOLDEN_EGG, 1), ].map(m => { m.setTier(ModifierTier.MASTER); return m; }) }; @@ -1074,6 +1081,7 @@ const enemyBuffModifierPool = { new WeightedModifierType(modifierTypes.ENEMY_INSTANT_REVIVE_CHANCE, 5), new WeightedModifierType(modifierTypes.ENEMY_INSTANT_MAX_REVIVE_CHANCE, 3) ].map(m => { m.setTier(ModifierTier.ULTRA); return m; }), + [ModifierTier.ROGUE]: [ ].map(m => { m.setTier(ModifierTier.ROGUE); return m; }), [ModifierTier.MASTER]: [ ].map(m => { m.setTier(ModifierTier.MASTER); return m; }) }; @@ -1093,13 +1101,18 @@ let enemyIgnoredPoolIndexes = {}; let enemyBuffModifierPoolThresholds = {}; let enemyBuffIgnoredPoolIndexes = {}; +const tierWeights = [ 769 / 1024, 192 / 1024, 48 / 1024, 12 / 1024, 1 / 1024 ]; + export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: ModifierPoolType) { const player = !poolType; const pool = player ? modifierPool : poolType === ModifierPoolType.WILD ? wildModifierPool : poolType === ModifierPoolType.TRAINER ? trainerModifierPool : enemyBuffModifierPool; const ignoredIndexes = {}; - const thresholds = Object.fromEntries(new Map(Object.keys(pool).map(t => { + const modifierTableData = {}; + const thresholds = Object.fromEntries(new Map(Object.keys(pool).slice(0, -1).map(t => { ignoredIndexes[t] = []; const thresholds = new Map(); + const tierModifierIds: string[] = []; + let tierMaxWeight = 0; let i = 0; pool[t].reduce((total: integer, modifierType: WeightedModifierType) => { const weightedModifierType = modifierType as WeightedModifierType; @@ -1115,6 +1128,13 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod ? (weightedModifierType.weight as Function)(party) : weightedModifierType.weight as integer : 0; + if (weightedModifierType.maxWeight) { + const modifierId = weightedModifierType.modifierType.generatorId || weightedModifierType.modifierType.id; + tierModifierIds.push(modifierId); + const outputWeight = useMaxWeightForOutput ? weightedModifierType.maxWeight : weight; + modifierTableData[modifierId] = { weight: outputWeight, tier: parseInt(t), tierPercent: 0, totalPercent: 0 }; + tierMaxWeight += outputWeight; + } if (weight) total += weight; else { @@ -1124,8 +1144,16 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod thresholds.set(total, i++); return total; }, 0); - return [ t, Object.fromEntries(thresholds) ] + for (let id of tierModifierIds) + modifierTableData[id].tierPercent = Math.floor((modifierTableData[id].weight / tierMaxWeight) * 10000) / 100; + return [ t, Object.fromEntries(thresholds) ]; }))); + for (let id of Object.keys(modifierTableData)) { + modifierTableData[id].totalPercent = Math.floor(modifierTableData[id].tierPercent * tierWeights[modifierTableData[id].tier] * 100) / 100; + modifierTableData[id].tier = ModifierTier[modifierTableData[id].tier]; + } + if (outputModifierData) + console.table(modifierTableData); if (player) { modifierPoolThresholds = thresholds; ignoredPoolIndexes = ignoredIndexes; @@ -1144,14 +1172,14 @@ export function getModifierTypeFuncById(id: string): ModifierTypeFunc { export function getPlayerModifierTypeOptionsForWave(waveIndex: integer, count: integer, party: PlayerPokemon[]): ModifierTypeOption[] { if (waveIndex % 10 === 0) - return modifierPool[ModifierTier.LUXURY].filter(m => !(m.weight instanceof Function) || m.weight(party)).map(m => new ModifierTypeOption(m.modifierType, false)); + return modifierPool[ModifierTier.LUXURY].filter(m => !(m.weight instanceof Function) || m.weight(party)).map(m => new ModifierTypeOption(m.modifierType, 0)); const options: ModifierTypeOption[] = []; const retryCount = Math.min(count * 5, 50); new Array(count).fill(0).map(() => { let candidate = getNewModifierTypeOption(party, ModifierPoolType.PLAYER); let r = 0; while (options.length && ++r < retryCount && options.filter(o => o.type.name === candidate.type.name || o.type.group === candidate.type.group).length) - candidate = getNewModifierTypeOption(party, ModifierPoolType.PLAYER, candidate.type.tier, candidate.upgraded); + candidate = getNewModifierTypeOption(party, ModifierPoolType.PLAYER, candidate.type.tier, candidate.upgradeCount); options.push(candidate); }); return options; @@ -1163,31 +1191,31 @@ export function getPlayerShopModifierTypeOptionsForWave(waveIndex: integer, base const options = [ [ - new ModifierTypeOption(modifierTypes.POTION(), false, baseCost * 0.2), - new ModifierTypeOption(modifierTypes.ETHER(), false, baseCost * 0.4), - new ModifierTypeOption(modifierTypes.REVIVE(), false, baseCost * 2) + new ModifierTypeOption(modifierTypes.POTION(), 0, baseCost * 0.2), + new ModifierTypeOption(modifierTypes.ETHER(), 0, baseCost * 0.4), + new ModifierTypeOption(modifierTypes.REVIVE(), 0, baseCost * 2) ], [ - new ModifierTypeOption(modifierTypes.SUPER_POTION(), false, baseCost * 0.45), - new ModifierTypeOption(modifierTypes.ELIXIR(), false, baseCost) + new ModifierTypeOption(modifierTypes.SUPER_POTION(), 0, baseCost * 0.45), + new ModifierTypeOption(modifierTypes.ELIXIR(), 0, baseCost) ], [ - new ModifierTypeOption(modifierTypes.FULL_HEAL(), false, baseCost), - new ModifierTypeOption(modifierTypes.MAX_ETHER(), false, baseCost) + new ModifierTypeOption(modifierTypes.FULL_HEAL(), 0, baseCost), + new ModifierTypeOption(modifierTypes.MAX_ETHER(), 0, baseCost) ], [ - new ModifierTypeOption(modifierTypes.HYPER_POTION(), false, baseCost * 0.8), - new ModifierTypeOption(modifierTypes.MAX_REVIVE(), false, baseCost * 2.75) + new ModifierTypeOption(modifierTypes.HYPER_POTION(), 0, baseCost * 0.8), + new ModifierTypeOption(modifierTypes.MAX_REVIVE(), 0, baseCost * 2.75) ], [ - new ModifierTypeOption(modifierTypes.MAX_POTION(), false, baseCost * 1.5), - new ModifierTypeOption(modifierTypes.MAX_ELIXIR(), false, baseCost * 2.5) + new ModifierTypeOption(modifierTypes.MAX_POTION(), 0, baseCost * 1.5), + new ModifierTypeOption(modifierTypes.MAX_ELIXIR(), 0, baseCost * 2.5) ], [ - new ModifierTypeOption(modifierTypes.FULL_RESTORE(), false, baseCost * 2.25) + new ModifierTypeOption(modifierTypes.FULL_RESTORE(), 0, baseCost * 2.25) ], [ - new ModifierTypeOption(modifierTypes.SACRED_ASH(), false, baseCost * 12) + new ModifierTypeOption(modifierTypes.SACRED_ASH(), 0, baseCost * 12) ] ]; return options.slice(0, Math.ceil(Math.max(waveIndex + 10, 0) / 30)).flat(); @@ -1215,20 +1243,30 @@ export function getEnemyModifierTypesForWave(waveIndex: integer, count: integer, return ret; } -function getNewModifierTypeOption(party: Pokemon[], poolType: ModifierPoolType, tier?: ModifierTier, upgrade?: boolean): ModifierTypeOption { +function getNewModifierTypeOption(party: Pokemon[], poolType: ModifierPoolType, tier?: ModifierTier, upgradeCount?: integer): ModifierTypeOption { const player = !poolType; const pool = player ? modifierPool : poolType === ModifierPoolType.WILD ? wildModifierPool : poolType === ModifierPoolType.TRAINER ? trainerModifierPool : enemyBuffModifierPool; if (tier === undefined) { - const tierValue = Utils.randSeedInt(256); + const tierValue = Utils.randSeedInt(1024); + upgradeCount = 0; if (player && tierValue) { const partyShinyCount = party.filter(p => p.isShiny() && !p.isFainted()).length; - const upgradeOdds = Math.floor(32 / Math.max((partyShinyCount * 2), 1)); - upgrade = !Utils.randSeedInt(upgradeOdds); - } else - upgrade = false; - tier = (tierValue >= 52 ? ModifierTier.COMMON : tierValue >= 8 ? ModifierTier.GREAT : tierValue >= 1 ? ModifierTier.ULTRA : ModifierTier.MASTER) + (upgrade ? 1 : 0); - while (tier && !modifierPool[tier].length) + const upgradeOdds = Math.floor(32 / ((partyShinyCount + 2) / 2)); + let upgraded = false; + do { + upgraded = !Utils.randSeedInt(upgradeOdds); + if (upgraded) + upgradeCount++; + } while (upgraded); + } + tier = tierValue > 255 ? ModifierTier.COMMON : tierValue > 60 ? ModifierTier.GREAT : tierValue > 12 ? ModifierTier.ULTRA : tierValue ? ModifierTier.ROGUE : ModifierTier.MASTER; + upgradeCount = Math.min(upgradeCount, ModifierTier.MASTER - tier); + tier += upgradeCount; + while (tier && (!modifierPool.hasOwnProperty(tier) || !modifierPool[tier].length)) { tier--; + if (upgradeCount) + upgradeCount--; + } } const thresholds = player ? modifierPoolThresholds : pool !== enemyBuffModifierPool ? enemyModifierPoolThresholds : enemyBuffModifierPoolThresholds; @@ -1251,14 +1289,14 @@ function getNewModifierTypeOption(party: Pokemon[], poolType: ModifierPoolType, modifierType = (modifierType as ModifierTypeGenerator).generateType(party); if (modifierType === null) { if (player) - console.log(ModifierTier[tier], upgrade); - return getNewModifierTypeOption(party, poolType, tier, upgrade); + console.log(ModifierTier[tier], upgradeCount); + return getNewModifierTypeOption(party, poolType, tier, upgradeCount); } } console.log(modifierType, !player ? '(enemy)' : ''); - return new ModifierTypeOption(modifierType as ModifierType, upgrade); + return new ModifierTypeOption(modifierType as ModifierType, upgradeCount); } export function getDefaultModifierTypeForTier(tier: ModifierTier): ModifierType { @@ -1270,12 +1308,12 @@ export function getDefaultModifierTypeForTier(tier: ModifierTier): ModifierType export class ModifierTypeOption { public type: ModifierType; - public upgraded: boolean; + public upgradeCount: integer; public cost: integer; - constructor(type: ModifierType, upgraded: boolean, cost: number = 0) { + constructor(type: ModifierType, upgradeCount: integer, cost: number = 0) { this.type = type; - this.upgraded = upgraded; + this.upgradeCount = upgradeCount; this.cost = Math.round(cost); } } \ No newline at end of file diff --git a/src/system/voucher.ts b/src/system/voucher.ts index 09e977dae..c3bae6f08 100644 --- a/src/system/voucher.ts +++ b/src/system/voucher.ts @@ -1,7 +1,7 @@ import BattleScene from "../battle-scene"; import { TrainerType } from "../data/enums/trainer-type"; import { ModifierTier } from "../modifier/modifier-tier"; -import { Achv, achvs } from "./achv"; +import { Achv, AchvTier, achvs } from "./achv"; export enum VoucherType { REGULAR, @@ -35,16 +35,16 @@ export class Voucher { return getVoucherTypeIcon(this.voucherType); } - getTier(): ModifierTier { + getTier(): AchvTier { switch (this.voucherType) { case VoucherType.REGULAR: - return ModifierTier.COMMON; + return AchvTier.COMMON; case VoucherType.PLUS: - return ModifierTier.GREAT; + return AchvTier.GREAT; case VoucherType.PREMIUM: - return ModifierTier.ULTRA; + return AchvTier.ULTRA; case VoucherType.GOLDEN: - return ModifierTier.MASTER; + return AchvTier.MASTER; } } } diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index 4583a0ede..bead7e58f 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -1,6 +1,6 @@ import { CommandPhase } from "../phases"; import BattleScene, { Button } from "../battle-scene"; -import { getPokeballName, PokeballType } from "../data/pokeball"; +import { getPokeballName } from "../data/pokeball"; import { addTextObject, TextStyle } from "./text"; import { Command } from "./command-ui-handler"; import { Mode } from "./ui"; diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts index 413f31e50..2c2b823ec 100644 --- a/src/ui/egg-gacha-ui-handler.ts +++ b/src/ui/egg-gacha-ui-handler.ts @@ -1,15 +1,15 @@ import BattleScene, { Button } from "../battle-scene"; import { Mode } from "./ui"; -import { TextStyle, addTextObject, getModifierTierTextTint } from "./text"; +import { TextStyle, addTextObject, getEggTierTextTint } from "./text"; import MessageUiHandler from "./message-ui-handler"; import * as Utils from "../utils"; -import { ModifierTier } from "../modifier/modifier-tier"; import { EGG_SEED, Egg, GachaType, getEggTierDefaultHatchWaves, getEggDescriptor, getLegendaryGachaSpeciesForTimestamp, getTypeGachaTypeForTimestamp } from "../data/egg"; import { VoucherType, getVoucherTypeIcon } from "../system/voucher"; import { getPokemonSpecies } from "../data/pokemon-species"; import { Type } from "../data/type"; import { addWindow } from "./window"; import { Tutorial, handleTutorial } from "../tutorial"; +import { EggTier } from "../data/enums/egg-type"; const defaultText = 'Select a machine.'; @@ -343,13 +343,13 @@ export default class EggGachaUiHandler extends MessageUiHandler { eggs = []; const tierValueOffset = this.gachaCursor === GachaType.LEGENDARY ? 1 : 0; const tiers = new Array(pullCount).fill(null).map(() => { - const tierValue = Utils.randInt(256); - return tierValue >= 52 + tierValueOffset ? ModifierTier.COMMON : tierValue + tierValueOffset >= 8 ? ModifierTier.GREAT : tierValue >= 1 + tierValueOffset ? ModifierTier.ULTRA : ModifierTier.MASTER; + const tierValue = Utils.randInt(1024); + return tierValue >= 52 + tierValueOffset ? EggTier.COMMON : tierValue + tierValueOffset >= 8 ? EggTier.GREAT : tierValue >= 1 + tierValueOffset ? EggTier.ULTRA : EggTier.MASTER; }); - if (pullCount >= 25 && !tiers.filter(t => t >= ModifierTier.ULTRA).length) - tiers[Utils.randInt(tiers.length)] = ModifierTier.ULTRA; - else if (pullCount >= 10 && !tiers.filter(t => t >= ModifierTier.GREAT).length) - tiers[Utils.randInt(tiers.length)] = ModifierTier.GREAT; + if (pullCount >= 25 && !tiers.filter(t => t >= EggTier.ULTRA).length) + tiers[Utils.randInt(tiers.length)] = EggTier.ULTRA; + else if (pullCount >= 10 && !tiers.filter(t => t >= EggTier.GREAT).length) + tiers[Utils.randInt(tiers.length)] = EggTier.GREAT; const timestamp = new Date().getTime(); @@ -357,16 +357,16 @@ export default class EggGachaUiHandler extends MessageUiHandler { const egg = new Egg(Utils.randInt(EGG_SEED, EGG_SEED * tier), this.gachaCursor, getEggTierDefaultHatchWaves(tier), timestamp); if (egg.isManaphyEgg()) { this.scene.gameData.gameStats.manaphyEggsPulled++; - egg.hatchWaves = getEggTierDefaultHatchWaves(ModifierTier.ULTRA); + egg.hatchWaves = getEggTierDefaultHatchWaves(EggTier.ULTRA); } else { switch (tier) { - case ModifierTier.GREAT: + case EggTier.GREAT: this.scene.gameData.gameStats.rareEggsPulled++; break; - case ModifierTier.ULTRA: + case EggTier.ULTRA: this.scene.gameData.gameStats.epicEggsPulled++; break; - case ModifierTier.MASTER: + case EggTier.MASTER: this.scene.gameData.gameStats.legendaryEggsPulled++; break; } @@ -417,7 +417,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { const eggText = addTextObject(this.scene, 0, 14, getEggDescriptor(egg), TextStyle.PARTY, { align: 'center' }); eggText.setOrigin(0.5, 0); - eggText.setTint(getModifierTierTextTint(!egg.isManaphyEgg() ? egg.tier : ModifierTier.ULTRA)); + eggText.setTint(getEggTierTextTint(!egg.isManaphyEgg() ? egg.tier : EggTier.ULTRA)); ret.add(eggText); this.eggGachaSummaryContainer.addAt(ret, 0); diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index 5d0cde552..9728b29c7 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -117,7 +117,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { this.shopOptionsRows[row].push(option); } - const hasUpgrade = typeOptions.filter(to => to.upgraded).length; + const maxUpgradeCount = typeOptions.map(to => to.upgradeCount).reduce((max, current) => Math.max(current, max), 0); this.scene.showFieldOverlay(750); @@ -130,18 +130,19 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { const value = t.getValue(); const index = Math.floor(value * typeOptions.length); if (index > i && index <= typeOptions.length) { - const option = this.options[i++]; - option?.show(Math.floor((1 - value) * 1250) * 0.325 + (hasUpgrade ? 2000 : 0)); + const option = this.options[i]; + option?.show(Math.floor((1 - value) * 1250) * 0.325 + 2000 * maxUpgradeCount, -(maxUpgradeCount - typeOptions[i].upgradeCount)); + i++; } } }); - this.scene.time.delayedCall(1000 + (hasUpgrade ? 2000 : 0), () => { + this.scene.time.delayedCall(1000 + maxUpgradeCount * 2000, () => { for (let shopOption of this.shopOptionsRows.flat()) - shopOption.show(0); + shopOption.show(0, 0); }); - this.scene.time.delayedCall(4000 + (hasUpgrade ? 2000 : 0), () => { + this.scene.time.delayedCall(4000 + maxUpgradeCount * 2000, () => { if (partyHasHeldItem) { this.transferButtonContainer.setAlpha(0); this.transferButtonContainer.setVisible(true); @@ -385,7 +386,7 @@ class ModifierOption extends Phaser.GameObjects.Container { setup() { if (!this.modifierTypeOption.cost) { const getPb = (): Phaser.GameObjects.Sprite => { - const pb = this.scene.add.sprite(0, -182, 'pb', this.getPbAtlasKey(true)); + const pb = this.scene.add.sprite(0, -182, 'pb', this.getPbAtlasKey(-this.modifierTypeOption.upgradeCount)); pb.setScale(2); return pb; }; @@ -434,7 +435,7 @@ class ModifierOption extends Phaser.GameObjects.Container { } } - show(remainingDuration: integer) { + show(remainingDuration: integer, upgradeCountOffset: integer) { if (!this.modifierTypeOption.cost) { this.scene.tweens.add({ targets: this.pb, @@ -465,9 +466,10 @@ class ModifierOption extends Phaser.GameObjects.Container { } }); - if (this.modifierTypeOption.upgraded) { - this.scene.time.delayedCall(remainingDuration, () => { - (this.scene as BattleScene).playSound('upgrade'); + for (let u = 0; u < this.modifierTypeOption.upgradeCount; u++) { + const upgradeIndex = u; + this.scene.time.delayedCall(remainingDuration - 2000 * (this.modifierTypeOption.upgradeCount - (upgradeIndex + 1 + upgradeCountOffset)), () => { + (this.scene as BattleScene).playSound('upgrade', { rate: 1 + 0.25 * upgradeIndex }); this.pbTint.setPosition(this.pb.x, this.pb.y); this.pbTint.setTintFill(0xFFFFFF); this.pbTint.setAlpha(0); @@ -478,11 +480,11 @@ class ModifierOption extends Phaser.GameObjects.Container { duration: 1000, ease: 'Sine.easeIn', onComplete: () => { - this.pb.setTexture('pb', this.getPbAtlasKey(false)); + this.pb.setTexture('pb', this.getPbAtlasKey(-this.modifierTypeOption.upgradeCount + (upgradeIndex + 1))); this.scene.tweens.add({ targets: this.pbTint, alpha: 0, - duration: 1000, + duration: 750, ease: 'Sine.easeOut', onComplete: () => { this.pbTint.setVisible(false); @@ -499,7 +501,7 @@ class ModifierOption extends Phaser.GameObjects.Container { return; if (!this.modifierTypeOption.cost) { - this.pb.setTexture('pb', `${this.getPbAtlasKey(false)}_open`); + this.pb.setTexture('pb', `${this.getPbAtlasKey(0)}_open`); (this.scene as BattleScene).playSound('pb_rel'); this.scene.tweens.add({ @@ -547,8 +549,8 @@ class ModifierOption extends Phaser.GameObjects.Container { }); } - getPbAtlasKey(beforeUpgrade: boolean) { - return getPokeballAtlasKey((this.modifierTypeOption.type.tier - (beforeUpgrade && this.modifierTypeOption.upgraded ? 1 : 0)) as integer as PokeballType); + getPbAtlasKey(tierOffset: integer = 0) { + return getPokeballAtlasKey((this.modifierTypeOption.type.tier + tierOffset) as integer as PokeballType); } updateCostText(): void { diff --git a/src/ui/text.ts b/src/ui/text.ts index 7e1427f09..70c788b37 100644 --- a/src/ui/text.ts +++ b/src/ui/text.ts @@ -1,6 +1,7 @@ import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; import InputText from "phaser3-rex-plugins/plugins/inputtext"; import { ModifierTier } from "../modifier/modifier-tier"; +import { EggTier } from "../data/enums/egg-type"; export enum TextStyle { MESSAGE, @@ -145,7 +146,7 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean): string { } } -export function getModifierTierTextTint(tier: integer): integer { +export function getModifierTierTextTint(tier: ModifierTier): integer { switch (tier) { case ModifierTier.COMMON: return 0xffffff; @@ -153,9 +154,24 @@ export function getModifierTierTextTint(tier: integer): integer { return 0x3890f8; case ModifierTier.ULTRA: return 0xf8d038; + case ModifierTier.ROGUE: + return 0xd52929; case ModifierTier.MASTER: return 0xe020c0; case ModifierTier.LUXURY: return 0xe64a18; } +} + +export function getEggTierTextTint(tier: EggTier): integer { + switch (tier) { + case EggTier.COMMON: + return getModifierTierTextTint(ModifierTier.COMMON); + case EggTier.GREAT: + return getModifierTierTextTint(ModifierTier.GREAT); + case EggTier.ULTRA: + return getModifierTierTextTint(ModifierTier.ULTRA); + case EggTier.MASTER: + return getModifierTierTextTint(ModifierTier.MASTER); + } } \ No newline at end of file diff --git a/src/ui/ui.ts b/src/ui/ui.ts index 719b87b22..746df09c3 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -326,7 +326,7 @@ export default class UI extends Phaser.GameObjects.Container { }; if (((!chainMode && ((transitionModes.indexOf(this.mode) > -1 || transitionModes.indexOf(mode) > -1) && (noTransitionModes.indexOf(this.mode) === -1 && noTransitionModes.indexOf(mode) === -1))) - || (chainMode && noTransitionModes.indexOf(mode) === -1)) && !(this.scene as BattleScene).auto) { + || (chainMode && noTransitionModes.indexOf(mode) === -1))) { this.fadeOut(250).then(() => { this.scene.time.delayedCall(100, () => { doSetMode();